|
|
- NAME
- #include <aros/libcall.h>
#include <proto/mathieeedoubbas.h>
#include <proto/mathieeedoubtrans.h>
#include <proto/exec.h>
#include <exec/types.h>
double IEEEDPLog10 ()
- SYNOPSIS
- double y
- FUNCTION
- Calculate logarithm (base 10) of the given IEEE double precision number
- INPUTS
- y
- IEEE double precision number
- RESULT
- IEEE double precision number
flags:
zero : result is zero
negative : result is negative
overflow : argument was negative
- NOTES
-
- EXAMPLE
- BUGS
-
- SEE ALSO
- MathIEEEDoubleTrans
- INTERNALS
- ALGORITHM:
If the Argument is negative set overflow-flag and return NAN.
If the Argument is 0 return 0xFFF0000000000000.
If the Argument is pos. Infinity return pos. Infinity.
All other cases:
(ld is the logarithm with base 2)
(ln is the logarithm with base e)
y = M * 2^E
ln y = ln ( M * 2^E ) =
= ln M + ln 2^E =
= ln M + E * ln (2) =
ld M ld 2
= ----- + E * ----- = [ld 2 = 1]
ld 10 ld 10
ld M + E
= --------
ld 10
ld 10 can be precalculated, of course.
For calculating ld M see file intern_ieeespld.c
|