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
decfloat16
ordecfloat34
, 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 typedecfloat34
as an argument, it also calculates a return code with the typedecfloat34
and 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
f
and 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
atan
function is undefined for odd number multiples of pi/2, but the definition range ofatan
is 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.
Example
The results in the internal table should all have the value 1 or a value very close to this.
DATA itab TYPE TABLE OF f WITH EMPTY KEY.
itab = VALUE #( FOR i = 0 UNTIL i > 64
LET n = CONV f( i / 10 ) IN
( sin( n ) ** 2 + cos( n ) ** 2 ) ).
cl_demo_output=>display( itab ).
Exceptions
Handleable 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