ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

double exp ( double  __x)

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__*/
}

Generated on Sun May 27 2012 06:05:07 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.