forked from Imagelibrary/rtems
New (Split out from math/).
This commit is contained in:
2
testsuites/libtests/mathf/.cvsignore
Normal file
2
testsuites/libtests/mathf/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
30
testsuites/libtests/mathf/Makefile.am
Normal file
30
testsuites/libtests/mathf/Makefile.am
Normal file
@@ -0,0 +1,30 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
rtems_tests_PROGRAMS = mathf
|
||||
mathf_SOURCES = init.c domathf.c
|
||||
EXTRA_DIST = $(srcdir)/../math/domath.in
|
||||
|
||||
$(srcdir)/domathf.c: $(srcdir)/../math/domath.in
|
||||
sed -e 's,[@]FTYPE[@],float,' \
|
||||
-e 's,[@]FSUFFIX[@],f,g' \
|
||||
-e 's,[@]FGUARD[@],NO_FLOAT,' \
|
||||
$(srcdir)/../math/domath.in > $(srcdir)/domathf.c
|
||||
|
||||
dist_rtems_tests_DATA = mathf.scn
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
|
||||
mathf_LDADD = -lm
|
||||
|
||||
LINK_OBJS = $(mathf_OBJECTS) $(mathf_LDADD)
|
||||
LINK_LIBS = $(mathf_LDLIBS)
|
||||
|
||||
mathf$(EXEEXT): $(mathf_OBJECTS) $(mathf_DEPENDENCIES)
|
||||
@rm -f mathf$(EXEEXT)
|
||||
$(make-exe)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
281
testsuites/libtests/mathf/domathf.c
Normal file
281
testsuites/libtests/mathf/domathf.c
Normal file
@@ -0,0 +1,281 @@
|
||||
/*
|
||||
* Copyright (c) 2010 by
|
||||
* Ralf Corsepius, Ulm/Germany. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Try to compile and link against POSIX math routines.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef M_PI_2
|
||||
#define M_PI_2 1.57079632679489661923
|
||||
#endif
|
||||
|
||||
#ifndef M_PI_4
|
||||
#define M_PI_4 0.78539816339744830962
|
||||
#endif
|
||||
|
||||
void
|
||||
domathf (void)
|
||||
{
|
||||
#ifndef NO_FLOAT
|
||||
float f1;
|
||||
float f2;
|
||||
|
||||
int i1;
|
||||
|
||||
f1 = acosf(0.0);
|
||||
fprintf( stdout, "acosf : %f\n", f1);
|
||||
|
||||
f1 = acoshf(0.0);
|
||||
fprintf( stdout, "acoshf : %f\n", f1);
|
||||
|
||||
f1 = asinf(1.0);
|
||||
fprintf( stdout, "asinf : %f\n", f1);
|
||||
|
||||
f1 = asinhf(1.0);
|
||||
fprintf( stdout, "asinhf : %f\n", f1);
|
||||
|
||||
f1 = atanf(M_PI_4);
|
||||
fprintf( stdout, "atanf : %f\n", f1);
|
||||
|
||||
f1 = atan2f(2.3, 2.3);
|
||||
fprintf( stdout, "atan2f : %f\n", f1);
|
||||
|
||||
f1 = atanhf(1.0);
|
||||
fprintf( stdout, "atanhf : %f\n", f1);
|
||||
|
||||
f1 = cbrtf(27.0);
|
||||
fprintf( stdout, "cbrtf : %f\n", f1);
|
||||
|
||||
f1 = ceilf(3.5);
|
||||
fprintf( stdout, "ceilf : %f\n", f1);
|
||||
|
||||
f1 = copysignf(3.5, -2.5);
|
||||
fprintf( stdout, "copysignf : %f\n", f1);
|
||||
|
||||
f1 = cosf(M_PI_2);
|
||||
fprintf( stdout, "cosf : %f\n", f1);
|
||||
|
||||
f1 = coshf(M_PI_2);
|
||||
fprintf( stdout, "coshf : %f\n", f1);
|
||||
|
||||
f1 = erff(42.0);
|
||||
fprintf( stdout, "erff : %f\n", f1);
|
||||
|
||||
f1 = erfcf(42.0);
|
||||
fprintf( stdout, "erfcf : %f\n", f1);
|
||||
|
||||
f1 = expf(0.42);
|
||||
fprintf( stdout, "expf : %f\n", f1);
|
||||
|
||||
f1 = exp2f(0.42);
|
||||
fprintf( stdout, "exp2f : %f\n", f1);
|
||||
|
||||
f1 = expm1f(0.00042);
|
||||
fprintf( stdout, "expm1f : %f\n", f1);
|
||||
|
||||
f1 = fabsf(-1.123);
|
||||
fprintf( stdout, "fabsf : %f\n", f1);
|
||||
|
||||
f1 = fdimf(1.123, 2.123);
|
||||
fprintf( stdout, "fdimf : %f\n", f1);
|
||||
|
||||
f1 = floorf(0.5);
|
||||
fprintf( stdout, "floorf : %f\n", f1);
|
||||
f1 = floorf(-0.5);
|
||||
fprintf( stdout, "floorf : %f\n", f1);
|
||||
|
||||
f1 = fmaf(2.1, 2.2, 3.01);
|
||||
fprintf( stdout, "fmaf : %f\n", f1);
|
||||
|
||||
f1 = fmaxf(-0.42, 0.42);
|
||||
fprintf( stdout, "fmaxf : %f\n", f1);
|
||||
|
||||
f1 = fminf(-0.42, 0.42);
|
||||
fprintf( stdout, "fminf : %f\n", f1);
|
||||
|
||||
f1 = fmodf(42.0, 3.0);
|
||||
fprintf( stdout, "fmodf : %f\n", f1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = fpclassify(1.0);
|
||||
fprintf( stdout, "fpclassify : %d\n", i1);
|
||||
|
||||
f1 = frexpf(42.0, &i1);
|
||||
fprintf( stdout, "frexpf : %f\n", f1);
|
||||
|
||||
f1 = hypotf(42.0, 42.0);
|
||||
fprintf( stdout, "hypotf : %f\n", f1);
|
||||
|
||||
i1 = ilogbf(42.0);
|
||||
fprintf( stdout, "ilogbf : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isfinite(3.0);
|
||||
fprintf( stdout, "isfinite : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isgreater(3.0, 3.1);
|
||||
fprintf( stdout, "isgreater : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isgreaterequal(3.0, 3.1);
|
||||
fprintf( stdout, "isgreaterequal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isinf(3.0);
|
||||
fprintf( stdout, "isinf : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isless(3.0, 3.1);
|
||||
fprintf( stdout, "isless : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = islessequal(3.0, 3.1);
|
||||
fprintf( stdout, "islessequal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = islessgreater(3.0, 3.1);
|
||||
fprintf( stdout, "islessgreater : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isnan(0.0);
|
||||
fprintf( stdout, "isnan : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isnormal(3.0);
|
||||
fprintf( stdout, "isnormal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
f1 = isunordered(1.0, 2.0);
|
||||
fprintf( stdout, "isunordered : %d\n", i1);
|
||||
|
||||
f1 = j0f(1.2);
|
||||
fprintf( stdout, "j0f : %f\n", f1);
|
||||
|
||||
f1 = j1f(1.2);
|
||||
fprintf( stdout, "j1f : %f\n", f1);
|
||||
|
||||
f1 = jnf(2,1.2);
|
||||
fprintf( stdout, "jnf : %f\n", f1);
|
||||
|
||||
f1 = ldexpf(1.2,3);
|
||||
fprintf( stdout, "ldexpf : %f\n", f1);
|
||||
|
||||
f1 = lgammaf(42.0);
|
||||
fprintf( stdout, "lgammaf : %f\n", f1);
|
||||
|
||||
f1 = llrintf(-0.5);
|
||||
fprintf( stdout, "llrintf : %f\n", f1);
|
||||
f1 = llrintf(0.5);
|
||||
fprintf( stdout, "llrintf : %f\n", f1);
|
||||
|
||||
f1 = llroundf(-0.5);
|
||||
fprintf( stdout, "lroundf : %f\n", f1);
|
||||
f1 = llroundf(0.5);
|
||||
fprintf( stdout, "lroundf : %f\n", f1);
|
||||
|
||||
f1 = logf(42.0);
|
||||
fprintf( stdout, "logf : %f\n", f1);
|
||||
|
||||
f1 = log10f(42.0);
|
||||
fprintf( stdout, "log10f : %f\n", f1);
|
||||
|
||||
f1 = log1pf(42.0);
|
||||
fprintf( stdout, "log1pf : %f\n", f1);
|
||||
|
||||
f1 = log2f(42.0);
|
||||
fprintf( stdout, "log2f : %f\n", f1);
|
||||
|
||||
f1 = logbf(42.0);
|
||||
fprintf( stdout, "logbf : %f\n", f1);
|
||||
|
||||
f1 = lrintf(-0.5);
|
||||
fprintf( stdout, "lrintf : %f\n", f1);
|
||||
f1 = lrintf(0.5);
|
||||
fprintf( stdout, "lrintf : %f\n", f1);
|
||||
|
||||
f1 = lroundf(-0.5);
|
||||
fprintf( stdout, "lroundf : %f\n", f1);
|
||||
f1 = lroundf(0.5);
|
||||
fprintf( stdout, "lroundf : %f\n", f1);
|
||||
|
||||
f1 = modff(42.0,&f2);
|
||||
fprintf( stdout, "lmodff : %f\n", f1);
|
||||
|
||||
f1 = nanf("");
|
||||
fprintf( stdout, "nanf : %f\n", f1);
|
||||
|
||||
f1 = nearbyintf(1.5);
|
||||
fprintf( stdout, "nearbyintf : %f\n", f1);
|
||||
|
||||
f1 = nextafterf(1.5,2.0);
|
||||
fprintf( stdout, "nextafterf : %f\n", f1);
|
||||
|
||||
f1 = powf(3.01, 2.0);
|
||||
fprintf( stdout, "powf : %f\n", f1);
|
||||
|
||||
f1 = remainderf(3.01,2.0);
|
||||
fprintf( stdout, "remainderf : %f\n", f1);
|
||||
|
||||
f1 = remquof(29.0,3.0,&i1);
|
||||
fprintf( stdout, "remquof : %f\n", f1);
|
||||
|
||||
f1 = rintf(0.5);
|
||||
fprintf( stdout, "rintf : %f\n", f1);
|
||||
f1 = rintf(-0.5);
|
||||
fprintf( stdout, "rintf : %f\n", f1);
|
||||
|
||||
f1 = roundf(0.5);
|
||||
fprintf( stdout, "roundf : %f\n", f1);
|
||||
f1 = roundf(-0.5);
|
||||
fprintf( stdout, "roundf : %f\n", f1);
|
||||
|
||||
f1 = scalblnf(1.2,3);
|
||||
fprintf( stdout, "scalblnf : %f\n", f1);
|
||||
|
||||
f1 = scalbnf(1.2,3);
|
||||
fprintf( stdout, "scalbnf : %f\n", f1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = signbit(1.0);
|
||||
fprintf( stdout, "signbit : %i\n", i1);
|
||||
|
||||
f1 = sinf(M_PI_4);
|
||||
fprintf( stdout, "sinf : %f\n", f1);
|
||||
|
||||
f1 = sinhf(M_PI_4);
|
||||
fprintf( stdout, "sinhf : %f\n", f1);
|
||||
|
||||
f1 = sqrtf(9.0);
|
||||
fprintf( stdout, "sqrtf : %f\n", f1);
|
||||
|
||||
f1 = tanf(M_PI_4);
|
||||
fprintf( stdout, "tanf : %f\n", f1);
|
||||
|
||||
f1 = tanhf(M_PI_4);
|
||||
fprintf( stdout, "tanhf : %f\n", f1);
|
||||
|
||||
f1 = tgammaf(2.1);
|
||||
fprintf( stdout, "tgammaf : %f\n", f1);
|
||||
|
||||
f1 = truncf(3.5);
|
||||
fprintf( stdout, "truncf : %f\n", f1);
|
||||
|
||||
f1 = y0f(1.2);
|
||||
fprintf( stdout, "y0f : %f\n", f1);
|
||||
|
||||
f1 = y1f(1.2);
|
||||
fprintf( stdout, "y1f : %f\n", f1);
|
||||
|
||||
f1 = ynf(3,1.2);
|
||||
fprintf( stdout, "ynf : %f\n", f1);
|
||||
#endif
|
||||
}
|
||||
62
testsuites/libtests/mathf/init.c
Normal file
62
testsuites/libtests/mathf/init.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if __rtems__
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
extern void domathf(void);
|
||||
|
||||
#if __rtems__
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
#else
|
||||
int main( void )
|
||||
#endif
|
||||
{
|
||||
fprintf( stdout, "*** FLOAT MATH TEST ***\n" );
|
||||
|
||||
domathf();
|
||||
|
||||
fprintf( stdout, "*** END OF FLOAT MATH TEST ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
#if __rtems__
|
||||
/* NOTICE: the clock driver is explicitly disabled */
|
||||
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT
|
||||
|
||||
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
#endif
|
||||
164
testsuites/libtests/mathf/mathf.scn
Normal file
164
testsuites/libtests/mathf/mathf.scn
Normal file
@@ -0,0 +1,164 @@
|
||||
*** FLOAT MATH TEST ***
|
||||
acos : 1.570796
|
||||
acosh : -nan
|
||||
asin : 1.570796
|
||||
asinh : 0.881374
|
||||
atan : 0.665774
|
||||
atan2 : 0.785398
|
||||
atanh : inf
|
||||
cbrt : 3.000000
|
||||
ceil : 4.000000
|
||||
copysign : -3.500000
|
||||
cos : 0.000000
|
||||
cosh : 2.509178
|
||||
erf : 1.000000
|
||||
erfc : 0.000000
|
||||
exp : 1.521962
|
||||
exp2 : 1.337928
|
||||
expm1 : 0.000420
|
||||
fabs : 1.123000
|
||||
fdim : 0.000000
|
||||
floor : 0.000000
|
||||
floor : -1.000000
|
||||
fma : 7.630000
|
||||
fmax : 0.420000
|
||||
fmin : -0.420000
|
||||
fmod : 0.000000
|
||||
fpclassify : 4
|
||||
frexp : 0.656250
|
||||
hypot : 59.396970
|
||||
ilogb : 5
|
||||
isfinite : 1
|
||||
isgreater : 0
|
||||
isgreaterequal : 0
|
||||
isinf : 0
|
||||
isless : 1
|
||||
islessequal : 1
|
||||
islessgreater : 1
|
||||
isnan : 0
|
||||
isnormal : 1
|
||||
isunordered : 1
|
||||
j0 : 0.671133
|
||||
j1 : 0.498289
|
||||
jn : 0.159349
|
||||
ldexp : 9.600000
|
||||
lgamma : 114.034212
|
||||
llrint : 0.000000
|
||||
llrint : 0.000000
|
||||
lround : -1.000000
|
||||
lround : 1.000000
|
||||
log : 3.737670
|
||||
log10 : 1.623249
|
||||
log1p : 3.761200
|
||||
log2 : 5.392317
|
||||
logb : 5.000000
|
||||
lrint : 0.000000
|
||||
lrint : 0.000000
|
||||
lround : -1.000000
|
||||
lround : 1.000000
|
||||
lmodf : 0.000000
|
||||
nan : nan
|
||||
nearbyint : 2.000000
|
||||
nextafter : 1.500000
|
||||
pow : 9.060100
|
||||
remainder : -0.990000
|
||||
remquo : -1.000000
|
||||
rint : 0.000000
|
||||
rint : -0.000000
|
||||
round : 1.000000
|
||||
round : -1.000000
|
||||
scalbln : 9.600000
|
||||
scalbn : 9.600000
|
||||
signbit : 0
|
||||
sin : 0.707107
|
||||
sinh : 0.868671
|
||||
sqrt : 3.000000
|
||||
tan : 1.000000
|
||||
tanh : 0.655794
|
||||
tgamma : 1.046486
|
||||
trunc : 3.000000
|
||||
y0 : 0.228084
|
||||
y1 : -0.621136
|
||||
yn : -3.589900
|
||||
acosf : 1.570796
|
||||
acoshf : -nan
|
||||
asinf : 1.570796
|
||||
asinhf : 0.881374
|
||||
atanf : 0.665774
|
||||
atan2f : 0.785398
|
||||
atanhf : inf
|
||||
cbrtf : 3.000000
|
||||
ceilf : 4.000000
|
||||
copysignf : -3.500000
|
||||
cosf : -0.000000
|
||||
coshf : 2.509179
|
||||
erff : 1.000000
|
||||
erfcf : 0.000000
|
||||
expf : 1.521962
|
||||
exp2f : 1.337928
|
||||
expm1f : 0.000420
|
||||
fabsf : 1.123000
|
||||
fdimf : 0.000000
|
||||
floorf : 0.000000
|
||||
floorf : -1.000000
|
||||
fmaf : 7.630000
|
||||
fmaxf : 0.420000
|
||||
fminf : -0.420000
|
||||
fmodf : 0.000000
|
||||
fpclassify : 4
|
||||
frexpf : 0.656250
|
||||
hypotf : 59.396969
|
||||
ilogbf : 5
|
||||
isfinite : 1
|
||||
isgreater : 0
|
||||
isgreaterequal : 0
|
||||
isinf : 0
|
||||
isless : 1
|
||||
islessequal : 1
|
||||
islessgreater : 1
|
||||
isnan : 0
|
||||
isnormal : 1
|
||||
isunordered : 1
|
||||
j0f : 0.671133
|
||||
j1f : 0.498289
|
||||
jnf : 0.159349
|
||||
ldexpf : 9.600000
|
||||
lgammaf : 114.034218
|
||||
llrintf : 0.000000
|
||||
llrintf : 0.000000
|
||||
lroundf : -1.000000
|
||||
lroundf : 1.000000
|
||||
logf : 3.737670
|
||||
log10f : 1.623249
|
||||
log1pf : 3.761200
|
||||
log2f : 5.392317
|
||||
logbf : 5.000000
|
||||
lrintf : 0.000000
|
||||
lrintf : 0.000000
|
||||
lroundf : -1.000000
|
||||
lroundf : 1.000000
|
||||
lmodff : 0.000000
|
||||
nanf : nan
|
||||
nearbyintf : 2.000000
|
||||
nextafterf : 1.500000
|
||||
powf : 9.060100
|
||||
remainderf : -0.990000
|
||||
remquof : -1.000000
|
||||
rintf : 0.000000
|
||||
rintf : -0.000000
|
||||
roundf : 1.000000
|
||||
roundf : -1.000000
|
||||
scalblnf : 9.600000
|
||||
scalbnf : 9.600000
|
||||
signbit : 0
|
||||
sinf : 0.707107
|
||||
sinhf : 0.868671
|
||||
sqrtf : 3.000000
|
||||
tanf : 1.000000
|
||||
tanhf : 0.655794
|
||||
tgammaf : 1.046486
|
||||
truncf : 3.000000
|
||||
y0f : 0.228084
|
||||
y1f : -0.621136
|
||||
ynf : -3.589899
|
||||
*** END OF FLOAT MATH TEST ***
|
||||
2
testsuites/libtests/mathl/.cvsignore
Normal file
2
testsuites/libtests/mathl/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
35
testsuites/libtests/mathl/Makefile.am
Normal file
35
testsuites/libtests/mathl/Makefile.am
Normal file
@@ -0,0 +1,35 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
rtems_tests_PROGRAMS = mathl
|
||||
mathl_SOURCES = init.c domathl.c
|
||||
EXTRA_DIST = $(srcdir)/../math/domath.in
|
||||
|
||||
# FIXME: Skip long double, not yet supported in newlib
|
||||
# => This test currently is a nop
|
||||
mathl_CPPFLAGS = $(AM_CPPFLAGS) -DNO_LONG_DOUBLE
|
||||
|
||||
$(srcdir)/domathl.c: $(srcdir)/../math/domath.in
|
||||
sed -e 's,[@]FTYPE[@],long double,' \
|
||||
-e 's,[@]FSUFFIX[@],l,g' \
|
||||
-e 's,%f,%Lf,g' \
|
||||
-e 's,[@]FGUARD[@],NO_LONG_DOUBLE,' \
|
||||
$(srcdir)/../math/domath.in > $(srcdir)/domathl.c
|
||||
|
||||
dist_rtems_tests_DATA = mathl.scn
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
|
||||
mathl_LDADD = -lm
|
||||
|
||||
LINK_OBJS = $(mathl_OBJECTS) $(mathl_LDADD)
|
||||
LINK_LIBS = $(mathl_LDLIBS)
|
||||
|
||||
mathl$(EXEEXT): $(mathl_OBJECTS) $(mathl_DEPENDENCIES)
|
||||
@rm -f mathl$(EXEEXT)
|
||||
$(make-exe)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
281
testsuites/libtests/mathl/domathl.c
Normal file
281
testsuites/libtests/mathl/domathl.c
Normal file
@@ -0,0 +1,281 @@
|
||||
/*
|
||||
* Copyright (c) 2010 by
|
||||
* Ralf Corsepius, Ulm/Germany. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software
|
||||
* is freely granted, provided that this notice is preserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Try to compile and link against POSIX math routines.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef M_PI_2
|
||||
#define M_PI_2 1.57079632679489661923
|
||||
#endif
|
||||
|
||||
#ifndef M_PI_4
|
||||
#define M_PI_4 0.78539816339744830962
|
||||
#endif
|
||||
|
||||
void
|
||||
domathl (void)
|
||||
{
|
||||
#ifndef NO_LONG_DOUBLE
|
||||
long double f1;
|
||||
long double f2;
|
||||
|
||||
int i1;
|
||||
|
||||
f1 = acosl(0.0);
|
||||
fprintf( stdout, "acosl : %Lf\n", f1);
|
||||
|
||||
f1 = acoshl(0.0);
|
||||
fprintf( stdout, "acoshl : %Lf\n", f1);
|
||||
|
||||
f1 = asinl(1.0);
|
||||
fprintf( stdout, "asinl : %Lf\n", f1);
|
||||
|
||||
f1 = asinhl(1.0);
|
||||
fprintf( stdout, "asinhl : %Lf\n", f1);
|
||||
|
||||
f1 = atanl(M_PI_4);
|
||||
fprintf( stdout, "atanl : %Lf\n", f1);
|
||||
|
||||
f1 = atan2l(2.3, 2.3);
|
||||
fprintf( stdout, "atan2l : %Lf\n", f1);
|
||||
|
||||
f1 = atanhl(1.0);
|
||||
fprintf( stdout, "atanhl : %Lf\n", f1);
|
||||
|
||||
f1 = cbrtl(27.0);
|
||||
fprintf( stdout, "cbrtl : %Lf\n", f1);
|
||||
|
||||
f1 = ceill(3.5);
|
||||
fprintf( stdout, "ceill : %Lf\n", f1);
|
||||
|
||||
f1 = copysignl(3.5, -2.5);
|
||||
fprintf( stdout, "copysignl : %Lf\n", f1);
|
||||
|
||||
f1 = cosl(M_PI_2);
|
||||
fprintf( stdout, "cosl : %Lf\n", f1);
|
||||
|
||||
f1 = coshl(M_PI_2);
|
||||
fprintf( stdout, "coshl : %Lf\n", f1);
|
||||
|
||||
f1 = erfl(42.0);
|
||||
fprintf( stdout, "erfl : %Lf\n", f1);
|
||||
|
||||
f1 = erfcl(42.0);
|
||||
fprintf( stdout, "erfcl : %Lf\n", f1);
|
||||
|
||||
f1 = expl(0.42);
|
||||
fprintf( stdout, "expl : %Lf\n", f1);
|
||||
|
||||
f1 = exp2l(0.42);
|
||||
fprintf( stdout, "exp2l : %Lf\n", f1);
|
||||
|
||||
f1 = expm1l(0.00042);
|
||||
fprintf( stdout, "expm1l : %Lf\n", f1);
|
||||
|
||||
f1 = fabsl(-1.123);
|
||||
fprintf( stdout, "fabsl : %Lf\n", f1);
|
||||
|
||||
f1 = fdiml(1.123, 2.123);
|
||||
fprintf( stdout, "fdiml : %Lf\n", f1);
|
||||
|
||||
f1 = floorl(0.5);
|
||||
fprintf( stdout, "floorl : %Lf\n", f1);
|
||||
f1 = floorl(-0.5);
|
||||
fprintf( stdout, "floorl : %Lf\n", f1);
|
||||
|
||||
f1 = fmal(2.1, 2.2, 3.01);
|
||||
fprintf( stdout, "fmal : %Lf\n", f1);
|
||||
|
||||
f1 = fmaxl(-0.42, 0.42);
|
||||
fprintf( stdout, "fmaxl : %Lf\n", f1);
|
||||
|
||||
f1 = fminl(-0.42, 0.42);
|
||||
fprintf( stdout, "fminl : %Lf\n", f1);
|
||||
|
||||
f1 = fmodl(42.0, 3.0);
|
||||
fprintf( stdout, "fmodl : %Lf\n", f1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = fpclassify(1.0);
|
||||
fprintf( stdout, "fpclassify : %d\n", i1);
|
||||
|
||||
f1 = frexpl(42.0, &i1);
|
||||
fprintf( stdout, "frexpl : %Lf\n", f1);
|
||||
|
||||
f1 = hypotl(42.0, 42.0);
|
||||
fprintf( stdout, "hypotl : %Lf\n", f1);
|
||||
|
||||
i1 = ilogbl(42.0);
|
||||
fprintf( stdout, "ilogbl : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isfinite(3.0);
|
||||
fprintf( stdout, "isfinite : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isgreater(3.0, 3.1);
|
||||
fprintf( stdout, "isgreater : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isgreaterequal(3.0, 3.1);
|
||||
fprintf( stdout, "isgreaterequal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isinf(3.0);
|
||||
fprintf( stdout, "isinf : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isless(3.0, 3.1);
|
||||
fprintf( stdout, "isless : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = islessequal(3.0, 3.1);
|
||||
fprintf( stdout, "islessequal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = islessgreater(3.0, 3.1);
|
||||
fprintf( stdout, "islessgreater : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isnan(0.0);
|
||||
fprintf( stdout, "isnan : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = isnormal(3.0);
|
||||
fprintf( stdout, "isnormal : %d\n", i1);
|
||||
|
||||
/* no type-specific variant */
|
||||
f1 = isunordered(1.0, 2.0);
|
||||
fprintf( stdout, "isunordered : %d\n", i1);
|
||||
|
||||
f1 = j0l(1.2);
|
||||
fprintf( stdout, "j0l : %Lf\n", f1);
|
||||
|
||||
f1 = j1l(1.2);
|
||||
fprintf( stdout, "j1l : %Lf\n", f1);
|
||||
|
||||
f1 = jnl(2,1.2);
|
||||
fprintf( stdout, "jnl : %Lf\n", f1);
|
||||
|
||||
f1 = ldexpl(1.2,3);
|
||||
fprintf( stdout, "ldexpl : %Lf\n", f1);
|
||||
|
||||
f1 = lgammal(42.0);
|
||||
fprintf( stdout, "lgammal : %Lf\n", f1);
|
||||
|
||||
f1 = llrintl(-0.5);
|
||||
fprintf( stdout, "llrintl : %Lf\n", f1);
|
||||
f1 = llrintl(0.5);
|
||||
fprintf( stdout, "llrintl : %Lf\n", f1);
|
||||
|
||||
f1 = llroundl(-0.5);
|
||||
fprintf( stdout, "lroundl : %Lf\n", f1);
|
||||
f1 = llroundl(0.5);
|
||||
fprintf( stdout, "lroundl : %Lf\n", f1);
|
||||
|
||||
f1 = logl(42.0);
|
||||
fprintf( stdout, "logl : %Lf\n", f1);
|
||||
|
||||
f1 = log10l(42.0);
|
||||
fprintf( stdout, "log10l : %Lf\n", f1);
|
||||
|
||||
f1 = log1pl(42.0);
|
||||
fprintf( stdout, "log1pl : %Lf\n", f1);
|
||||
|
||||
f1 = log2l(42.0);
|
||||
fprintf( stdout, "log2l : %Lf\n", f1);
|
||||
|
||||
f1 = logbl(42.0);
|
||||
fprintf( stdout, "logbl : %Lf\n", f1);
|
||||
|
||||
f1 = lrintl(-0.5);
|
||||
fprintf( stdout, "lrintl : %Lf\n", f1);
|
||||
f1 = lrintl(0.5);
|
||||
fprintf( stdout, "lrintl : %Lf\n", f1);
|
||||
|
||||
f1 = lroundl(-0.5);
|
||||
fprintf( stdout, "lroundl : %Lf\n", f1);
|
||||
f1 = lroundl(0.5);
|
||||
fprintf( stdout, "lroundl : %Lf\n", f1);
|
||||
|
||||
f1 = modfl(42.0,&f2);
|
||||
fprintf( stdout, "lmodfl : %Lf\n", f1);
|
||||
|
||||
f1 = nanl("");
|
||||
fprintf( stdout, "nanl : %Lf\n", f1);
|
||||
|
||||
f1 = nearbyintl(1.5);
|
||||
fprintf( stdout, "nearbyintl : %Lf\n", f1);
|
||||
|
||||
f1 = nextafterl(1.5,2.0);
|
||||
fprintf( stdout, "nextafterl : %Lf\n", f1);
|
||||
|
||||
f1 = powl(3.01, 2.0);
|
||||
fprintf( stdout, "powl : %Lf\n", f1);
|
||||
|
||||
f1 = remainderl(3.01,2.0);
|
||||
fprintf( stdout, "remainderl : %Lf\n", f1);
|
||||
|
||||
f1 = remquol(29.0,3.0,&i1);
|
||||
fprintf( stdout, "remquol : %Lf\n", f1);
|
||||
|
||||
f1 = rintl(0.5);
|
||||
fprintf( stdout, "rintl : %Lf\n", f1);
|
||||
f1 = rintl(-0.5);
|
||||
fprintf( stdout, "rintl : %Lf\n", f1);
|
||||
|
||||
f1 = roundl(0.5);
|
||||
fprintf( stdout, "roundl : %Lf\n", f1);
|
||||
f1 = roundl(-0.5);
|
||||
fprintf( stdout, "roundl : %Lf\n", f1);
|
||||
|
||||
f1 = scalblnl(1.2,3);
|
||||
fprintf( stdout, "scalblnl : %Lf\n", f1);
|
||||
|
||||
f1 = scalbnl(1.2,3);
|
||||
fprintf( stdout, "scalbnl : %Lf\n", f1);
|
||||
|
||||
/* no type-specific variant */
|
||||
i1 = signbit(1.0);
|
||||
fprintf( stdout, "signbit : %i\n", i1);
|
||||
|
||||
f1 = sinl(M_PI_4);
|
||||
fprintf( stdout, "sinl : %Lf\n", f1);
|
||||
|
||||
f1 = sinhl(M_PI_4);
|
||||
fprintf( stdout, "sinhl : %Lf\n", f1);
|
||||
|
||||
f1 = sqrtl(9.0);
|
||||
fprintf( stdout, "sqrtl : %Lf\n", f1);
|
||||
|
||||
f1 = tanl(M_PI_4);
|
||||
fprintf( stdout, "tanl : %Lf\n", f1);
|
||||
|
||||
f1 = tanhl(M_PI_4);
|
||||
fprintf( stdout, "tanhl : %Lf\n", f1);
|
||||
|
||||
f1 = tgammal(2.1);
|
||||
fprintf( stdout, "tgammal : %Lf\n", f1);
|
||||
|
||||
f1 = truncl(3.5);
|
||||
fprintf( stdout, "truncl : %Lf\n", f1);
|
||||
|
||||
f1 = y0l(1.2);
|
||||
fprintf( stdout, "y0l : %Lf\n", f1);
|
||||
|
||||
f1 = y1l(1.2);
|
||||
fprintf( stdout, "y1l : %Lf\n", f1);
|
||||
|
||||
f1 = ynl(3,1.2);
|
||||
fprintf( stdout, "ynl : %Lf\n", f1);
|
||||
#endif
|
||||
}
|
||||
62
testsuites/libtests/mathl/init.c
Normal file
62
testsuites/libtests/mathl/init.c
Normal file
@@ -0,0 +1,62 @@
|
||||
/* Init
|
||||
*
|
||||
* This routine is the initialization task for this test program.
|
||||
* It is called from init_exec and has the responsibility for creating
|
||||
* and starting the tasks that make up the test. If the time of day
|
||||
* clock is required for the test, it should also be set to a known
|
||||
* value by this function.
|
||||
*
|
||||
* Input parameters: NONE
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989-1999.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if __rtems__
|
||||
#include <bsp.h> /* for device driver prototypes */
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
extern void domathl(void);
|
||||
|
||||
#if __rtems__
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
#else
|
||||
int main( void )
|
||||
#endif
|
||||
{
|
||||
fprintf( stdout, "*** LONG DOUBLE MATH TEST ***\n" );
|
||||
|
||||
domathl();
|
||||
|
||||
fprintf( stdout, "*** END OF LONG DOUBLE MATH TEST ***\n" );
|
||||
exit( 0 );
|
||||
}
|
||||
|
||||
#if __rtems__
|
||||
/* NOTICE: the clock driver is explicitly disabled */
|
||||
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 1
|
||||
#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT
|
||||
|
||||
#define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
#endif
|
||||
164
testsuites/libtests/mathl/mathl.scn
Normal file
164
testsuites/libtests/mathl/mathl.scn
Normal file
@@ -0,0 +1,164 @@
|
||||
*** FLOAT MATH TEST ***
|
||||
acos : 1.570796
|
||||
acosh : -nan
|
||||
asin : 1.570796
|
||||
asinh : 0.881374
|
||||
atan : 0.665774
|
||||
atan2 : 0.785398
|
||||
atanh : inf
|
||||
cbrt : 3.000000
|
||||
ceil : 4.000000
|
||||
copysign : -3.500000
|
||||
cos : 0.000000
|
||||
cosh : 2.509178
|
||||
erf : 1.000000
|
||||
erfc : 0.000000
|
||||
exp : 1.521962
|
||||
exp2 : 1.337928
|
||||
expm1 : 0.000420
|
||||
fabs : 1.123000
|
||||
fdim : 0.000000
|
||||
floor : 0.000000
|
||||
floor : -1.000000
|
||||
fma : 7.630000
|
||||
fmax : 0.420000
|
||||
fmin : -0.420000
|
||||
fmod : 0.000000
|
||||
fpclassify : 4
|
||||
frexp : 0.656250
|
||||
hypot : 59.396970
|
||||
ilogb : 5
|
||||
isfinite : 1
|
||||
isgreater : 0
|
||||
isgreaterequal : 0
|
||||
isinf : 0
|
||||
isless : 1
|
||||
islessequal : 1
|
||||
islessgreater : 1
|
||||
isnan : 0
|
||||
isnormal : 1
|
||||
isunordered : 1
|
||||
j0 : 0.671133
|
||||
j1 : 0.498289
|
||||
jn : 0.159349
|
||||
ldexp : 9.600000
|
||||
lgamma : 114.034212
|
||||
llrint : 0.000000
|
||||
llrint : 0.000000
|
||||
lround : -1.000000
|
||||
lround : 1.000000
|
||||
log : 3.737670
|
||||
log10 : 1.623249
|
||||
log1p : 3.761200
|
||||
log2 : 5.392317
|
||||
logb : 5.000000
|
||||
lrint : 0.000000
|
||||
lrint : 0.000000
|
||||
lround : -1.000000
|
||||
lround : 1.000000
|
||||
lmodf : 0.000000
|
||||
nan : nan
|
||||
nearbyint : 2.000000
|
||||
nextafter : 1.500000
|
||||
pow : 9.060100
|
||||
remainder : -0.990000
|
||||
remquo : -1.000000
|
||||
rint : 0.000000
|
||||
rint : -0.000000
|
||||
round : 1.000000
|
||||
round : -1.000000
|
||||
scalbln : 9.600000
|
||||
scalbn : 9.600000
|
||||
signbit : 0
|
||||
sin : 0.707107
|
||||
sinh : 0.868671
|
||||
sqrt : 3.000000
|
||||
tan : 1.000000
|
||||
tanh : 0.655794
|
||||
tgamma : 1.046486
|
||||
trunc : 3.000000
|
||||
y0 : 0.228084
|
||||
y1 : -0.621136
|
||||
yn : -3.589900
|
||||
acosf : 1.570796
|
||||
acoshf : -nan
|
||||
asinf : 1.570796
|
||||
asinhf : 0.881374
|
||||
atanf : 0.665774
|
||||
atan2f : 0.785398
|
||||
atanhf : inf
|
||||
cbrtf : 3.000000
|
||||
ceilf : 4.000000
|
||||
copysignf : -3.500000
|
||||
cosf : -0.000000
|
||||
coshf : 2.509179
|
||||
erff : 1.000000
|
||||
erfcf : 0.000000
|
||||
expf : 1.521962
|
||||
exp2f : 1.337928
|
||||
expm1f : 0.000420
|
||||
fabsf : 1.123000
|
||||
fdimf : 0.000000
|
||||
floorf : 0.000000
|
||||
floorf : -1.000000
|
||||
fmaf : 7.630000
|
||||
fmaxf : 0.420000
|
||||
fminf : -0.420000
|
||||
fmodf : 0.000000
|
||||
fpclassify : 4
|
||||
frexpf : 0.656250
|
||||
hypotf : 59.396969
|
||||
ilogbf : 5
|
||||
isfinite : 1
|
||||
isgreater : 0
|
||||
isgreaterequal : 0
|
||||
isinf : 0
|
||||
isless : 1
|
||||
islessequal : 1
|
||||
islessgreater : 1
|
||||
isnan : 0
|
||||
isnormal : 1
|
||||
isunordered : 1
|
||||
j0f : 0.671133
|
||||
j1f : 0.498289
|
||||
jnf : 0.159349
|
||||
ldexpf : 9.600000
|
||||
lgammaf : 114.034218
|
||||
llrintf : 0.000000
|
||||
llrintf : 0.000000
|
||||
lroundf : -1.000000
|
||||
lroundf : 1.000000
|
||||
logf : 3.737670
|
||||
log10f : 1.623249
|
||||
log1pf : 3.761200
|
||||
log2f : 5.392317
|
||||
logbf : 5.000000
|
||||
lrintf : 0.000000
|
||||
lrintf : 0.000000
|
||||
lroundf : -1.000000
|
||||
lroundf : 1.000000
|
||||
lmodff : 0.000000
|
||||
nanf : nan
|
||||
nearbyintf : 2.000000
|
||||
nextafterf : 1.500000
|
||||
powf : 9.060100
|
||||
remainderf : -0.990000
|
||||
remquof : -1.000000
|
||||
rintf : 0.000000
|
||||
rintf : -0.000000
|
||||
roundf : 1.000000
|
||||
roundf : -1.000000
|
||||
scalblnf : 9.600000
|
||||
scalbnf : 9.600000
|
||||
signbit : 0
|
||||
sinf : 0.707107
|
||||
sinhf : 0.868671
|
||||
sqrtf : 3.000000
|
||||
tanf : 1.000000
|
||||
tanhf : 0.655794
|
||||
tgammaf : 1.046486
|
||||
truncf : 3.000000
|
||||
y0f : 0.228084
|
||||
y1f : -0.621136
|
||||
ynf : -3.589899
|
||||
*** END OF FLOAT MATH TEST ***
|
||||
Reference in New Issue
Block a user