Module Name: src Committed By: jruoho Date: Tue Sep 13 05:26:47 UTC 2011
Modified Files: src/lib/libm: Makefile src/lib/libm/man: exp.3 Added Files: src/lib/libm/man: log.3 Log Message: Split out the logarithm functions from the perplex exp(3). Also remove some useless notes in the latter (namely, no one cares that financial calculations were done on Hewlett-Packard HP-71B, or that there is a LN1() in Pascal). To generate a diff of this commit: cvs rdiff -u -r1.118 -r1.119 src/lib/libm/Makefile cvs rdiff -u -r1.26 -r1.27 src/lib/libm/man/exp.3 cvs rdiff -u -r0 -r1.1 src/lib/libm/man/log.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libm/Makefile diff -u src/lib/libm/Makefile:1.118 src/lib/libm/Makefile:1.119 --- src/lib/libm/Makefile:1.118 Sat Aug 6 11:01:12 2011 +++ src/lib/libm/Makefile Tue Sep 13 05:26:47 2011 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.118 2011/08/06 11:01:12 jruoho Exp $ +# $NetBSD: Makefile,v 1.119 2011/09/13 05:26:47 jruoho Exp $ # # @(#)Makefile 5.1beta 93/09/24 # @@ -210,7 +210,7 @@ ceil.3 copysign.3 cos.3 cosh.3 \ erf.3 exp.3 \ fabs.3 finite.3 fmod.3 frexp.3 hypot.3 \ - ieee_test.3 ilogb.3 isinff.3 j0.3 ldexp.3 lgamma.3 lrint.3 \ + ieee_test.3 ilogb.3 isinff.3 j0.3 ldexp.3 lgamma.3 log.3 lrint.3 \ math.3 modf.3 nextafter.3 \ remainder.3 rint.3 round.3 \ scalbn.3 sin.3 sinh.3 sqrt.3 \ @@ -246,11 +246,14 @@ MLINKS+=erf.3 erff.3 erf.3 erfc.3 erf.3 erfcf.3 MLINKS+=exp.3 expf.3 exp.3 expm1.3 exp.3 expm1f.3 \ exp.3 exp2.3 exp.3 exp2f.3 \ - exp.3 log.3 exp.3 logf.3 \ - exp.3 log10.3 exp.3 log10f.3 \ - exp.3 log1p.3 exp.3 log1pf.3 \ - exp.3 pow.3 exp.3 powf.3 \ - exp.3 log2.3 exp.3 log2f.3 + exp.3 pow.3 exp.3 powf.3 +MLINKS+=log.3 logf.3 \ + log.3 log10.3 \ + log.3 log10f.3 \ + log.3 log1p.3 \ + log.3 log1pf.3 \ + log.3 log2.3 \ + log.3 log2f.3 MLINKS+=fabs.3 fabsf.3 MLINKS+=finite.3 finitef.3 MLINKS+=fmod.3 fmodf.3 Index: src/lib/libm/man/exp.3 diff -u src/lib/libm/man/exp.3:1.26 src/lib/libm/man/exp.3:1.27 --- src/lib/libm/man/exp.3:1.26 Mon May 3 05:35:58 2010 +++ src/lib/libm/man/exp.3 Tue Sep 13 05:26:47 2011 @@ -27,9 +27,9 @@ .\" .\" from: @(#)exp.3 6.12 (Berkeley) 7/31/91 .\" $FreeBSD: src/lib/msun/man/exp.3,v 1.24 2008/01/18 21:43:00 das Exp $ -.\" $NetBSD: exp.3,v 1.26 2010/05/03 05:35:58 jruoho Exp $ +.\" $NetBSD: exp.3,v 1.27 2011/09/13 05:26:47 jruoho Exp $ .\" -.Dd May 3, 2010 +.Dd September 13, 2011 .Dt EXP 3 .Os .Sh NAME @@ -41,17 +41,9 @@ .\" .Nm exp2l , .Nm expm1 , .Nm expm1f , -.Nm log , -.Nm logf , -.Nm log2 , -.Nm log2f , -.Nm log10 , -.Nm log10f , -.Nm log1p , -.Nm log1pf , .Nm pow , .Nm powf -.Nd exponential, logarithm, power functions +.Nd exponential and power functions .Sh LIBRARY .Lb libm .Sh SYNOPSIS @@ -71,22 +63,6 @@ .Ft float .Fn expm1f "float x" .Ft double -.Fn log "double x" -.Ft float -.Fn logf "float x" -.Ft double -.Fn log2 "double x" -.Ft float -.Fn log2f "float x" -.Ft double -.Fn log10 "double x" -.Ft float -.Fn log10f "float x" -.Ft double -.Fn log1p "double x" -.Ft float -.Fn log1pf "float x" -.Ft double .Fn pow "double x" "double y" .Ft float .Fn powf "float x" "float y" @@ -118,31 +94,6 @@ .Fa x . .Pp The -.Fn log -function computes the value of the natural logarithm of argument -.Fa x . -.Pp -The -.Fn log10 -function computes the value of the logarithm of argument -.Fa x -to base 10. -.Pp -The -.Fn log1p -function computes -the value of log(1+x) accurately even for tiny argument -.Fa x . -.Pp -The -.Fn log2 -and the -.Fn log2f -functions compute the value of the logarithm of argument -.Fa x -to base 2. -.Pp -The .Fn pow and .Fn powf @@ -180,41 +131,15 @@ and on the .Tn VAX generate a reserved operand fault. -On a -.Tn VAX , -.Va errno -is set to -.Er EDOM -and the reserved operand is returned -by log unless -.Fa x -\*[Gt] 0, by -.Fn log1p -unless -.Fa x -\*[Gt] \-1. .Sh ERRORS The values of .Fn exp x , .Fn expm1 x , -.Fn exp2 x , -.Fn log x , and -.Fn log1p x , +.Fn exp2 x , are exact provided that they are representable. Otherwise the error in these functions is generally below one .Em ulp . -The values of -.Fn log10 x -are within about 2 -.Em ulps ; -an -.Em ulp -is one -.Em Unit -in the -.Em Last -.Em Place . The error in .Fn pow x y is below about 2 @@ -248,36 +173,6 @@ .Tn IEEE 754. .Sh NOTES -The functions -.Fn exp x\ \-\ 1 -and -.Fn log 1\ \+\ x -are called -.Fn expm1 x -and -.Fn logp1 x -in -.Tn BASIC -on the Hewlett\-Packard -.Tn HP Ns \-71B -and -.Tn APPLE -Macintosh, -.Tn EXP1 -and -.Tn LN1 -in Pascal, -.Fn exp1 x -and -.Fn log1 x -in C -on -.Tn APPLE -Macintoshes, where they have been provided to make -sure financial calculations of ((1+x)**n\-1)/x, namely -expm1(n*log1p(x))/x, will be accurate when x is tiny. -They also provide accurate inverse hyperbolic functions. -.Pp The function .Fn pow x 0 returns x**0 = 1 for all x including x = 0, @@ -340,9 +235,7 @@ .Xr math 3 .Sh STANDARDS The -.Fn exp , -.Fn log , -.Fn log10 +.Fn exp and .Fn pow functions conform to @@ -353,33 +246,19 @@ .Fn expf , .Fn expm1 , .Fn expm1f , -.Fn log1p , -.Fn log1pf , -.Fn log2 , -.Fn log2f , -.Fn log10f , -.Fn logf , and .Fn powf functions conform to .St -isoC-99 . .Sh HISTORY A -.Fn exp , -.Fn log +.Fn exp and .Fn pow functions appeared in .At v6 . -A -.Fn log10 -function -appeared in -.At v7 . The -.Fn log1p -and .Fn expm1 -functions appeared in +function appeared in .Bx 4.3 . Added files: Index: src/lib/libm/man/log.3 diff -u /dev/null src/lib/libm/man/log.3:1.1 --- /dev/null Tue Sep 13 05:26:47 2011 +++ src/lib/libm/man/log.3 Tue Sep 13 05:26:47 2011 @@ -0,0 +1,169 @@ +.\" $NetBSD: log.3,v 1.1 2011/09/13 05:26:47 jruoho Exp $ +.\" +.\" Copyright (c) 2011 Jukka Ruohonen <jruoho...@iki.fi> +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd September 13, 2011 +.Dt SCALBN 3 +.Os +.Sh NAME +.Nm log , +.Nm logf , +.Nm log10 , +.Nm log10f , +.Nm log1p , +.Nm log1pf +.Nm log2 , +.Nm log2f , +.Nd logarithm functions +.Sh LIBRARY +.Lb libm +.Sh SYNOPSIS +.In math.h +.Ft double +.Fn log "double x" +.Ft float +.Fn logf "float x" +.Ft double +.Fn log10 "double x" +.Ft float +.Fn log10f "float x" +.Ft double +.Fn log1p "double x" +.Ft float +.Fn log1pf "float x" +.Ft double +.Fn log2 "double x" +.Ft float +.Fn log2f "float x" +.Sh DESCRIPTION +The following functions compute logarithms: +.Bl -bullet -offset 2n +.It +The +.Fn log +and +.Fn logf +functions return the natural logarithm. +.It +The +.Fn log10 +and +.Fn log10f +functions return the base 10 logarithm. +.It +The +.Fn log1p +and +.Fn log1pf +functions return the natural logarithm of (1.0 + +.Fa x ) +accurately even for very small values of +.Fa x . +.It +The +.Fn log2 +and +.Fn log2f +functions return the base 2 logarithm. +.Sh RETURN VALUES +Upon successful completion, the functions return the logarithm of +.Fa x +as descibed above. +Otherwise the following may occur: +.Bl -enum -offset indent +.It +If +.Fa x +is \*(Na, all functions return \*(Na. +.It +If +.Fa x +is positive infinity, all functions return +.Fa x . +If +.Fa x +is negative infinity, all functions return \*(Na. +.It +If +.Fa x +is +0.0 or -0.0, the +.Fn log , +.Fn log10 , +and +.Fn log2 +families return either +.Dv -HUGE_VAL , +.Dv -HUGE_VALF , +or +.Dv -HUGE_VALL , +whereas the +.Fn log1p +family returns +.Fa x . +.It +If +.Fa x +is +1.0, the +.Fn log , +.Fn log10 , +and +.Fn log2 +families return +0.0. +If +.Fa x +is -1.0, the +.Fn log1p +family returns +.Dv -HUGE_VAL , +.Dv -HUGE_VALF , +or +.Dv -HUGE_VALL . +.El +.Pp +In addition, on a +.Tn VAX , +.Va errno +is set to +.Er EDOM +and the reserved operand is returned +by +.Fn log +unless +.Fa x +\*[Gt] 0, by +.Fn log1p +unless +.Fa x +\*[Gt] \-1. +.Sh SEE ALSO +.Xr exp 3 , +.Xr ilogb 3 , +.Xr math 3 +.Sh STANDARDS +The described functions conform to +.St -isoC-99 . +.Sh HISTORY +The history of the logarithm functions dates back to +.At v6 .