s01ba returns a value of the shifted logarithmic function, ln1+x.


public static double s01ba(
	double x,
	out int ifail
Visual Basic
Public Shared Function s01ba ( _
	x As Double, _
	<OutAttribute> ByRef ifail As Integer _
) As Double
Visual C++
static double s01ba(
	double x, 
	[OutAttribute] int% ifail
static member s01ba : 
        x : float * 
        ifail : int byref -> float 


Type: System..::..Double
On entry: the argument x of the function.
Constraint: x>-1.0.
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

Return Value

s01ba returns a value of the shifted logarithmic function, ln1+x.


s01ba computes values of ln1+x, retaining full relative precision even when x is small. The method is based on the Chebyshev expansion
Setting x-=x1+p22px+2, and choosing p=q-1q+1, q=24 the expansion is valid in the domain x12-1,2-1.
Outside this domain, ln1+x is computed by the standard logarithmic function.


Lyusternik L A, Chervonenkis O A and Yanpolskii A R (1965) Handbook for Computing Elementary Functions p. 57 Pergamon Press

Error Indicators and Warnings

Errors or warnings detected by the method:
On entry, x-1.0.
The result is returned as zero.
An error occured, see message report.


The returned result should be accurate almost to machine precision, with a limit of about 20 significant figures due to the precision of internal constants. Note however that if x lies very close to -1.0 and is not exact (for example if x is the result of some previous computation and has been rounded), then precision will be lost in the computation of 1+x, and hence ln1+x, in s01ba.

Parallelism and Performance


Further Comments

Empirical tests show that the time taken for a call of s01ba usually lies between about 1.25 and 2.5 times the time for a call to the standard logarithm function.


The example program reads values of the argument x from a file, evaluates the function at each value of x and prints the results.

Example program (C#): s01bae.cs

Example program data: s01bae.d

Example program results: s01bae.r

See Also