rax : function number
int 0x60 : system call
Index:
151 - Mathlib - Based on Naoki Shibata's SLEEF http://shibatch.sourceforge.net/
NOTE: math functions operate on single/double precision floats using SSE/SSE2
volatile registers for every math functions are: rax,rbx and xmm0-xmm5
the double precision exp2,exp10,log2,log10,pow are high precision functions
you can rely on the facts that a^b = exp(b*log(a)) and log(base a)b = log(b) * 1/log(a)
application example mathlib.asm at download area
Packed double
In : rbx - 00 - cosine packed double
xmm0 - x
Out: xmm0 - cos(x)
In : rbx - 01 - sine packed double
xmm0 - x
Out: xmm0 - sin(x)
In : rbx - 02 - sincos packed double
xmm0 - x
Out: xmm0 - sin(x)
xmm1 - cos(x)
In : rbx - 03 - tangent packed double
xmm0 - x
Out: xmm0 - tan(x)
In : rbx - 04 - arc tangent packed double
xmm0 - x
Out: xmm0 - atan(x)
In : rbx - 05 - arc tangent of y/x packed double
xmm0 - y
xmm1 - x
Out: xmm0 - atan2(y,x)
In : rbx - 06 - arc cosine packed double
xmm0 - x
Out: xmm0 - acos(x)
In : rbx - 07 - arc sine packed double
xmm0 - x
Out: xmm0 - asin(x)
In : rbx - 08 - power packed double
xmm0 - x
xmm1 - y
Out: xmm0 - pow(x,y)
In : rbx - 09 - cube root packed double
xmm0 - x
Out: xmm0 - cbrt(x)
In : rbx - 10 - exponent base e packed double
xmm0 - x
Out: xmm0 - exp(x)
In : rbx - 11 - exponent base 2 packed double
xmm0 - x
Out: xmm0 - exp2(x)
In : rbx - 12 - exponent base 10 packed double
xmm0 - x
Out: xmm0 - exp10(x)
In : rbx - 13 - logarithm base e packed double
xmm0 - x
Out: xmm0 - log(x)
In : rbx - 14 - logarithm base 2 packed double
xmm0 - x
Out: xmm0 - log2(x)
In : rbx - 15 - logarithm base 10 packed double
xmm0 - x
Out: xmm0 - log10(x)
In : rbx - 16 - exponent base e minus 1 packed double
xmm0 - x
Out: xmm0 - exp(x)-1
NOTE: exp(x)-1 is not truly implemented
In : rbx - 17 - logarithm base e x plus 1 packed double
xmm0 - x
Out: xmm0 - log(1+x)
NOTE: log(1+x) is not truly implemented
In : rbx - 18 - ldexp packed double
xmm0 - x
xmm1 - q
Out: xmm0 - x * 2^q
NOTE: q is a packed dword integer
In : rbx - 19 - ilogb (extract exponent) packed double
xmm0 - x
Out: xmm0 - (int)logb(x)
NOTE: return value is a packed dword integer
Scalar double
In : rbx - 20 - cosine scalar double
xmm0 - x
Out: xmm0 - cos(x)
In : rbx - 21 - sine scalar double
xmm0 - x
Out: xmm0 - sin(x)
In : rbx - 22 - sincos scalar double
xmm0 - x
Out: xmm0 - sin(x)
xmm1 - cos(x)
In : rbx - 23 - tangent scalar double
xmm0 - x
Out: xmm0 - tan(x)
In : rbx - 24 - arc tangent scalar double
xmm0 - x
Out: xmm0 - atan(x)
In : rbx - 25 - arc tangent of y/x scalar double
xmm0 - y
xmm1 - x
Out: xmm0 - atan2(y,x)
In : rbx - 26 - arc cosine scalar double
xmm0 - x
Out: xmm0 - acos(x)
In : rbx - 27 - arc sine scalar double
xmm0 - x
Out: xmm0 - asin(x)
In : rbx - 28 - power scalar double
xmm0 - x
xmm1 - y
Out: xmm0 - pow(x,y)
In : rbx - 29 - cube root scalar double
xmm0 - x
Out: xmm0 - cbrt(x)
In : rbx - 30 - exponent base e scalar double
xmm0 - x
Out: xmm0 - exp(x)
In : rbx - 31 - exponent base 2 scalar double
xmm0 - x
Out: xmm0 - exp2(x)
In : rbx - 32 - exponent base 10 scalar double
xmm0 - x
Out: xmm0 - exp10(x)
In : rbx - 33 - logarithm base e scalar double
xmm0 - x
Out: xmm0 - log(x)
In : rbx - 34 - logarithm base 2 scalar double
xmm0 - x
Out: xmm0 - log2(x)
In : rbx - 35 - logarithm base 10 scalar double
xmm0 - x
Out: xmm0 - log10(x)
In : rbx - 36 - exponent base e minus 1 scalar double
xmm0 - x
Out: xmm0 - exp(x)-1
NOTE: exp(x)-1 is not truly implemented
In : rbx - 37 - logarithm base e x plus 1 scalar double
xmm0 - x
Out: xmm0 - log(1+x)
NOTE: log(1+x) is not truly implemented
In : rbx - 38 - ldexp scalar double
xmm0 - x
xmm1 - q
Out: xmm0 - x * 2^q
NOTE: q is a scalar dword integer
In : rbx - 39 - ilogb (extract exponent) scalar double
xmm0 - x
Out: xmm0 - (int)logb(x)
NOTE: return value is a scalar dword integer
Packed single
In : rbx - 40 - cosine packed single
xmm0 - x
Out: xmm0 - cos(x)
In : rbx - 41 - sine packed single
xmm0 - x
Out: xmm0 - sin(x)
In : rbx - 42 - sincos packed single
xmm0 - x
Out: xmm0 - sin(x)
xmm1 - cos(x)
In : rbx - 43 - tangent packed single
xmm0 - x
Out: xmm0 - tan(x)
In : rbx - 44 - arc tangent packed single
xmm0 - x
Out: xmm0 - atan(x)
In : rbx - 45 - arc tangent of y/x packed single
xmm0 - y
xmm1 - x
Out: xmm0 - atan2(y,x)
In : rbx - 46 - arc cosine packed single
xmm0 - x
Out: xmm0 - acos(x)
In : rbx - 47 - arc sine packed single
xmm0 - x
Out: xmm0 - asin(x)
In : rbx - 48 - power packed single
xmm0 - x
xmm1 - y
Out: xmm0 - pow(x,y)
In : rbx - 49 - cube root packed single
xmm0 - x
Out: xmm0 - cbrt(x)
In : rbx - 50 - exponent base e packed single
xmm0 - x
Out: xmm0 - exp(x)
In : rbx - 51 - exponent base 2 packed single
xmm0 - x
Out: xmm0 - exp2(x)
In : rbx - 52 - exponent base 10 packed single
xmm0 - x
Out: xmm0 - exp10(x)
In : rbx - 53 - logarithm base e packed single
xmm0 - x
Out: xmm0 - log(x)
In : rbx - 54 - logarithm base 2 packed single
xmm0 - x
Out: xmm0 - log2(x)
In : rbx - 55 - logarithm base 10 packed single
xmm0 - x
Out: xmm0 - log10(x)
In : rbx - 56 - exponent base e minus 1 packed single
xmm0 - x
Out: xmm0 - exp(x)-1
NOTE: exp(x)-1 is not truly implemented
In : rbx - 57 - logarithm base e x plus 1 packed single
xmm0 - x
Out: xmm0 - log(1+x)
NOTE: log(1+x) is not truly implemented
In : rbx - 58 - ldexp packed single
xmm0 - x
xmm1 - q
Out: xmm0 - x * 2^q
NOTE: q is a packed dword integer
In : rbx - 59 - ilogb (extract exponent) packed single
xmm0 - x
Out: xmm0 - (int)logb(x)
NOTE: return value is a packed dword integer
Scalar single
In : rbx - 60 - cosine scalar single
xmm0 - x
Out: xmm0 - cos(x)
In : rbx - 61 - sine scalar single
xmm0 - x
Out: xmm0 - sin(x)
In : rbx - 62 - sincos scalar single
xmm0 - x
Out: xmm0 - sin(x)
xmm1 - cos(x)
In : rbx - 63 - tangent scalar single
xmm0 - x
Out: xmm0 - tan(x)
In : rbx - 64 - arc tangent scalar single
xmm0 - x
Out: xmm0 - atan(x)
In : rbx - 65 - arc tangent of y/x scalar single
xmm0 - y
xmm1 - x
Out: xmm0 - atan2(y,x)
In : rbx - 66 - arc cosine scalar single
xmm0 - x
Out: xmm0 - acos(x)
In : rbx - 67 - arc sine scalar single
xmm0 - x
Out: xmm0 - asin(x)
In : rbx - 68 - power scalar single
xmm0 - x
xmm1 - y
Out: xmm0 - pow(x,y)
In : rbx - 69 - cube root scalar single
xmm0 - x
Out: xmm0 - cbrt(x)
In : rbx - 70 - exponent base e scalar single
xmm0 - x
Out: xmm0 - exp(x)
In : rbx - 71 - exponent base 2 scalar single
xmm0 - x
Out: xmm0 - exp2(x)
In : rbx - 72 - exponent base 10 scalar single
xmm0 - x
Out: xmm0 - exp10(x)
In : rbx - 73 - logarithm base e scalar single
xmm0 - x
Out: xmm0 - log(x)
In : rbx - 74 - logarithm base 2 scalar single
xmm0 - x
Out: xmm0 - log2(x)
In : rbx - 75 - logarithm base 10 scalar single
xmm0 - x
Out: xmm0 - log10(x)
In : rbx - 76 - exponent base e minus 1 scalar single
xmm0 - x
Out: xmm0 - exp(x)-1
NOTE: exp(x)-1 is not truly implemented
In : rbx - 77 - logarithm base e x plus 1 scalar single
xmm0 - x
Out: xmm0 - log(1+x)
NOTE: log(1+x) is not truly implemented
In : rbx - 78 - ldexp scalar single
xmm0 - x
xmm1 - q
Out: xmm0 - x * 2^q
NOTE: q is a scalar dword integer
In : rbx - 79 - ilogb (extract exponent) scalar single
xmm0 - x
Out: xmm0 - (int)logb(x)
NOTE: return value is a scalar dword integer