os/ossrv/genericopenlibs/openenvcore/include/math.dosc
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /** @file ../include/math.h
     2 @internalComponent
     3 */
     4 
     5 /** @fn nanval(void )
     6 
     7 Not a number value.
     8 @publishedAll
     9 @released
    10 */
    11 
    12 /** @fn  finite(double x)
    13 @param x
    14 
    15   The finite finitef and finitel functions  return  a  non-zero value if value is neither
    16 infinite nor a "not-a-number" (NaN) value, and 0 otherwise.
    17 
    18  - Examples
    19  @code
    20 #include <math.h>
    21 int main( void )
    22 {
    23    double x;
    24    int y; 
    25    x = 1.34565;
    26    y = finite( x );
    27    printf( "finite( %f ) =  %d
    28 ", x, y );
    29    y = finitef( x );
    30    printf( "finitef( %f ) = %d
    31 ",x, y );
    32    y = finitel( x );
    33    printf( "finitel( %f ) = %d
    34 ",x, y );
    35 }
    36 
    37 @endcode
    38  Output
    39 @code
    40 finite ( 1.34565 ) = 1
    41 finitef( 1.34565 ) = 1
    42 finitel( 1.34565 ) =
    43 @endcode
    44  
    45 
    46 @publishedAll
    47 @released
    48 */
    49 
    50 /** @fn  finitef(float x)
    51 @param x
    52 
    53 
    54  
    55 
    56 @publishedAll
    57 @released
    58 */
    59 
    60 /** @fn  acos(double x)
    61 @param x
    62 @return   The acos, acosf, and acosl functions return the arc cosine in the range [0, pi]
    63 radians.
    64 If: | x | \> 1 , acos (x); returns an NaN.
    65 
    66 - Detailed description
    67  
    68 
    69  The acos, acosf, and acosl functions compute the principal value of the arc cosine of x .
    70 
    71 - Examples
    72 @code
    73 #include <math.h>
    74 int main( )
    75 {
    76    double x = -1;
    77    double y = acos( x );
    78    printf( "acos(%f) = %f
    79 ", x, y );
    80    y = acosf( x );
    81    printf( "acosf(%f) = %f
    82 ", x, y );
    83    y = acosl( x );
    84    printf( "acosl(%f) = %f
    85 ", x, y ); 
    86 }
    87 
    88 @endcode
    89  Output
    90 @code
    91 acos( -1.000000 ) = 3.14159
    92 acosf(-1.000000 ) = 3.14159
    93 acosl(-1.000000 ) = 3.14159
    94 
    95 @endcode
    96 @see asin()
    97 @see atan()
    98 @see atan2()
    99 @see cos()
   100 @see cosh()
   101 @see math()
   102 @see sin()
   103 @see sinh()
   104 @see tan()
   105 @see tanh()
   106 
   107 
   108  
   109 
   110 @publishedAll
   111 @externallyDefinedApi
   112 */
   113 
   114 /** @fn  asin(double x)
   115 @param x
   116 @return   The asin, asinf, and asinl functions return the arc sine in the range
   117 -words [-pi/2, +pi/2]
   118 radians.
   119 If: | x | \> 1 asin (x); returns an NaN.
   120 
   121 - Detailed description
   122   The asin and asinf functions compute the principal value of the arc sine of x .
   123 The function asinl is an alias to the function asin. A domain error occurs for arguments not in the range [-1, +1].
   124 
   125 - Examples
   126 @code
   127 #include <math.h>
   128 int main( )
   129 {
   130    double x = 0.5; 
   131    double y = asin( x );
   132    printf( "asin(%f) = %f
   133 ", x, y );
   134    y = asinf( x );
   135    printf( "asinf(%f) = %f
   136 ", x, y );
   137    y = asinl( x );
   138    printf( "asinl(%f) = %f
   139 ", x, y ); 
   140 }
   141 
   142 @endcode
   143  Output
   144 @code
   145 asin( 0.500000 ) = 0.523599
   146 asinf(0.500000 ) = 0.523599
   147 asinl(0.500000 ) = 0.523599
   148 
   149 @endcode
   150 @see acos()
   151 @see atan()
   152 @see atan2()
   153 @see cos()
   154 @see cosh()
   155 @see math()
   156 @see sin()
   157 @see sinh()
   158 @see tan()
   159 @see tanh()
   160 
   161 
   162    
   163 
   164 @publishedAll
   165 @externallyDefinedApi
   166 */
   167 
   168 /** @fn  atan(double x)
   169 @param x
   170 @see acos()
   171 @see asin()
   172 @see atan2()
   173 @see cos()
   174 @see cosh()
   175 @see math()
   176 @see sin()
   177 @see sinh()
   178 @see tan()
   179 @see tanh()
   180 
   181 
   182    
   183 
   184 @publishedAll
   185 @externallyDefinedApi
   186 */
   187 
   188 /** @fn  atan2(double y, double x)
   189 @param y
   190 @param x
   191 @see acos()
   192 @see asin()
   193 @see atan()
   194 @see cos()
   195 @see cosh()
   196 @see math()
   197 @see sin()
   198 @see sinh()
   199 @see tan()
   200 @see tanh()
   201 
   202 
   203    
   204 
   205 @publishedAll
   206 @externallyDefinedApi
   207 */
   208 
   209 /** @fn  cos(double x)
   210 @param x
   211 @see acos()
   212 @see asin()
   213 @see atan()
   214 @see atan2()
   215 @see cosh()
   216 @see math()
   217 @see sin()
   218 @see sinh()
   219 @see tan()
   220 @see tanh()
   221 
   222 
   223    
   224 
   225 @publishedAll
   226 @externallyDefinedApi
   227 */
   228 
   229 /** @fn  sin(double x)
   230 @param x
   231 @return   The sin and the sinf functions return the sine value.
   232 
   233 - Detailed description
   234   The sin and the sinf functions compute the sine of x (measured in radians).
   235 A large magnitude argument may yield a result with little
   236 or no significance. sinl is just an alias to the function sin
   237 
   238 - Examples
   239 @code
   240 #include <math.h>
   241 int main( )
   242 {
   243    double pi_by_6 = 0.52359877559829887307710723054658383 ;
   244    double y;
   245    y = sin( pi_by_6 );
   246    printf( "sin( %f)  = %f
   247 ", x1,  y );
   248    y = sinf( pi_by_6);
   249    printf( "sinf( %f) = %f
   250 ", pi_by_6, y );
   251    y = sinl( pi_by_6);
   252    printf( "sinl( %f) = %f
   253 ", pi_by_6, y );
   254  }
   255 
   256 @endcode
   257  Output
   258 @code
   259 sin ( 0.52359877559829887307710723054658383 ) = 0.500000
   260 sinf( 0.52359877559829887307710723054658383 ) = 0.500000
   261 sinl( 0.52359877559829887307710723054658383 ) = 0.500000
   262 
   263 @endcode
   264 @see acos()
   265 @see asin()
   266 @see atan()
   267 @see atan2()
   268 @see cos()
   269 @see cosh()
   270 @see math()
   271 @see sinh()
   272 @see tan()
   273 @see tanh()
   274 
   275 
   276    
   277 
   278 @publishedAll
   279 @externallyDefinedApi
   280 */
   281 
   282 /** @fn  tan(double x)
   283 @param x
   284 @return   The tan function returns the tangent value.
   285 
   286 - Detailed description
   287   The tan and tanf functions compute the tangent of x (measured in radians).
   288 A large magnitude argument may yield a result
   289 with little or no significance.
   290 The function tanl is an alias to the function tan
   291 
   292 - Examples
   293 @code
   294 #include <math.h>
   295 int main( )
   296 {
   297    double pi_by_4 = 0.7853981633974483096156608458198757;
   298    double y;
   299    y = tan( pi_by_4 );
   300    printf( "tan( %f)  = %f
   301 ", pi_by_4,  y );
   302    y = tanf( pi_by_4);
   303    printf( "tanf( %f) = %f
   304 ", pi_by_4, y );
   305    y = tanl( pi_by_4);
   306    printf( "tanl( %f) = %f
   307 
   308 ", pi_by_4, y );
   309 }
   310 
   311 @endcode
   312  Output
   313 @code
   314 tan ( 0.7853981633974483096156608458198757 ) = 1.000000
   315 tanf( 0.7853981633974483096156608458198757 ) = 1.000000
   316 tanl( 0.7853981633974483096156608458198757; ) =1.000000
   317 
   318 @endcode
   319 @see acos()
   320 @see asin()
   321 @see atan()
   322 @see atan2()
   323 @see cos()
   324 @see cosh()
   325 @see math()
   326 @see sin()
   327 @see sinh()
   328 @see tanh()
   329 
   330 
   331    
   332 
   333 @publishedAll
   334 @externallyDefinedApi
   335 */
   336 
   337 /** @fn  cosh(double x)
   338 @param x
   339 @see acos()
   340 @see asin()
   341 @see atan()
   342 @see atan2()
   343 @see cos()
   344 @see math()
   345 @see sin()
   346 @see sinh()
   347 @see tan()
   348 @see tanh()
   349 
   350 
   351    
   352 
   353 @publishedAll
   354 @externallyDefinedApi
   355 */
   356 
   357 /** @fn  sinh(double x)
   358 @param x
   359 - Detailed description
   360   The sinh and the sinhf functions compute the hyperbolic sine of x .
   361 The function sinhl is an alias to the function sinh
   362 
   363 - Examples
   364 @code
   365 #include <math.h>
   366 int main( )
   367 {
   368    double inp = 0.75;
   369    double y;
   370    y = sinh( inp );
   371    printf( "sinh( %f)  = %f
   372 ", inp,  y );
   373    y = sinhf( inp);
   374    printf( "sinhf( %f) = %f
   375 ", inp, y );
   376    y = sinhl( inp);
   377    printf( "sinhl( %f) = %f
   378 ", inp, y );
   379 }
   380 
   381 @endcode
   382  Output
   383 @code
   384 sinh ( 0.75 ) = 0.8223167
   385 sinhf( 0.75 ) = 0.8223167
   386 sinhl( 0.75 ) = 0.8223167
   387 
   388 @endcode
   389 @see acos()
   390 @see asin()
   391 @see atan()
   392 @see atan2()
   393 @see cos()
   394 @see cosh()
   395 @see math()
   396 @see sin()
   397 @see tan()
   398 @see tanh()
   399 
   400 
   401    
   402 
   403 @publishedAll
   404 @externallyDefinedApi
   405 */
   406 
   407 /** @fn  tanh(double x)
   408 @param x
   409 @return   The tanh, tanhf and tanhl functions return the hyperbolic tangent value.
   410 
   411 - Detailed description
   412   The tanh and tanhf functions compute the hyperbolic tangent of x . tanhl is an alias to the function tanh.
   413 
   414 - Examples
   415 @code
   416 #include <math.h>
   417 int main( )
   418 {
   419    double inp = 1.0;
   420    double y; 
   421    y = tanh( inp );
   422    printf( "tanh( %f)  = %f
   423 ", inp,  y );
   424    y = tanhf( inp);
   425    printf( "tanhf( %f) = %f
   426 ", inp, y );
   427    y = tanhl( inp);
   428    printf( "tanhl( %f) = %f
   429 
   430 ", inp, y );
   431    inp = 2209.0;
   432    y = sqrt( inp);
   433    printf( "sqrt( %f)  = %d
   434 ", inp,  y );
   435    y = sqrtf( inp);
   436    printf( "sqrtf( %f) = %d
   437 ", inp, y );
   438    y = sqrtl( inp);
   439    printf( "sqrtl( %f) = %d
   440 ", inp, y );
   441 }
   442 
   443 @endcode
   444  Output
   445 @code
   446 tanh ( 1.000000 ) = 0.7615941
   447 tanhf( 1.000000 ) = 0.7615941
   448 tanhl( 1.000000 ) = 0.7615941
   449 
   450 @endcode
   451 @see acos()
   452 @see asin()
   453 @see atan()
   454 @see atan2()
   455 @see cos()
   456 @see cosh()
   457 @see math()
   458 @see sin()
   459 @see sinh()
   460 @see tan()
   461 
   462 
   463    
   464 
   465 @publishedAll
   466 @externallyDefinedApi
   467 */
   468 
   469 /** @fn  exp(double x)
   470 @param x
   471 @return   These functions will return the appropriate computation unless an error
   472 occurs or an argument is out of range.
   473 The functions pow (x, y); and powf (x, y); return an NaN if x \< 0 and y is not an integer.
   474 An attempt to take the logarithm of ±0 will return infinity.
   475 An attempt to take the logarithm of a negative number will
   476 return a NaN.
   477 
   478 - Detailed description
   479   The exp and expf functions compute the base e exponential value of the given argument x .
   480 
   481  The exp2 and exp2f functions compute the base 2 exponential of the given argument x .
   482 
   483  The expm1 and expm1f functions compute the value exp(x)-1 accurately even for tiny argument x .
   484 
   485  The log and logf functions compute the value of the natural logarithm of argument x .
   486 
   487  The log10 and log10f functions compute the value of the logarithm of argument x to base 10.
   488 
   489  The log1p and log1pf functions compute
   490 the value of log(1+x) accurately even for tiny argument x .
   491 
   492  The pow and powf functions compute the value
   493 of x to the exponent y .
   494 
   495  Here the long double version APIs are aliases to the double version APIs.
   496 All apis \<function\>l behaves similiar to that \<function\>.
   497 
   498 - Examples
   499 @code
   500 #include <math.h>
   501 int main( void )
   502 {
   503    double x, y;
   504    x = 1.0;
   505    y = exp( x );
   506    printf( "exp( %f ) = %f
   507 ", x, y );
   508    y = expf( x );
   509    printf( "expf( %f ) = %f
   510 ",x, y );
   511    y = expl( x );
   512    printf( "expl( %f ) = %f
   513 ",x, y );
   514    x = 0.0;
   515    y = exp2( x );
   516    printf( "exp2( %f ) = %f
   517 ", x, y );
   518    y = exp2f( x );
   519    printf( "exp2f( %f ) = %f
   520 ",x, y );
   521    y = exp2l( x );
   522    printf( "exp2l( %f ) = %f
   523 ",x, y );
   524    x = 1.0 ;
   525    y = expm1( x );
   526    printf( "expm1( %f ) = %f
   527 ", x, y );
   528    y = expm1f( x );
   529    printf( "expm1f( %f ) = %f
   530 ",x, y );
   531    y = expm1l( x );
   532    printf( "expm1l( %f ) = %f
   533 ",x, y );
   534 }
   535 
   536 @endcode
   537  Output
   538 @code
   539 exp   ( 1.0 ) = 2.718282
   540 expf  ( 1.0 ) = 2.718282
   541 expl  ( 1.0 ) = 2.718282
   542 exp2  ( 0.0 ) = 1.000000
   543 exp2f ( 0.0 ) = 1.000000
   544 exp2l ( 0.0 ) = 1.000000
   545 expm1 ( 1.0 ) = 1.718281        
   546 expm1f( 1.0 ) = 1.718281
   547 expm1l( 1.0 ) = 1.718281
   548 
   549 @endcode
   550 
   551 Notes:
   552 
   553  The functions exp(x)-1 and log(1+x) are called
   554 expm1 and logp1 in BASIC on the Hewlett-Packard HP -71B and APPLE Macintosh, EXP1 and LN1 in Pascal, exp1 and log1 in C
   555 on APPLE Macintoshes, where they have been provided to make
   556 sure financial calculations of ((1+x)**n-1)/x, namely
   557 expm1(n*log1p(x))/x, will be accurate when x is tiny.
   558 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 .
   559 Previous implementations of pow may
   560 have defined x**0 to be undefined in some or all of these
   561 cases.
   562 Here are reasons for returning x**0 = 1 always: Any program that already tests whether x is zero (or
   563 infinite or NaN) before computing x**0 cannot care
   564 whether 0**0 = 1 or not.
   565 Any program that depends
   566 upon 0**0 to be invalid is dubious anyway since that
   567 expression's meaning and, if invalid, its consequences
   568 vary from one computer system to another. Some Algebra texts (e.g. Sigler's) define x**0 = 1 for
   569 all x, including x = 0.
   570 This is compatible with the convention that accepts a[0]
   571 as the value of polynomial
   572 @code
   573 p(x) = a[0]*x**0 + a[1]*x**1 + a[2]*x**2 +...+ a[n]*x**n
   574 
   575 @endcode
   576  at x = 0 rather than reject a[0]*0**0 as invalid. Analysts will accept 0**0 = 1 despite that x**y can
   577 approach anything or nothing as x and y approach 0
   578 independently.
   579 The reason for setting 0**0 = 1 anyway is this:
   580 @code
   581 If x(z) and y(z) are
   582 
   583  any
   584 functions analytic (expandable
   585 in power series) in z around z = 0, and if there
   586 x(0) = y(0) = 0, then x(z)**y(z) -> 1 as z -> 0.
   587 
   588 @endcode
   589  If 0**0 = 1, then
   590 oo**0 = 1/0**0 = 1 too; and
   591 then NaN**0 = 1 too because x**0 = 1 for all finite
   592 and infinite x, i.e., independently of x.
   593 @see math()
   594 
   595 
   596    
   597 
   598 @publishedAll
   599 @externallyDefinedApi
   600 */
   601 
   602 /** @fn  frexp(double x, int *eptr)
   603 @param x
   604 @param eptr
   605 @return   These functions return the value y ,
   606 such that y is a double with magnitude in the interval [1/2, 1]
   607 or zero, and x equals y times 2 raised to the power *eptr .
   608 If x is zero, both parts of the result are zero.
   609 
   610 - Detailed description
   611   The frexp , frexpf, and frexpl functions break a floating-point number into a normalized
   612 fraction and an integral power of 2.
   613 They store the integer in the int object pointed to by eptr .
   614 As there is no long double is not supported by Symbian, frexpl (is, aliased, to, the); frexp
   615 
   616 
   617 
   618 - Examples
   619 @code
   620 void main( void )
   621 {
   622    double x1 = 4.0 , y;
   623    int res;
   624    y = frexp( x1, &res; );
   625    printf( "frexp(%f , &res;):: Int Part: %d and Fractional Part: %f 
   626 ", x1, res, y );
   627    y = frexpf( x1, &res; );
   628    printf( "frexpf(%f , &res;):: Int Part: %d and Fractional Part: %f 
   629 ", x1, res, y );
   630    y = frexpl( x1, &res; );
   631    printf( "frexpl(%f , &res;):: Int Part: %d and Fractional Part: %f 
   632 ", x1, res, y );
   633 }
   634 
   635 @endcode
   636  Output
   637 @code
   638 frexp ( 4.0 , &res; ) :: Int Part: 3 and Fractional Part: 0.5
   639 frexpf( 4.0,  &res; ) :: Int Part: 3 and Fractional Part: 0.5
   640 frexpl( 4.0,  &res; ) :: Int Part: 3 and Fractional Part: 0.5
   641 
   642 @endcode
   643    
   644 
   645 @publishedAll
   646 @externallyDefinedApi
   647 */
   648 
   649 /** @fn  ldexp(double x, int n)
   650 @param x
   651 @param n
   652 @return   These functions return the value of x times 2 raised to the power n .
   653 
   654 - Detailed description
   655   The ldexp, ldexpf, and ldexpl functions multiply a floating-point number by an integral
   656 power of 2.
   657 
   658 - Examples
   659 @code
   660 #include <math.h>
   661 int main( void )
   662 {
   663    double x1 = 0.8, x2 = 4, y;
   664    y = ldexp( x1, x2 );
   665    printf( "ldexp(%f , %f) = %f
   666 ", x1, x2, y );
   667    y = ldexpf( x1, x2 );
   668    printf( "ldexpf(%f , %f) = %f
   669 ", x1, x2, y );
   670    y = ldexpl( x1, x2 );
   671    printf( "ldexpl(%f , %f) = %f
   672 ", x1, x2, y );
   673 }
   674 
   675 @endcode
   676  Output
   677 @code
   678 ldexp ( 0.8, 4 ) = 12.8
   679 ldexpf( 0.8, 4 ) = 12.8
   680 ldexpl( 0.8, 4 ) = 12.8
   681 
   682 @endcode
   683 @see frexp()
   684 @see math()
   685 @see modf()
   686 
   687 
   688    
   689 
   690 @publishedAll
   691 @externallyDefinedApi
   692 */
   693 
   694 /** @fn  log(double x)
   695 @param x
   696 @see math()
   697 
   698 
   699    
   700 
   701 @publishedAll
   702 @externallyDefinedApi
   703 */
   704 
   705 /** @fn  log10(double x)
   706 @param x
   707 @see math()
   708 
   709 
   710    
   711 
   712 @publishedAll
   713 @externallyDefinedApi
   714 */
   715 
   716 /** @fn  modf(double x, double *iptr)
   717 @param x
   718 @param iptr
   719 @return   The modf, modff and modfl functions return the signed fractional part of a value .
   720 
   721 - Detailed description
   722   The modf function breaks the argument x into integral and fractional parts, each of which has the
   723 same sign as the argument.
   724 It stores the integral part as a double
   725 in the object pointed to by iptr .
   726 The function modff (is, the, float, version, of, modf().); The function modfl is an alias to the function modf.
   727 
   728 - Examples
   729 @code
   730 #include <math.h>
   731 #include <stdio.h>
   732 int main()
   733 {
   734    double x1 = 123.456703 , y;
   735    double  iptr;
   736    float fptr;
   737    y = modf( x1, &iptr; );
   738    printf( "modf(%f , &iptr;):: Int Part: %f and Fractional Part: %f 0, x1, iptr, y );
   739    y = modff( x1, &fptr; );
   740    printf( "modff(%f , &iptr;):: Int Part: %f and Fractional Part: %f 0, x1, fptr, y );
   741    y = modfl( x1, &iptr; );
   742    printf( "modfl(%f , &iptr;):: Int Part: %f and Fractional Part: %f 0, x1, iptr, y );
   743 }
   744 
   745 @endcode
   746  Output
   747 @code
   748 modf ( 123.456703 , &iptr; ) :: Int Part: 123 and Fractional Part: 0.456703
   749 modff( 123.456703,  &iptr; ) :: Int Part: 123 and Fractional Part: 0.456703
   750 modfl( 123.456703,  &iptr; ) :: Int Part: 123 and Fractional Part: 0.456703
   751 
   752 @endcode
   753 @see frexp()
   754 @see ldexp()
   755 @see math()
   756 
   757 
   758    
   759 
   760 @publishedAll
   761 @externallyDefinedApi
   762 */
   763 
   764 /** @fn  pow(double x, double y)
   765 @param x
   766 @param y
   767 @see math()
   768 
   769 
   770    
   771 
   772 @publishedAll
   773 @externallyDefinedApi
   774 */
   775 
   776 /** @fn  sqrt(double x)
   777 @param x
   778 @see math()
   779 
   780 
   781    
   782 
   783 @publishedAll
   784 @externallyDefinedApi
   785 */
   786 
   787 /** @fn  ceil(double x)
   788 @param x
   789 @return   x is integral or infinite, x itself is returned.
   790 
   791 
   792 The ceil , ceilf, and ceill functions return the smallest integral value
   793 greater than or equal to x ,
   794 expressed as a floating-point number.
   795 
   796 - Examples
   797 @code
   798 #include <math.h>
   799 int main( void )
   800 {
   801    double y;
   802    y = ceil( 2.8 );
   803    printf( "The ceil of 2.8 is %f
   804 ", y );
   805    y = ceil( -2.8 );
   806    printf( "The ceil of -2.8 is %f
   807 ", y );
   808    y = ceilf( 2.8 );
   809    printf( "The ceilf of 2.8 is %f
   810 ", y );
   811    y = ceilf( -2.8 );
   812    printf( "The ceilf of -2.8 is %f
   813 ", y );
   814    y = ceill( 2.8 );
   815    printf( "The ceill of 2.8 is %f
   816 ", y );
   817    y = ceill( -2.8 );
   818    printf( "The ceill of -2.8 is %f
   819 ", y );
   820 }
   821 
   822 @endcode
   823  Output
   824 @code
   825 The ceil of 2.8 is 3.000000
   826 The ceil of -2.8 is -2.000000
   827 The ceilf of 2.8 is 3.000000
   828 The ceilf of -2.8 is -2.000000
   829 The ceill of 2.8 is 3.000000
   830 The ceill of -2.8 is -2.000000
   831 
   832 @endcode
   833 @see abs()
   834 @see fabs()
   835 @see floor()
   836 @see ieee()
   837 @see math()
   838 @see rint()
   839 @see round()
   840 @see trunc()
   841 
   842 
   843    
   844 
   845 @publishedAll
   846 @externallyDefinedApi
   847 */
   848 
   849 /** @fn  ceilf(float x)
   850 @param x
   851 @see abs()
   852 @see fabs()
   853 @see floor()
   854 @see ieee()
   855 @see math()
   856 @see rint()
   857 @see round()
   858 @see trunc()
   859 
   860 
   861    
   862 
   863 @publishedAll
   864 @externallyDefinedApi
   865 */
   866 
   867 /** @fn  fabs(double x)
   868 @param x
   869 @return   The fabs , fabsf and fabsl functions return the absolute value of x .
   870 
   871 The fabs , fabsf and fabsl functions compute the absolute value of a floating-point number x .
   872 
   873 Examples
   874 @code
   875 #include  <stdio.h>
   876 #include  <math.h>
   877 int main( void )
   878 {
   879    double dx = -3.141593, dy;
   880    dy = fabs( dx );
   881    printf( "fabs( %f ) = %f
   882 ", dx, dy );
   883    dy = fabsf( dx );
   884    printf( "fabsf( %f ) = %f
   885 ", dx, dy );
   886    dy = fabsl( dx );
   887    printf( "fabsl( %f ) = %f
   888 ", dx, dy );
   889 }
   890 
   891 @endcode
   892  Output
   893 @code
   894 fabs( -3.141593  ) = 3.141593
   895 fabsf( -3.141593 ) = 3.141593
   896 fabsl( -3.141593 ) = 3.141593
   897 
   898 @endcode
   899 @see abs()
   900 @see ceil()
   901 @see floor()
   902 @see ieee()
   903 @see math()
   904 @see rint()
   905 
   906 
   907    
   908 
   909 @publishedAll
   910 @externallyDefinedApi
   911 */
   912 
   913 /** @fn  fabsf(float x)
   914 @param x
   915 @see abs()
   916 @see ceil()
   917 @see floor()
   918 @see ieee()
   919 @see math()
   920 @see rint()
   921 
   922 
   923    
   924 
   925 @publishedAll
   926 @externallyDefinedApi
   927 */
   928 
   929 /** @fn  fabsl(long double x)
   930 @param x
   931 @see abs()
   932 @see ceil()
   933 @see floor()
   934 @see ieee()
   935 @see math()
   936 @see rint()
   937 
   938 
   939    
   940 
   941 @publishedAll
   942 @externallyDefinedApi
   943 */
   944 
   945 /** @fn  floor(double x)
   946 @param x
   947 @return   x is integral or infinite, x itself is returned.
   948 
   949 
   950 The floor , floorf, and floorl functions return the largest integral value
   951 less than or equal to x ,
   952 expressed as a floating-point number.
   953 
   954 - Examples
   955 @code
   956 #include <math.h>
   957 int main( void )
   958 {
   959    double y;
   960    y = floor( 2.8 );
   961    printf( "The floor of 2.8 is %f
   962 ", y );
   963    y = floorf( 2.8 );
   964    printf( "The floorf of 2.8 is %f
   965 ", y );
   966    y = floorl( 2.8 );
   967    printf( "The floorl of 2.8 is %f
   968 ", y );
   969 }
   970 
   971 @endcode
   972  Output
   973 @code
   974 The floor  of 2.8 is 2.000000
   975 The floorf of 2.8 is 2.000000
   976 The floorl of 2.8 is 2.000000
   977 
   978 @endcode
   979 @see abs()
   980 @see ceil()
   981 @see fabs()
   982 @see ieee()
   983 @see math()
   984 @see rint()
   985 @see round()
   986 @see trunc()
   987 
   988 
   989    
   990 
   991 @publishedAll
   992 @externallyDefinedApi
   993 */
   994 
   995 /** @fn  floorf(float x)
   996 @param x
   997 @see abs()
   998 @see ceil()
   999 @see fabs()
  1000 @see ieee()
  1001 @see math()
  1002 @see rint()
  1003 @see round()
  1004 @see trunc()
  1005 
  1006 
  1007    
  1008 
  1009 @publishedAll
  1010 @externallyDefinedApi
  1011 */
  1012 
  1013 /** @fn  fmod(double x, double y)
  1014 @param x
  1015 @param y
  1016 @return   The fmod, fmodf, and fmodl functions return the value x - i * y , for some integer i such that, if y is non-zero, the result has the same sign as x and magnitude less than the magnitude of y .
  1017 If y is zero, whether a domain error occurs or the fmod and fmodf function returns zero is implementation-defined.
  1018 
  1019 
  1020 The fmod, fmodf, and fmodl functions compute the floating-point remainder of x / y . fmodl is an alias to the function fmod.
  1021 
  1022 Examples
  1023 @code
  1024 #include <math.h>
  1025 int main()
  1026 {
  1027    double x1 = 6.5, x2 = 2.25, y;
  1028    y = fmod( x1, x2 );
  1029    printf( "fmod(%f , %f) = %f
  1030 ", x1, x2, y );
  1031    y = fmodf( x1, x2 );
  1032    printf( "fmodf(%f , %f) = %f
  1033 ", x1, x2, y );
  1034    y = fmodl( x1, x2 );
  1035    printf( "fmodl(%f , %f) = %f
  1036 ", x1, x2, y );
  1037 }
  1038 
  1039 @endcode
  1040  Output
  1041 @code
  1042 fmod ( 6.4, 2 ) = 2.0
  1043 fmodf( 6.4, 2 ) = 2.0
  1044 fmodl( 6.4, 2 ) = 2.0
  1045 
  1046 @endcode
  1047 @see math()
  1048 
  1049 
  1050    
  1051 
  1052 @publishedAll
  1053 @externallyDefinedApi
  1054 */
  1055 
  1056 /** @fn  fmodf(float x, float y)
  1057 @param x
  1058 @param y
  1059 @see math()
  1060 
  1061 
  1062    
  1063 
  1064 @publishedAll
  1065 @externallyDefinedApi
  1066 */
  1067 
  1068 /** @fn  acosh(double x)
  1069 @param x
  1070 @return   The acosh , acoshf ,
  1071 and acoshl functions
  1072 return the inverse hyperbolic cosine of x .
  1073 If the argument is less than 1, acosh returns an NaN.
  1074 
  1075 
  1076 The acosh and acoshf functions compute the inverse hyperbolic cosine
  1077 of the real
  1078 argument x .
  1079 The function acoshl is an alias to the function acosh .
  1080 
  1081 - Examples
  1082 @code
  1083 #include <math.h>
  1084 int main( )
  1085 {
  1086    double x = 1;
  1087    double y = acosh( x );
  1088    printf( "acosh(%f) = %f
  1089 ", x, y );
  1090    y = acoshf( x );
  1091    printf( "acoshf(%f) = %f
  1092 ", x, y );
  1093    y = acoshl( x );
  1094    printf( "acoshl(%f) = %f
  1095 ", x, y ); 
  1096 }
  1097 
  1098 @endcode
  1099  Output
  1100 @code
  1101 acosh( 1.000000 ) = 0.0
  1102 acoshf(1.000000 ) = 0.0
  1103 acoshl(1.000000 ) = 0.0
  1104 
  1105 @endcode
  1106 @see asinh()
  1107 @see atanh()
  1108 @see exp()
  1109 @see math()
  1110 
  1111 
  1112    
  1113 
  1114 @publishedAll
  1115 @externallyDefinedApi
  1116 */
  1117 
  1118 /** @fn  acoshf(float x)
  1119 @param x
  1120 @see asinh()
  1121 @see atanh()
  1122 @see exp()
  1123 @see math()
  1124 
  1125 
  1126    
  1127 
  1128 @publishedAll
  1129 @externallyDefinedApi
  1130 */
  1131 
  1132 /** @fn  asinh(double x)
  1133 @param x
  1134 @see acosh()
  1135 @see atanh()
  1136 @see exp()
  1137 @see math()
  1138 
  1139 
  1140    
  1141 
  1142 @publishedAll
  1143 @externallyDefinedApi
  1144 */
  1145 
  1146 /** @fn  asinhf(float x)
  1147 @param x
  1148 @see acosh()
  1149 @see atanh()
  1150 @see exp()
  1151 @see math()
  1152 
  1153 
  1154    
  1155 
  1156 @publishedAll
  1157 @externallyDefinedApi
  1158 */
  1159 
  1160 /** @fn  atanh(double x)
  1161 @param x
  1162 @see acosh()
  1163 @see asinh()
  1164 @see exp()
  1165 @see math()
  1166 
  1167 
  1168    
  1169 
  1170 @publishedAll
  1171 @externallyDefinedApi
  1172 */
  1173 
  1174 /** @fn  atanhf(float x)
  1175 @param x
  1176 @see acosh()
  1177 @see asinh()
  1178 @see exp()
  1179 @see math()
  1180 
  1181 
  1182    
  1183 
  1184 @publishedAll
  1185 @externallyDefinedApi
  1186 */
  1187 
  1188 /** @fn  cbrt(double x)
  1189 @param x
  1190 @return   The cbrt and cbrtf functions return the requested cube root.
  1191 The sqrt and sqrtf functions return the requested square root
  1192 unless an error occurs.
  1193 An attempt to take the sqrt of negative x causes an NaN to be returned.
  1194 
  1195 
  1196 The cbrt and cbrtf functions compute
  1197 the cube root of x .
  1198 The function cbrtl is an alias to the function cbrt.
  1199 
  1200  The sqrt and sqrtf functions compute the
  1201 non-negative square root of x.
  1202 The function sqrtl is an alias to the function sqrt.
  1203 
  1204 - Examples
  1205 @code
  1206 #include <math.h>
  1207 int main( )
  1208 {
  1209    double inp = -0.001;
  1210    double y;
  1211    y = cbrt( inp );
  1212    printf( "cbrt( %f)  = %f
  1213 ", x1,  y );
  1214    y = cbrtf( inp);
  1215    printf( "cbrtf( %f) = %f
  1216 ", inp, y );
  1217    y = cbrtl( inp);
  1218    printf( "cbrtl( %f) = %f
  1219 
  1220 ", inp, y );
  1221    inp = 2209.0;
  1222    y = sqrt( inp);
  1223    printf( "sqrt( %f)  = %d
  1224 ", inp,  y );
  1225    y = sqrtf( inp);
  1226    printf( "sqrtf( %f) = %d
  1227 ", inp, y );
  1228    y = sqrtl( inp);
  1229    printf( "sqrtl( %f) = %d
  1230 ", inp, y );
  1231 }
  1232 
  1233 @endcode
  1234  Output
  1235 @code
  1236 cbrt ( -0.001 ) = -0.100000
  1237 cbrtf( -0.001 ) = -0.100000
  1238 cbrtl( -0.001 ) = -0.100000
  1239 sqrt ( 2209.0 ) = 47.0
  1240 sqrtf( 2209.0 ) = 47.0
  1241 sqrtl( 2209.0 ) = 47.0
  1242 
  1243 @endcode
  1244 @see math()
  1245 
  1246 
  1247    
  1248 
  1249 @publishedAll
  1250 @externallyDefinedApi
  1251 */
  1252 
  1253 /** @fn  erf(double x)
  1254 @param x
  1255 @see math()
  1256 
  1257 
  1258    
  1259 
  1260 @publishedAll
  1261 @externallyDefinedApi
  1262 */
  1263 
  1264 /** @fn  erfc(double x)
  1265 @param x
  1266 @see math()
  1267 
  1268 
  1269    
  1270 
  1271 @publishedAll
  1272 @externallyDefinedApi
  1273 */
  1274 
  1275 /** @fn  erff(float x)
  1276 @param x
  1277 @see math()
  1278 
  1279 
  1280    
  1281 
  1282 @publishedAll
  1283 @externallyDefinedApi
  1284 */
  1285 
  1286 /** @fn  erfcf(float x)
  1287 @param x
  1288 @see math()
  1289 
  1290 
  1291    
  1292 
  1293 @publishedAll
  1294 @externallyDefinedApi
  1295 */
  1296 
  1297 /** @fn  exp2(double x)
  1298 @param x
  1299 @see math()
  1300 
  1301 
  1302    
  1303 
  1304 @publishedAll
  1305 @externallyDefinedApi
  1306 */
  1307 
  1308 /** @fn  exp2f(float x)
  1309 @param x
  1310 @see math()
  1311 
  1312 
  1313    
  1314 
  1315 @publishedAll
  1316 @externallyDefinedApi
  1317 */
  1318 
  1319 /** @fn expm1(double)
  1320 
  1321 The expm1 and expm1f functions compute the value exp(x)-1 accurately even for tiny argument x .
  1322 
  1323 @publishedAll
  1324 @externallyDefinedApi
  1325 */
  1326 
  1327 /** @fn  expm1f(float x)
  1328 
  1329 The expm1 and expm1f functions compute the value exp(x)-1 accurately even for tiny argument x .
  1330 
  1331 @param x
  1332 @see math()
  1333 
  1334 
  1335    
  1336 
  1337 @publishedAll
  1338 @externallyDefinedApi
  1339 */
  1340 
  1341 /** @fn  fma(double x, double y, double z)
  1342 @param x
  1343 @param y
  1344 @param z
  1345 
  1346 @code
  1347 
  1348 The fma, fmaf, and fmal functions return (x * y) + z, computed with only one rounding error. Using the ordinary multiplication and addition operators, by contrast, results in two roundings: one for the intermediate product and one for the final result. 
  1349 For instance, the expression 1.2e100 * 2.0e208 - 1.4e308 produces oo due to overflow in the intermediate product, whereas fma(1.2e100, 2.0e208, -1.4e308) returns approximately 1.0e308. 
  1350 
  1351 The fused multiply-add operation is often used to improve the accuracy of calculations such as dot products. It may also be used to improve performance on machines that implement it natively. The macros FP_FAST_FMA, FP_FAST_FMAF and FP_FAST_FMAL may be defined in   #include \<math.h\>to indicate that fma, fmaf, and fmal (respectively) have comparable or faster speed than a multiply operation followed by an add operation.  
  1352 @endcode
  1353 
  1354 
  1355 
  1356 - Examples
  1357 @code
  1358 #include <math.h>
  1359 int main()
  1360 {
  1361    double x1 = 1, x2 = 2, x3 =3, y;
  1362    y = fma( x1, x2, x3 );
  1363    printf( "fma(%f , %f , %f) = %f
  1364 ", x1, x2, x3, y );
  1365    y = fmaf( x1, x2, x3 );
  1366    printf( "fmaf(%f , %f , %f) = %f
  1367 ", x1, x2, x3, y );
  1368    y = fmal( x1, x2, x3 );
  1369    printf( "fmal(%f , %f , %f) = %f
  1370 ", x1, x2, x3, y );
  1371 }
  1372 
  1373 @endcode
  1374  Output
  1375 @code
  1376 fma ( 1, 2, 3 ) = 5
  1377 fmaf( 1, 2, 3 ) = 5
  1378 fmal( 1, 2, 3 ) = 5
  1379 
  1380 @endcode
  1381   Implementation notes In general, these routines will behave as one would expect if x * y + z
  1382 were computed with unbounded precision and range,
  1383 then rounded to the precision of the return type.
  1384 However, on some platforms,
  1385 
  1386 @see math()
  1387 
  1388 
  1389    
  1390 
  1391 @publishedAll
  1392 @externallyDefinedApi
  1393 */
  1394 
  1395 /** @fn  fmaf(float x, float y, float z)
  1396 @param x
  1397 @param y
  1398 @param z
  1399 @see math()
  1400 
  1401 
  1402    
  1403 
  1404 @publishedAll
  1405 @externallyDefinedApi
  1406 */
  1407 
  1408 /** @fn  fmax(double x, double y)
  1409 @param x
  1410 @param y
  1411 
  1412 The fmax, fmaxf, and fmaxl functions return the larger of x and y ,
  1413 and likewise, the fmin, fminf, and fminl functions return the smaller of x and y .
  1414 They treat +0.0
  1415 as being larger than -0.0.
  1416 If one argument is an NaN(Not a Number), then the other argument is returned.
  1417 If both arguments are NaN(Not a Number)s, then the result is an NaN(Not a Number).
  1418 
  1419 - Examples
  1420 @code
  1421 #include <math.h>
  1422 int main( void )
  1423 {
  1424    double y;
  1425    y = fmax( 0, -9 );
  1426    printf( "fmax ( 0, -9) = %f
  1427 ", y );
  1428    y = fmaxf( 0, -9 );
  1429    printf( "fmaxf( 0, -9) = %f
  1430 ", y );
  1431    y = fmaxl( 0, -9 );
  1432    printf( "fmaxl( 0, -9) = %f
  1433 ", y );
  1434    y = fmin( 0, -9 );
  1435    printf( "fmin ( 0, -9) = %f
  1436 ", y );
  1437    y = fminf( 0, -9 );
  1438    printf( "fminf ( 0, -9) = %f
  1439 ", y );
  1440    y = fminl( 0, -9 );
  1441    printf( "fminl ( 0, -9) = %f
  1442 ", y );
  1443 }
  1444 
  1445 @endcode
  1446  Output
  1447 @code
  1448 fmax( 0, -9 ) = 0
  1449 fmaxf( 0, -9 ) = 0
  1450 fmaxl( 0, -9 ) = 0
  1451 fmin( 0, -9 ) = -9
  1452 fminf( 0, -9 ) = -9
  1453 fminl( 0, -9 ) = -9
  1454 
  1455 @endcode
  1456 @see fabs()
  1457 @see fdim()
  1458 @see math()
  1459 
  1460 
  1461    
  1462 
  1463 @publishedAll
  1464 @externallyDefinedApi
  1465 */
  1466 
  1467 /** @fn  fmaxf(float x, float y)
  1468 @param x
  1469 @param y
  1470 @see fabs()
  1471 @see fdim()
  1472 @see math()
  1473 
  1474 
  1475    
  1476 
  1477 @publishedAll
  1478 @externallyDefinedApi
  1479 */
  1480 
  1481 /** @fn  fmaxl(long double x, long double y)
  1482 @param x
  1483 @param y
  1484 @see fabs()
  1485 @see fdim()
  1486 @see math()
  1487 
  1488 
  1489    
  1490 
  1491 @publishedAll
  1492 @externallyDefinedApi
  1493 */
  1494 
  1495 /** @fn  hypot(double x, double y)
  1496 @param x
  1497 @param y
  1498 
  1499 @code
  1500   The hypot and hypotf functions
  1501 compute the
  1502 sqrt(x*x+y*y)
  1503 in such a way that underflow will not happen, and overflow
  1504 occurs only if the final result deserves it.
  1505 @endcode
  1506 
  1507 Examples
  1508 @code
  1509 void main( void )
  1510 {
  1511    double x1 = 3.0 , x2 = 4.0, y;
  1512    y = hypot( x1, x2 );
  1513    printf( "atan2(%f , %f) = %f
  1514 ", x1, x2, y );
  1515    y = hypotf( x1, x2 );
  1516    printf( "atan2f(%f , %f) = %f
  1517 ", x1, x2, y );
  1518    y = hypotl( x1, x2 );
  1519    printf( "hypotl(%f , %f) = %f
  1520 ", x1, x2, y );
  1521 }
  1522 
  1523 @endcode
  1524  Output
  1525 @code
  1526 hypot ( 3.0, 4.0  ) = 5.000000
  1527 hypotf( 3.0, 4.0 )  = 5.000000
  1528 hypotl( 3.0, 4.0 )  = 5.000000
  1529 
  1530 @endcode
  1531 
  1532 Notes:
  1533 
  1534 As might be expected, hypot (v, NaN);
  1535 and hypot (NaN, v);
  1536 are NaN for all finite v. But programmers might be surprised at first to discover that hypot (±oo, NaN);
  1537 = +oo. This is intentional; it happens because hypot (oo, v);
  1538 = +oo for all v, finite or infinite. Hence hypot (oo, v);
  1539 is independent of v. Unlike the reserved operand fault on a VAX, the IEEE NaN is designed to disappear when it turns out to be irrelevant, as it does in hypot (oo, NaN);
  1540 hypot. 
  1541 
  1542 hypot (oo, v);
  1543 = hypot (v, oo);
  1544 = +oo for all v, including NaN. 
  1545 
  1546 @see math()
  1547 @see sqrt()
  1548 
  1549 
  1550    
  1551 
  1552 @publishedAll
  1553 @externallyDefinedApi
  1554 */
  1555 
  1556 /** @fn  hypotf(float x, float y)
  1557 @param x
  1558 @param y
  1559 @see math()
  1560 @see sqrt()
  1561 
  1562 
  1563    
  1564 
  1565 @publishedAll
  1566 @externallyDefinedApi
  1567 */
  1568 
  1569 /** @fn  ilogb(double x)
  1570 @param x
  1571 
  1572 The functions ilogb, ilogbf, and ilogbl return x ’s exponent, in integer format. ilogb (±oo);
  1573 @code
  1574 returns INT_MAX, ilogb (±NaN);
  1575 returns FP_ILOGBNAN and ilogb (0);
  1576 returns FP_ILOGB0. 
  1577 @endcode
  1578 
  1579 Examples
  1580 @code
  1581 #include <math.h>
  1582 int main( )
  1583 {
  1584    double e = 1024;
  1585    /*iLogb(), ilogbf() and ilogbl() */
  1586    y = ilogb( e );
  1587    printf( "ilogb( %f) = %f
  1588 ", e, y );
  1589    y = ilogbf( e );
  1590    printf( "ilogbf( %f) = %f
  1591 ", e, y );
  1592    y = ilogbl( e );
  1593    printf( "ilogbl( %f) = %f
  1594 
  1595 ", e, y );
  1596 }
  1597 
  1598 @endcode
  1599  Output
  1600 @code
  1601 ilogb (1024) = 10.000000
  1602 ilogbf(1024) = 10.000000
  1603 ilogbl(1024) = 10.000000
  1604 
  1605 @endcode
  1606 @see frexp()
  1607 @see ieee()
  1608 @see math()
  1609 @see scalbn()
  1610 
  1611 
  1612    
  1613 
  1614 @publishedAll
  1615 @externallyDefinedApi
  1616 */
  1617 
  1618 /** @fn  ilogbf(float x)
  1619 @param x
  1620 @see frexp()
  1621 @see ieee()
  1622 @see math()
  1623 @see scalbn()
  1624 
  1625 
  1626    
  1627 
  1628 @publishedAll
  1629 @externallyDefinedApi
  1630 */
  1631 
  1632 /** @fn  ilogbl(long double x)
  1633 @param x
  1634 @see frexp()
  1635 @see ieee()
  1636 @see math()
  1637 @see scalbn()
  1638 
  1639 
  1640    
  1641 
  1642 @publishedAll
  1643 @externallyDefinedApi
  1644 */
  1645 
  1646 /** @fn  lgamma(double x)
  1647 @param x
  1648 @see math()
  1649 
  1650 
  1651    
  1652 
  1653 @publishedAll
  1654 @externallyDefinedApi
  1655 */
  1656 
  1657 /** @fn  lgamma_r(double x, int *signgamp)
  1658 @param x
  1659 @param signgamp
  1660 @see math()
  1661 
  1662 
  1663    
  1664 
  1665 @publishedAll
  1666 @externallyDefinedApi
  1667 */
  1668 
  1669 /** @fn  lgammaf(float x)
  1670 @param x
  1671 @see math()
  1672 
  1673 
  1674    
  1675 
  1676 @publishedAll
  1677 @externallyDefinedApi
  1678 */
  1679 
  1680 /** @fn  lgammaf_r(float x, int *signgamp)
  1681 @param x
  1682 @param signgamp
  1683 @see math()
  1684 
  1685 
  1686    
  1687 
  1688 @publishedAll
  1689 @externallyDefinedApi
  1690 */
  1691 
  1692 /** @fn  llrint(double x)
  1693 @param x
  1694 @return  
  1695 
  1696 - Detailed description
  1697   The lrint function returns the integer nearest to its argument x according to the current rounding mode.
  1698 When the rounded result is representable as a long ,
  1699 the expression
  1700 
  1701  The llrint , llrintf and lrintf functions differ from lrint only in their input and output types. lrintf and llrintl is just an aliases to the functions lrint (and); llrint respectively
  1702 
  1703 - Examples
  1704 @code
  1705 #include <math.h>
  1706 int main( void )
  1707 {
  1708    double x1 = 1.4;
  1709    long long y;
  1710    int res ;
  1711    y = llrint( x1 );
  1712    printf( "llrint(%f) = %d
  1713 ", x1, y );
  1714    y = llrintf( x1 );
  1715    printf( "llrintf(%f) = %d
  1716 ", x1, y );
  1717    y = llrintl( x1 );
  1718    printf( "llrintl(%f) = %d
  1719 ", x1, y );
  1720    res = lrint( x1 );
  1721    printf( "lrint(%f) = %d
  1722 ", x1, res );
  1723    res = lrintf( x1 );
  1724    printf( "lrintf(%f) = %d
  1725 ", x1, res );
  1726    res = lrintl( x1 );
  1727    printf( "lrintl(%f) = %d
  1728 ", x1, res );
  1729 }
  1730 
  1731 @endcode
  1732  Output
  1733 @code
  1734 llrint ( 1.4 ) = 1.000000
  1735 llrintf( 1.4 ) = 1.000000
  1736 llrintl( 1.4 ) = 1.000000
  1737 lrint ( 1.4 ) = 1.000000
  1738 lrintf( 1.4 ) = 1.000000
  1739 lrintl( 0.0 ) = 1.000000
  1740 
  1741 @endcode
  1742 @see lround()
  1743 @see math()
  1744 @see rint()
  1745 @see round()
  1746 
  1747 
  1748    
  1749 
  1750 @publishedAll
  1751 @externallyDefinedApi
  1752 */
  1753 
  1754 /** @fn  llrintf(float x)
  1755 @param x
  1756 @see lround()
  1757 @see math()
  1758 @see rint()
  1759 @see round()
  1760 
  1761 
  1762    
  1763 
  1764 @publishedAll
  1765 @externallyDefinedApi
  1766 */
  1767 
  1768 /** @fn  llround(double x)
  1769 @param x
  1770 
  1771 
  1772 The lround function returns the integer nearest to its argument x ,
  1773 rounding away from zero in halfway cases.
  1774 If the rounded result is too large to be represented as a long
  1775 value, the return value is undefined.
  1776 When the rounded result is representable as a long ,
  1777 the expression lround (x); is equivalent to round (x);( long) (although the former may be more efficient).
  1778 
  1779  The llround , llroundf , llroundl , lroundf and lroundl functions differ from lround only in their input and output types.
  1780 
  1781 Examples
  1782 @code
  1783 #include <math.h>
  1784 int main( void )
  1785 {
  1786    double x1 = 1.5;
  1787    long long y;
  1788    int res ;
  1789    y = llround( x1 );
  1790    printf( "llround(%f) = %d
  1791 ", x1, y );
  1792    y = llroundf( x1 );
  1793    printf( "llroundf(%f) = %d
  1794 ", x1, y );
  1795    y = llroundl( x1 );
  1796    printf( "llroundl(%f) = %d
  1797 
  1798 ", x1, y );
  1799    res = lround( x1 );
  1800    printf( "lround(%f) = %d
  1801 ", x1, res );
  1802    res = lroundf( x1 );
  1803    printf( "lroundf(%f) = %d
  1804 ", x1, res );
  1805    res = lroundl( x1 );
  1806    printf( "lroundl(%f) = %d
  1807 ", x1, res );
  1808 }
  1809 
  1810 @endcode
  1811  Output
  1812 @code
  1813 llround ( 1.5 ) = 2.000000
  1814 llroundf( 1.5 ) = 2.000000
  1815 llroundl( 1.5 ) = 2.000000
  1816 lround ( 1.5 ) = 2.000000
  1817 lroundf( 1.5 ) = 2.000000
  1818 lroundl( 1.5 ) = 2.000000
  1819 
  1820 @endcode
  1821 @see lrint()
  1822 @see math()
  1823 @see rint()
  1824 @see round()
  1825 
  1826 
  1827    
  1828 
  1829 @publishedAll
  1830 @externallyDefinedApi
  1831 */
  1832 
  1833 /** @fn  llroundf(float x)
  1834 @param x
  1835 @see lrint()
  1836 @see math()
  1837 @see rint()
  1838 @see round()
  1839 
  1840 
  1841    
  1842 
  1843 @publishedAll
  1844 @externallyDefinedApi
  1845 */
  1846 
  1847 /** @fn  log1p(double x)
  1848 @param x
  1849 @see math()
  1850 
  1851 
  1852    
  1853 
  1854 @publishedAll
  1855 @externallyDefinedApi
  1856 */
  1857 
  1858 /** @fn  log1pf(float x)
  1859 @param x
  1860 @see math()
  1861 
  1862 
  1863    
  1864 
  1865 @publishedAll
  1866 @externallyDefinedApi
  1867 */
  1868 
  1869 /** @fn  logb(double x)
  1870 @param x
  1871 - Detailed description
  1872 
  1873   These functions allow users to test conformance to -ieee754 .
  1874 Their use is not otherwise recommended.
  1875 @code
  1876  logb (x); and logbf (x); return x 's exponent n ,
  1877 a signed integer converted to double-precision floating-point. logb (±oo); = +oo; logb (0); = -oo
  1878 
  1879  scalb (x, n); and scalbf (x, n); return x *(2** n )
  1880 computed by exponent manipulation.
  1881 
  1882  significand (x); and significandf (x); return sig ,
  1883 where x = sig * 2** n with 1 <= sig <2. significand (x); and significandf (x); are not defined when x is 0, ±oo, or NaN.
  1884 Here , long double version function are just aliases to
  1885 their corresponding double version apis.
  1886 @endcode
  1887 
  1888 - Examples
  1889 @code
  1890 #include <math.h>
  1891 int main( )
  1892 {
  1893    double e = 2.718282;
  1894    /*Logb(), logbf() and logbl() */
  1895    y = logb( e );
  1896    printf( "logb( %f) = %f
  1897 ", e, y );
  1898    y = logbf( e );
  1899    printf( "logbf( %f) = %f
  1900 ", e, y );
  1901    y = logbl( e );
  1902    printf( "logbl( %f) = %f
  1903 
  1904 ", e, y );
  1905    /*scalb(), scalbf() and scalbl()*/
  1906    double x1 = 0.8, x2 = 4.0 ;
  1907    y = scalb( x1, x2 );
  1908    printf( "scalb( %f, %f) = %f
  1909 ", x1, x2, y );
  1910    y = scalbf( x1, x2 );
  1911    printf( "scalbf( %f, %f) = %f
  1912 ", x1, x2, y );
  1913    y = scalbl( x1, x2 );
  1914    printf( "scalbl( %f, %f) = %f
  1915 ", x1, x2, y );
  1916    /*significand(), significandf() and significandl()*/
  1917    x2 = 4.0 ;
  1918    y = significand( x2 );
  1919    printf( "significand(%f)  = %f
  1920 ",  x2, y );
  1921    y = significandf( x2 );
  1922    printf( "significandf(%f) = %f
  1923 ",x2, y );
  1924    y = significandl( x2 );
  1925    printf( "significandl(%f) = %f
  1926 ",x2, y );
  1927 }
  1928 
  1929 @endcode
  1930  Output
  1931 @code
  1932 logb( 2.718282) = 1.000000
  1933 logbf( 2.718282) = 1.000000
  1934 logbl( 2.718282) = 1.000000
  1935 scalb( 0.8, 4.0 ) = 12.800000
  1936 scalbf( 0.8, 4.0 ) = 12.800000
  1937 scalbl( 0.8, 4.0 ) = 12.800000
  1938 significand ( 4.0) = 1.000000
  1939 significandf( 4.0) = 1.000000
  1940 significandl( 4.0) = 1.000000
  1941 
  1942 @endcode
  1943 @see ieee()
  1944 @see math()
  1945 
  1946 
  1947    
  1948 
  1949 @publishedAll
  1950 @externallyDefinedApi
  1951 */
  1952 
  1953 /** @fn  logbf(float x)
  1954 @param x
  1955 @see ieee()
  1956 @see math()
  1957 
  1958 
  1959    
  1960 
  1961 @publishedAll
  1962 @externallyDefinedApi
  1963 */
  1964 
  1965 /** @fn  lrint(double x)
  1966 @param x
  1967 @see lround()
  1968 @see math()
  1969 @see rint()
  1970 @see round()
  1971 
  1972 
  1973    
  1974 
  1975 @publishedAll
  1976 @externallyDefinedApi
  1977 */
  1978 
  1979 /** @fn  lrintf(float x)
  1980 @param x
  1981 @see lround()
  1982 @see math()
  1983 @see rint()
  1984 @see round()
  1985 
  1986 
  1987    
  1988 
  1989 @publishedAll
  1990 @externallyDefinedApi
  1991 */
  1992 
  1993 /** @fn  lround(double x)
  1994 @param x
  1995 @see lrint()
  1996 @see math()
  1997 @see rint()
  1998 @see round()
  1999 
  2000 
  2001    
  2002 
  2003 @publishedAll
  2004 @externallyDefinedApi
  2005 */
  2006 
  2007 /** @fn  lroundf(float x)
  2008 @param x
  2009 @see lrint()
  2010 @see math()
  2011 @see rint()
  2012 @see round()
  2013 
  2014 
  2015    
  2016 
  2017 @publishedAll
  2018 @externallyDefinedApi
  2019 */
  2020 
  2021 /** @fn  nextafter(double x, double y)
  2022 @param x
  2023 @param y
  2024 - Detailed description
  2025   These functions
  2026 return the next machine representable number from x in direction y .
  2027 
  2028 - Examples
  2029 @code
  2030 #include <math.h>
  2031 int main( )
  2032 {
  2033    double inp1 = 1.3;
  2034    double inp2 = 2;
  2035    double y;
  2036    y = nextafter( inp1, inp2 );
  2037    printf( "nextafter(%f , %f) = %f
  2038 ", inp1,  inp2,  y );
  2039    y = nextafterf( inp1, inp2 );
  2040    printf( "nextafterf(%f , %f) = %f
  2041 ", inp1, inp2, y );
  2042    y = nextafterl( inp1, inp2 );
  2043    printf( "nextafterl(%f , %f) = %f
  2044 
  2045 ", inp1, inp2, y );
  2046    inp1 = 9;
  2047    inp2 = 9;
  2048    y = nexttoward( inp1, inp2 );
  2049    printf( "nexttoward(%f , %f) = %f
  2050 ", inp1,  inp2,  y );
  2051    y = nexttowardf( inp1, inp2 );
  2052    printf( "nexttowardf(%f , %f) = %f
  2053 ", inp1, inp2, y );
  2054    y = nexttowardl( inp1, inp2 );
  2055    printf( "nexttowardl(%f , %f) = %f
  2056 ", inp1, inp2, y );
  2057 }
  2058 
  2059 @endcode
  2060  Output
  2061 @code
  2062 nextafter  ( 1.3, 2.0 ) = 1.3
  2063 nextafterf ( 1.3, 2.0 ) = 1.3
  2064 nextafterl ( 1.3, 2.0 ) = 1.3
  2065 nexttoward  ( 9, 9 ) = 9
  2066 nexttowardf ( 9, 9 ) = 9
  2067 nexttowardl ( 9, 9 ) = 9
  2068 
  2069 @endcode
  2070 @see ieee()
  2071 @see math()
  2072 
  2073 
  2074    
  2075 
  2076 @publishedAll
  2077 @externallyDefinedApi
  2078 */
  2079 
  2080 /** @fn  nextafterf(float x, float y)
  2081 @param x
  2082 @param y
  2083 @see ieee()
  2084 @see math()
  2085 
  2086 
  2087    
  2088 
  2089 @publishedAll
  2090 @externallyDefinedApi
  2091 */
  2092 
  2093 /** @fn  remainder(double x, double p)
  2094 @param x
  2095 @param p
  2096 @see fmod()
  2097 @see ieee()
  2098 @see math()
  2099 
  2100 
  2101    
  2102 
  2103 @publishedAll
  2104 @externallyDefinedApi
  2105 */
  2106 
  2107 /** @fn  remainderf(float x, float p)
  2108 @param x
  2109 @param p
  2110 @see fmod()
  2111 @see ieee()
  2112 @see math()
  2113 
  2114 
  2115    
  2116 
  2117 @publishedAll
  2118 @externallyDefinedApi
  2119 */
  2120 
  2121 /** @fn  remquo(double x, double y, int *quo)
  2122 @param x
  2123 @param y
  2124 @param quo
  2125 @see fmod()
  2126 @see ieee()
  2127 @see math()
  2128 
  2129 
  2130    
  2131 
  2132 @publishedAll
  2133 @externallyDefinedApi
  2134 */
  2135 
  2136 /** @fn  remquof(float x, float y, int *quo)
  2137 @param x
  2138 @param y
  2139 @param quo
  2140 @see fmod()
  2141 @see ieee()
  2142 @see math()
  2143 
  2144 
  2145    
  2146 
  2147 @publishedAll
  2148 @externallyDefinedApi
  2149 */
  2150 
  2151 /** @fn  rint(double x)
  2152 @param x
  2153 @see abs()
  2154 @see ceil()
  2155 @see fabs()
  2156 @see floor()
  2157 @see ieee()
  2158 @see lrint()
  2159 @see lround()
  2160 @see math()
  2161 @see round()
  2162 
  2163 
  2164    
  2165 
  2166 @publishedAll
  2167 @externallyDefinedApi
  2168 */
  2169 
  2170 /** @fn  rintf(float x)
  2171 @param x
  2172 @see abs()
  2173 @see ceil()
  2174 @see fabs()
  2175 @see floor()
  2176 @see ieee()
  2177 @see lrint()
  2178 @see lround()
  2179 @see math()
  2180 @see round()
  2181 
  2182 
  2183    
  2184 
  2185 @publishedAll
  2186 @externallyDefinedApi
  2187 */
  2188 
  2189 /** @fn  j0(double x)
  2190 @param x
  2191 @return   If these functions are successful,
  2192 the computed value is returned.
  2193 
  2194 - Detailed description
  2195   The functions j0 , j0f , j1 and j1f compute the Bessel function of the first kind of the order 0 and the order 1, respectively,
  2196 for the
  2197 real value x ;
  2198 the functions jn and jnf compute the Bessel function of the first kind of the integer order n for the real value x .
  2199 
  2200  The functions y0 , y0f , y1 ,
  2201 and y1f compute the linearly independent Bessel function of the second kind of the order 0 and the order 1, respectively,
  2202 for the
  2203 positive real value x ;
  2204 the functions yn and ynf compute the Bessel function of the second kind for the integer order n for the positive real value x .
  2205 
  2206  Here the long double version APIs are aliases the double version APIs.
  2207 All APIs \<Function\>l behaves similiar to that of \<Function\>.
  2208 
  2209 - Examples
  2210 @code
  2211 #include <math.h>
  2212 int main( )
  2213 {
  2214    double x = 1.0;
  2215    /*J0(), j0f() and j0l() */
  2216    double y = j0( x );
  2217    printf( "j0( %f) = %f
  2218 ", x, y );
  2219    y = j0f( x );
  2220    printf( "j0f( %f) = %f
  2221 ", x, y );
  2222    y = j0l( x );
  2223    printf( "j0l( %f) = %f
  2224 
  2225 ", x, y );
  2226    /*J1(), j1f() and j1l() */
  2227    y = j1( x );
  2228    printf( "j1( %f) = %f
  2229 ", x, y );
  2230    y = j1f( x );
  2231    printf( "j1f( %f) = %f
  2232 ", x, y );
  2233    y = j1l( x );
  2234    printf( "j1l( %f) = %f
  2235 
  2236 ", x, y );
  2237    /*jn(), jnf() and jnl() */
  2238    y = jn( 3, x );
  2239    printf( "jn( 2, %f) = %f
  2240 ", x, y );
  2241    y = jnf( 1, x );
  2242    printf( "jnf( 1, %f) = %f
  2243 ", x, y );
  2244    y = jnl( 10, 0.75 );
  2245    printf( "jnl(10, %f) = %f
  2246 
  2247 ", 0.75, y );
  2248    /*y0(), y0f() and y0l() */
  2249    y = y0( x );
  2250    printf( "y0( %f) = %f
  2251 ", x, y );
  2252    y = y0f( x );
  2253    printf( "y0f( %f) = %f
  2254 ", x, y );
  2255    y = y0l( x );
  2256    printf( "y0l( %f) = %f
  2257 
  2258 ", x, y );
  2259    /*y1(), y1f() and y1l() */
  2260    y = y1( x );
  2261    printf( "y1( %f) = %f
  2262 ", x, y );
  2263    y = y1f( x );
  2264    printf( "y1f( %f) = %f
  2265 ", x, y );
  2266    y = y1l( x );
  2267    printf( "y1l( %f) = %f
  2268 
  2269 ", x, y );
  2270    /*yn(), ynf() and ynl() */
  2271    y = yn( 3, x );
  2272    printf( "yn( 2, %f) = %f
  2273 ", x, y );
  2274    y = ynf( 1, x );
  2275    printf( "ynf( 1, %f) = %f
  2276 ", x, y );
  2277    y = ynl( 10, 0.75 );
  2278    printf( "ynl(10, %f) = %f
  2279 
  2280 ", 0.75, y );
  2281 }
  2282 
  2283 @endcode
  2284  Output
  2285 @code
  2286 j0( 1.000) = 0.76519768
  2287 j0f( 1.000) = 0.76519768
  2288 j0l( 1.000) = 0.76519768
  2289 j1 ( 1.000) = 0.4400505
  2290 j1f( 1.000) = 0.4400505
  2291 j1l( 1.000) = 0.4400505
  2292 jn ( 3, 1.000) = 0.0195633
  2293 jnf( 1, 1.000) = 0.4400505
  2294 jnl( 10, 0.75) = 0.1496212
  2295 y0 ( 1.000) = 0.0882569
  2296 y0f( 1.000) = 0.0882569
  2297 y0l( 1.000) = 0.0882569
  2298 y1 ( 1.000) = -0.7812128
  2299 y1f( 1.000) = -0.7812128
  2300 y1l( 1.000) = -0.7812128
  2301 yn ( 3, 1.000) = -5.8215176
  2302 ynf( 1, 1.000) = -0.781212
  2303 ynl( 10, 0.75) = -2133501638.9
  2304 
  2305 @endcode
  2306 @see math()
  2307 
  2308 
  2309    
  2310 
  2311 @publishedAll
  2312 @externallyDefinedApi
  2313 */
  2314 
  2315 /** @fn  j0f(float x)
  2316 @param x
  2317 @see math()
  2318 
  2319 
  2320    
  2321 
  2322 @publishedAll
  2323 @externallyDefinedApi
  2324 */
  2325 
  2326 /** @fn  j1(double x)
  2327 @param x
  2328 @see math()
  2329 
  2330 
  2331    
  2332 
  2333 @publishedAll
  2334 @externallyDefinedApi
  2335 */
  2336 
  2337 /** @fn  j1f(float x)
  2338 @param x
  2339 @see math()
  2340 
  2341 
  2342    
  2343 
  2344 @publishedAll
  2345 @externallyDefinedApi
  2346 */
  2347 
  2348 /** @fn  jn(int n, double x)
  2349 @param n
  2350 @param x
  2351 @see math()
  2352 
  2353 
  2354    
  2355 
  2356 @publishedAll
  2357 @externallyDefinedApi
  2358 */
  2359 
  2360 /** @fn  jnf(int n, float x)
  2361 @param n
  2362 @param x
  2363 @see math()
  2364 
  2365 
  2366    
  2367 
  2368 @publishedAll
  2369 @externallyDefinedApi
  2370 */
  2371 
  2372 /** @fn  scalb(double x, double fn)
  2373 @param x
  2374 @param fn
  2375 @see ieee()
  2376 @see math()
  2377 
  2378 
  2379    
  2380 
  2381 @publishedAll
  2382 @externallyDefinedApi
  2383 */
  2384 
  2385 /** @fn  scalbf(float x, float fn)
  2386 @param x
  2387 @param fn
  2388 @see ieee()
  2389 @see math()
  2390 
  2391 
  2392    
  2393 
  2394 @publishedAll
  2395 @externallyDefinedApi
  2396 */
  2397 
  2398 /** @fn  scalbln(double x, long n)
  2399 @param x
  2400 @param n
  2401 @return   x (*, FLT_RADIX**n); ±HUGE_VAL, (±HUGE_VALF,, and, ±HUGE_VALL); (according to the sign of x ) as appropriate for the return type of the function. x is NaN , a shall be returned. x is ±0 or ±Inf, x shall be returned. n is 0, x shall be returned.
  2402 
  2403 - Detailed description
  2404   These routines return x *(2** n )
  2405 computed by exponent manipulation.
  2406 
  2407 - Examples
  2408 @code
  2409 #include <math.h>
  2410 int main( )
  2411 {  
  2412    /*scalbn(), scalbnf() and scalbnl()*/
  2413    double x1 = 0.8, x2 = 4.0 ;
  2414    y = scalbn( x1, x2 );
  2415    printf( "scalbn( %f, %f) = %f
  2416 ", x1, x2, y );
  2417    y = scalbnf( x1, x2 );
  2418    printf( "scalbnf( %f, %f) = %f
  2419 ", x1, x2, y );
  2420    y = scalbnl( x1, x2 );
  2421    printf( "scalbnl( %f, %f) = %f
  2422 ", x1, x2, y );
  2423   /*scalbln(), scalblnf() and scalblnl()*/
  2424    x1 = 0.8, x2 = 4.0 ;
  2425    y = scalbln( x1, x2 );
  2426    printf( "scalbln( %f, %f) = %f
  2427 ", x1, x2, y );
  2428    y = scalblnf( x1, x2 );
  2429    printf( "scalblnf( %f, %f) = %f
  2430 ", x1, x2, y );
  2431    y = scalblnl( x1, x2 );
  2432    printf( "scalblnl( %f, %f) = %f
  2433 ", x1, x2, y );
  2434 }
  2435 
  2436 @endcode
  2437  Output
  2438 @code
  2439 scalbn ( 0.8, 4.0 ) = 12.800000
  2440 scalbnf( 0.8, 4.0 ) = 12.800000
  2441 scalbnl( 0.8, 4.0 ) = 12.800000
  2442 scalbln ( 0.8, 4.0 ) = 12.800000
  2443 scalblnf( 0.8, 4.0 ) = 12.800000
  2444 scalblnl( 0.8, 4.0 ) = 12.800000
  2445 
  2446 @endcode
  2447 @see ieee()
  2448 @see math()
  2449 
  2450 
  2451    
  2452 
  2453 @publishedAll
  2454 @externallyDefinedApi
  2455 */
  2456 
  2457 /** @fn  scalblnf(float x, long n)
  2458 @param x
  2459 @param n
  2460 @see ieee()
  2461 @see math()
  2462 
  2463 
  2464    
  2465 
  2466 @publishedAll
  2467 @externallyDefinedApi
  2468 */
  2469 
  2470 /** @fn  scalblnl(long double x, long n)
  2471 @param x
  2472 @param n
  2473 @see ieee()
  2474 @see math()
  2475 
  2476 
  2477    
  2478 
  2479 @publishedAll
  2480 @externallyDefinedApi
  2481 */
  2482 
  2483 /** @fn  scalbn(double x, int n)
  2484 @param x
  2485 @param n
  2486 @see ieee()
  2487 @see math()
  2488 
  2489 
  2490    
  2491 
  2492 @publishedAll
  2493 @externallyDefinedApi
  2494 */
  2495 
  2496 /** @fn  scalbnf(float x, int n)
  2497 @param x
  2498 @param n
  2499 @see ieee()
  2500 @see math()
  2501 
  2502 
  2503    
  2504 
  2505 @publishedAll
  2506 @externallyDefinedApi
  2507 */
  2508 
  2509 /** @fn  y0(double x)
  2510 @param x
  2511 @see math()
  2512 
  2513 
  2514    
  2515 
  2516 @publishedAll
  2517 @externallyDefinedApi
  2518 */
  2519 
  2520 /** @fn  y0f(float x)
  2521 @param x
  2522 @see math()
  2523 
  2524 
  2525    
  2526 
  2527 @publishedAll
  2528 @externallyDefinedApi
  2529 */
  2530 
  2531 /** @fn  y1(double x)
  2532 @param x
  2533 @see math()
  2534 
  2535 
  2536    
  2537 
  2538 @publishedAll
  2539 @externallyDefinedApi
  2540 */
  2541 
  2542 /** @fn  y1f(float x)
  2543 @param x
  2544 @see math()
  2545 
  2546 
  2547    
  2548 
  2549 @publishedAll
  2550 @externallyDefinedApi
  2551 */
  2552 
  2553 /** @fn  yn(int n, double x)
  2554 @param n
  2555 @param x
  2556 @see math()
  2557 
  2558 
  2559    
  2560 
  2561 @publishedAll
  2562 @externallyDefinedApi
  2563 */
  2564 
  2565 /** @fn  ynf(int n, float x)
  2566 @param n
  2567 @param x
  2568 @see math()
  2569 
  2570 
  2571    
  2572 
  2573 @publishedAll
  2574 @externallyDefinedApi
  2575 */
  2576 
  2577 /** @fn  gamma(double x)
  2578 @param x
  2579 @see math()
  2580 
  2581 
  2582    
  2583 
  2584 @publishedAll
  2585 @externallyDefinedApi
  2586 */
  2587 
  2588 /** @fn  gammaf(float x)
  2589 @param x
  2590 @see math()
  2591 
  2592 
  2593    
  2594 
  2595 @publishedAll
  2596 @externallyDefinedApi
  2597 */
  2598 
  2599 /** @fn  copysign(double x, double y)
  2600 @param x
  2601 @param y
  2602 - Detailed description
  2603   The copysign , copysignf, and copysignl functions
  2604 return x with its sign changed to y 's .
  2605 
  2606 - Examples
  2607 @code
  2608 #include <math.h>
  2609 void main( void )
  2610 {
  2611    double x1 = 0, x2 = -4, y;
  2612    y = copysign( x1, x2 );
  2613    printf( "copysign(%f , %f) = %f
  2614 ", x1, x2, y );
  2615    y = copysignf( x1, x2 );
  2616    printf( "copysignf(%f , %f) = %f
  2617 ", x1, x2, y );
  2618    y = copysignl( x1, x2 );
  2619    printf( "copysignl(%f , %f) = %f
  2620 ", x1, x2, y );
  2621 }
  2622 
  2623 @endcode
  2624  Output
  2625 @code
  2626 copysign ( 0, -4 ) = -0.0
  2627 copysignf( 0, -4 ) = -0.0
  2628 copysignl( 0, -4 ) = -0.0
  2629 
  2630 @endcode
  2631 @see fabs()
  2632 @see fdim()
  2633 @see ieee()
  2634 @see math()
  2635 
  2636 
  2637    
  2638 
  2639 @publishedAll
  2640 @externallyDefinedApi
  2641 */
  2642 
  2643 /** @fn  copysignf(float x, float y)
  2644 @param x
  2645 @param y
  2646 @see fabs()
  2647 @see fdim()
  2648 @see ieee()
  2649 @see math()
  2650 
  2651 
  2652    
  2653 
  2654 @publishedAll
  2655 @externallyDefinedApi
  2656 */
  2657 
  2658 /** @fn  copysignl(long double x, long double y)
  2659 @param x
  2660 @param y
  2661 @see fabs()
  2662 @see fdim()
  2663 @see ieee()
  2664 @see math()
  2665 
  2666 
  2667    
  2668 
  2669 @publishedAll
  2670 @externallyDefinedApi
  2671 */
  2672 
  2673 /** @fn  fdim(double x, double y)
  2674 @param x
  2675 @param y
  2676 - Detailed description
  2677   The fdim, fdimf, and fdiml functions return the positive difference between x and y .
  2678 That is, if x- y is positive, then x- y is returned.
  2679 If either x or y is an NaN, then an NaN is returned.
  2680 Otherwise, the result is +0.0.
  2681 
  2682 - Examples
  2683 @code
  2684 #include <math.h>
  2685 int main( void )
  2686 {
  2687    double x1 = 0, x2 = -9, y;
  2688    y = fdim( x1, x2 );
  2689    printf( "fdim(%f , %f) = %f
  2690 ", x1, x2, y );
  2691    y = fdimf( x1, x2 );
  2692    printf( "fdimf(%f , %f) = %f
  2693 ", x1, x2, y );
  2694    y = fdiml( x1, x2 );
  2695    printf( "fdiml(%f , %f) = %f
  2696 ", x1, x2, y );
  2697 }
  2698 
  2699 @endcode
  2700  Output
  2701 @code
  2702 fdim ( 0, -9 ) = 9
  2703 fdimf( 0, -9 ) = 9
  2704 fdiml( 0, -9 ) = 9
  2705 
  2706 @endcode
  2707 @see fabs()
  2708 @see fmax()
  2709 @see math()
  2710 
  2711 
  2712    
  2713 
  2714 @publishedAll
  2715 @externallyDefinedApi
  2716 */
  2717 
  2718 /** @fn  fdimf(float x, float y)
  2719 @param x
  2720 @param y
  2721 @see fabs()
  2722 @see fmax()
  2723 @see math()
  2724 
  2725 
  2726    
  2727 
  2728 @publishedAll
  2729 @externallyDefinedApi
  2730 */
  2731 
  2732 /** @fn  fdiml(long double x, long double y)
  2733 @param x
  2734 @param y
  2735 @see fabs()
  2736 @see fmax()
  2737 @see math()
  2738 
  2739 
  2740    
  2741 
  2742 @publishedAll
  2743 @externallyDefinedApi
  2744 */
  2745 
  2746 /** @fn  fmin(double x, double y)
  2747 @param x
  2748 @param y
  2749 @see fabs()
  2750 @see fdim()
  2751 @see math()
  2752 
  2753 
  2754    
  2755 
  2756 @publishedAll
  2757 @externallyDefinedApi
  2758 */
  2759 
  2760 /** @fn  fminf(float x, float y)
  2761 @param x
  2762 @param y
  2763 @see fabs()
  2764 @see fdim()
  2765 @see math()
  2766 
  2767 
  2768    
  2769 
  2770 @publishedAll
  2771 @externallyDefinedApi
  2772 */
  2773 
  2774 /** @fn  nearbyint(double x)
  2775 @param x
  2776 @return   x is integral or infinite, x itself is returned.
  2777 
  2778 - Detailed description
  2779   The rint and rintf functions return the integral value nearest to x according to the prevailing rounding mode.
  2780 
  2781  The nearbyint and nearbyintf functions perform the same operation.
  2782 The functions nearbyintl and rintl are aliases to the functions nearbyint and rint respectively.
  2783 
  2784 - Examples
  2785 @code
  2786 #include <math.h>
  2787 int main( )
  2788 {
  2789    double inp = 1.5;
  2790    double y;
  2791    y = nearbyint( inp );
  2792    printf( "nearbyint(%f ) = %f
  2793 ", inp,  y );
  2794    y = nearbyintf( inp );
  2795    printf( "nearbyintf(%f ) = %f
  2796 ", inp, y );
  2797    y = nearbyintl( inp );
  2798    printf( "nearbyintl(%f ) = %f
  2799 
  2800 ", inp, y );
  2801    y = rint( inp );
  2802    printf( "rint(%f ) = %f
  2803 ", inp,  y );
  2804    y = rintf( inp );
  2805    printf( "rintf(%f ) = %f
  2806 ", inp, y );
  2807    y = rintl( inp );
  2808    printf( "rintl(%f ) = %f
  2809 
  2810 ", inp, y ); 
  2811 }
  2812 
  2813 @endcode
  2814  Output
  2815 @code
  2816 nearbyint  ( 1.5 ) = 2.000000
  2817 nearbyintf ( 1.5 ) = 2.000000
  2818 nearbyintl ( 1.5 ) = 2.000000
  2819 rint ( 1.5 ) = 2.000000
  2820 rintf( 1.5 ) = 2.000000
  2821 rintl( 1.5 ) = 2.000000
  2822 
  2823 @endcode
  2824 @see abs()
  2825 @see ceil()
  2826 @see fabs()
  2827 @see floor()
  2828 @see ieee()
  2829 @see lrint()
  2830 @see lround()
  2831 @see math()
  2832 @see round()
  2833 
  2834 
  2835    
  2836 
  2837 @publishedAll
  2838 @externallyDefinedApi
  2839 */
  2840 
  2841 /** @fn  nearbyintf(float x)
  2842 @param x
  2843 @see abs()
  2844 @see ceil()
  2845 @see fabs()
  2846 @see floor()
  2847 @see ieee()
  2848 @see lrint()
  2849 @see lround()
  2850 @see math()
  2851 @see round()
  2852 
  2853 
  2854    
  2855 
  2856 @publishedAll
  2857 @externallyDefinedApi
  2858 */
  2859 
  2860 /** @fn  round(double x)
  2861 @param x
  2862 @return   x is integral or infinite, x itself is returned.
  2863 
  2864 - Detailed description
  2865   The round , roundf ,
  2866 and roundl functions return the nearest integral value to x ;
  2867 if x lies halfway between two integral values, then these
  2868 functions return the integral value with the larger
  2869 absolute value (i.e., they round away from zero).
  2870 
  2871 - Examples
  2872 @code
  2873 #include <math.h>
  2874 int main( )
  2875 {
  2876    double inp = 0.5;
  2877    double y; 
  2878    y = round( inp );
  2879    printf( "round(%f ) = %f
  2880 ", inp,  y );
  2881    y = roundf( inp );
  2882    printf( "roundf(%f ) = %f
  2883 ", inp, y );
  2884    y = roundl( inp );
  2885    printf( "roundl(%f ) = %f
  2886 
  2887 ", inp, y );
  2888 }
  2889 
  2890 @endcode
  2891  Output
  2892 @code
  2893 round  ( 0.5 ) = 1.000000
  2894 roundf ( 0.5 ) = 1.000000
  2895 roundl ( 0.5 ) = 1.000000
  2896 
  2897 @endcode
  2898 @see ceil()
  2899 @see floor()
  2900 @see ieee()
  2901 @see lrint()
  2902 @see lround()
  2903 @see math()
  2904 @see rint()
  2905 @see trunc()
  2906 
  2907 
  2908    
  2909 
  2910 @publishedAll
  2911 @externallyDefinedApi
  2912 */
  2913 
  2914 /** @fn  roundf(float x)
  2915 @param x
  2916 @see ceil()
  2917 @see floor()
  2918 @see ieee()
  2919 @see lrint()
  2920 @see lround()
  2921 @see math()
  2922 @see rint()
  2923 @see trunc()
  2924 
  2925 
  2926    
  2927 
  2928 @publishedAll
  2929 @externallyDefinedApi
  2930 */
  2931 
  2932 /** @fn  trunc(double x)
  2933 @param x
  2934 @return   x is integral, infinite or NaN , x itself is returned.
  2935 
  2936 - Detailed description
  2937   The trunc , truncf ,
  2938 and truncl functions return the nearest integral value with magnitude less than
  2939 or equal to | x | .
  2940 They are equivalent to rint , rintf ,
  2941 and rintl ,
  2942 respectively, in the FE_TOWARDZERO rounding mode.
  2943 
  2944 - Examples
  2945 @code
  2946 #include <math.h>
  2947 int main( )
  2948 {
  2949    double inp = 1048580.625;
  2950    double y;
  2951    y = trunc( inp );
  2952    printf( "trunc( %f)  = %f
  2953 ", inp,  y );
  2954    y = truncf( inp);
  2955    printf( "truncf( %f) = %f
  2956 ", inp, y );
  2957    y = truncl( inp);
  2958    printf( "truncl( %f) = %f
  2959 
  2960 ", inp, y );
  2961 }
  2962 
  2963 @endcode
  2964  Output
  2965 @code
  2966 trunc ( 1048580.625 ) = 1048580.000000
  2967 truncf( 1048580.625 ) = 1048580.000000
  2968 truncl( 1048580.625 ) = 1048580.000000
  2969 
  2970 @endcode
  2971 @see ceil()
  2972 @see fegetround()
  2973 @see floor()
  2974 @see math()
  2975 @see nextafter()
  2976 @see rint()
  2977 @see round()
  2978 
  2979 
  2980    
  2981 
  2982 @publishedAll
  2983 @externallyDefinedApi
  2984 */
  2985 
  2986 /** @fn  truncf(float x)
  2987 @param x
  2988 @see ceil()
  2989 @see fegetround()
  2990 @see floor()
  2991 @see math()
  2992 @see nextafter()
  2993 @see rint()
  2994 @see round()
  2995 
  2996 
  2997    
  2998 
  2999 @publishedAll
  3000 @externallyDefinedApi
  3001 */
  3002 
  3003 /** @fn  truncl(long double x)
  3004 @param x
  3005 @see ceil()
  3006 @see fegetround()
  3007 @see floor()
  3008 @see math()
  3009 @see nextafter()
  3010 @see rint()
  3011 @see round()
  3012 
  3013 
  3014    
  3015 
  3016 @publishedAll
  3017 @externallyDefinedApi
  3018 */
  3019 
  3020 /** @fn  drem(double x, double y)
  3021 @param x
  3022 @param y
  3023 @return   The drem() function returns the remainder, unless y is zero.
  3024 
  3025 - Detailed description
  3026   The drem dremf and the dreml functions  compute  the remainder of dividing x by y.  The
  3027 return value is x - n * y, where n is the quotient of x / y, rounded to
  3028 the nearest integer.  If the quotient is 1/2, it is rounded to the even
  3029 number.
  3030 The function dreml an alias to the function drem.
  3031 
  3032 - Examples
  3033 @code
  3034 #include <math.h>
  3035 void main()
  3036 {
  3037    double x1 = 6.4, x2 = 2, y;
  3038    y = drem( x1, x2 );
  3039    printf( "drem(%f , %f) = %f
  3040 ", x1, x2, y );
  3041    y = dremf( x1, x2 );
  3042    printf( "dremf(%f , %f) = %f
  3043 ", x1, x2, y );
  3044    y = dreml( x1, x2 );
  3045    printf( "dreml(%f , %f) = %f
  3046 ", x1, x2, y );
  3047 }
  3048 
  3049 @endcode
  3050  Output
  3051 @code
  3052 drem ( 6.4, 2 ) = 0.4
  3053 dremf( 6.4, 2 ) = 0.4
  3054 dreml( 6.4, 2 ) = 0.4
  3055 
  3056 @endcode
  3057    
  3058 
  3059 @publishedAll
  3060 @externallyDefinedApi
  3061 */
  3062 
  3063 /** @fn isnanf(float)
  3064 
  3065 test for infinity or not-a-number
  3066 
  3067 @publishedAll
  3068 @externallyDefinedApi
  3069 */
  3070 
  3071 /** @fn  significand(double x)
  3072 @param x
  3073 @see ieee()
  3074 @see math()
  3075 
  3076 
  3077    
  3078 
  3079 @publishedAll
  3080 @externallyDefinedApi
  3081 */
  3082 
  3083 /** @fn  significandf(float x)
  3084 @param x
  3085 @see ieee()
  3086 @see math()
  3087 
  3088 
  3089    
  3090 
  3091 @publishedAll
  3092 @externallyDefinedApi
  3093 */
  3094 
  3095 /** @fn  acosf(float x)
  3096 @param x
  3097 @see asin()
  3098 @see atan()
  3099 @see atan2()
  3100 @see cos()
  3101 @see cosh()
  3102 @see math()
  3103 @see sin()
  3104 @see sinh()
  3105 @see tan()
  3106 @see tanh()
  3107 
  3108 
  3109    
  3110 
  3111 @publishedAll
  3112 @externallyDefinedApi
  3113 */
  3114 
  3115 /** @fn  asinf(float x)
  3116 @param x
  3117 @see acos()
  3118 @see atan()
  3119 @see atan2()
  3120 @see cos()
  3121 @see cosh()
  3122 @see math()
  3123 @see sin()
  3124 @see sinh()
  3125 @see tan()
  3126 @see tanh()
  3127 
  3128 
  3129    
  3130 
  3131 @publishedAll
  3132 @externallyDefinedApi
  3133 */
  3134 
  3135 /** @fn  atanf(float x)
  3136 @param x
  3137 @see acos()
  3138 @see asin()
  3139 @see atan2()
  3140 @see cos()
  3141 @see cosh()
  3142 @see math()
  3143 @see sin()
  3144 @see sinh()
  3145 @see tan()
  3146 @see tanh()
  3147 
  3148 
  3149    
  3150 
  3151 @publishedAll
  3152 @externallyDefinedApi
  3153 */
  3154 
  3155 /** @fn  atan2f(float y, float x)
  3156 @param y
  3157 @param x
  3158 @see acos()
  3159 @see asin()
  3160 @see atan()
  3161 @see cos()
  3162 @see cosh()
  3163 @see math()
  3164 @see sin()
  3165 @see sinh()
  3166 @see tan()
  3167 @see tanh()
  3168 
  3169 
  3170    
  3171 
  3172 @publishedAll
  3173 @externallyDefinedApi
  3174 */
  3175 
  3176 /** @fn  cosf(float x)
  3177 @param x
  3178 @see acos()
  3179 @see asin()
  3180 @see atan()
  3181 @see atan2()
  3182 @see cosh()
  3183 @see math()
  3184 @see sin()
  3185 @see sinh()
  3186 @see tan()
  3187 @see tanh()
  3188 
  3189 
  3190    
  3191 
  3192 @publishedAll
  3193 @externallyDefinedApi
  3194 */
  3195 
  3196 /** @fn  sinf(float x)
  3197 @param x
  3198 @see acos()
  3199 @see asin()
  3200 @see atan()
  3201 @see atan2()
  3202 @see cos()
  3203 @see cosh()
  3204 @see math()
  3205 @see sinh()
  3206 @see tan()
  3207 @see tanh()
  3208 
  3209 
  3210    
  3211 
  3212 @publishedAll
  3213 @externallyDefinedApi
  3214 */
  3215 
  3216 /** @fn  tanf(float x)
  3217 @param x
  3218 @see acos()
  3219 @see asin()
  3220 @see atan()
  3221 @see atan2()
  3222 @see cos()
  3223 @see cosh()
  3224 @see math()
  3225 @see sin()
  3226 @see sinh()
  3227 @see tanh()
  3228 
  3229 
  3230    
  3231 
  3232 @publishedAll
  3233 @externallyDefinedApi
  3234 */
  3235 
  3236 /** @fn  coshf(float x)
  3237 @param x
  3238 @see acos()
  3239 @see asin()
  3240 @see atan()
  3241 @see atan2()
  3242 @see cos()
  3243 @see math()
  3244 @see sin()
  3245 @see sinh()
  3246 @see tan()
  3247 @see tanh()
  3248 
  3249 
  3250    
  3251 
  3252 @publishedAll
  3253 @externallyDefinedApi
  3254 */
  3255 
  3256 /** @fn  sinhf(float x)
  3257 @param x
  3258 @see acos()
  3259 @see asin()
  3260 @see atan()
  3261 @see atan2()
  3262 @see cos()
  3263 @see cosh()
  3264 @see math()
  3265 @see sin()
  3266 @see tan()
  3267 @see tanh()
  3268 
  3269 
  3270    
  3271 
  3272 @publishedAll
  3273 @externallyDefinedApi
  3274 */
  3275 
  3276 /** @fn  tanhf(float x)
  3277 @param x
  3278 @see acos()
  3279 @see asin()
  3280 @see atan()
  3281 @see atan2()
  3282 @see cos()
  3283 @see cosh()
  3284 @see math()
  3285 @see sin()
  3286 @see sinh()
  3287 @see tan()
  3288 
  3289 
  3290    
  3291 
  3292 @publishedAll
  3293 @externallyDefinedApi
  3294 */
  3295 
  3296 /** @fn  expf(float x)
  3297 @param x
  3298 @see math()
  3299 
  3300 
  3301    
  3302 
  3303 @publishedAll
  3304 @externallyDefinedApi
  3305 */
  3306 
  3307 /** @fn  frexpf(float x, int *eptr)
  3308 @param x
  3309 @param eptr
  3310 
  3311 
  3312    
  3313 
  3314 @publishedAll
  3315 @externallyDefinedApi
  3316 */
  3317 
  3318 /** @fn  log10f(float x)
  3319 @param x
  3320 @see math()
  3321 
  3322 
  3323    
  3324 
  3325 @publishedAll
  3326 @externallyDefinedApi
  3327 */
  3328 
  3329 /** @fn  logf(float x)
  3330 @param x
  3331 @see math()
  3332 
  3333 
  3334    
  3335 
  3336 @publishedAll
  3337 @externallyDefinedApi
  3338 */
  3339 
  3340 /** @fn  modff(float x, float *iptr)
  3341 @param x
  3342 @param iptr
  3343 @see frexp()
  3344 @see ldexp()
  3345 @see math()
  3346 
  3347 
  3348    
  3349 
  3350 @publishedAll
  3351 @externallyDefinedApi
  3352 */
  3353 
  3354 /** @fn  powf(float x, float y)
  3355 @param x
  3356 @param y
  3357 @see math()
  3358 
  3359 
  3360    
  3361 
  3362 @publishedAll
  3363 @externallyDefinedApi
  3364 */
  3365 
  3366 /** @fn  sqrtf(float x)
  3367 @param x
  3368 @see math()
  3369 
  3370 
  3371    
  3372 
  3373 @publishedAll
  3374 @externallyDefinedApi
  3375 */
  3376 
  3377 /** @fn  cbrtf(float x)
  3378 @param x
  3379 @see math()
  3380 
  3381 
  3382    
  3383 
  3384 @publishedAll
  3385 @externallyDefinedApi
  3386 */
  3387 
  3388 /** @fn  nexttowardf(float x, long double y)
  3389 @param x
  3390 @param y
  3391 @see ieee()
  3392 @see math()
  3393 
  3394 
  3395    
  3396 
  3397 @publishedAll
  3398 @externallyDefinedApi
  3399 */
  3400 
  3401 /** @def HUGE_VAL	
  3402 
  3403 A positive double expression, not necessarily representable as a float. 
  3404 Used as an error value returned by the mathematics library. HUGE_VAL evaluates to positive infinity on systems supporting the ANSI/IEEE Std 754:1985 standard.
  3405 
  3406 @publishedAll
  3407 @externallyDefinedApi
  3408 */
  3409 
  3410 /** @def FP_ILOGB0	
  3411 
  3412 The value of FP_ILOGB0 shall be either INT_MIN or - INT_MAX.
  3413 
  3414 @publishedAll
  3415 @externallyDefinedApi
  3416 */
  3417 
  3418 /** @def FP_ILOGBNAN
  3419 
  3420 The  value of FP_ILOGBNAN shall be either INT_MAX or INT_MIN.
  3421 
  3422 @publishedAll
  3423 @externallyDefinedApi
  3424 */
  3425 
  3426 /** @def HUGE_VALL	
  3427 
  3428 A  positive  long  double  constant expression. Used as an error value returned by the mathematics library.
  3429 
  3430 @publishedAll
  3431 @externallyDefinedApi
  3432 */
  3433 
  3434 /** @def HUGE_VALF	
  3435 
  3436 A  positive  float  constant  expression. Used as an error value returned by the  mathematics  library. 
  3437 
  3438 @publishedAll
  3439 @externallyDefinedApi
  3440 */
  3441 
  3442 /** @def INFINITY	
  3443 
  3444 A  constant  expression  of  type float representing positive or unsigned infinity, if available; 
  3445 else  a  positive  constant  of type float that overflows at translation time.
  3446 
  3447 @publishedAll
  3448 @externallyDefinedApi
  3449 */
  3450 
  3451 /** @def NAN		
  3452 
  3453 A  constant  expression  of type float representing a quiet NaN.
  3454 This symbolic constant is only  defined  if  the  implementation supports quiet NaNs for the float type.
  3455 
  3456 @publishedAll
  3457 @externallyDefinedApi
  3458 */
  3459 
  3460 /** @def MATH_ERRNO	
  3461 
  3462 macro  shall  expand to the integer constants 1
  3463 
  3464 @publishedAll
  3465 @externallyDefinedApi
  3466 */
  3467 
  3468 /** @def MATH_ERREXCEPT	
  3469 
  3470 macro  shall  expand to the integer constants 1
  3471 
  3472 @publishedAll
  3473 @externallyDefinedApi
  3474 */
  3475 
  3476 /** @def math_errhandling
  3477 
  3478 Macro shall expand to an expression that has type int and the  value  MATH_ERRNO,  MATH_ERREXCEPT, or the bitwise-inclusive OR of both
  3479 	
  3480 @publishedAll
  3481 @externallyDefinedApi
  3482 */
  3483 
  3484 /** @def FP_INFINITE	
  3485 
  3486 Macro shall be defined for number classification. They represent the mutually-exclusive kinds of floating-point  values.  
  3487 They expand to integer constant expressions with distinct values. 
  3488 Additional implementation-defined floating-point classifications, with macro definitions  beginning with FP_ and an uppercase letter, may also be specified by the implementation.
  3489 
  3490 @publishedAll
  3491 @externallyDefinedApi
  3492 */
  3493 
  3494 /** @def FP_NAN		
  3495 
  3496 Macro shall be defined for number classification. They represent the mutually-exclusive kinds of floating-point  values.  
  3497 They expand to integer constant expressions with distinct values. 
  3498 Additional implementation-defined floating-point classifications, with macro definitions  beginning with FP_ and an uppercase letter, may also be specified by the implementation.
  3499 
  3500 @publishedAll
  3501 @externallyDefinedApi
  3502 */
  3503 
  3504 /** @def FP_NORMAL	
  3505 
  3506 Macro shall be defined for number classification. They represent the mutually-exclusive kinds of floating-point  values.  
  3507 They expand to integer constant expressions with distinct values. 
  3508 Additional implementation-defined floating-point classifications, with macro definitions  beginning with FP_ and an uppercase letter, may also be specified by the implementation.
  3509 
  3510 @publishedAll
  3511 @externallyDefinedApi
  3512 */
  3513 
  3514 /** @def FP_SUBNORMAL	
  3515 
  3516 Macro shall be defined for number classification. They represent the mutually-exclusive kinds of floating-point  values.  
  3517 They expand to integer constant expressions with distinct values. 
  3518 Additional implementation-defined floating-point classifications, with macro definitions  beginning with FP_ and an uppercase letter, may also be specified by the implementation.
  3519 
  3520 @publishedAll
  3521 @externallyDefinedApi
  3522 */
  3523 
  3524 /** @def FP_ZERO	
  3525 
  3526 Macro shall be defined for number classification. They represent the mutually-exclusive kinds of floating-point  values.  
  3527 They expand to integer constant expressions with distinct values. 
  3528 Additional implementation-defined floating-point classifications, with macro definitions  beginning with FP_ and an uppercase letter, may also be specified by the implementation.
  3529 	
  3530 @publishedAll
  3531 @externallyDefinedApi
  3532 */
  3533 
  3534 /** @def fpclassify(x) 
  3535 
  3536 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3537 
  3538 @publishedAll
  3539 @externallyDefinedApi
  3540 */
  3541 
  3542 /** @def isfinite(x)	
  3543 
  3544 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3545 		
  3546 @publishedAll
  3547 @externallyDefinedApi
  3548 */
  3549 
  3550 /** @def isinf(x)	
  3551 
  3552 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3553 		
  3554 @publishedAll
  3555 @externallyDefinedApi
  3556 */
  3557 
  3558 /** @def isnan(x)
  3559 
  3560 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3561 
  3562 @publishedAll
  3563 @externallyDefinedApi
  3564 */
  3565 
  3566 /** @def isnormal(x)
  3567 
  3568 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3569 
  3570 @publishedAll
  3571 @externallyDefinedApi
  3572 */
  3573 
  3574 /** @def isgreater(x, y)
  3575 
  3576 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3577 	
  3578 @publishedAll
  3579 @externallyDefinedApi
  3580 */
  3581 
  3582 /** @def isless(x, y)
  3583 
  3584 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3585 
  3586 @publishedAll
  3587 @externallyDefinedApi
  3588 */
  3589 
  3590 /** @def islessequal(x, y)
  3591 
  3592 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3593 
  3594 @publishedAll
  3595 @externallyDefinedApi
  3596 */
  3597 
  3598 /** @def islessgreater(x, y)
  3599 
  3600 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3601 
  3602 @publishedAll
  3603 @externallyDefinedApi
  3604 */
  3605 
  3606 /** @def isunordered(x, y)
  3607 
  3608 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3609 
  3610 @publishedAll
  3611 @externallyDefinedApi
  3612 */
  3613 
  3614 /** @def isgreaterequal(x, y)
  3615 
  3616 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3617 
  3618 @publishedAll
  3619 @externallyDefinedApi
  3620 */
  3621 
  3622 /** @def signbit(x)		
  3623 
  3624 The math.h header  shall  define  the following macros, where real floating indicates that the argument shall be an  expression  of  real floating type
  3625 	
  3626 @publishedAll
  3627 @externallyDefinedApi
  3628 */
  3629 
  3630 /** @def M_E	
  3631 
  3632 Defines the Value of e
  3633 	
  3634 @publishedAll
  3635 @externallyDefinedApi
  3636 */
  3637 
  3638 /** @def M_LOG2E
  3639 
  3640 Defines the Value of log2e 
  3641 		
  3642 @publishedAll
  3643 @externallyDefinedApi
  3644 */
  3645 
  3646 /** @def M_LOG10E
  3647 
  3648 Defines the Value of log10e
  3649 	
  3650 @publishedAll
  3651 @externallyDefinedApi
  3652 */
  3653 
  3654 /** @def M_LN2
  3655 
  3656 Defines the Value of loge2 
  3657 		
  3658 @publishedAll
  3659 @externallyDefinedApi
  3660 */
  3661 
  3662 /** @def M_LN10		
  3663 
  3664 Defines the Value of loge10
  3665 
  3666 @publishedAll
  3667 @externallyDefinedApi
  3668 */
  3669 
  3670 /** @def M_PI	
  3671 
  3672 Defines the Value of pi
  3673 	
  3674 @publishedAll
  3675 @externallyDefinedApi
  3676 */
  3677 
  3678 /** @def M_PI_2		
  3679 
  3680 Defines the Value of pi/2
  3681 
  3682 @publishedAll
  3683 @externallyDefinedApi
  3684 */
  3685 
  3686 /** @def M_PI_4		
  3687 
  3688 Defines the Value of pi/4
  3689 
  3690 @publishedAll
  3691 @externallyDefinedApi
  3692 */
  3693 
  3694 /** @def M_1_PI		
  3695 
  3696 Defines the Value of 1/pi
  3697 
  3698 @publishedAll
  3699 @externallyDefinedApi
  3700 */
  3701 
  3702 /** @def M_2_PI		
  3703 
  3704 Defines the Value of 2/pi
  3705 
  3706 @publishedAll
  3707 @externallyDefinedApi
  3708 */
  3709 
  3710 /** @def M_2_SQRTPI	
  3711 
  3712 Defines the Value of 2/sqrt(pi)
  3713 
  3714 @publishedAll
  3715 @externallyDefinedApi
  3716 */
  3717 
  3718 /** @def M_SQRT2	
  3719 
  3720 Defines the Value of sqrt(2)
  3721 	
  3722 @publishedAll
  3723 @externallyDefinedApi
  3724 */
  3725 
  3726 /** @def M_SQRT1_2	
  3727 
  3728 Defines the Value of 1/sqrt(2)
  3729 
  3730 @publishedAll
  3731 @externallyDefinedApi
  3732 */
  3733 
  3734 /** @def MAXFLOAT
  3735 
  3736 Value of maximum non-infinite single-precision floating point number. 
  3737 	
  3738 @publishedAll
  3739 @externallyDefinedApi
  3740 */
  3741 
  3742 /** @def HUGE		
  3743 
  3744 Defines to (float)3.40282346638528860e+38
  3745 
  3746 @publishedAll
  3747 @externallyDefinedApi
  3748 */
  3749 
  3750 /** @typedef  typedef	__double_t	double_t;
  3751 
  3752 Double 8 bytes
  3753 
  3754 @publishedAll
  3755 @externallyDefinedApi
  3756 */
  3757 
  3758 /** @typedef  typedef	__float_t	float_t;
  3759 
  3760 Float 4 bytes
  3761 
  3762 @publishedAll
  3763 @externallyDefinedApi
  3764 */
  3765 
  3766 
  3767 
  3768 
  3769 
  3770 
  3771 
  3772 
  3773 
  3774 
  3775 
  3776 
  3777 
  3778 
  3779 
  3780 
  3781 
  3782 
  3783 
  3784 
  3785 
  3786 
  3787 
  3788 
  3789 
  3790 
  3791 
  3792 
  3793 
  3794 
  3795 
  3796 
  3797 
  3798 
  3799 
  3800 
  3801 
  3802 
  3803 
  3804 
  3805 
  3806 
  3807 
  3808 
  3809 
  3810 
  3811 
  3812 
  3813 
  3814 
  3815 
  3816 
  3817