longdouble
log1pl(longdouble xm1)
{ longdouble x, y, z; int e;
x = xm1 + 1.0L;
/* Test for domain errors. */ if( x <= 0.0L )
{ if( x == 0.0L )
mtherr( fname, SING ); else
mtherr( fname, DOMAIN ); return( MINLOGL );
}
/* Separate mantissa from exponent. */
/* Use frexp used so that denormal numbers will be handled properly. */
x = frexpl( x, &e );
/* Logarithm using log(x) = z + z^3 P(z^2)/Q(z^2),
where z = 2(x-1)/x+1). */ if( (e > 2) || (e < -2) )
{ if( x < SQRTH )
{ /* 2( 2x-1 )/( 2x+1 ) */
e -= 1;
z = x - 0.5L;
y = 0.5L * z + 0.5L;
} else
{ /* 2 (x-1)/(x+1) */
z = x - 0.5L;
z -= 0.5L;
y = 0.5L * x + 0.5L;
}
x = z / y;
z = x*x;
z = x * ( z * polevll( z, R, 5 ) / p1evll( z, S, 6 ) );
z = z + e * C2;
z = z + x;
z = z + e * C1; return( z );
}
/* Logarithm using log(1+x) = x - .5x^2 + x^3 P(x)/Q(x). */
if( x < SQRTH )
{
e -= 1; if (e != 0)
x = 2.0L * x - 1.0L; /* 2x - 1 */ else
x = xm1;
} else
{ if (e != 0)
x = x - 1.0L; else
x = xm1;
}
z = x*x;
y = x * ( z * polevll( x, P, 12 ) / p1evll( x, Q, 12 ) );
y = y + e * C2;
z = y - 0.5L * z;
z = z + x;
z = z + e * C1; return( z );
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-14)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.