/* isnanl()
* isfinitel ( )
* signbitl ( )
*
* Floating point IEEE special number tests
*
*
*
* SYNOPSIS :
*
* int signbitl ( ) , isnanl ( ) , isfinitel ( ) ;
* long double x , y ;
*
* n = signbitl ( x ) ;
* n = isnanl ( x ) ;
* n = isfinitel ( x ) ;
*
*
*
* DESCRIPTION :
*
* These functions are part of the standard C run time library
* for some but not all C compilers . The ones supplied are
* written in C for IEEE arithmetic . They should
* be used only if your compiler library does not already have
* them .
*
*/
/*
Cephes Math Library Release 2 . 7 : June , 1998
Copyright 1992 , 1998 by Stephen L . Moshier
*/
#include "mconf.h"
/* This is defined in mconf.h. */
/* #define DENORMAL 1 */
#ifdef UNK
/* Change UNK into something else. */
#undef UNK
#if BIGENDIAN
#define MIEEE 1
#else
#define IBMPC 1
#endif
#endif
/* Return 1 if the sign bit of x is 1, else 0. */
int signbitl(x)
long double x;
{
union
{
long double d;
short s[6 ];
int i[3 ];
} u;
u.d = x;
if ( sizeof (int ) == 4 )
{
#ifdef IBMPC
return ( u.s[4 ] < 0 );
#endif
#ifdef MIEEE
return ( u.i[0 ] < 0 );
#endif
}
else
{
#ifdef IBMPC
return ( u.s[4 ] < 0 );
#endif
#ifdef MIEEE
return ( u.s[0 ] < 0 );
#endif
}
}
/* Return 1 if x is a number that is Not a Number, else return 0. */
int isnanl(x)
long double x;
{
#ifdef NANS
union
{
long double d;
unsigned short s[6 ];
unsigned int i[3 ];
} u;
u.d = x;
if ( sizeof (int ) == 4 )
{
#ifdef IBMPC
if ( ((u.s[4 ] & 0 x7fff) == 0 x7fff)
&& (((u.i[1 ] & 0 x7fffffff)!= 0 ) || (u.i[0 ] != 0 )))
return 1 ;
#endif
#ifdef MIEEE
if ( ((u.i[0 ] & 0 x7fff0000) == 0 x7fff0000)
&& (((u.i[1 ] & 0 x7fffffff) != 0 ) || (u.i[2 ] != 0 )))
return 1 ;
#endif
return (0 );
}
else
{ /* size int not 4 */
#ifdef IBMPC
if ( (u.s[4 ] & 0 x7fff) == 0 x7fff)
{
if ((u.s[3 ] & 0 x7fff) | u.s[2 ] | u.s[1 ] | u.s[0 ])
return (1 );
}
#endif
#ifdef MIEEE
if ( (u.s[0 ] & 0 x7fff) == 0 x7fff)
{
if ((u.s[2 ] & 0 x7fff) | u.s[3 ] | u.s[4 ] | u.s[5 ])
return (1 );
}
#endif
return (0 );
} /* size int not 4 */
#else
/* No NANS. */
return (0 );
#endif
}
/* Return 1 if x is not infinite and is not a NaN. */
int isfinitel(x)
long double x;
{
#ifdef INFINITIES
union
{
long double d;
unsigned short s[6 ];
unsigned int i[3 ];
} u;
u.d = x;
if ( sizeof (int ) == 4 )
{
#ifdef IBMPC
if ( (u.s[4 ] & 0 x7fff) != 0 x7fff)
return 1 ;
#endif
#ifdef MIEEE
if ( (u.i[0 ] & 0 x7fff0000) != 0 x7fff0000)
return 1 ;
#endif
return (0 );
}
else
{
#ifdef IBMPC
if ( (u.s[4 ] & 0 x7fff) != 0 x7fff)
return 1 ;
#endif
#ifdef MIEEE
if ( (u.s[0 ] & 0 x7fff) != 0 x7fff)
return 1 ;
#endif
return (0 );
}
#else
/* No INFINITY. */
return (1 );
#endif
}
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-14)
¤
*© Formatika GbR, Deutschland