diff options
author | cvs2git <rtems-devel@rtems.org> | 2011-02-01 05:48:31 +0000 |
---|---|---|
committer | cvs2git <rtems-devel@rtems.org> | 2011-02-01 05:48:31 +0000 |
commit | cc2bcea47c1d540b30f76f09845dd1d9ff880d1a (patch) | |
tree | f25c77589ce232d5dc02805c7acf70721560284e | |
parent | f9e6b07ebf5f538fea7bc526ad7f504e30de9a3d (diff) |
This commit was manufactured by cvs2svn to create branch
'rtems-4-10-branch'.
Cherrypick from master 2011-02-01 05:48:30 UTC Ralf Corsepius <ralf.corsepius@rtems.org> '2011-02-01 Ralf Corsepius <ralf.corsepius@rtems.org>':
cpukit/libmisc/stringto/stringtolongdouble.c
testsuites/libtests/POSIX/htonl.c
testsuites/libtests/math/.cvsignore
testsuites/libtests/math/Makefile.am
testsuites/libtests/math/domath.c
testsuites/libtests/math/domath.in
testsuites/libtests/math/domathf.c
testsuites/libtests/math/domathl.c
testsuites/libtests/math/init.c
-rw-r--r-- | cpukit/libmisc/stringto/stringtolongdouble.c | 58 | ||||
-rw-r--r-- | testsuites/libtests/POSIX/htonl.c | 24 | ||||
-rw-r--r-- | testsuites/libtests/math/.cvsignore | 2 | ||||
-rw-r--r-- | testsuites/libtests/math/Makefile.am | 46 | ||||
-rw-r--r-- | testsuites/libtests/math/domath.c | 281 | ||||
-rw-r--r-- | testsuites/libtests/math/domath.in | 281 | ||||
-rw-r--r-- | testsuites/libtests/math/domathf.c | 281 | ||||
-rw-r--r-- | testsuites/libtests/math/domathl.c | 281 | ||||
-rw-r--r-- | testsuites/libtests/math/init.c | 66 |
9 files changed, 1320 insertions, 0 deletions
diff --git a/cpukit/libmisc/stringto/stringtolongdouble.c b/cpukit/libmisc/stringto/stringtolongdouble.c new file mode 100644 index 0000000000..776f5e183b --- /dev/null +++ b/cpukit/libmisc/stringto/stringtolongdouble.c @@ -0,0 +1,58 @@ +/* + * COPYRIGHT (c) 2009. + * On-Line Applications Research Corporation (OAR). + * + * Copyright (c) 2011 Ralf Corsépius, Ulm, Germany. + * + * 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$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <errno.h> +#include <stdlib.h> +#include <math.h> + +#include <rtems/stringto.h> + +/* + * Instantiate an error checking wrapper for strtod (double) + */ + +rtems_status_code rtems_string_to_long_double ( + const char *s, + long double *n, + char **endptr +) +{ + long double result; + char *end; + + if ( !n ) + return RTEMS_INVALID_ADDRESS; + + errno = 0; + *n = 0; + + result = strtold( s, &end ); + + if ( endptr ) + *endptr = end; + + if ( end == s ) + return RTEMS_NOT_DEFINED; + + if ( ( errno == ERANGE ) && + (( result == 0 ) || ( result == HUGE_VALL ) || ( result == -HUGE_VALL ))) + return RTEMS_INVALID_NUMBER; + + *n = result; + + return RTEMS_SUCCESSFUL; +} diff --git a/testsuites/libtests/POSIX/htonl.c b/testsuites/libtests/POSIX/htonl.c new file mode 100644 index 0000000000..71aa969db7 --- /dev/null +++ b/testsuites/libtests/POSIX/htonl.c @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010 by + * Ralf Corsépius, Ulm, Germany. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +#include <arpa/inet.h> + +int +main (void) +{ + uint32_t u32; + uint16_t u16; + + u32 = htonl(0x12345678); + u16 = htons(0x1234); + + u32 = ntohl(0x12345678); + u16 = ntohs(0x1234); + + return 0; +} diff --git a/testsuites/libtests/math/.cvsignore b/testsuites/libtests/math/.cvsignore new file mode 100644 index 0000000000..282522db03 --- /dev/null +++ b/testsuites/libtests/math/.cvsignore @@ -0,0 +1,2 @@ +Makefile +Makefile.in diff --git a/testsuites/libtests/math/Makefile.am b/testsuites/libtests/math/Makefile.am new file mode 100644 index 0000000000..ebfbfc182f --- /dev/null +++ b/testsuites/libtests/math/Makefile.am @@ -0,0 +1,46 @@ +## +## $Id$ +## + +rtems_tests_PROGRAMS = math +math_SOURCES = init.c domath.c domathf.c domathl.c +EXTRA_DIST = domath.in + +# FIXME: Skip long double, not yet supported in newlib +math_CPPFLAGS = $(AM_CPPFLAGS) -DNO_LONG_DOUBLE + +domath.c: $(srcdir)/domath.in + sed -e 's,[@]FTYPE[@],double,' \ + -e 's,[@]FSUFFIX[@], ,g' \ + -e 's,[@]FGUARD[@],NO_DOUBLE,' \ + $(srcdir)/domath.in > $(srcdir)/domath.c + +domathf.c: $(srcdir)/domath.in + sed -e 's,[@]FTYPE[@],float,' \ + -e 's,[@]FSUFFIX[@],f,g' \ + -e 's,[@]FGUARD[@],NO_FLOAT,' \ + $(srcdir)/domath.in > $(srcdir)/domathf.c + +domathl.c: $(srcdir)/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)/domath.in > $(srcdir)/domathl.c + +dist_rtems_tests_DATA = math.scn + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +math_LDADD = -lm + +LINK_OBJS = $(math_OBJECTS) $(math_LDADD) +LINK_LIBS = $(math_LDLIBS) + +math$(EXEEXT): $(math_OBJECTS) $(math_DEPENDENCIES) + @rm -f math$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/libtests/math/domath.c b/testsuites/libtests/math/domath.c new file mode 100644 index 0000000000..2137d34d67 --- /dev/null +++ b/testsuites/libtests/math/domath.c @@ -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 +domath (void) +{ +#ifndef NO_DOUBLE + double f1; + double f2; + + int i1; + + f1 = acos (0.0); + fprintf( stdout, "acos : %f\n", f1); + + f1 = acosh (0.0); + fprintf( stdout, "acosh : %f\n", f1); + + f1 = asin (1.0); + fprintf( stdout, "asin : %f\n", f1); + + f1 = asinh (1.0); + fprintf( stdout, "asinh : %f\n", f1); + + f1 = atan (M_PI_4); + fprintf( stdout, "atan : %f\n", f1); + + f1 = atan2 (2.3, 2.3); + fprintf( stdout, "atan2 : %f\n", f1); + + f1 = atanh (1.0); + fprintf( stdout, "atanh : %f\n", f1); + + f1 = cbrt (27.0); + fprintf( stdout, "cbrt : %f\n", f1); + + f1 = ceil (3.5); + fprintf( stdout, "ceil : %f\n", f1); + + f1 = copysign (3.5, -2.5); + fprintf( stdout, "copysign : %f\n", f1); + + f1 = cos (M_PI_2); + fprintf( stdout, "cos : %f\n", f1); + + f1 = cosh (M_PI_2); + fprintf( stdout, "cosh : %f\n", f1); + + f1 = erf (42.0); + fprintf( stdout, "erf : %f\n", f1); + + f1 = erfc (42.0); + fprintf( stdout, "erfc : %f\n", f1); + + f1 = exp (0.42); + fprintf( stdout, "exp : %f\n", f1); + + f1 = exp2 (0.42); + fprintf( stdout, "exp2 : %f\n", f1); + + f1 = expm1 (0.00042); + fprintf( stdout, "expm1 : %f\n", f1); + + f1 = fabs (-1.123); + fprintf( stdout, "fabs : %f\n", f1); + + f1 = fdim (1.123, 2.123); + fprintf( stdout, "fdim : %f\n", f1); + + f1 = floor (0.5); + fprintf( stdout, "floor : %f\n", f1); + f1 = floor (-0.5); + fprintf( stdout, "floor : %f\n", f1); + + f1 = fma (2.1, 2.2, 3.01); + fprintf( stdout, "fma : %f\n", f1); + + f1 = fmax (-0.42, 0.42); + fprintf( stdout, "fmax : %f\n", f1); + + f1 = fmin (-0.42, 0.42); + fprintf( stdout, "fmin : %f\n", f1); + + f1 = fmod (42.0, 3.0); + fprintf( stdout, "fmod : %f\n", f1); + + /* no type-specific variant */ + i1 = fpclassify(1.0); + fprintf( stdout, "fpclassify : %d\n", i1); + + f1 = frexp (42.0, &i1); + fprintf( stdout, "frexp : %f\n", f1); + + f1 = hypot (42.0, 42.0); + fprintf( stdout, "hypot : %f\n", f1); + + i1 = ilogb (42.0); + fprintf( stdout, "ilogb : %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 = j0 (1.2); + fprintf( stdout, "j0 : %f\n", f1); + + f1 = j1 (1.2); + fprintf( stdout, "j1 : %f\n", f1); + + f1 = jn (2,1.2); + fprintf( stdout, "jn : %f\n", f1); + + f1 = ldexp (1.2,3); + fprintf( stdout, "ldexp : %f\n", f1); + + f1 = lgamma (42.0); + fprintf( stdout, "lgamma : %f\n", f1); + + f1 = llrint (-0.5); + fprintf( stdout, "llrint : %f\n", f1); + f1 = llrint (0.5); + fprintf( stdout, "llrint : %f\n", f1); + + f1 = llround (-0.5); + fprintf( stdout, "lround : %f\n", f1); + f1 = llround (0.5); + fprintf( stdout, "lround : %f\n", f1); + + f1 = log (42.0); + fprintf( stdout, "log : %f\n", f1); + + f1 = log10 (42.0); + fprintf( stdout, "log10 : %f\n", f1); + + f1 = log1p (42.0); + fprintf( stdout, "log1p : %f\n", f1); + + f1 = log2 (42.0); + fprintf( stdout, "log2 : %f\n", f1); + + f1 = logb (42.0); + fprintf( stdout, "logb : %f\n", f1); + + f1 = lrint (-0.5); + fprintf( stdout, "lrint : %f\n", f1); + f1 = lrint (0.5); + fprintf( stdout, "lrint : %f\n", f1); + + f1 = lround (-0.5); + fprintf( stdout, "lround : %f\n", f1); + f1 = lround (0.5); + fprintf( stdout, "lround : %f\n", f1); + + f1 = modf (42.0,&f2); + fprintf( stdout, "lmodf : %f\n", f1); + + f1 = nan (""); + fprintf( stdout, "nan : %f\n", f1); + + f1 = nearbyint (1.5); + fprintf( stdout, "nearbyint : %f\n", f1); + + f1 = nextafter (1.5,2.0); + fprintf( stdout, "nextafter : %f\n", f1); + + f1 = pow (3.01, 2.0); + fprintf( stdout, "pow : %f\n", f1); + + f1 = remainder (3.01,2.0); + fprintf( stdout, "remainder : %f\n", f1); + + f1 = remquo (29.0,3.0,&i1); + fprintf( stdout, "remquo : %f\n", f1); + + f1 = rint (0.5); + fprintf( stdout, "rint : %f\n", f1); + f1 = rint (-0.5); + fprintf( stdout, "rint : %f\n", f1); + + f1 = round (0.5); + fprintf( stdout, "round : %f\n", f1); + f1 = round (-0.5); + fprintf( stdout, "round : %f\n", f1); + + f1 = scalbln (1.2,3); + fprintf( stdout, "scalbln : %f\n", f1); + + f1 = scalbn (1.2,3); + fprintf( stdout, "scalbn : %f\n", f1); + + /* no type-specific variant */ + i1 = signbit(1.0); + fprintf( stdout, "signbit : %i\n", i1); + + f1 = sin (M_PI_4); + fprintf( stdout, "sin : %f\n", f1); + + f1 = sinh (M_PI_4); + fprintf( stdout, "sinh : %f\n", f1); + + f1 = sqrt (9.0); + fprintf( stdout, "sqrt : %f\n", f1); + + f1 = tan (M_PI_4); + fprintf( stdout, "tan : %f\n", f1); + + f1 = tanh (M_PI_4); + fprintf( stdout, "tanh : %f\n", f1); + + f1 = tgamma (2.1); + fprintf( stdout, "tgamma : %f\n", f1); + + f1 = trunc (3.5); + fprintf( stdout, "trunc : %f\n", f1); + + f1 = y0 (1.2); + fprintf( stdout, "y0 : %f\n", f1); + + f1 = y1 (1.2); + fprintf( stdout, "y1 : %f\n", f1); + + f1 = yn (3,1.2); + fprintf( stdout, "yn : %f\n", f1); +#endif +} diff --git a/testsuites/libtests/math/domath.in b/testsuites/libtests/math/domath.in new file mode 100644 index 0000000000..a41038744e --- /dev/null +++ b/testsuites/libtests/math/domath.in @@ -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 +domath@FSUFFIX@ (void) +{ +#ifndef @FGUARD@ + @FTYPE@ f1; + @FTYPE@ f2; + + int i1; + + f1 = acos@FSUFFIX@(0.0); + fprintf( stdout, "acos@FSUFFIX@ : %f\n", f1); + + f1 = acosh@FSUFFIX@(0.0); + fprintf( stdout, "acosh@FSUFFIX@ : %f\n", f1); + + f1 = asin@FSUFFIX@(1.0); + fprintf( stdout, "asin@FSUFFIX@ : %f\n", f1); + + f1 = asinh@FSUFFIX@(1.0); + fprintf( stdout, "asinh@FSUFFIX@ : %f\n", f1); + + f1 = atan@FSUFFIX@(M_PI_4); + fprintf( stdout, "atan@FSUFFIX@ : %f\n", f1); + + f1 = atan2@FSUFFIX@(2.3, 2.3); + fprintf( stdout, "atan2@FSUFFIX@ : %f\n", f1); + + f1 = atanh@FSUFFIX@(1.0); + fprintf( stdout, "atanh@FSUFFIX@ : %f\n", f1); + + f1 = cbrt@FSUFFIX@(27.0); + fprintf( stdout, "cbrt@FSUFFIX@ : %f\n", f1); + + f1 = ceil@FSUFFIX@(3.5); + fprintf( stdout, "ceil@FSUFFIX@ : %f\n", f1); + + f1 = copysign@FSUFFIX@(3.5, -2.5); + fprintf( stdout, "copysign@FSUFFIX@ : %f\n", f1); + + f1 = cos@FSUFFIX@(M_PI_2); + fprintf( stdout, "cos@FSUFFIX@ : %f\n", f1); + + f1 = cosh@FSUFFIX@(M_PI_2); + fprintf( stdout, "cosh@FSUFFIX@ : %f\n", f1); + + f1 = erf@FSUFFIX@(42.0); + fprintf( stdout, "erf@FSUFFIX@ : %f\n", f1); + + f1 = erfc@FSUFFIX@(42.0); + fprintf( stdout, "erfc@FSUFFIX@ : %f\n", f1); + + f1 = exp@FSUFFIX@(0.42); + fprintf( stdout, "exp@FSUFFIX@ : %f\n", f1); + + f1 = exp2@FSUFFIX@(0.42); + fprintf( stdout, "exp2@FSUFFIX@ : %f\n", f1); + + f1 = expm1@FSUFFIX@(0.00042); + fprintf( stdout, "expm1@FSUFFIX@ : %f\n", f1); + + f1 = fabs@FSUFFIX@(-1.123); + fprintf( stdout, "fabs@FSUFFIX@ : %f\n", f1); + + f1 = fdim@FSUFFIX@(1.123, 2.123); + fprintf( stdout, "fdim@FSUFFIX@ : %f\n", f1); + + f1 = floor@FSUFFIX@(0.5); + fprintf( stdout, "floor@FSUFFIX@ : %f\n", f1); + f1 = floor@FSUFFIX@(-0.5); + fprintf( stdout, "floor@FSUFFIX@ : %f\n", f1); + + f1 = fma@FSUFFIX@(2.1, 2.2, 3.01); + fprintf( stdout, "fma@FSUFFIX@ : %f\n", f1); + + f1 = fmax@FSUFFIX@(-0.42, 0.42); + fprintf( stdout, "fmax@FSUFFIX@ : %f\n", f1); + + f1 = fmin@FSUFFIX@(-0.42, 0.42); + fprintf( stdout, "fmin@FSUFFIX@ : %f\n", f1); + + f1 = fmod@FSUFFIX@(42.0, 3.0); + fprintf( stdout, "fmod@FSUFFIX@ : %f\n", f1); + + /* no type-specific variant */ + i1 = fpclassify(1.0); + fprintf( stdout, "fpclassify : %d\n", i1); + + f1 = frexp@FSUFFIX@(42.0, &i1); + fprintf( stdout, "frexp@FSUFFIX@ : %f\n", f1); + + f1 = hypot@FSUFFIX@(42.0, 42.0); + fprintf( stdout, "hypot@FSUFFIX@ : %f\n", f1); + + i1 = ilogb@FSUFFIX@(42.0); + fprintf( stdout, "ilogb@FSUFFIX@ : %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 = j0@FSUFFIX@(1.2); + fprintf( stdout, "j0@FSUFFIX@ : %f\n", f1); + + f1 = j1@FSUFFIX@(1.2); + fprintf( stdout, "j1@FSUFFIX@ : %f\n", f1); + + f1 = jn@FSUFFIX@(2,1.2); + fprintf( stdout, "jn@FSUFFIX@ : %f\n", f1); + + f1 = ldexp@FSUFFIX@(1.2,3); + fprintf( stdout, "ldexp@FSUFFIX@ : %f\n", f1); + + f1 = lgamma@FSUFFIX@(42.0); + fprintf( stdout, "lgamma@FSUFFIX@ : %f\n", f1); + + f1 = llrint@FSUFFIX@(-0.5); + fprintf( stdout, "llrint@FSUFFIX@ : %f\n", f1); + f1 = llrint@FSUFFIX@(0.5); + fprintf( stdout, "llrint@FSUFFIX@ : %f\n", f1); + + f1 = llround@FSUFFIX@(-0.5); + fprintf( stdout, "lround@FSUFFIX@ : %f\n", f1); + f1 = llround@FSUFFIX@(0.5); + fprintf( stdout, "lround@FSUFFIX@ : %f\n", f1); + + f1 = log@FSUFFIX@(42.0); + fprintf( stdout, "log@FSUFFIX@ : %f\n", f1); + + f1 = log10@FSUFFIX@(42.0); + fprintf( stdout, "log10@FSUFFIX@ : %f\n", f1); + + f1 = log1p@FSUFFIX@(42.0); + fprintf( stdout, "log1p@FSUFFIX@ : %f\n", f1); + + f1 = log2@FSUFFIX@(42.0); + fprintf( stdout, "log2@FSUFFIX@ : %f\n", f1); + + f1 = logb@FSUFFIX@(42.0); + fprintf( stdout, "logb@FSUFFIX@ : %f\n", f1); + + f1 = lrint@FSUFFIX@(-0.5); + fprintf( stdout, "lrint@FSUFFIX@ : %f\n", f1); + f1 = lrint@FSUFFIX@(0.5); + fprintf( stdout, "lrint@FSUFFIX@ : %f\n", f1); + + f1 = lround@FSUFFIX@(-0.5); + fprintf( stdout, "lround@FSUFFIX@ : %f\n", f1); + f1 = lround@FSUFFIX@(0.5); + fprintf( stdout, "lround@FSUFFIX@ : %f\n", f1); + + f1 = modf@FSUFFIX@(42.0,&f2); + fprintf( stdout, "lmodf@FSUFFIX@ : %f\n", f1); + + f1 = nan@FSUFFIX@(""); + fprintf( stdout, "nan@FSUFFIX@ : %f\n", f1); + + f1 = nearbyint@FSUFFIX@(1.5); + fprintf( stdout, "nearbyint@FSUFFIX@ : %f\n", f1); + + f1 = nextafter@FSUFFIX@(1.5,2.0); + fprintf( stdout, "nextafter@FSUFFIX@ : %f\n", f1); + + f1 = pow@FSUFFIX@(3.01, 2.0); + fprintf( stdout, "pow@FSUFFIX@ : %f\n", f1); + + f1 = remainder@FSUFFIX@(3.01,2.0); + fprintf( stdout, "remainder@FSUFFIX@ : %f\n", f1); + + f1 = remquo@FSUFFIX@(29.0,3.0,&i1); + fprintf( stdout, "remquo@FSUFFIX@ : %f\n", f1); + + f1 = rint@FSUFFIX@(0.5); + fprintf( stdout, "rint@FSUFFIX@ : %f\n", f1); + f1 = rint@FSUFFIX@(-0.5); + fprintf( stdout, "rint@FSUFFIX@ : %f\n", f1); + + f1 = round@FSUFFIX@(0.5); + fprintf( stdout, "round@FSUFFIX@ : %f\n", f1); + f1 = round@FSUFFIX@(-0.5); + fprintf( stdout, "round@FSUFFIX@ : %f\n", f1); + + f1 = scalbln@FSUFFIX@(1.2,3); + fprintf( stdout, "scalbln@FSUFFIX@ : %f\n", f1); + + f1 = scalbn@FSUFFIX@(1.2,3); + fprintf( stdout, "scalbn@FSUFFIX@ : %f\n", f1); + + /* no type-specific variant */ + i1 = signbit(1.0); + fprintf( stdout, "signbit : %i\n", i1); + + f1 = sin@FSUFFIX@(M_PI_4); + fprintf( stdout, "sin@FSUFFIX@ : %f\n", f1); + + f1 = sinh@FSUFFIX@(M_PI_4); + fprintf( stdout, "sinh@FSUFFIX@ : %f\n", f1); + + f1 = sqrt@FSUFFIX@(9.0); + fprintf( stdout, "sqrt@FSUFFIX@ : %f\n", f1); + + f1 = tan@FSUFFIX@(M_PI_4); + fprintf( stdout, "tan@FSUFFIX@ : %f\n", f1); + + f1 = tanh@FSUFFIX@(M_PI_4); + fprintf( stdout, "tanh@FSUFFIX@ : %f\n", f1); + + f1 = tgamma@FSUFFIX@(2.1); + fprintf( stdout, "tgamma@FSUFFIX@ : %f\n", f1); + + f1 = trunc@FSUFFIX@(3.5); + fprintf( stdout, "trunc@FSUFFIX@ : %f\n", f1); + + f1 = y0@FSUFFIX@(1.2); + fprintf( stdout, "y0@FSUFFIX@ : %f\n", f1); + + f1 = y1@FSUFFIX@(1.2); + fprintf( stdout, "y1@FSUFFIX@ : %f\n", f1); + + f1 = yn@FSUFFIX@(3,1.2); + fprintf( stdout, "yn@FSUFFIX@ : %f\n", f1); +#endif +} diff --git a/testsuites/libtests/math/domathf.c b/testsuites/libtests/math/domathf.c new file mode 100644 index 0000000000..6d99ae1883 --- /dev/null +++ b/testsuites/libtests/math/domathf.c @@ -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 +} diff --git a/testsuites/libtests/math/domathl.c b/testsuites/libtests/math/domathl.c new file mode 100644 index 0000000000..06a73809ad --- /dev/null +++ b/testsuites/libtests/math/domathl.c @@ -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 +} diff --git a/testsuites/libtests/math/init.c b/testsuites/libtests/math/init.c new file mode 100644 index 0000000000..8cefe0f261 --- /dev/null +++ b/testsuites/libtests/math/init.c @@ -0,0 +1,66 @@ +/* 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 domath(void); +extern void domathf(void); +extern void domathl(void); + +#if __rtems__ +rtems_task Init( + rtems_task_argument ignored +) +#else +int main( void ) +#endif +{ + printf( "*** FLOAT MATH TEST ***\n" ); + + domath(); + domathf(); + domathl(); + + printf( "*** 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_USE_DEVFS_AS_BASE_FILESYSTEM + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT +#include <rtems/confdefs.h> +#endif |