float log2f(xx) double xx; #endif
{ float x, y, z; int e;
x = xx; /* Test for domain */ if( x <= 0.0 )
{ if( x == 0.0 )
mtherr( fname, SING ); else
mtherr( fname, DOMAIN ); return( MINLOGF/LOGE2F );
}
/* separate mantissa from exponent */
x = frexpf( x, &e );
/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
if( x < SQRTH )
{
e -= 1;
x = 2.0*x - 1.0;
} else
{
x = x - 1.0;
}
z = x*x;
y = x * ( z * polevlf( x, P, 8 ) );
y = y - 0.5 * z; /* y - 0.5 * x**2 */
/* Multiply log of fraction by log2(e) *andbase2exponentby1 * ****CAUTION*** * *Thissequenceofoperationsiscriticalanditmay *behorriblydefeatedbysomecompileroptimizers.
*/
z = y * LOG2EA;
z += x * LOG2EA;
z += y;
z += x;
z += (float )e; return( z );
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-27)
¤
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.