compiled newlib, need to hook up the system calls
This commit is contained in:
105
rocklibc/src/math/fmax.c
Normal file
105
rocklibc/src/math/fmax.c
Normal file
@@ -0,0 +1,105 @@
|
||||
|
||||
/* fmax( double )
|
||||
|
||||
This file is part of the Public Domain C Library (PDCLib).
|
||||
Permission is granted to use, modify, and / or redistribute at will.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#ifndef REGTEST
|
||||
|
||||
double fmax( double x, double y )
|
||||
{
|
||||
if ( isnan( x ) ) return y;
|
||||
if ( isnan( y ) ) return x;
|
||||
return ( x > y ) ? x : y;
|
||||
}
|
||||
|
||||
float fmaxf( float x, float y )
|
||||
{
|
||||
if ( isnan( x ) ) return y;
|
||||
if ( isnan( y ) ) return x;
|
||||
return ( x > y ) ? x : y;
|
||||
}
|
||||
|
||||
long double fmaxl( long double x, long double y )
|
||||
{
|
||||
if ( isnan( x ) ) return y;
|
||||
if ( isnan( y ) ) return x;
|
||||
return ( x > y ) ? x : y;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
#include "_PDCLIB_test.h"
|
||||
|
||||
int main( void )
|
||||
{
|
||||
float f1, f2;
|
||||
double d1, d2;
|
||||
long double ld1, ld2;
|
||||
|
||||
f1 = 3.15f;
|
||||
f2 = 3.16f;
|
||||
TESTCASE( fmaxf( f1, f2 ) == f2 );
|
||||
TESTCASE( fmaxf( f2, f1 ) == f2 );
|
||||
TESTCASE( fmaxf( f1, f1 ) == f1 );
|
||||
TESTCASE( fmaxf( f1, INFINITY ) == INFINITY );
|
||||
TESTCASE( fmaxf( INFINITY, f1 ) == INFINITY );
|
||||
TESTCASE( fmaxf( f1, -INFINITY ) == f1 );
|
||||
TESTCASE( fmaxf( -INFINITY, f1 ) == f1 );
|
||||
TESTCASE( fmaxf( f1, NAN ) == f1 );
|
||||
TESTCASE( fmaxf( NAN, f1 ) == f1 );
|
||||
TESTCASE( fmaxf( f1, -NAN ) == f1 );
|
||||
TESTCASE( fmaxf( -NAN, f1 ) == f1 );
|
||||
TESTCASE( fmaxf( NAN, NAN ) != fmaxf( NAN, NAN ) );
|
||||
f1 = 0.0f;
|
||||
f2 = -0.0f;
|
||||
TESTCASE( fmaxf( f1, f2 ) == f1 );
|
||||
TESTCASE( fmaxf( f2, f1 ) == f1 );
|
||||
|
||||
d1 = 3.15f;
|
||||
d2 = 3.16f;
|
||||
TESTCASE( fmax( d1, d2 ) == d2 );
|
||||
TESTCASE( fmax( d2, d1 ) == d2 );
|
||||
TESTCASE( fmax( d1, d1 ) == d1 );
|
||||
TESTCASE( fmax( d1, INFINITY ) == INFINITY );
|
||||
TESTCASE( fmax( INFINITY, d1 ) == INFINITY );
|
||||
TESTCASE( fmax( d1, -INFINITY ) == d1 );
|
||||
TESTCASE( fmax( -INFINITY, d1 ) == d1 );
|
||||
TESTCASE( fmax( d1, NAN ) == d1 );
|
||||
TESTCASE( fmax( NAN, d1 ) == d1 );
|
||||
TESTCASE( fmax( d1, -NAN ) == d1 );
|
||||
TESTCASE( fmax( -NAN, d1 ) == d1 );
|
||||
TESTCASE( fmax( NAN, NAN ) != fmax( NAN, NAN ) );
|
||||
d1 = 0.0;
|
||||
d2 = -0.0;
|
||||
TESTCASE( fmax( d1, d2 ) == d1 );
|
||||
TESTCASE( fmax( d2, d1 ) == d1 );
|
||||
|
||||
ld1 = 3.15f;
|
||||
ld2 = 3.16f;
|
||||
TESTCASE( fmaxl( ld1, ld2 ) == ld2 );
|
||||
TESTCASE( fmaxl( ld2, ld1 ) == ld2 );
|
||||
TESTCASE( fmaxl( ld1, ld1 ) == ld1 );
|
||||
TESTCASE( fmaxl( ld1, INFINITY ) == INFINITY );
|
||||
TESTCASE( fmaxl( INFINITY, ld1 ) == INFINITY );
|
||||
TESTCASE( fmaxl( ld1, -INFINITY ) == ld1 );
|
||||
TESTCASE( fmaxl( -INFINITY, ld1 ) == ld1 );
|
||||
TESTCASE( fmaxl( ld1, NAN ) == ld1 );
|
||||
TESTCASE( fmaxl( NAN, ld1 ) == ld1 );
|
||||
TESTCASE( fmaxl( ld1, -NAN ) == ld1 );
|
||||
TESTCASE( fmaxl( -NAN, ld1 ) == ld1 );
|
||||
TESTCASE( fmaxl( NAN, NAN ) != fmaxl( NAN, NAN ) );
|
||||
ld1 = 0.0;
|
||||
ld2 = -0.0;
|
||||
TESTCASE( fmaxl( ld1, ld2 ) == ld1 );
|
||||
TESTCASE( fmaxl( ld2, ld1 ) == ld1 );
|
||||
|
||||
return TEST_RESULTS;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user