Name
      
      exp, expf, expl,exp2, exp2f, exp2l, expm1, expm1f, expm1f, expm1l 
      
      
      
      
      log, logf, logl, log10, log10f, log10l, log1p, log1pf, log1pl 
      
      
      
      pow, powf, powl, 
      
      
      
      - exponential, logarithm, power functions
      
      
      
      
         
         Library
      
      
      
      
      libm.lib
      
      
      
      
         
         Synopsis
      
      
      
      
      
      
      
      
      
         
            |  | long double
               
               
               expl (long double x); 
 | 
      
      
      
      
         
            |  | long double
               
               
               exp2l (long double x); 
 | 
      
      
      
      
         
            |  | long double
               
               
               expm1l (long double x); 
 | 
      
      
      
      
         
            |  | long double
               
               
               logl (long double x); 
 | 
      
      
      
      
         
            |  | long double
               
               
               log10l (long double x); 
 | 
      
      
      
      
         
            |  | long double
               
               
               log1pl (long double x); 
 | 
      
      
         
            |  | double
               
               
               pow (double x, double y); 
 | 
      
      
         
            |  | float
               
               
               powf (float x, float y); 
 | 
      
      
         
            |  | long double
               
               
               powl (long double x, long double y); 
 | 
      
      
         
         Return values
      
      
      These functions will return the appropriate computation unless an error
      occurs or an argument is out of range.
      The functions
      
      
      pow (x, y);
      
      and
      
      
      powf (x, y);
      
      return an NaN if
      
      
       x
      < 0 and
      
      
       y
      is not an integer.
      An attempt to take the logarithm of ±0 will return infinity.
      An attempt to take the logarithm of a negative number will
      return a NaN.
      
      
      
      
         
         Detailed description
      
      
      The
      
      
       exp
      and
      
      
       expf
      functions compute the base
      
      
       e
      exponential value of the given argument
      
      
       x.
      
      
      
      
         The
         
         
          exp2
         and
         
         
          exp2f
         functions compute the base 2 exponential of the given argument
         
         
          x.
         
         
         
      
      
         The
         
         
          expm1
         and
         
         
          expm1f
         functions compute the value exp(x)-1 accurately even for tiny argument
         
         
          x.
         
         
         
      
      
         The
         
         
          log
         and
         
         
          logf
         functions compute the value of the natural logarithm of argument
         
         
          x.
         
         
         
      
      
         The
         
         
          log10
         and
         
         
          log10f
         functions compute the value of the logarithm of argument
         
         
          x
         to base 10.
         
         
         
      
      
         The
         
         
          log1p
         and
         
         
          log1pf
         functions compute
         the value of log(1+x) accurately even for tiny argument
         
         
          x.
         
         
         
      
      
         The
         
         
          pow
         and
         
         
          powf
         functions compute the value
         of
         
         
          x
         to the exponent
         
         
          y.
         
         
         
      
      
         Here the long double version APIs are aliases to the double version APIs.
         All apis <function>l behaves similiar to that <function>.
         
         
         
      
      
         
         Examples
      
      
      
      
      #include <math.h>
int main( void )
{
   double x, y;
   x = 1.0;
   y = exp( x );
   printf( "exp( %f ) = %f\n", x, y );
   y = expf( x );
   printf( "expf( %f ) = %f\n",x, y );
   y = expl( x );
   printf( "expl( %f ) = %f\n",x, y );
   x = 0.0;
   y = exp2( x );
   printf( "exp2( %f ) = %f\n", x, y );
   y = exp2f( x );
   printf( "exp2f( %f ) = %f\n",x, y );
   y = exp2l( x );
   printf( "exp2l( %f ) = %f\n",x, y );
   x = 1.0 ;
   y = expm1( x );
   printf( "expm1( %f ) = %f\n", x, y );
   y = expm1f( x );
   printf( "expm1f( %f ) = %f\n",x, y );
   y = expm1l( x );
   printf( "expm1l( %f ) = %f\n",x, y );
}
         
      
      
      
      
         Output
         
         
         
      
exp   ( 1.0 ) = 2.718282
expf  ( 1.0 ) = 2.718282
expl  ( 1.0 ) = 2.718282
exp2  ( 0.0 ) = 1.000000
exp2f ( 0.0 ) = 1.000000
exp2l ( 0.0 ) = 1.000000
expm1 ( 1.0 ) = 1.718281        
expm1f( 1.0 ) = 1.718281
expm1l( 1.0 ) = 1.718281
         
      
         
         
         
      
      
         
         Notes
      
      
      The functions exp(x)-1 and log(1+x) are called
      expm1 and logp1 in
      
      
       BASIC
      on the Hewlett-Packard
      
      
       HP -71B
      and
      
      
       APPLE
      Macintosh,
      
      
       EXP1
      and
      
      
       LN1
      in Pascal, exp1 and log1 in C
      on
      
      
       APPLE
      Macintoshes, where they have been provided to make
      sure financial calculations of ((1+x)**n-1)/x, namely
      expm1(n*log1p(x))/x, will be accurate when x is tiny.
      They also provide accurate inverse hyperbolic functions.
      
      
      
      
         The function
         
         
         pow (x, 0);
         
         returns x**0 = 1 for all x including x = 0, oo, and NaN .
         Previous implementations of pow may
         have defined x**0 to be undefined in some or all of these
         cases.
         Here are reasons for returning x**0 = 1 always:
         
         
         
      
      
         
         - Any program that already tests whether x is zero (or
            infinite or NaN) before computing x**0 cannot care
            whether 0**0 = 1 or not.
            Any program that depends
            upon 0**0 to be invalid is dubious anyway since that
            expression’s meaning and, if invalid, its consequences
            vary from one computer system to another.
            
            
            
         
- Some Algebra texts (e.g. Sigler’s) define x**0 = 1 for
            all x, including x = 0.
            This is compatible with the convention that accepts a[0]
            as the value of polynomial
            
            
            p(x) = a[0]*x**0 + a[1]*x**1 + a[2]*x**2 +...+ a[n]*x**n
               
 
               at x = 0 rather than reject a[0]*0**0 as invalid.
               
               
               
             
- Analysts will accept 0**0 = 1 despite that x**y can
            approach anything or nothing as x and y approach 0
            independently.
            The reason for setting 0**0 = 1 anyway is this:
            
            
            If x(z) and y(z) are
               
 any
functions analytic (expandable
in power series) in z around z = 0, and if there
x(0) = y(0) = 0, then x(z)**y(z) -> 1 as z -> 0.
               
 
- If 0**0 = 1, then
            oo**0 = 1/0**0 = 1 too; and
            then NaN**0 = 1 too because x**0 = 1 for all finite
            and infinite x, i.e., independently of x.
            
            
            
         
         
         See also
      
      
      
      
      math
      
      
      Feedback
For additional information or queries on this page send feedback	
      
      
         
         
         
            
               | © 2005-2007 Nokia  | 
 |