LibreOffice
LibreOffice 24.2 SDK C/C++ API Reference
math.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 /*
21  * This file is part of LibreOffice published API.
22  */
23 
24 #ifndef INCLUDED_RTL_MATH_H
25 #define INCLUDED_RTL_MATH_H
26 
27 #include "sal/config.h"
28 
29 #include "rtl/ustring.h"
30 #include "sal/saldllapi.h"
31 #include "sal/types.h"
32 
33 #if defined __cplusplus
34 extern "C" {
35 #endif /* __cplusplus */
36 
41 {
45 
49 
54 
59 
64 
69 
74 
79 
81  rtl_math_StringFormat_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
83 };
84 
88 {
92 
96 
98  rtl_math_ConversionStatus_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
100 };
101 
105 {
109 
113 
117 
121 
125 
129 
133 
137 
139  rtl_math_RoundingMode_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
141 };
142 
147 {
151 
157 };
158 
159 
224 SAL_DLLPUBLIC void SAL_CALL rtl_math_doubleToString(rtl_String ** pResult,
225  sal_Int32 * pResultCapacity,
226  sal_Int32 nResultOffset, double fValue,
227  enum rtl_math_StringFormat eFormat,
228  sal_Int32 nDecPlaces,
229  char cDecSeparator,
230  sal_Int32 const * pGroups,
231  char cGroupSeparator,
232  sal_Bool bEraseTrailingDecZeros)
234 
299 SAL_DLLPUBLIC void SAL_CALL rtl_math_doubleToUString(rtl_uString ** pResult,
300  sal_Int32 * pResultCapacity,
301  sal_Int32 nResultOffset, double fValue,
302  enum rtl_math_StringFormat eFormat,
303  sal_Int32 nDecPlaces,
304  sal_Unicode cDecSeparator,
305  sal_Int32 const * pGroups,
306  sal_Unicode cGroupSeparator,
307  sal_Bool bEraseTrailingDecZeros)
309 
345 SAL_DLLPUBLIC double SAL_CALL rtl_math_stringToDouble(
346  char const * pBegin, char const * pEnd, char cDecSeparator,
347  char cGroupSeparator, enum rtl_math_ConversionStatus * pStatus,
348  char const ** pParsedEnd) SAL_THROW_EXTERN_C();
349 
386  sal_Unicode const * pBegin, sal_Unicode const * pEnd,
387  sal_Unicode cDecSeparator, sal_Unicode cGroupSeparator,
388  enum rtl_math_ConversionStatus * pStatus, sal_Unicode const ** pParsedEnd)
390 
404 SAL_DLLPUBLIC double SAL_CALL rtl_math_round(double fValue, int nDecPlaces,
405  enum rtl_math_RoundingMode eMode)
407 
420 SAL_DLLPUBLIC double SAL_CALL rtl_math_pow10Exp(double fValue, int nExp) SAL_THROW_EXTERN_C();
421 
427 SAL_DLLPUBLIC double SAL_CALL rtl_math_approxValue(double fValue) SAL_THROW_EXTERN_C();
428 
437 SAL_DLLPUBLIC bool SAL_CALL rtl_math_approxEqual(double a, double b) SAL_THROW_EXTERN_C();
438 
446 SAL_DLLPUBLIC double SAL_CALL rtl_math_expm1(double fValue) SAL_THROW_EXTERN_C();
447 
455 SAL_DLLPUBLIC double SAL_CALL rtl_math_log1p(double fValue) SAL_THROW_EXTERN_C();
456 
465 SAL_DLLPUBLIC double SAL_CALL rtl_math_atanh(double fValue) SAL_THROW_EXTERN_C();
466 
474 SAL_DLLPUBLIC double SAL_CALL rtl_math_erf(double fValue) SAL_THROW_EXTERN_C();
475 
483 SAL_DLLPUBLIC double SAL_CALL rtl_math_erfc(double fValue) SAL_THROW_EXTERN_C();
484 
492 SAL_DLLPUBLIC double SAL_CALL rtl_math_asinh(double fValue) SAL_THROW_EXTERN_C();
493 
501 SAL_DLLPUBLIC double SAL_CALL rtl_math_acosh(double fValue) SAL_THROW_EXTERN_C();
502 
503 #if defined __cplusplus
504 }
505 #endif /* __cplusplus */
506 
507 #endif /* INCLUDED_RTL_MATH_H */
508 
509 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
#define SAL_THROW_EXTERN_C()
Nothrow specification for C functions.
Definition: types.h:334
Same 'G', but with only 1 minimum digits in exponent.
Definition: math.h:73
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 ...
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...
IEEE rounding mode (statistical).
Definition: math.h:136
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.
Ceil of signed value.
Definition: math.h:124
Ceil of absolute value, signed return (commercial).
Definition: math.h:116
Like sprintf() E.
Definition: math.h:44
SAL_DLLPUBLIC double rtl_math_acosh(double fValue) SAL_THROW_EXTERN_C()
Returns values of the inverse hyperbolic cosine.
Like sprintf() f.
Definition: math.h:48
#define SAL_DLLPUBLIC
Definition: saldllapi.h:34
Floor of signed value.
Definition: math.h:120
Frac < 0.5 ? floor of abs : ceil of abs, signed return (mathematical).
Definition: math.h:132
SAL_DLLPUBLIC double rtl_math_round(double fValue, int nDecPlaces, enum rtl_math_RoundingMode eMode) SAL_THROW_EXTERN_C()
Rounds a double value.
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_erf(double fValue) SAL_THROW_EXTERN_C()
Returns values of the Errorfunction erf.
Automatic, &#39;F&#39; or &#39;E&#39; format is used depending on the numeric value to be formatted.
Definition: math.h:58
Floor of absolute value, signed return (commercial).
Definition: math.h:112
rtl_math_ConversionStatus
Status for rtl_math_stringToDouble and rtl_math_uStringToDouble.
Definition: math.h:87
sal_uInt16 sal_Unicode
Definition: types.h:123
Value to be used with rtl_math_StringFormat_G.
Definition: math.h:156
SAL_DLLPUBLIC double rtl_math_erfc(double fValue) SAL_THROW_EXTERN_C()
Returns values of the complement Errorfunction erfc.
unsigned char sal_Bool
Definition: types.h:38
Like sprintf() G, &#39;F&#39; or &#39;E&#39; format is used depending on which one is more compact.
Definition: math.h:53
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...
rtl_math_DecimalPlaces
Special decimal places constants for rtl_math_doubleToString and rtl_math_doubleToUString and rtl_mat...
Definition: math.h:146
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, char cDecSeparator, sal_Int32 const *pGroups, char cGroupSeparator, sal_Bool bEraseTrailingDecZeros) SAL_THROW_EXTERN_C()
Conversions analogous to sprintf() using internal rounding.
Conversion was successful.
Definition: math.h:91
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.
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)).
SAL_DLLPUBLIC double rtl_math_approxValue(double fValue) SAL_THROW_EXTERN_C()
Rounds value to 15 significant decimal digits.
Same &#39;E&#39;, but with only 2 minimum digits in exponent.
Definition: math.h:68
Conversion caused overflow or underflow.
Definition: math.h:95
Value to be used with rtl_math_StringFormat_Automatic.
Definition: math.h:150
rtl_math_RoundingMode
Rounding modes for rtl_math_round.
Definition: math.h:104
SAL_DLLPUBLIC double rtl_math_stringToDouble(char const *pBegin, char const *pEnd, char cDecSeparator, char cGroupSeparator, enum rtl_math_ConversionStatus *pStatus, char const **pParsedEnd) SAL_THROW_EXTERN_C()
Conversion analogous to strtod(), convert a string representing a decimal number into a double value...
Frac <= 0.5 ? floor of abs : ceil of abs, signed return.
Definition: math.h:128
SAL_DLLPUBLIC double rtl_math_asinh(double fValue) SAL_THROW_EXTERN_C()
Returns values of the inverse hyperbolic sine.
#define SAL_MAX_ENUM
Definition: types.h:205
Same &#39;G&#39;, but with only 2 minimum digits in exponent.
Definition: math.h:78
Same &#39;E&#39;, but with only 1 minimum digits in exponent.
Definition: math.h:63
rtl_math_StringFormat
Formatting modes for rtl_math_doubleToString and rtl_math_doubleToUString and rtl_math_doubleToUStrin...
Definition: math.h:40
Like HalfUp, but corrects roundoff errors, preferred.
Definition: math.h:108