Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 26 of file exp.c.
{ #ifdef __GNUC__ register double __value, __exponent; __asm __volatile__ ("fldl2e # e^x = 2^(x * log2(e))\n\t" "fmul %%st(1) # x * log2(e)\n\t" "fst %%st(1)\n\t" "frndint # int(x * log2(e))\n\t" "fxch\n\t" "fsub %%st(1) # fract(x * log2(e))\n\t" "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" : "=t" (__value), "=u" (__exponent) : "0" (__x)); __value += 1.0; __asm __volatile__ ("fscale" : "=t" (__value) : "0" (__value), "u" (__exponent)); return __value; #else register double __val; __asm { fld1 // store 1.0 for later use fld __x fldl2e // e^x = 2^(x * log2(e)) fmul st,st(1) // x * log2(e) fld st(0) frndint // int(x * log2(e)) fsub st,st(1) // fract(x * log2(e)) fxch f2xm1 // 2^(fract(x * log2(e))) - 1 fadd st,st(3) // + 1.0 fscale fstp __val } return __val; #endif /*__GNUC__*/ }