LibreOffice
LibreOffice 6.4 SDK C/C++ API Reference
|
Go to the documentation of this file.
20 #ifndef INCLUDED_RTL_MATH_HXX
21 #define INCLUDED_RTL_MATH_HXX
43 sal_Int32
const * pGroups,
45 bool bEraseTrailingDecZeros =
false)
49 cDecSeparator, pGroups, cGroupSeparator,
50 bEraseTrailingDecZeros);
59 bool bEraseTrailingDecZeros =
false)
63 cDecSeparator, NULL, 0, bEraseTrailingDecZeros);
74 sal_Int32 nDecPlaces,
sal_Char cDecSeparator, sal_Int32
const * pGroups,
75 sal_Char cGroupSeparator,
bool bEraseTrailingDecZeros =
false)
78 sal_Int32 * pCapacity;
81 pData, pCapacity, rBuffer.
getLength(), fValue, eFormat, nDecPlaces,
82 cDecSeparator, pGroups, cGroupSeparator, bEraseTrailingDecZeros);
92 sal_Int32 nDecPlaces,
sal_Char cDecSeparator,
93 bool bEraseTrailingDecZeros =
false)
96 sal_Int32 * pCapacity;
99 pData, pCapacity, rBuffer.
getLength(), fValue, eFormat, nDecPlaces,
100 cDecSeparator, NULL, 0, bEraseTrailingDecZeros);
107 sal_Int32 nDecPlaces,
109 sal_Int32
const * pGroups,
111 bool bEraseTrailingDecZeros =
false)
115 cDecSeparator, pGroups, cGroupSeparator,
116 bEraseTrailingDecZeros);
124 sal_Int32 nDecPlaces,
126 bool bEraseTrailingDecZeros =
false)
130 cDecSeparator, NULL, 0, bEraseTrailingDecZeros);
139 sal_Int32 nDecPlaces,
141 sal_Int32
const * pGroups,
143 bool bEraseTrailingDecZeros =
false)
145 rtl_uString ** pData;
146 sal_Int32 * pCapacity;
149 eFormat, nDecPlaces, cDecSeparator, pGroups,
150 cGroupSeparator, bEraseTrailingDecZeros);
158 sal_Int32 nDecPlaces,
160 bool bEraseTrailingDecZeros =
false)
162 rtl_uString ** pData;
163 sal_Int32 * pCapacity;
166 eFormat, nDecPlaces, cDecSeparator, NULL, 0,
167 bEraseTrailingDecZeros);
175 sal_Int32 * pParsedEnd = NULL)
181 cDecSeparator, cGroupSeparator,
183 if (pParsedEnd != NULL)
184 *pParsedEnd =
static_cast<sal_Int32
>(pEnd - pBegin);
194 sal_Int32 * pParsedEnd = NULL)
200 cDecSeparator, cGroupSeparator,
202 if (pParsedEnd != NULL)
203 *pParsedEnd =
static_cast<sal_Int32
>(pEnd - pBegin);
210 double fValue,
int nDecPlaces = 0,
253 inline double erf(
double fValue)
260 inline double erfc(
double fValue)
296 return (x < 0.0 ? -x : x)
297 < ((a < 0.0 ? -a : a) * (1.0 / (pow(2.0, nPrec))));
312 if ( ((a < 0.0 && b > 0.0) || (b < 0.0 && a > 0.0))
325 if ( ((a < 0.0 && b < 0.0) || (a > 0.0 && b > 0.0)) &&
approxEqual( a, b ) )
352 return SAL_MATH_FINITE(d);
364 return !SAL_MATH_FINITE(d) &&
365 (
reinterpret_cast< sal_math_Double *
>(&d)->inf_parts.fraction_hi == 0)
366 && (
reinterpret_cast< sal_math_Double *
>(&d)->inf_parts.fraction_lo
375 return !SAL_MATH_FINITE(d) && (
376 (
reinterpret_cast< sal_math_Double *
>(&d)->inf_parts.fraction_hi != 0)
377 || (
reinterpret_cast< sal_math_Double *
>(&d)->inf_parts.fraction_lo
385 return reinterpret_cast< sal_math_Double *
>(&d)->inf_parts.sign != 0;
390 inline void setInf(
double * pd,
bool bNegative)
397 md.w32_parts.msw = bNegative ? 0xFFF00000 : 0x7FF00000;
398 md.w32_parts.lsw = 0;
411 md.w32_parts.msw = 0x7FFFFFFF;
412 md.w32_parts.lsw = 0xFFFFFFFF;
428 <= (
static_cast< double >(
static_cast< unsigned long >(0x80000000))
429 *
static_cast< double >(
static_cast< unsigned long >(0x80000000))
435 inline double sin(
double d)
445 inline double cos(
double d)
455 inline double tan(
double d)
467 #endif // INCLUDED_RTL_MATH_HXX
double pow10Exp(double fValue, int nExp)
A wrapper around rtl_math_pow10Exp.
Definition: math.hxx:218
char sal_Char
A legacy synonym for char.
Definition: types.h:120
double erf(double fValue)
A wrapper around rtl_math_erf.
Definition: math.hxx:253
This String class provides base functionality for C++ like Unicode character array handling.
Definition: ustring.hxx:127
double cos(double d)
Safe cos(), returns NAN if not valid.
Definition: math.hxx:445
bool isNan(double d)
Test on any QNAN or SNAN.
Definition: math.hxx:372
double approxAdd(double a, double b)
Add two values.
Definition: math.hxx:310
void setNan(double *pd)
Set a QNAN.
Definition: math.hxx:404
SAL_DLLPUBLIC double rtl_math_round(double fValue, int nDecPlaces, enum rtl_math_RoundingMode eMode) SAL_THROW_EXTERN_C()
Rounds a double value.
double approxValue(double fValue)
A wrapper around rtl_math_approxValue.
Definition: math.hxx:225
sal_Int32 getLength() const
Returns the length (character count) of this string buffer.
Definition: strbuf.hxx:337
This String class provide base functionality for C++ like 8-Bit character array handling.
Definition: string.hxx:98
double atanh(double fValue)
A wrapper around rtl_math_atanh.
Definition: math.hxx:246
double log1p(double fValue)
A wrapper around rtl_math_log1p.
Definition: math.hxx:239
double expm1(double fValue)
A wrapper around rtl_math_expm1.
Definition: math.hxx:232
sal_Int32 getLength() const
Returns the length of this string.
Definition: ustring.hxx:682
double approxFloor(double a)
floor() method taking approxValue() into account.
Definition: math.hxx:334
double tan(double d)
Safe tan(), returns NAN if not valid.
Definition: math.hxx:455
SAL_DLLPUBLIC double rtl_math_atanh(double fValue) SAL_THROW_EXTERN_C()
Returns more accurate atanh(x) for x near 0 than calculating 0.5*log((1+x)/(1-x)).
rtl::OUString doubleToUString(double fValue, rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Unicode cDecSeparator, sal_Int32 const *pGroups, sal_Unicode cGroupSeparator, bool bEraseTrailingDecZeros=false)
A wrapper around rtl_math_doubleToUString.
Definition: math.hxx:105
double erfc(double fValue)
A wrapper around rtl_math_erfc.
Definition: math.hxx:260
SAL_DLLPUBLIC double rtl_math_erf(double fValue) SAL_THROW_EXTERN_C()
Returns values of the Errorfunction erf.
double round(double fValue, int nDecPlaces=0, rtl_math_RoundingMode eMode=rtl_math_RoundingMode_Corrected)
A wrapper around rtl_math_round.
Definition: math.hxx:209
bool isSignBitSet(double d)
If the sign bit is set.
Definition: math.hxx:383
SAL_DLLPUBLIC void rtl_math_doubleToUString(rtl_uString **pResult, sal_Int32 *pResultCapacity, sal_Int32 nResultOffset, double fValue, enum rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Unicode cDecSeparator, sal_Int32 const *pGroups, sal_Unicode cGroupSeparator, sal_Bool bEraseTrailingDecZeros) SAL_THROW_EXTERN_C()
Conversions analogous to sprintf() using internal rounding.
@ rtl_math_RoundingMode_Corrected
Like HalfUp, but corrects roundoff errors, preferred.
Definition: math.h:104
SAL_DLLPUBLIC double rtl_math_expm1(double fValue) SAL_THROW_EXTERN_C()
Returns more accurate e^x-1 for x near 0 than calculating directly.
void accessInternals(rtl_String ***pInternalData, sal_Int32 **pInternalCapacity)
Allows access to the internal data of this OStringBuffer, for effective manipulation.
Definition: strbuf.hxx:1031
rtl_math_StringFormat
Formatting modes for rtl_math_doubleToString and rtl_math_doubleToUString and rtl_math_doubleToUStrin...
Definition: math.h:37
bool isValidArcArg(double d)
If a value is a valid argument for sin(), cos(), tan().
Definition: math.hxx:425
SAL_DLLPUBLIC double rtl_math_asinh(double fValue) SAL_THROW_EXTERN_C()
Returns values of the inverse hyperbolic sine.
sal_Int32 getLength() const
Returns the length (character count) of this string buffer.
Definition: ustrbuf.hxx:380
SAL_DLLPUBLIC double rtl_math_stringToDouble(sal_Char const *pBegin, sal_Char const *pEnd, sal_Char cDecSeparator, sal_Char cGroupSeparator, enum rtl_math_ConversionStatus *pStatus, sal_Char const **pParsedEnd) SAL_THROW_EXTERN_C()
Conversion analogous to strtod(), convert a string representing a decimal number into a double value.
bool isFinite(double d)
Tests whether a value is neither INF nor NAN.
Definition: math.hxx:350
Definition: bootstrap.hxx:30
SAL_DLLPUBLIC bool rtl_math_approxEqual(double a, double b) SAL_THROW_EXTERN_C()
Test equality of two values with an accuracy of the magnitude of the given values scaled by 2^-48 (4 ...
const sal_Unicode * getStr() const SAL_RETURNS_NONNULL
Returns a pointer to the Unicode character buffer for this string.
Definition: ustring.hxx:704
SAL_DLLPUBLIC double rtl_math_pow10Exp(double fValue, int nExp) SAL_THROW_EXTERN_C()
Scales fVal to a power of 10 without calling pow() or div() for nExp values between -16 and +16,...
void accessInternals(rtl_uString ***pInternalData, sal_Int32 **pInternalCapacity)
Allows access to the internal data of this OUStringBuffer, for effective manipulation.
Definition: ustrbuf.hxx:1326
const sal_Char * getStr() const SAL_RETURNS_NONNULL
Returns a pointer to the characters of this string.
Definition: string.hxx:459
rtl_math_RoundingMode
Rounding modes for rtl_math_round.
Definition: math.h:101
A string buffer implements a mutable sequence of characters.
Definition: ustrbuf.hxx:66
rtl::OString doubleToString(double fValue, rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Char cDecSeparator, sal_Int32 const *pGroups, sal_Char cGroupSeparator, bool bEraseTrailingDecZeros=false)
A wrapper around rtl_math_doubleToString.
Definition: math.hxx:40
SAL_DLLPUBLIC void rtl_math_doubleToString(rtl_String **pResult, sal_Int32 *pResultCapacity, sal_Int32 nResultOffset, double fValue, enum rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Char cDecSeparator, sal_Int32 const *pGroups, sal_Char cGroupSeparator, sal_Bool bEraseTrailingDecZeros) SAL_THROW_EXTERN_C()
Conversions analogous to sprintf() using internal rounding.
sal_Int32 getLength() const
Returns the length of this string.
Definition: string.hxx:433
rtl_math_ConversionStatus
Status for rtl_math_stringToDouble and rtl_math_uStringToDouble.
Definition: math.h:84
SAL_DLLPUBLIC double rtl_math_acosh(double fValue) SAL_THROW_EXTERN_C()
Returns values of the inverse hyperbolic cosine.
double approxSub(double a, double b)
Subtract two values (a-b).
Definition: math.hxx:323
void doubleToStringBuffer(rtl::OStringBuffer &rBuffer, double fValue, rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Char cDecSeparator, sal_Int32 const *pGroups, sal_Char cGroupSeparator, bool bEraseTrailingDecZeros=false)
A wrapper around rtl_math_doubleToString that appends to an rtl::OStringBuffer.
Definition: math.hxx:72
bool isInf(double d)
If a value represents +INF or -INF.
Definition: math.hxx:361
A string buffer implements a mutable sequence of characters.
Definition: strbuf.hxx:66
sal_uInt16 sal_Unicode
Definition: types.h:141
SAL_DLLPUBLIC double rtl_math_erfc(double fValue) SAL_THROW_EXTERN_C()
Returns values of the complement Errorfunction erfc.
SAL_DLLPUBLIC double rtl_math_log1p(double fValue) SAL_THROW_EXTERN_C()
Returns more accurate log(1+x) for x near 0 than calculating directly.
SAL_DLLPUBLIC double rtl_math_uStringToDouble(sal_Unicode const *pBegin, sal_Unicode const *pEnd, sal_Unicode cDecSeparator, sal_Unicode cGroupSeparator, enum rtl_math_ConversionStatus *pStatus, sal_Unicode const **pParsedEnd) SAL_THROW_EXTERN_C()
Conversion analogous to strtod(), convert a string representing a decimal number into a double value.
double acosh(double fValue)
A wrapper around rtl_math_acosh.
Definition: math.hxx:274
bool approxEqual(double a, double b)
A wrapper around rtl_math_approxEqual.
Definition: math.hxx:281
double sin(double d)
Safe sin(), returns NAN if not valid.
Definition: math.hxx:435
void setInf(double *pd, bool bNegative)
Set to +INF if bNegative==false or -INF if bNegative==true.
Definition: math.hxx:390
double approxCeil(double a)
ceil() method taking approxValue() into account.
Definition: math.hxx:343
double asinh(double fValue)
A wrapper around rtl_math_asinh.
Definition: math.hxx:267
void doubleToUStringBuffer(rtl::OUStringBuffer &rBuffer, double fValue, rtl_math_StringFormat eFormat, sal_Int32 nDecPlaces, sal_Unicode cDecSeparator, sal_Int32 const *pGroups, sal_Unicode cGroupSeparator, bool bEraseTrailingDecZeros=false)
A wrapper around rtl_math_doubleToUString that appends to an rtl::OUStringBuffer.
Definition: math.hxx:137
double stringToDouble(rtl::OString const &rString, sal_Char cDecSeparator, sal_Char cGroupSeparator, rtl_math_ConversionStatus *pStatus=NULL, sal_Int32 *pParsedEnd=NULL)
A wrapper around rtl_math_stringToDouble.
Definition: math.hxx:172
SAL_DLLPUBLIC double rtl_math_approxValue(double fValue) SAL_THROW_EXTERN_C()
Rounds value to 15 significant decimal digits.