1 '\" te 2 .\" Copyright (c) 2006, Sun Microsystems, Inc. All Rights Reserved. 3 .\" Copyright 2020 Joyent, Inc. 4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. 5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. 6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] 7 .TH libm 3LIB "Feb 27, 2020" 8 .SH NAME 9 libm \- C math library 10 .SH SYNOPSIS 11 .nf 12 c99 [ \fIflag\fR... ] \fIfile\fR... \fB-lm\fR [ \fIlibrary\fR... ] 13 .fi 14 15 .SH DESCRIPTION 16 Functions in this library provide common elementary mathematical functions and 17 floating point environment routines defined by System V, ANSI C, POSIX, and so 18 on. See \fBstandards\fR(5). Additional functions in this library provide 19 extended support for handling floating point exceptions. 20 .SH INTERFACES 21 The shared object \fBlibm.so.2\fR provides the public interfaces defined below. 22 See \fBIntro\fR(3) for additional information on shared object interfaces. 23 .sp 24 25 .sp 26 .TS 27 tab( ); 28 lw(2.75i) lw(2.75i) 29 lw(2.75i) lw(2.75i) 30 . 31 \fBacos\fR \fBacosf\fR 32 \fBacosh\fR \fBacoshf\fR 33 \fBacoshl\fR \fBacosl\fR 34 \fBasin\fR \fBasinf\fR 35 \fBasinh\fR \fBasinhf\fR 36 \fBasinhl\fR \fBasinl\fR 37 \fBatan\fR \fBatan2\fR 38 \fBatan2f\fR \fBatan2l\fR 39 \fBatanf\fR \fBatanh\fR 40 \fBatanhf\fR \fBatanhl\fR 41 \fBatanl\fR \fBcabs\fR 42 \fBcabsf\fR \fBcabsl\fR 43 \fBcacos\fR \fBcacosf\fR 44 \fBcacosh\fR \fBcacoshf\fR 45 \fBcacoshl\fR \fBcacosl\fR 46 \fBcarg\fR \fBcargf\fR 47 \fBcargl\fR \fBcasin\fR 48 \fBcasinf\fR \fBcasinh\fR 49 \fBcasinhf\fR \fBcasinhl\fR 50 \fBcasinl\fR \fBcatan\fR 51 \fBcatanf\fR \fBcatanh\fR 52 \fBcatanhf\fR \fBcatanhl\fR 53 \fBcatanl\fR \fBcbrt\fR 54 \fBcbrtf\fR \fBcbrtl\fR 55 \fBccos\fR \fBccosf\fR 56 \fBccosh\fR \fBccoshf\fR 57 \fBccoshl\fR \fBccosl\fR 58 \fBceil\fR \fBceilf\fR 59 \fBceill\fR \fBcexp\fR 60 \fBcexpf\fR \fBcexpl\fR 61 \fBcimag\fR \fBcimagf\fR 62 \fBcimagl\fR \fBclog\fR 63 \fBclogf\fR \fBclogl\fR 64 \fBconj\fR \fBconjf\fR 65 \fBconjl\fR \fBcopysign\fR 66 \fBcopysignf\fR \fBcopysignl\fR 67 \fBcos\fR \fBcosf\fR 68 \fBcosh\fR \fBcoshf\fR 69 \fBcoshl\fR \fBcosl\fR 70 \fBcpow\fR \fBcpowf\fR 71 \fBcpowl\fR \fBcproj\fR 72 \fBcprojf\fR \fBcprojl\fR 73 \fBcreal\fR \fBcrealf\fR 74 \fBcreall\fR \fBcsin\fR 75 \fBcsinf\fR \fBcsinh\fR 76 \fBcsinhf\fR \fBcsinhl\fR 77 \fBcsinl\fR \fBcsqrt\fR 78 \fBcsqrtf\fR \fBcsqrtl\fR 79 \fBctan\fR \fBctanf\fR 80 \fBctanh\fR \fBctanhf\fR 81 \fBctanhl\fR \fBctanl\fR 82 \fBerf\fR \fBerfc\fR 83 \fBerfcf\fR \fBerfcl\fR 84 \fBerff\fR \fBerfl\fR 85 \fBexp\fR \fBexp2\fR 86 \fBexp2f\fR \fBexp2l\fR 87 \fBexpf\fR \fBexpl\fR 88 \fBexpm1\fR \fBexpm1f\fR 89 \fBexpm1l\fR \fBfabs\fR 90 \fBfabsf\fR \fBfabsl\fR 91 \fBfdim\fR \fBfdimf\fR 92 \fBfdiml\fR \fBfeclearexcept\fR 93 \fBfegetenv\fR \fBfegetexceptflag\fR 94 \fBfegetround\fR \fBfeholdexcept\fR 95 \fBferaiseexcept\fR \fBfesetenv\fR 96 \fBfesetexceptflag\fR \fBfesetround\fR 97 \fBfetestexcept\fR \fBfeupdateenv\fR 98 \fBfex_get_handling\fR \fBfex_get_log\fR 99 \fBfex_get_log_depth\fR \fBfex_getexcepthandler\fR 100 \fBfex_log_entry\fR \fBfex_merge_flags\fR 101 \fBfex_set_handling\fR \fBfex_set_log\fR 102 \fBfex_set_log_depth\fR \fBfex_setexcepthandler\fR 103 \fBfloor\fR \fBfloorf\fR 104 \fBfloorl\fR \fBfma\fR 105 \fBfmaf\fR \fBfmal\fR 106 \fBfmax\fR \fBfmaxf\fR 107 \fBfmaxl\fR \fBfmin\fR 108 \fBfminf\fR \fBfminl\fR 109 \fBfmod\fR \fBfmodf\fR 110 \fBfmodl\fR \fBfrexp\fR 111 \fBfrexpf\fR \fBfrexpl\fR 112 \fBgamma\fR \fBgamma_r\fR 113 \fBgammaf\fR \fBgammaf_r\fR 114 \fBgammal\fR \fBgammal_r\fR 115 \fBhypot\fR \fBhypotf\fR 116 \fBhypotl\fR \fBilogb\fR 117 \fBilogbf\fR \fBilogbl\fR 118 \fBisnan\fR \fBj0\fR 119 \fBj0f\fR \fBj0l\fR 120 \fBj1\fR \fBj1f\fR 121 \fBj1l\fR \fBjn\fR 122 \fBjnf\fR \fBjnl\fR 123 \fBldexp\fR \fBldexpf\fR 124 \fBldexpl\fR \fBlgamma\fR 125 \fBlgamma_r\fR \fBlgammaf\fR 126 \fBlgammaf_r\fR \fBlgammal\fR 127 \fBlgammal_r\fR \fBllrint\fR 128 \fBllrintf\fR \fBllrintl\fR 129 \fBllround\fR \fBllroundf\fR 130 \fBllroundl\fR \fBlog\fR 131 \fBlog10\fR \fBlog10f\fR 132 \fBlog10l\fR \fBlog1p\fR 133 \fBlog1pf\fR \fBlog1pl\fR 134 \fBlog2\fR \fBlog2f\fR 135 \fBlog2l\fR \fBlogb\fR 136 \fBlogbf\fR \fBlogbl\fR 137 \fBlogf\fR \fBlogl\fR 138 \fBlrint\fR \fBlrintf\fR 139 \fBlrintl\fR \fBlround\fR 140 \fBlroundf\fR \fBlroundl\fR 141 \fBmatherr\fR \fBmodf\fR 142 \fBmodff\fR \fBmodfl\fR 143 \fBnan\fR \fBnanf\fR 144 \fBnanl\fR \fBnearbyint\fR 145 \fBnearbyintf\fR \fBnearbyintl\fR 146 \fBnextafter\fR \fBnextafterf\fR 147 \fBnextafterl\fR \fBnexttoward\fR 148 \fBnexttowardf\fR \fBnexttowardl\fR 149 \fBpow\fR \fBpowf\fR 150 \fBpowl\fR \fBremainder\fR 151 \fBremainderf\fR \fBremainderl\fR 152 \fBremquo\fR \fBremquof\fR 153 \fBremquol\fR \fBrint\fR 154 \fBrintf\fR \fBrintl\fR 155 \fBround\fR \fBroundf\fR 156 \fBroundl\fR \fBscalb\fR 157 \fBscalbf\fR \fBscalbl\fR 158 \fBscalbln\fR \fBscalblnf\fR 159 \fBscalblnl\fR \fBscalbn\fR 160 \fBscalbnf\fR \fBscalbnl\fR 161 \fBsigngam\fR \fBsigngamf\fR 162 \fBsigngaml\fR \fBsignificand\fR 163 \fBsignificandf\fR \fBsignificandl\fR 164 \fBsin\fR \fBsincos\fR 165 \fBsincosf\fR \fBsincosl\fR 166 \fBsinf\fR \fBsinh\fR 167 \fBsinhf\fR \fBsinhl\fR 168 \fBsinl\fR \fBsqrt\fR 169 \fBsqrtf\fR \fBsqrtl\fR 170 \fBtan\fR \fBtanf\fR 171 \fBtanh\fR \fBtanhf\fR 172 \fBtanhl\fR \fBtanl\fR 173 \fBtgamma\fR \fBtgammaf\fR 174 \fBtgammal\fR \fBtrunc\fR 175 \fBtruncf\fR \fBtruncl\fR 176 \fBy0\fR \fBy0f\fR 177 \fBy0l\fR \fBy1\fR 178 \fBy1f\fR \fBy1l\fR 179 \fByn\fR \fBynf\fR 180 \fBynl\fR \fB\fR 181 .TE 182 183 .sp 184 .LP 185 The following interfaces are unique to the x86 and amd64 versions of this library: 186 .sp 187 188 .sp 189 .TS 190 tab( ); 191 lw(2.75i) lw(2.75i) 192 . 193 \fBfegetprec\fR \fBfesetprec\fR 194 .TE 195 196 .SH ACCURACY 197 ISO/IEC 9899:1999, also known as C99, specifies the functions listed in the 198 following tables and states that the accuracy of these functions is 199 "implementation-defined". The information below characterizes the accuracy 200 of these functions as implemented in \fBlibm.so.2\fR. For each function, 201 the tables provide an upper bound on the largest error possible for any 202 argument and the largest error actually observed among a large sample of 203 arguments. Errors are expressed in "units in the last place", or ulps, relative 204 to the exact function value for each argument (regarding the argument as 205 exact). Ulps depend on the precision of the floating point format: if \fIy\fR 206 is the exact function value, \fIx\fR and \fIx\fR' are adjacent floating point 207 numbers such that \fIx\fR < \fIy\fR < \fIx\fR', and \fIx\fR'' is the computed 208 function value, then provided \fIx\fR, \fIx\fR', and \fIx\fR'' all lie in the 209 same binade, the error in \fIx\fR'' is |\fIy\fR - \fIx\fR''| / |\fIx\fR - 210 \fIx\fR'| ulps. In particular, when the error is less than one ulp, the computed 211 value is one of the two floating point numbers adjacent to the exact value. 212 .sp 213 .LP 214 The bounds and observed errors listed below apply only in the default floating 215 point modes. Specifically, on SPARC, these bounds assume the rounding direction 216 is round-to-nearest and non-standard mode is disabled. On x86, the bounds assume 217 the rounding direction is round-to-nearest and the rounding precision is 218 round-to-64-bits. Moreover, on x86, floating point function values are returned 219 in a floating point register in extended double precision format, but the bounds 220 below assume that the result value is then stored to memory in the format 221 corresponding to the function's type. On amd64, the bounds assume the rounding 222 direction in both the x87 floating point control word and the MXCSR is 223 round-to-nearest, the rounding precision in the x87 control word is 224 round-to-64-bits, and the FTZ and DAZ modes are disabled. 225 .sp 226 .LP 227 The error bounds listed below are believed to be correct, but smaller bounds 228 might be proved later. The observed errors are the largest ones currently known, 229 but larger errors might be discovered later. Numbers in the notes column refer 230 to the notes following the tables. 231 .SS "Real Functions" 232 .SS "Single precision real functions (SPARC, x86, and amd64)" 233 234 .TS 235 tab( ); 236 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 237 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 238 . 239 error bound largest error 240 function (ulps) observed (ulps) notes 241 \fBacosf\fR 1.0 < 1 242 \fBacoshf\fR 1.0 < 1 243 \fBasinf\fR 1.0 < 1 244 \fBasinhf\fR 1.0 < 1 245 \fBatanf\fR 1.0 < 1 246 \fBatan2f\fR 1.0 < 1 247 \fBatanhf\fR 1.0 < 1 248 \fBcbrtf\fR 1.0 < 1 249 \fBcosf\fR 1.0 < 1 250 \fBcoshf\fR 1.0 < 1 251 \fBerff\fR 1.0 < 1 252 \fBerfcf\fR 1.0 < 1 253 \fBexpf\fR 1.0 < 1 254 \fBexp2f\fR 1.0 < 1 255 \fBexpm1f\fR 1.0 < 1 256 \fBhypotf\fR 1.0 < 1 257 \fBlgammaf\fR 1.0 < 1 258 \fBlogf\fR 1.0 < 1 259 \fBlog10f\fR 1.0 < 1 260 \fBlog1pf\fR 1.0 < 1 261 \fBlog2f\fR 1.0 < 1 262 \fBpowf\fR 1.0 < 1 263 \fBsinf\fR 1.0 < 1 264 \fBsinhf\fR 1.0 < 1 265 \fBsqrtf\fR 0.5 0.500 [1] 266 \fBtanf\fR 1.0 < 1 267 \fBtanhf\fR 1.0 < 1 268 \fBtgammaf\fR 1.0 < 1 269 .TE 270 271 .SS "Double precision real functions (SPARC and amd64)" 272 273 .TS 274 tab( ); 275 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 276 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 277 . 278 error bound largest error 279 function (ulps) observed (ulps) notes 280 \fBacos\fR 1.0 < 1 281 \fBacosh\fR 4.0 1.878 282 \fBasin\fR 1.0 < 1 283 \fBasinh\fR 7.0 1.653 284 \fBatan\fR 1.0 <1 285 \fBatan2\fR 2.5 1.475 286 \fBatanh\fR 4.0 1.960 287 \fBcbrt\fR 1.0 < 1 288 \fBcos\fR 1.0 < 1 289 \fBcosh\fR 3.0 1.168 290 \fBerf\fR 4.0 0.959 291 \fBerfc\fR 6.0 2.816 292 \fBexp\fR 1.0 < 1 293 \fBexp2\fR 2.0 1.050 294 \fBexpm1\fR 1.0 < 1 295 \fBhypot\fR 1.0 < 1 296 \fBlgamma\fR 61.5 5.629 [2] 297 \fBlog\fR 1.0 < 1 298 \fBlog10\fR 3.5 1.592 299 \fBlog1p\fR 1.0 < 1 300 \fBlog2\fR 1.0 < 1 301 \fBpow\fR 1.0 < 1 302 \fBsin\fR 1.0 < 1 303 \fBsinh\fR 4.0 2.078 304 \fBsqrt\fR 0.5 0.500 [1] 305 \fBtan\fR 1.0 < 1 306 \fBtanh\fR 3.5 2.136 307 \fBtgamma\fR 1.0 < 1 308 .TE 309 310 .SS "Double precision real functions (x86)" 311 312 .TS 313 tab( ); 314 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 315 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 316 . 317 error bound largest error 318 function (ulps) observed (ulps) notes 319 \fBacos\fR 1.0 < 1 320 \fBacosh\fR 4.0 1.694 321 \fBasin\fR 1.0 < 1 322 \fBasinh\fR 7.0 1.493 323 \fBatan\fR 1.0 < 1 324 \fBatan2\fR 1.0 < 1 325 \fBatanh\fR 4.0 1.445 326 \fBcbrt\fR 1.0 < 1 327 \fBcos\fR 1.0 < 1 328 \fBcosh\fR 3.0 1.001 329 \fBerf\fR 4.0 0.932 330 \fBerfc\fR 6.0 2.728 331 \fBexp\fR 1.0 < 1 332 \fBexp2\fR 1.0 < 1 333 \fBexpm1\fR 1.0 < 1 334 \fBhypot\fR 1.0 < 1 335 \fBlgamma\fR 61.5 2.654 [2] 336 \fBlog\fR 1.0 < 1 337 \fBlog10\fR 1.0 < 1 338 \fBlog1p\fR 1.0 < 1 339 \fBlog2\fR 1.0 < 1 340 \fBpow\fR 1.0 < 1 341 \fBsin\fR 1.0 < 1 342 \fBsinh\fR 4.0 1.458 343 \fBsqrt\fR 0.5003 0.500 [1] 344 \fBtan\fR 1.0 < 1 345 \fBtanh\fR 3.5 1.592 346 \fBtgamma\fR 1.0 < 1 347 .TE 348 349 .SS "Quadruple precision real functions (SPARC)" 350 351 .TS 352 tab( ); 353 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 354 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 355 . 356 error bound largest error 357 function (ulps) observed (ulps) notes 358 \fBacosl\fR 3.5 1.771 359 \fBacoshl\fR 8.0 1.275 360 \fBasinl\fR 4.0 2.007 361 \fBasinhl\fR 9.0 1.823 362 \fBatanl\fR 1.0 < 1 363 \fBatan2l\fR 2.5 1.102 364 \fBatanhl\fR 4.0 1.970 365 \fBcbrtl\fR 1.0 < 1 366 \fBcosl\fR 1.0 < 1 367 \fBcoshl\fR 3.5 0.985 368 \fBerfl\fR 2.0 0.779 369 \fBerfcl\fR 68.5 13.923 370 \fBexpl\fR 1.0 < 1 371 \fBexp2l\fR 2.0 0.714 372 \fBexpm1l\fR 2.0 1.020 373 \fBhypotl\fR 1.0 < 1 374 \fBlgammal\fR 18.5 2.916 [2] 375 \fBlogl\fR 1.0 < 1 376 \fBlog10l\fR 3.5 1.156 377 \fBlog1pl\fR 2.0 1.216 378 \fBlog2l\fR 3.5 1.675 379 \fBpowl\fR 1.0 < 1 380 \fBsinl\fR 1.0 < 1 381 \fBsinhl\fR 4.5 1.589 382 \fBsqrtl\fR 0.5 0.500 [1] 383 \fBtanl\fR 4.5 2.380 384 \fBtanhl\fR 4.5 1.692 385 \fBtgammal\fR 1.0 < 1 386 .TE 387 388 .SS "Extended precision real functions (x86 and amd64)" 389 390 .TS 391 tab( ); 392 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 393 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 394 . 395 error bound largest error 396 function (ulps) observed (ulps) notes 397 \fBacosl\fR 3.0 1.868 398 \fBacoshl\fR 8.0 2.352 399 \fBasinl\fR 3.0 1.716 400 \fBasinhl\fR 9.0 2.346 401 \fBatanl\fR 1.0 < 1 402 \fBatan2l\fR 1.0 < 1 403 \fBatanhl\fR 4.0 2.438 404 \fBcbrtl\fR 1.0 < 1 405 \fBcosl\fR 1.0 < 1 406 \fBcoshl\fR 3.5 1.288 407 \fBerfl\fR 1.0 < 1 408 \fBerfcl\fR 78.5 13.407 409 \fBexpl\fR 3.5 1.291 410 \fBexp2l\fR 1.5 0.807 411 \fBexpm1l\fR 4.0 1.936 412 \fBhypotl\fR 3.5 2.087 413 \fBlgammal\fR 22.5 4.197 [2] 414 \fBlogl\fR 2.0 0.881 415 \fBlog10l\fR 2.0 1.284 416 \fBlog1pl\fR 5.0 2.370 417 \fBlog2l\fR 1.0 < 1 418 \fBpowl\fR 32770.0 4478.132 419 \fBsinl\fR 1.0 < 1 420 \fBsinhl\fR 4.5 2.356 421 \fBsqrtl\fR 0.5 0.500 [1] 422 \fBtanl\fR 4.5 2.366 423 \fBtanhl\fR 4.5 2.417 424 \fBtgammal\fR 1.0 < 1 425 .TE 426 427 .SS "Notes:" 428 .ne 2 429 .mk 430 .na 431 \fB[1]\fR 432 .ad 433 .RS 7n 434 .rt 435 On SPARC and amd64, \fBsqrtf\fR, \fBsqrt\fR, and \fBsqrtl\fR are correctly 436 rounded in accordance with IEEE 754. On x86, \fBsqrtl\fR is correctly rounded, 437 \fBsqrtf\fR is correctly rounded provided the result is narrowed to single 438 precision as discussed above, but \fBsqrt\fR might not be correctly rounded due 439 to "double rounding": when the intermediate value computed to extended precision 440 lies exactly halfway between two representable numbers in double precision, the 441 result of rounding the intermediate value to double precision is determined by 442 the round-ties-to-even rule. If this rule causes the second rounding to round in 443 the same direction as the first, the net rounding error can exceed 0.5 ulps. 444 (The error is bounded instead by 0.5*(1 + 2^-11) ulps.) 445 .RE 446 447 .sp 448 .ne 2 449 .mk 450 .na 451 \fB[2]\fR 452 .ad 453 .RS 7n 454 .rt 455 Error bounds for lgamma and lgammal apply only for positive arguments. 456 .RE 457 458 .SS "Complex functions" 459 The real-valued complex functions \fBcabsf\fR, \fBcabs\fR, \fBcabsl\fR, 460 \fBcargf\fR, \fBcarg\fR, and \fBcargl\fR are equivalent to the real functions 461 \fBhypotf\fR, \fBhypot\fR, \fBhypotl\fR, \fBatan2f\fR, \fBatan2\fR, and 462 \fBatan2l\fR, respectively. The error bounds and observed errors given above for 463 the latter functions also apply to the former. 464 .sp 465 .LP 466 The complex functions listed below are complex-valued. For each function, the 467 error bound shown applies separately to both the real and imaginary parts of the 468 result. (For example, both the real and imaginary parts of \fBcacosf\fR(\fIz\fR) 469 are accurate to within 1 ulp regardless of their magnitudes.) Similarly, the 470 largest observed error shown is the largest error found in either the real or 471 the imaginary part of the result. 472 .SS "Single precision complex functions (SPARC and amd64)" 473 474 .TS 475 tab( ); 476 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 477 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 478 . 479 error bound largest error 480 function (ulps) observed (ulps) notes 481 \fBcacosf\fR, \fBcacoshf\fR 1 < 1 [1] 482 \fBcasinf\fR, \fBcasinhf\fR 1 < 1 483 \fBcatanf\fR, \fBcatanhf\fR 6 < 1 484 \fBccosf\fR, \fBccoshf\fR 10 2.012 485 \fBcexpf\fR 3 2.239 486 \fBclogf\fR 3 < 1 487 \fBcpowf\fR \(em < 1 [2] 488 \fBcsinf\fR, \fBcsinhf\fR 10 2.009 489 \fBcsqrtf\fR 4 < 1 490 \fBctanf\fR, \fBctanhf\fR 13 6.987 491 .TE 492 493 .SS "Single precision complex functions (x86)" 494 495 .TS 496 tab( ); 497 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 498 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 499 . 500 error bound largest error 501 function (ulps) observed (ulps) notes 502 \fBcacosf\fR, \fBcacoshf\fR 1 < 1 [1] 503 \fBcasinf\fR, \fBcasinhf\fR 1 < 1 504 \fBcatanf\fR, \fBcatanhf\fR 6 < 1 505 \fBccosf\fR, \fBccoshf\fR 10 1.984 506 \fBcexpf\fR 3 1.984 507 \fBclogf\fR 3 < 1 508 \fBcpowf\fR \(em < 1 [2] 509 \fBcsinf\fR, \fBcsinhf\fR 10 1.973 510 \fBcsqrtf\fR 4 < 1 511 \fBctanf\fR, \fBctanhf\fR 13 4.657 512 .TE 513 514 .SS "Double precision complex functions (SPARC and amd64)" 515 516 .TS 517 tab( ); 518 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 519 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 520 . 521 error bound largest error 522 function (ulps) observed (ulps) notes 523 \fBcacos\fR, \fBcacosh\fR 9 3.831 [1] 524 \fBcasin\fR, \fBcasinh\fR 9 3.732 525 \fBcatan\fR, \fBcatanh\fR 6 4.179 526 \fBccos\fR, \fBccosh\fR 10 3.832 527 \fBcexp\fR 3 2.255 528 \fBclog\fR 3 2.870 529 \fBcpow\fR - - [2] 530 \fBcsin\fR, \fBcsinh\fR 10 3.722 531 \fBcsqrt\fR 4 3.204 532 \fBctan\fR, \fBctanh\fR 13 7.143 533 .TE 534 535 .SS "Double precision complex functions (x86)" 536 537 .TS 538 tab( ); 539 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 540 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 541 . 542 error bound largest error 543 function (ulps) observed (ulps) notes 544 \fBcacos\fR, \fBcacosh\fR 9 3.624 [1] 545 \fBcasin\fR, \fBcasinh\fR 9 3.624 546 \fBcatan\fR, \fBcatanh\fR 6 2.500 547 \fBccos\fR, \fBccosh\fR 10 2.929 548 \fBcexp\fR 3 2.147 549 \fBclog\fR 3 1.927 550 \fBcpow\fR - - [2] 551 \fBcsin\fR, \fBcsinh\fR 10 2.918 552 \fBcsqrt\fR 4 1.914 553 \fBctan\fR, \fBctanh\fR 13 4.630 554 .TE 555 556 .SS "Quadruple precision complex functions (SPARC)" 557 558 .TS 559 tab( ); 560 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 561 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 562 . 563 error bound largest error 564 function (ulps) observed (ulps) notes 565 \fBcacosl\fR, \fBcacoshl\fR 9 3 [1] 566 \fBcasinl\fR, \fBcasinhl\fR 9 3 567 \fBcatanl\fR, \fBcatanhl\fR 6 3 568 \fBccosl\fR, \fBccoshl\fR 10 3 569 \fBcexpl\fR 3 2 570 \fBclogl\fR 3 2 571 \fBcpowl\fR - - [2] 572 \fBcsinl\fR, \fBcsinhl\fR 10 3 573 \fBcsqrtl\fR 4 3 574 \fBctanl\fR, \fBctanhl\fR 13 5 575 .TE 576 577 .SS "Extended precision complex functions (x86 and amd64)" 578 579 .TS 580 tab( ); 581 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 582 cw(1.38i) cw(1.38i) cw(1.38i) cw(1.38i) 583 . 584 error bound largest error 585 function (ulps) observed (ulps) notes 586 \fBcacosl\fR, \fBcacoshl\fR 9 2 [1] 587 \fBcasinl\fR, \fBcasinhl\fR 9 2 588 \fBcatanl\fR, \fBcatanhl\fR 6 2 589 \fBccosl\fR, \fBccoshl\fR 10 3 590 \fBcexpl\fR 3 2.699 591 \fBclogl\fR 3 1 592 \fBcpowl\fR - - [2] 593 \fBcsinl\fR, \fBcsinhl\fR 10 3 594 \fBcsqrtl\fR 4 1.452 595 \fBctanl\fR, \fBctanhl\fR 13 5 596 .TE 597 598 .SS "Notes:" 599 .ne 2 600 .mk 601 .na 602 \fB[1]\fR 603 .ad 604 .RS 7n 605 .rt 606 The complex hyperbolic trigonometric functions are equivalent by symmetries to 607 their circular trigonometric counterparts. Because the implementations of these 608 functions exploit these symmetries, corresponding functions have the same error 609 bounds and observed errors. 610 .RE 611 612 .sp 613 .ne 2 614 .mk 615 .na 616 \fB[2]\fR 617 .ad 618 .RS 7n 619 .rt 620 For large arguments, the results computed by \fBcpowf\fR, \fBcpow\fR, and 621 \fBcpowl\fR can have unbounded relative error. It might be possible to give 622 error bounds for specific domains, but no such bounds are currently available. 623 The observed errors shown are for the domain {(\fIz\fR,\fIw\fR) : 624 \fBmax\fR(|\fBRe\fR \fIz\fR|, |\fBIm\fR \fIz\fR|, |\fBRe\fR \fIw\fR|, |\fBIm\fR 625 \fIw\fR|) <= 1}. 626 .RE 627 628 .SH FILES 629 .ne 2 630 .mk 631 .na 632 \fB\fB/lib/libm.so.2\fR\fR 633 .ad 634 .RS 21n 635 .rt 636 shared object 637 .RE 638 639 .sp 640 .ne 2 641 .mk 642 .na 643 \fB\fB/lib/64/libm.so.2\fR\fR 644 .ad 645 .RS 21n 646 .rt 647 64-bit shared object 648 .RE 649 650 .SH ATTRIBUTES 651 See \fBattributes\fR(5) for descriptions of the following attributes: 652 .sp 653 654 .sp 655 .TS 656 tab( ) box; 657 cw(2.75i) |cw(2.75i) 658 lw(2.75i) |lw(2.75i) 659 . 660 ATTRIBUTE TYPE ATTRIBUTE VALUE 661 _ 662 MT-Level Safe with exceptions 663 .TE 664 665 .sp 666 .LP 667 As described on the \fBlgamma\fR(3M) manual page, \fBgamma()\fR and 668 \fBlgamma()\fR and their \fBfloat\fR and \fBlong double\fR counterparts are 669 Unsafe. All other functions in \fBlibm.so.2\fR are MT-Safe. 670 .SH SEE ALSO 671 \fBIntro\fR(3), \fBlgamma\fR(3M), \fBmath.h\fR(3HEAD), \fBattributes\fR(5), 672 \fBstandards\fR(5)