1 libm(3LIB) Interface Libraries libm(3LIB) 2 3 4 5 NAME 6 libm - C math library 7 8 SYNOPSIS 9 c99 [ flag... ] file... -lm [ library... ] 10 11 12 DESCRIPTION 13 Functions in this library provide common elementary mathematical 14 functions and floating point environment routines defined by System V, 15 ANSI C, POSIX, and so on. See standards(5). Additional functions in 16 this library provide extended support for handling floating point 17 exceptions. 18 19 INTERFACES 20 The shared object libm.so.2 provides the public interfaces defined 21 below. See Intro(3) for additional information on shared object 22 interfaces. 23 24 25 26 27 acos acosf 28 acosh acoshf 29 acoshl acosl 30 asin asinf 31 asinh asinhf 32 asinhl asinl 33 atan atan2 34 atan2f atan2l 35 atanf atanh 36 atanhf atanhl 37 atanl cabs 38 cabsf cabsl 39 cacos cacosf 40 cacosh cacoshf 41 cacoshl cacosl 42 carg cargf 43 cargl casin 44 casinf casinh 45 casinhf casinhl 46 casinl catan 47 catanf catanh 48 catanhf catanhl 49 catanl cbrt 50 cbrtf cbrtl 51 ccos ccosf 52 ccosh ccoshf 53 ccoshl ccosl 54 ceil ceilf 55 ceill cexp 56 cexpf cexpl 57 cimag cimagf 58 cimagl clog 59 clogf clogl 60 conj conjf 61 conjl copysign 62 copysignf copysignl 63 cos cosf 64 cosh coshf 65 coshl cosl 66 cpow cpowf 67 cpowl cproj 68 cprojf cprojl 69 creal crealf 70 creall csin 71 csinf csinh 72 csinhf csinhl 73 csinl csqrt 74 csqrtf csqrtl 75 ctan ctanf 76 ctanh ctanhf 77 ctanhl ctanl 78 erf erfc 79 erfcf erfcl 80 erff erfl 81 exp exp2 82 exp2f exp2l 83 expf expl 84 expm1 expm1f 85 expm1l fabs 86 fabsf fabsl 87 fdim fdimf 88 fdiml feclearexcept 89 fegetenv fegetexceptflag 90 fegetround feholdexcept 91 feraiseexcept fesetenv 92 fesetexceptflag fesetround 93 fetestexcept feupdateenv 94 fex_get_handling fex_get_log 95 fex_get_log_depth fex_getexcepthandler 96 fex_log_entry fex_merge_flags 97 fex_set_handling fex_set_log 98 fex_set_log_depth fex_setexcepthandler 99 floor floorf 100 floorl fma 101 fmaf fmal 102 fmax fmaxf 103 fmaxl fmin 104 fminf fminl 105 fmod fmodf 106 fmodl frexp 107 frexpf frexpl 108 gamma gamma_r 109 gammaf gammaf_r 110 gammal gammal_r 111 hypot hypotf 112 hypotl ilogb 113 ilogbf ilogbl 114 isnan j0 115 j0f j0l 116 j1 j1f 117 j1l jn 118 jnf jnl 119 ldexp ldexpf 120 ldexpl lgamma 121 lgamma_r lgammaf 122 lgammaf_r lgammal 123 lgammal_r llrint 124 llrintf llrintl 125 llround llroundf 126 llroundl log 127 log10 log10f 128 log10l log1p 129 log1pf log1pl 130 log2 log2f 131 log2l logb 132 logbf logbl 133 logf logl 134 lrint lrintf 135 lrintl lround 136 lroundf lroundl 137 matherr modf 138 modff modfl 139 nan nanf 140 nanl nearbyint 141 nearbyintf nearbyintl 142 nextafter nextafterf 143 nextafterl nexttoward 144 nexttowardf nexttowardl 145 pow powf 146 powl remainder 147 remainderf remainderl 148 remquo remquof 149 remquol rint 150 rintf rintl 151 round roundf 152 roundl scalb 153 scalbf scalbl 154 scalbln scalblnf 155 scalblnl scalbn 156 scalbnf scalbnl 157 signgam signgamf 158 signgaml significand 159 significandf significandl 160 sin sincos 161 sincosf sincosl 162 sinf sinh 163 sinhf sinhl 164 sinl sqrt 165 sqrtf sqrtl 166 tan tanf 167 tanh tanhf 168 tanhl tanl 169 tgamma tgammaf 170 tgammal trunc 171 truncf truncl 172 y0 y0f 173 y0l y1 174 y1f y1l 175 yn ynf 176 ynl 177 178 179 180 The following interfaces are unique to the x86 and amd64 versions of 181 this library: 182 183 184 185 186 fegetprec fesetprec 187 188 189 ACCURACY 190 ISO/IEC 9899:1999, also known as C99, specifies the functions listed in 191 the following tables and states that the accuracy of these functions is 192 "implementation-defined". The information below characterizes the 193 accuracy of these functions as implemented in libm.so.2. For each 194 function, the tables provide an upper bound on the largest error 195 possible for any argument and the largest error actually observed among 196 a large sample of arguments. Errors are expressed in "units in the last 197 place", or ulps, relative to the exact function value for each argument 198 (regarding the argument as exact). Ulps depend on the precision of the 199 floating point format: if y is the exact function value, x and x' are 200 adjacent floating point numbers such that x < y < x', and x'' is the 201 computed function value, then provided x, x', and x'' all lie in the 202 same binade, the error in x'' is |y - x''| / |x - x'| ulps. In 203 particular, when the error is less than one ulp, the computed value is 204 one of the two floating point numbers adjacent to the exact value. 205 206 207 The bounds and observed errors listed below apply only in the default 208 floating point modes. Specifically, on SPARC, these bounds assume the 209 rounding direction is round-to-nearest and non-standard mode is 210 disabled. On x86, the bounds assume the rounding direction is round-to- 211 nearest and the rounding precision is round-to-64-bits. Moreover, on 212 x86, floating point function values are returned in a floating point 213 register in extended double precision format, but the bounds below 214 assume that the result value is then stored to memory in the format 215 corresponding to the function's type. On amd64, the bounds assume the 216 rounding direction in both the x87 floating point control word and the 217 MXCSR is round-to-nearest, the rounding precision in the x87 control 218 word is round-to-64-bits, and the FTZ and DAZ modes are disabled. 219 220 221 The error bounds listed below are believed to be correct, but smaller 222 bounds might be proved later. The observed errors are the largest ones 223 currently known, but larger errors might be discovered later. Numbers 224 in the notes column refer to the notes following the tables. 225 226 Real Functions 227 Single precision real functions (SPARC, x86, and amd64) 228 229 error bound largest error 230 function (ulps) observed (ulps) notes 231 acosf 1.0 < 1 232 acoshf 1.0 < 1 233 asinf 1.0 < 1 234 asinhf 1.0 < 1 235 atanf 1.0 < 1 236 atan2f 1.0 < 1 237 atanhf 1.0 < 1 238 cbrtf 1.0 < 1 239 cosf 1.0 < 1 240 coshf 1.0 < 1 241 erff 1.0 < 1 242 erfcf 1.0 < 1 243 expf 1.0 < 1 244 exp2f 1.0 < 1 245 expm1f 1.0 < 1 246 hypotf 1.0 < 1 247 lgammaf 1.0 < 1 248 logf 1.0 < 1 249 log10f 1.0 < 1 250 log1pf 1.0 < 1 251 log2f 1.0 < 1 252 powf 1.0 < 1 253 sinf 1.0 < 1 254 sinhf 1.0 < 1 255 sqrtf 0.5 0.500 [1] 256 tanf 1.0 < 1 257 tanhf 1.0 < 1 258 tgammaf 1.0 < 1 259 260 261 Double precision real functions (SPARC and amd64) 262 263 error bound largest error 264 function (ulps) observed (ulps) notes 265 acos 1.0 < 1 266 acosh 4.0 1.878 267 asin 1.0 < 1 268 asinh 7.0 1.653 269 atan 1.0 <1 270 atan2 2.5 1.475 271 atanh 4.0 1.960 272 cbrt 1.0 < 1 273 cos 1.0 < 1 274 cosh 3.0 1.168 275 erf 4.0 0.959 276 erfc 6.0 2.816 277 exp 1.0 < 1 278 exp2 2.0 1.050 279 expm1 1.0 < 1 280 hypot 1.0 < 1 281 lgamma 61.5 5.629 [2] 282 log 1.0 < 1 283 log10 3.5 1.592 284 log1p 1.0 < 1 285 log2 1.0 < 1 286 pow 1.0 < 1 287 sin 1.0 < 1 288 sinh 4.0 2.078 289 sqrt 0.5 0.500 [1] 290 tan 1.0 < 1 291 tanh 3.5 2.136 292 tgamma 1.0 < 1 293 294 295 Double precision real functions (x86) 296 297 error bound largest error 298 function (ulps) observed (ulps) notes 299 acos 1.0 < 1 300 acosh 4.0 1.694 301 asin 1.0 < 1 302 asinh 7.0 1.493 303 atan 1.0 < 1 304 atan2 1.0 < 1 305 atanh 4.0 1.445 306 cbrt 1.0 < 1 307 cos 1.0 < 1 308 cosh 3.0 1.001 309 erf 4.0 0.932 310 erfc 6.0 2.728 311 exp 1.0 < 1 312 exp2 1.0 < 1 313 expm1 1.0 < 1 314 hypot 1.0 < 1 315 lgamma 61.5 2.654 [2] 316 log 1.0 < 1 317 log10 1.0 < 1 318 log1p 1.0 < 1 319 log2 1.0 < 1 320 pow 1.0 < 1 321 sin 1.0 < 1 322 sinh 4.0 1.458 323 sqrt 0.5003 0.500 [1] 324 tan 1.0 < 1 325 tanh 3.5 1.592 326 tgamma 1.0 < 1 327 328 329 Quadruple precision real functions (SPARC) 330 331 error bound largest error 332 function (ulps) observed (ulps) notes 333 acosl 3.5 1.771 334 acoshl 8.0 1.275 335 asinl 4.0 2.007 336 asinhl 9.0 1.823 337 atanl 1.0 < 1 338 atan2l 2.5 1.102 339 atanhl 4.0 1.970 340 cbrtl 1.0 < 1 341 cosl 1.0 < 1 342 coshl 3.5 0.985 343 erfl 2.0 0.779 344 erfcl 68.5 13.923 345 expl 1.0 < 1 346 exp2l 2.0 0.714 347 expm1l 2.0 1.020 348 hypotl 1.0 < 1 349 lgammal 18.5 2.916 [2] 350 logl 1.0 < 1 351 log10l 3.5 1.156 352 log1pl 2.0 1.216 353 log2l 3.5 1.675 354 powl 1.0 < 1 355 sinl 1.0 < 1 356 sinhl 4.5 1.589 357 sqrtl 0.5 0.500 [1] 358 tanl 4.5 2.380 359 tanhl 4.5 1.692 360 tgammal 1.0 < 1 361 362 363 Extended precision real functions (x86 and amd64) 364 365 error bound largest error 366 function (ulps) observed (ulps) notes 367 acosl 3.0 1.868 368 acoshl 8.0 2.352 369 asinl 3.0 1.716 370 asinhl 9.0 2.346 371 atanl 1.0 < 1 372 atan2l 1.0 < 1 373 atanhl 4.0 2.438 374 cbrtl 1.0 < 1 375 cosl 1.0 < 1 376 coshl 3.5 1.288 377 erfl 1.0 < 1 378 erfcl 78.5 13.407 379 expl 3.5 1.291 380 exp2l 1.5 0.807 381 expm1l 4.0 1.936 382 hypotl 3.5 2.087 383 lgammal 22.5 4.197 [2] 384 logl 2.0 0.881 385 log10l 2.0 1.284 386 log1pl 5.0 2.370 387 log2l 1.0 < 1 388 powl 32770.0 4478.132 389 sinl 1.0 < 1 390 sinhl 4.5 2.356 391 sqrtl 0.5 0.500 [1] 392 tanl 4.5 2.366 393 tanhl 4.5 2.417 394 tgammal 1.0 < 1 395 396 397 Notes: 398 [1] 399 On SPARC and amd64, sqrtf, sqrt, and sqrtl are correctly rounded 400 in accordance with IEEE 754. On x86, sqrtl is correctly rounded, 401 sqrtf is correctly rounded provided the result is narrowed to 402 single precision as discussed above, but sqrt might not be 403 correctly rounded due to "double rounding": when the 404 intermediate value computed to extended precision lies exactly 405 halfway between two representable numbers in double precision, 406 the result of rounding the intermediate value to double 407 precision is determined by the round-ties-to-even rule. If this 408 rule causes the second rounding to round in the same direction 409 as the first, the net rounding error can exceed 0.5 ulps. (The 410 error is bounded instead by 0.5*(1 + 2^-11) ulps.) 411 412 413 [2] 414 Error bounds for lgamma and lgammal apply only for positive 415 arguments. 416 417 418 Complex functions 419 The real-valued complex functions cabsf, cabs, cabsl, cargf, carg, and 420 cargl are equivalent to the real functions hypotf, hypot, hypotl, 421 atan2f, atan2, and atan2l, respectively. The error bounds and observed 422 errors given above for the latter functions also apply to the former. 423 424 425 The complex functions listed below are complex-valued. For each 426 function, the error bound shown applies separately to both the real and 427 imaginary parts of the result. (For example, both the real and 428 imaginary parts of cacosf(z) are accurate to within 1 ulp regardless of 429 their magnitudes.) Similarly, the largest observed error shown is the 430 largest error found in either the real or the imaginary part of the 431 result. 432 433 Single precision complex functions (SPARC and amd64) 434 435 error bound largest error 436 function (ulps) observed (ulps) notes 437 cacosf, cacoshf 1 < 1 [1] 438 casinf, casinhf 1 < 1 439 catanf, catanhf 6 < 1 440 ccosf, ccoshf 10 2.012 441 cexpf 3 2.239 442 clogf 3 < 1 443 cpowf -- < 1 [2] 444 csinf, csinhf 10 2.009 445 csqrtf 4 < 1 446 ctanf, ctanhf 13 6.987 447 448 449 Single precision complex functions (x86) 450 451 error bound largest error 452 function (ulps) observed (ulps) notes 453 cacosf, cacoshf 1 < 1 [1] 454 casinf, casinhf 1 < 1 455 catanf, catanhf 6 < 1 456 ccosf, ccoshf 10 1.984 457 cexpf 3 1.984 458 clogf 3 < 1 459 cpowf -- < 1 [2] 460 csinf, csinhf 10 1.973 461 csqrtf 4 < 1 462 ctanf, ctanhf 13 4.657 463 464 465 Double precision complex functions (SPARC and amd64) 466 467 error bound largest error 468 function (ulps) observed (ulps) notes 469 cacos, cacosh 9 3.831 [1] 470 casin, casinh 9 3.732 471 catan, catanh 6 4.179 472 ccos, ccosh 10 3.832 473 cexp 3 2.255 474 clog 3 2.870 475 cpow - - [2] 476 csin, csinh 10 3.722 477 csqrt 4 3.204 478 ctan, ctanh 13 7.143 479 480 481 Double precision complex functions (x86) 482 483 error bound largest error 484 function (ulps) observed (ulps) notes 485 cacos, cacosh 9 3.624 [1] 486 casin, casinh 9 3.624 487 catan, catanh 6 2.500 488 ccos, ccosh 10 2.929 489 cexp 3 2.147 490 clog 3 1.927 491 cpow - - [2] 492 csin, csinh 10 2.918 493 csqrt 4 1.914 494 ctan, ctanh 13 4.630 495 496 497 Quadruple precision complex functions (SPARC) 498 499 error bound largest error 500 function (ulps) observed (ulps) notes 501 cacosl, cacoshl 9 3 [1] 502 casinl, casinhl 9 3 503 catanl, catanhl 6 3 504 ccosl, ccoshl 10 3 505 cexpl 3 2 506 clogl 3 2 507 cpowl - - [2] 508 csinl, csinhl 10 3 509 csqrtl 4 3 510 ctanl, ctanhl 13 5 511 512 513 Extended precision complex functions (x86 and amd64) 514 515 error bound largest error 516 function (ulps) observed (ulps) notes 517 cacosl, cacoshl 9 2 [1] 518 casinl, casinhl 9 2 519 catanl, catanhl 6 2 520 ccosl, ccoshl 10 3 521 cexpl 3 2.699 522 clogl 3 1 523 cpowl - - [2] 524 csinl, csinhl 10 3 525 csqrtl 4 1.452 526 ctanl, ctanhl 13 5 527 528 529 Notes: 530 [1] 531 The complex hyperbolic trigonometric functions are equivalent by 532 symmetries to their circular trigonometric counterparts. Because 533 the implementations of these functions exploit these symmetries, 534 corresponding functions have the same error bounds and observed 535 errors. 536 537 538 [2] 539 For large arguments, the results computed by cpowf, cpow, and 540 cpowl can have unbounded relative error. It might be possible to 541 give error bounds for specific domains, but no such bounds are 542 currently available. The observed errors shown are for the 543 domain {(z,w) : max(|Re z|, |Im z|, |Re w|, |Im w|) <= 1}. 544 545 546 FILES 547 /lib/libm.so.2 548 shared object 549 550 551 /lib/64/libm.so.2 552 64-bit shared object 553 554 555 ATTRIBUTES 556 See attributes(5) for descriptions of the following attributes: 557 558 559 560 561 +----------------------------+-----------------------------+ 562 | ATTRIBUTE TYPE | ATTRIBUTE VALUE | 563 +----------------------------+-----------------------------+ 564 |MT-Level | Safe with exceptions | 565 +----------------------------+-----------------------------+ 566 567 568 As described on the lgamma(3M) manual page, gamma() and lgamma() and 569 their float and long double counterparts are Unsafe. All other 570 functions in libm.so.2 are MT-Safe. 571 572 SEE ALSO 573 Intro(3), lgamma(3M), math.h(3HEAD), attributes(5), standards(5) 574 575 576 577 February 27, 2020 libm(3LIB)