ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Numeric Calculations → Numerical Functions
acos, sin, tanh, exp, log, sqrt - Floating Point Functions
The following table shows the floating point functions that expect a
floating point
number as an unnamed argument. Floating point functions are overloaded so that the return code can have the type decfloat34 or f.
Decimal floating point numbers
are still only possible as arguments of exp, log, log10, and sqrt.
Other versions: 7.31 | 7.40 | 7.54
Syntax
... func( arg ) ...
Effect
The argument of a floating point function must be a single data object outside an arithmetic expression and can be an arithmetic expression itself within an arithmetic expression.
Effect of the floating point functions:
| Function func | Meaning | Definition Range |
|---|---|---|
acos |
arccosine | [-1,1], no decfloat34 |
asin |
arcsine | [-1,1], no decfloat34 |
atan |
arctangent | -, no decfloat34 |
cos |
cosine | -, no decfloat34 |
sin |
sine | -, no decfloat34 |
tan |
tangent | -, no decfloat34 |
cosh |
hyperbolic cosine | -, no decfloat34 |
sinh |
hyperbolic sine | -, no decfloat34 |
tanh |
hyperbolic tangent | -, no decfloat34 |
exp |
Exponential function for base e | [-709, 709] for type f and [-14144, 14149] for type decfloat34 |
log |
Natural logarithm | > 0 |
log10 |
Logarithm to base 10 | > 0 |
sqrt |
Square root | >= 0 |
Functions that specify "no decfloat34" cannot currently have the
calculation type
decfloat34. If one of these functions is specified in an expression with this calculation type, a syntax error occurs or the exception CX_SY_UNSUPPORTED_FUNCTION is raised.
The following applies to the floating point arithmetic in which a floating point function is calculated, and to the data type of the return code:
- If the argument has the type
decfloat16ordecfloat34, a floating point function is calculated in decimal floating point arithmetic and the return code has the typedecfloat34.
- If a floating point function is used in an arithmetic expression whose
calculation type is
decfloat34, or that contains a numeric expression of typedecfloat34as an argument, it also calculates a return code with the typedecfloat34and the argument is first converted to the data typedecfloat34, if necessary.
- In all other cases, floating point functions use binary floating point arithmetic to calculate a
return code with type
fand the argument is first converted to the data typef, if necessary.
Functions with a definition range require the value of arg to be within the
specified limits. Arguments within the definition ranges are guaranteed to be error-free for the exponential function exp, since the results are then within the
value ranges for
binary or
decimal
floating point
numbers in accordance with IEEE-754. For arguments less than -709, the result for binary floating
point numbers is (depending on the platform) a subnormal number, 0, or a handleable exception of the class CX_SY_ARITHMETIC_OVERFLOW is raised from a specific value.
The trigonometric functions sin, cos, and
tan are defined for any arguments but the results become imprecise if the argument is greater than approximately 100,000,000.
Notes
- The
atanfunction is undefined for odd-number multiples of pi/2, but the definition range ofatanis nevertheless restricted since an argument of this function can never contain the precise value of pi/2.
- The functions described here are some of the functions that can be used in the obsolete extended functional operand positions, even if their argument is a single data object.
Exceptions
Catchable Exceptions
CX_SY_ARG_OUT_OF_DOMAIN
-
Cause: Invalid call of
acos
Runtime Error:COMPUTE_ACOS_DOMAIN -
Cause: Invalid call of
asin
Runtime Error:COMPUTE_ASIN_DOMAIN -
Cause: Invalid call of
cos
Runtime Error:COMPUTE_COS_DOMAIN -
Cause: Invalid call of
log10
Runtime Error:COMPUTE_LOG10_ERROR -
Cause: Invalid call of
log
Runtime Error:COMPUTE_LOG_ERROR -
Cause: Invalid call of
sin
Runtime Error:COMPUTE_SIN_DOMAIN -
Cause: Invalid call of
sqrt
Runtime Error:COMPUTE_SQRT_DOMAIN -
Cause: Invalid call of
tan
Runtime Error:COMPUTE_TAN_DOMAIN