Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
libm(3LIB)							    libm(3LIB)

NAME
       libm - C	math library

SYNOPSIS
       cc [ flag... ] file... -lm [ library... ]

       Functions  in this library provide common elementary mathematical func-
       tions and floating point	environment routines defined by	System V, ANSI
       C, POSIX, and so	on. See	standards(5). Additional functions in this li-
       brary provide extended support for handling floating point exceptions.

INTERFACES
       The shared object libm.so.2 provides the	public interfaces defined  be-
       low.  See  intro(3)  for	additional information on shared object	inter-
       faces.

       acos			     acosf
       acosh			     acoshf
       acoshl			     acosl
       asin			     asinf
       asinh			     asinhf
       asinhl			     asinl
       atan			     atan2
       atan2f			     atan2l
       atanf			     atanh
       atanhf			     atanhl
       atanl			     cabs
       cabsf			     cabsl
       cacos			     cacosf
       cacosh			     cacoshf
       cacoshl			     cacosl
       carg			     cargf
       cargl			     casin
       casinf			     casinh
       casinhf			     casinhl
       casinl			     catan
       catanf			     catanh
       catanhf			     catanhl
       catanl			     cbrt
       cbrtf			     cbrtl
       ccos			     ccosf
       ccosh			     ccoshf
       ccoshl			     ccosl
       ceil			     ceilf
       ceill			     cexp
       cexpf			     cexpl
       cimag			     cimagf
       cimagl			     clog
       clogf			     clogl
       conj			     conjf
       conjl			     copysign
       copysignf		     copysignl
       cos			     cosf
       cosh			     coshf
       coshl			     cosl
       cpow			     cpowf
       cpowl			     cproj
       cprojf			     cprojl
       creal			     crealf

       creall			     csin
       csinf			     csinh
       csinhf			     csinhl
       csinl			     csqrt
       csqrtf			     csqrtl
       ctan			     ctanf
       ctanh			     ctanhf
       ctanhl			     ctanl
       erf			     erfc
       erfcf			     erfcl
       erff			     erfl
       exp			     exp2
       exp2f			     exp2l
       expf			     expl
       expm1			     expm1f
       expm1l			     fabs
       fabsf			     fabsl
       fdim			     fdimf
       fdiml			     feclearexcept
       fegetenv			     fegetexceptflag
       fegetround		     feholdexcept
       feraiseexcept		     fesetenv
       fesetexceptflag		     fesetround
       fetestexcept		     feupdateenv
       fex_get_handling		     fex_get_log
       fex_get_log_depth	     fex_getexcepthandler
       fex_log_entry		     fex_merge_flags
       fex_set_handling		     fex_set_log
       fex_set_log_depth	     fex_setexcepthandler
       floor			     floorf
       floorl			     fma
       fmaf			     fmal
       fmax			     fmaxf
       fmaxl			     fmin
       fminf			     fminl
       fmod			     fmodf
       fmodl			     frexp
       frexpf			     frexpl
       gamma			     gamma_r
       gammaf			     gammaf_r
       gammal			     gammal_r
       hypot			     hypotf
       hypotl			     ilogb
       ilogbf			     ilogbl
       isnan			     j0
       j0f			     j0l
       j1			     j1f
       j1l			     jn
       jnf			     jnl
       ldexp			     ldexpf
       ldexpl			     lgamma
       lgamma_r			     lgammaf
       lgammaf_r		     lgammal
       lgammal_r		     llrint
       llrintf			     llrintl
       llround			     llroundf
       llroundl			     log
       log10			     log10f
       log10l			     log1p
       log1pf			     log1pl
       log2			     log2f
       log2l			     logb
       logbf			     logbl
       logf			     logl
       lrint			     lrintf

       lrintl			     lround
       lroundf			     lroundl
       matherr			     modf
       modff			     modfl
       nan			     nanf
       nanl			     nearbyint
       nearbyintf		     nearbyintl
       nextafter		     nextafterf
       nextafterl		     nexttoward
       nexttowardf		     nexttowardl
       pow			     powf
       powl			     remainder
       remainderf		     remainderl
       remquo			     remquof
       remquol			     rint
       rintf			     rintl
       round			     roundf
       roundl			     scalb
       scalbf			     scalbl
       scalbln			     scalblnf
       scalblnl			     scalbn
       scalbnf			     scalbnl
       signgam			     signgamf
       signgaml			     significand
       significandf		     significandl
       sin			     sincos
       sincosf			     sincosl
       sinf			     sinh
       sinhf			     sinhl
       sinl			     sqrt
       sqrtf			     sqrtl
       tan			     tanf
       tanh			     tanhf
       tanhl			     tanl
       tgamma			     tgammaf
       tgammal			     trunc
       truncf			     truncl
       y0			     y0f
       y0l			     y1
       y1f			     y1l
       yn			     ynf
       ynl

       The following interfaces	are unique to the  version of this library:

       fegetprec		     fesetprec

ACCURACY
       ISO/IEC 9899:1999, also known as	C99, specifies the functions listed in
       the following tables and	states that the	accuracy of these functions is
       "implementation-defined". The information below characterizes the accu-
       racy  of	 these	functions as implemented in libm.so.2.	For each func-
       tion, the tables	provide	an upper bound on the largest  error  possible
       for  any	argument and the largest error actually	observed among a large
       sample of arguments. Errors are expressed in "units in the last place",
       or  ulps,  relative  to the exact function value	for each argument (re-
       garding the argument as exact). Ulps depend on  the  precision  of  the
       floating	 point	format:	if y is	the exact function value, x and	x' are
       adjacent	floating point numbers such that x < y < x', and  x''  is  the
       computed	 function  value,  then	provided x, x',	and x''	all lie	in the
       same binade, the	error in x'' is	|y - x''| / |x - x'| ulps. In particu-
       lar,  when the error is less than one ulp, the computed value is	one of
       the two floating	point numbers adjacent to the exact value.

       The bounds and observed errors listed below apply only in  the  default
       floating	 point	modes. Specifically, on	SPARC, these bounds assume the
       rounding	direction is round-to-nearest and non-standard	mode  is  dis-
       abled.  On , the	bounds assume the rounding direction is	round-to-near-
       est and the rounding precision  is  round-to-64-bits.  Moreover,	 on  ,
       floating	 point function	values are returned in a floating point	regis-
       ter in extended double precision	format,	but the	 bounds	 below	assume
       that  the  result  value	 is then stored	to memory in the format	corre-
       sponding	to the function's type.

       The error bounds	listed below are believed to be	correct,  but  smaller
       bounds  might be	proved later. The observed errors are the largest ones
       currently known,	but larger errors might	be discovered  later.  Numbers
       in the notes column refer to the	notes following	the tables.

   Real	Functions
   Single precision real functions (SPARC and )
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       acosf		1.0		< 1
       acoshf		1.0		< 1
       asinf		1.0		< 1
       asinhf		1.0		< 1
       atanf		1.0		< 1
       atan2f		1.0		< 1
       atanhf		1.0		< 1
       cbrtf		1.0		< 1
       cosf		1.0		< 1
       coshf		1.0		< 1
       erff		1.0		< 1
       erfcf		1.0		< 1
       expf		1.0		< 1
       exp2f		1.0		< 1
       expm1f		1.0		< 1
       hypotf		1.0		< 1
       lgammaf		1.0		< 1
       logf		1.0		< 1
       log10f		1.0		< 1
       log1pf		1.0		< 1
       log2f		1.0		< 1
       powf		1.0		< 1
       sinf		1.0		< 1
       sinhf		1.0		< 1
       sqrtf		0.5		0.500		  [1]
       tanf		1.0		< 1
       tanhf		1.0		< 1
       tgammaf		1.0		< 1

   Double precision real functions (SPARC)
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       acos		1.0		< 1
       acosh		4.0		1.878
       asin		1.0		< 1
       asinh		7.0		1.653
       atan		1.0		< 1
       atan2		2.5		1.456
       atanh		4.0		1.960
       cbrt		1.0		< 1
       cos		1.0		< 1
       cosh		3.0		1.168
       erf		4.0		0.959
       erfc		6.0		2.816

       exp		1.0		< 1
       exp2		2.0		1.050
       expm1		1.0		< 1
       hypot		1.0		< 1
       lgamma		61.5		5.629		  [2]
       log		1.0		< 1
       log10		3.5		1.592
       log1p		1.0		< 1
       log2		3.5		1.378
       pow		1.0		< 1
       sin		1.0		< 1
       sinh		4.0		2.078
       sqrt		0.5		0.500		  [1]
       tan		1.0		< 1
       tanh		3.5		2.136
       tgamma		1.0		< 1

   Double precision real functions ()
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       acos		1.0		< 1
       acosh		4.0		1.694
       asin		1.0		< 1
       asinh		7.0		1.493
       atan		1.0		< 1
       atan2		1.0		< 1
       atanh		4.0		1.445
       cbrt		1.0		< 1
       cos		1.0		< 1
       cosh		3.0		1.001
       erf		4.0		0.932
       erfc		6.0		2.728
       exp		1.0		< 1
       exp2		1.0		< 1
       expm1		1.0		< 1
       hypot		1.0		< 1
       lgamma		61.5		2.654		  [2]
       log		1.0		< 1
       log10		1.0		< 1
       log1p		1.0		< 1
       log2		1.0		< 1
       pow		1.0		< 1
       sin		1.0		< 1
       sinh		4.0		1.458
       sqrt		0.5003		0.500		  [1]
       tan		1.0		< 1
       tanh		3.5		1.592
       tgamma		1.0		< 1

   Quadruple precision real functions (SPARC)
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       acosl		3.5		1.771
       acoshl		8.0		1.275
       asinl		4.0		2.007
       asinhl		9.0		1.823
       atanl		1.0		< 1
       atan2l		2.5		1.102
       atanhl		4.0		1.970
       cbrtl		1.0		< 1
       cosl		1.0		< 1
       coshl		3.5		0.985
       erfl		2.0		0.779

       erfcl		68.5		13.923
       expl		1.0		< 1
       exp2l		2.0		0.714
       expm1l		2.0		1.020
       hypotl		1.0		< 1
       lgammal		18.5		2.916		  [2]
       logl		1.0		< 1
       log10l		3.5		1.156
       log1pl		2.0		1.216
       log2l		3.5		1.675
       powl		1.0		< 1
       sinl		1.0		< 1
       sinhl		4.5		1.589
       sqrtl		0.5		0.500		  [1]
       tanl		4.5		2.380
       tanhl		4.5		1.692
       tgammal		1.0		< 1

   Extended precision real functions ()
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       acosl		3.0		1.868
       acoshl		8.0		2.352
       asinl		3.0		1.716
       asinhl		9.0		2.346
       atanl		1.0		< 1
       atan2l		1.0		< 1
       atanhl		4.0		2.438
       cbrtl		1.0		< 1
       cosl		1.0		< 1
       coshl		3.5		1.288
       erfl		1.0		< 1
       erfcl		78.5		13.407
       expl		3.5		1.272
       exp2l		1.5		0.786
       expm1l		4.0		1.921
       hypotl		3.5		2.087
       lgammal		22.5		3.125		  [2]
       logl		2.0		0.796
       log10l		2.0		1.224
       log1pl		5.0		2.370
       log2l		1.0		< 1
       powl		32770.0		3756.512
       sinl		1.0		< 1
       sinhl		4.5		2.356
       sqrtl		0.5		0.500		  [1]
       tanl		4.5		2.366
       tanhl		4.5		2.417
       tgammal		1.0		< 1

   Notes:
       [1]	On  SPARC, sqrtf, sqrt,	and sqrtl are correctly	rounded	in ac-
		cordance with IEEE 754.	On , sqrtl is correctly	rounded, sqrtf
		is correctly rounded provided the result is narrowed to	single
		precision as discussed above, but sqrt might not be  correctly
		rounded	 due to	"double	rounding": when	the intermediate value
		computed to extended precision lies  exactly  halfway  between
		two  representable  numbers in double precision, the result of
		rounding the intermediate value	to double precision is	deter-
		mined  by the round-ties-to-even rule. If this rule causes the
		second rounding	to round in the	same direction as  the	first,
		the  net  rounding  error  can	exceed 0.5 ulps. (The error is
		bounded	instead	by 0.5*(1 + 2^-11) ulps.)

       [2]	Error bounds for lgamma	and lgammal apply  only	 for  positive
		arguments.

   Complex functions
       The  real-valued	complex	functions cabsf, cabs, cabsl, cargf, carg, and
       cargl are equivalent to	the  real  functions  hypotf,  hypot,  hypotl,
       atan2f,	atan2, and atan2l, respectively. The error bounds and observed
       errors given above for the latter functions also	apply to the former.

       The complex functions listed below are complex-valued. For  each	 func-
       tion,  the  error  bound	 shown applies separately to both the real and
       imaginary parts of the result. (For example, both the real  and	imagi-
       nary  parts  of	cacosf(z)  are	accurate to within 1 ulp regardless of
       their magnitudes.) Similarly, the largest observed error	shown  is  the
       largest error found in either the real or the imaginary part of the re-
       sult.

   Single precision complex functions (SPARC)
			 error bound	  largest error
       function		  (ulps)	  observed (ulps)   notes
       cacosf, cacoshf	 1		  < 1		    [1]
       casinf, casinhf	 1		  < 1
       catanf, catanhf	 6		  < 1
       ccosf, ccoshf	 10		  2.008
       cexpf		 3		  2.155
       clogf		 3		  < 1
       cpowf		 --		  < 1		    [2]
       csinf, csinhf	 10		  2.004
       csqrtf		 4		  < 1
       ctanf, ctanhf	 13		  6.141

   Single precision complex functions ()
			 error bound	  largest error
       function		  (ulps)	  observed (ulps)   notes
       cacosf, cacoshf	 1		  < 1		    [1]
       casinf, casinhf	 1		  < 1
       catanf, catanhf	 6		  < 1
       ccosf, ccoshf	 10		  1.984
       cexpf		 3		  1.984
       clogf		 3		  < 1
       cpowf		 --		  < 1		    [2]
       csinf, csinhf	 10		  1.973
       csqrtf		 4		  < 1
       ctanf, ctanhf	 13		  4.657

   Double precision complex functions (SPARC)
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       cacos, cacosh	9		3.337		  [1]
       casin, casinh	9		3.267
       catan, catanh	6		3.737
       ccos, ccosh	10		3.635
       cexp		3		2.165
       clog		3		2.162
       cpow		-		-		  [2]
       csin, csinh	10		3.414
       csqrt		4		2.572
       ctan, ctanh	13		6.116

   Double precision complex functions ()
			error bound	largest	error
       function		 (ulps)		observed (ulps)	  notes
       cacos, cacosh	9		3.624		  [1]
       casin, casinh	9		3.624
       catan, catanh	6		2.500
       ccos, ccosh	10		2.929
       cexp		3		2.147
       clog		3		1.927
       cpow		-		-		  [2]
       csin, csinh	10		2.918
       csqrt		4		1.914
       ctan, ctanh	13		4.630

   Quadruple precision complex functions (SPARC)
			 error bound	  largest error
       function		  (ulps)	  observed (ulps)   notes
       cacosl, cacoshl	 9		  3		    [1]
       casinl, casinhl	 9		  3
       catanl, catanhl	 6		  3
       ccosl, ccoshl	 10		  3
       cexpl		 3		  2
       clogl		 3		  2
       cpowl		 -		  -		    [2]
       csinl, csinhl	 10		  3
       csqrtl		 4		  3
       ctanl, ctanhl	 13		  5

   Extended precision complex functions	()
			 error bound	  largest error
       function		  (ulps)	  observed (ulps)   notes
       cacosl, cacoshl	 9		  2		    [1]
       casinl, casinhl	 9		  2
       catanl, catanhl	 6		  2
       ccosl, ccoshl	 10		  3
       cexpl		 3		  1
       clogl		 3		  1
       cpowl		 -		  -		    [2]
       csinl, csinhl	 10		  3
       csqrtl		 4		  1
       ctanl, ctanhl	 13		  5

   Notes:
       [1]	The complex hyperbolic trigonometric functions are  equivalent
		by  symmetries	to  their circular trigonometric counterparts.
		Because	the implementations of these functions	exploit	 these
		symmetries, corresponding functions have the same error	bounds
		and observed errors.

       [2]	For large arguments, the results computed by cpowf, cpow,  and
		cpowl  can have	unbounded relative error. It might be possible
		to give	error bounds for specific domains, but no such	bounds
		are currently available. The observed errors shown are for the
		domain {(z,w) :	max(|Re	z|, |Im	z|, |Re	w|, |Im	w|) <= 1}.

       /lib/libm.so.2		       shared object

       /lib/64/libm.so.2	       64-bit shared object

       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Availability		     |SUNWlibmsr		   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |Safe with	exceptions	   |
       +-----------------------------+-----------------------------+

       As described on the lgamma(3M) manual page, gamma()  and	 lgamma()  and
       their  float  and  long double counterparts are Unsafe. All other func-
       tions in	libm.so.2 are MT-Safe.

       intro(3), lgamma(3M), math.h(3HEAD), attributes(5), standards(5)

				  11 Aug 2004			    libm(3LIB)

NAME | SYNOPSIS | INTERFACES | ACCURACY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=libm&sektion=3lib&manpath=SunOS+5.10>

home | help