summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2010-11-30 13:48:35 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2010-11-30 13:48:35 +0000
commita52ac89fc69493b402b41a5ee38e6d5cee34d4f2 (patch)
treed5bfa64fde4f3822ca1946b71678a3c7c8c1dfe9 /testsuites
parent2010-11-30 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-a52ac89fc69493b402b41a5ee38e6d5cee34d4f2.tar.bz2
New.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/libtests/complex/.cvsignore2
-rw-r--r--testsuites/libtests/complex/Makefile.am46
-rw-r--r--testsuites/libtests/complex/complex.scn46
-rw-r--r--testsuites/libtests/complex/docomplex.c110
-rw-r--r--testsuites/libtests/complex/docomplex.in110
-rw-r--r--testsuites/libtests/complex/docomplexf.c110
-rw-r--r--testsuites/libtests/complex/docomplexl.c110
-rw-r--r--testsuites/libtests/complex/init.c67
-rw-r--r--testsuites/libtests/math/.cvsignore2
-rw-r--r--testsuites/libtests/math/Makefile.am46
-rw-r--r--testsuites/libtests/math/domath.c281
-rw-r--r--testsuites/libtests/math/domath.in281
-rw-r--r--testsuites/libtests/math/domathf.c281
-rw-r--r--testsuites/libtests/math/domathl.c281
-rw-r--r--testsuites/libtests/math/init.c64
-rw-r--r--testsuites/libtests/math/math.scn164
16 files changed, 2001 insertions, 0 deletions
diff --git a/testsuites/libtests/complex/.cvsignore b/testsuites/libtests/complex/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/libtests/complex/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/libtests/complex/Makefile.am b/testsuites/libtests/complex/Makefile.am
new file mode 100644
index 0000000000..61154d2ae7
--- /dev/null
+++ b/testsuites/libtests/complex/Makefile.am
@@ -0,0 +1,46 @@
+##
+## $Id$
+##
+
+rtems_tests_PROGRAMS = complex
+complex_SOURCES = init.c docomplex.c docomplexf.c docomplexl.c
+EXTRA_DIST = docomplex.in
+
+# FIXME: Skip long double, not yet supported in newlib
+complex_CPPFLAGS = $(AM_CPPFLAGS) -DNO_LONG_DOUBLE
+
+docomplex.c: $(srcdir)/docomplex.in
+ sed -e 's,[@]FTYPE[@],double,' \
+ -e 's,[@]FSUFFIX[@], ,g' \
+ -e 's,[@]FGUARD[@],NO_DOUBLE,' \
+ $(srcdir)/docomplex.in > $(srcdir)/docomplex.c
+
+docomplexf.c: $(srcdir)/docomplex.in
+ sed -e 's,[@]FTYPE[@],float,' \
+ -e 's,[@]FSUFFIX[@],f,g' \
+ -e 's,[@]FGUARD[@],NO_FLOAT,' \
+ $(srcdir)/docomplex.in > $(srcdir)/docomplexf.c
+
+docomplexl.c: $(srcdir)/docomplex.in
+ sed -e 's,[@]FTYPE[@],long double,' \
+ -e 's,[@]FSUFFIX[@],l,g' \
+ -e 's,%f,%Lf,g' \
+ -e 's,[@]FGUARD[@],NO_LONG_DOUBLE,' \
+ $(srcdir)/docomplex.in > $(srcdir)/docomplexl.c
+
+dist_rtems_tests_DATA = complex.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+complex_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel) -lm
+
+LINK_OBJS = $(complex_OBJECTS) $(complex_LDADD)
+LINK_LIBS = $(complex_LDLIBS)
+
+complex$(EXEEXT): $(complex_OBJECTS) $(complex_DEPENDENCIES)
+ @rm -f complex$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/libtests/complex/complex.scn b/testsuites/libtests/complex/complex.scn
new file mode 100644
index 0000000000..f19dee3d3f
--- /dev/null
+++ b/testsuites/libtests/complex/complex.scn
@@ -0,0 +1,46 @@
+*** COMPLEX MATH TEST ***
+cabs : 1.414214
+cacos : 0.904557 -1.061275i
+cacosh : 1.061275 0.904557i
+carg : 0.785398
+casin : 0.666239 1.061275i
+casinh : 1.061275 0.666239i
+catan : 1.017222 0.402359i
+catanh : 0.402359 1.017222i
+ccos : 0.833730 -0.988898i
+ccosh : 0.833730 0.988898i
+cexp : 1.468694 2.287355i
+cimag : 1.000000
+clog : 0.346574 0.785398i
+conj : 1.000000 -1.000000i
+cpow : 2.807879 1.317865i
+cproj : 1.000000 1.000000i
+creal : 1.000000
+csin : 1.298458 0.634964i
+csinh : 0.634964 1.298458i
+csqrt : 1.098684 0.455090i
+ctan : 0.271753 1.083923i
+ctanh : 1.083923 0.271753i
+cabsf : 1.414214
+cacosf : 0.904557 -1.061275i
+cacoshf: 1.061275 0.904557i
+cargf : 0.785398
+casinf : 0.666239 1.061275i
+casinhf: 1.061275 0.666239i
+catanf : 1.017222 0.402359i
+catanhf: 0.402359 1.017222i
+ccosf : 0.833730 -0.988898i
+ccoshf : 0.833730 0.988898i
+cexpf : 1.468694 2.287355i
+cimagf : 1.000000
+clogf : 0.346574 0.785398i
+conjf : 1.000000 -1.000000i
+cpowf : 2.807879 1.317865i
+cprojf : 1.000000 1.000000i
+crealf : 1.000000
+csinf : 1.298458 0.634964i
+csinhf : 0.634964 1.298458i
+csqrtf : 1.098684 0.455090i
+ctanf : 0.271753 1.083923i
+ctanhf : 1.083923 0.271753i
+*** END OF COMPLEX MATH TEST ***
diff --git a/testsuites/libtests/complex/docomplex.c b/testsuites/libtests/complex/docomplex.c
new file mode 100644
index 0000000000..28ddce3d1f
--- /dev/null
+++ b/testsuites/libtests/complex/docomplex.c
@@ -0,0 +1,110 @@
+/*
+ * 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 complex math routines.
+ */
+
+#include <complex.h>
+#include <stdio.h>
+
+void
+docomplex (void)
+{
+#ifndef NO_DOUBLE
+ complex double ca, cb, cc;
+ double f1;
+
+ ca = 1.0 + 1.0 * I;
+ cb = 1.0 - 1.0 * I;
+
+ f1 = cabs (ca);
+ fprintf (stdout, "cabs : %f\n", f1);
+
+ cc = cacos (ca);
+ fprintf (stdout, "cacos : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = cacosh (ca);
+ fprintf (stdout, "cacosh : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ f1 = carg (ca);
+ fprintf (stdout, "carg : %f\n", f1);
+
+ cc = casin (ca);
+ fprintf (stdout, "casin : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = casinh (ca);
+ fprintf (stdout, "casinh : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = catan (ca);
+ fprintf (stdout, "catan : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = catanh (ca);
+ fprintf (stdout, "catanh : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = ccos (ca);
+ fprintf (stdout, "ccos : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = ccosh (ca);
+ fprintf (stdout, "ccosh : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = cexp (ca);
+ fprintf (stdout, "cexp : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ f1 = cimag (ca);
+ fprintf (stdout, "cimag : %f\n", f1);
+
+ cc = clog (ca);
+ fprintf (stdout, "clog : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = conj (ca);
+ fprintf (stdout, "conj : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = cpow (ca, cb);
+ fprintf (stdout, "cpow : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = cproj (ca);
+ fprintf (stdout, "cproj : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ f1 = creal (ca);
+ fprintf (stdout, "creal : %f\n", f1);
+
+ cc = csin (ca);
+ fprintf (stdout, "csin : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = csinh (ca);
+ fprintf (stdout, "csinh : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = csqrt (ca);
+ fprintf (stdout, "csqrt : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = ctan (ca);
+ fprintf (stdout, "ctan : %f %fi\n", creal (cc),
+ cimag (cc));
+
+ cc = ctanh (ca);
+ fprintf (stdout, "ctanh : %f %fi\n", creal (cc),
+ cimag (cc));
+#endif
+}
diff --git a/testsuites/libtests/complex/docomplex.in b/testsuites/libtests/complex/docomplex.in
new file mode 100644
index 0000000000..e4fd94af7c
--- /dev/null
+++ b/testsuites/libtests/complex/docomplex.in
@@ -0,0 +1,110 @@
+/*
+ * 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 complex math routines.
+ */
+
+#include <complex.h>
+#include <stdio.h>
+
+void
+docomplex@FSUFFIX@ (void)
+{
+#ifndef @FGUARD@
+ complex @FTYPE@ ca, cb, cc;
+ @FTYPE@ f1;
+
+ ca = 1.0 + 1.0 * I;
+ cb = 1.0 - 1.0 * I;
+
+ f1 = cabs@FSUFFIX@ (ca);
+ fprintf (stdout, "cabs@FSUFFIX@ : %f\n", f1);
+
+ cc = cacos@FSUFFIX@ (ca);
+ fprintf (stdout, "cacos@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = cacosh@FSUFFIX@ (ca);
+ fprintf (stdout, "cacosh@FSUFFIX@: %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ f1 = carg@FSUFFIX@ (ca);
+ fprintf (stdout, "carg@FSUFFIX@ : %f\n", f1);
+
+ cc = casin@FSUFFIX@ (ca);
+ fprintf (stdout, "casin@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = casinh@FSUFFIX@ (ca);
+ fprintf (stdout, "casinh@FSUFFIX@: %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = catan@FSUFFIX@ (ca);
+ fprintf (stdout, "catan@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = catanh@FSUFFIX@ (ca);
+ fprintf (stdout, "catanh@FSUFFIX@: %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = ccos@FSUFFIX@ (ca);
+ fprintf (stdout, "ccos@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = ccosh@FSUFFIX@ (ca);
+ fprintf (stdout, "ccosh@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = cexp@FSUFFIX@ (ca);
+ fprintf (stdout, "cexp@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ f1 = cimag@FSUFFIX@ (ca);
+ fprintf (stdout, "cimag@FSUFFIX@ : %f\n", f1);
+
+ cc = clog@FSUFFIX@ (ca);
+ fprintf (stdout, "clog@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = conj@FSUFFIX@ (ca);
+ fprintf (stdout, "conj@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = cpow@FSUFFIX@ (ca, cb);
+ fprintf (stdout, "cpow@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = cproj@FSUFFIX@ (ca);
+ fprintf (stdout, "cproj@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ f1 = creal@FSUFFIX@ (ca);
+ fprintf (stdout, "creal@FSUFFIX@ : %f\n", f1);
+
+ cc = csin@FSUFFIX@ (ca);
+ fprintf (stdout, "csin@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = csinh@FSUFFIX@ (ca);
+ fprintf (stdout, "csinh@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = csqrt@FSUFFIX@ (ca);
+ fprintf (stdout, "csqrt@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = ctan@FSUFFIX@ (ca);
+ fprintf (stdout, "ctan@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+
+ cc = ctanh@FSUFFIX@ (ca);
+ fprintf (stdout, "ctanh@FSUFFIX@ : %f %fi\n", creal@FSUFFIX@ (cc),
+ cimag@FSUFFIX@ (cc));
+#endif
+}
diff --git a/testsuites/libtests/complex/docomplexf.c b/testsuites/libtests/complex/docomplexf.c
new file mode 100644
index 0000000000..4c07c7b43b
--- /dev/null
+++ b/testsuites/libtests/complex/docomplexf.c
@@ -0,0 +1,110 @@
+/*
+ * 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 complex math routines.
+ */
+
+#include <complex.h>
+#include <stdio.h>
+
+void
+docomplexf (void)
+{
+#ifndef NO_FLOAT
+ complex float ca, cb, cc;
+ float f1;
+
+ ca = 1.0 + 1.0 * I;
+ cb = 1.0 - 1.0 * I;
+
+ f1 = cabsf (ca);
+ fprintf (stdout, "cabsf : %f\n", f1);
+
+ cc = cacosf (ca);
+ fprintf (stdout, "cacosf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = cacoshf (ca);
+ fprintf (stdout, "cacoshf: %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ f1 = cargf (ca);
+ fprintf (stdout, "cargf : %f\n", f1);
+
+ cc = casinf (ca);
+ fprintf (stdout, "casinf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = casinhf (ca);
+ fprintf (stdout, "casinhf: %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = catanf (ca);
+ fprintf (stdout, "catanf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = catanhf (ca);
+ fprintf (stdout, "catanhf: %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = ccosf (ca);
+ fprintf (stdout, "ccosf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = ccoshf (ca);
+ fprintf (stdout, "ccoshf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = cexpf (ca);
+ fprintf (stdout, "cexpf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ f1 = cimagf (ca);
+ fprintf (stdout, "cimagf : %f\n", f1);
+
+ cc = clogf (ca);
+ fprintf (stdout, "clogf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = conjf (ca);
+ fprintf (stdout, "conjf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = cpowf (ca, cb);
+ fprintf (stdout, "cpowf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = cprojf (ca);
+ fprintf (stdout, "cprojf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ f1 = crealf (ca);
+ fprintf (stdout, "crealf : %f\n", f1);
+
+ cc = csinf (ca);
+ fprintf (stdout, "csinf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = csinhf (ca);
+ fprintf (stdout, "csinhf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = csqrtf (ca);
+ fprintf (stdout, "csqrtf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = ctanf (ca);
+ fprintf (stdout, "ctanf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+
+ cc = ctanhf (ca);
+ fprintf (stdout, "ctanhf : %f %fi\n", crealf (cc),
+ cimagf (cc));
+#endif
+}
diff --git a/testsuites/libtests/complex/docomplexl.c b/testsuites/libtests/complex/docomplexl.c
new file mode 100644
index 0000000000..7351a08ac0
--- /dev/null
+++ b/testsuites/libtests/complex/docomplexl.c
@@ -0,0 +1,110 @@
+/*
+ * 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 complex math routines.
+ */
+
+#include <complex.h>
+#include <stdio.h>
+
+void
+docomplexl (void)
+{
+#ifndef NO_LONG_DOUBLE
+ complex long double ca, cb, cc;
+ long double f1;
+
+ ca = 1.0 + 1.0 * I;
+ cb = 1.0 - 1.0 * I;
+
+ f1 = cabsl (ca);
+ fprintf (stdout, "cabsl : %Lf\n", f1);
+
+ cc = cacosl (ca);
+ fprintf (stdout, "cacosl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = cacoshl (ca);
+ fprintf (stdout, "cacoshl: %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ f1 = cargl (ca);
+ fprintf (stdout, "cargl : %Lf\n", f1);
+
+ cc = casinl (ca);
+ fprintf (stdout, "casinl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = casinhl (ca);
+ fprintf (stdout, "casinhl: %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = catanl (ca);
+ fprintf (stdout, "catanl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = catanhl (ca);
+ fprintf (stdout, "catanhl: %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = ccosl (ca);
+ fprintf (stdout, "ccosl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = ccoshl (ca);
+ fprintf (stdout, "ccoshl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = cexpl (ca);
+ fprintf (stdout, "cexpl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ f1 = cimagl (ca);
+ fprintf (stdout, "cimagl : %Lf\n", f1);
+
+ cc = clogl (ca);
+ fprintf (stdout, "clogl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = conjl (ca);
+ fprintf (stdout, "conjl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = cpowl (ca, cb);
+ fprintf (stdout, "cpowl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = cprojl (ca);
+ fprintf (stdout, "cprojl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ f1 = creall (ca);
+ fprintf (stdout, "creall : %Lf\n", f1);
+
+ cc = csinl (ca);
+ fprintf (stdout, "csinl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = csinhl (ca);
+ fprintf (stdout, "csinhl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = csqrtl (ca);
+ fprintf (stdout, "csqrtl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = ctanl (ca);
+ fprintf (stdout, "ctanl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+
+ cc = ctanhl (ca);
+ fprintf (stdout, "ctanhl : %Lf %Lfi\n", creall (cc),
+ cimagl (cc));
+#endif
+}
diff --git a/testsuites/libtests/complex/init.c b/testsuites/libtests/complex/init.c
new file mode 100644
index 0000000000..7f132f40a8
--- /dev/null
+++ b/testsuites/libtests/complex/init.c
@@ -0,0 +1,67 @@
+/* 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 docomplex(void);
+extern void docomplexf(void);
+#ifndef NO_LONG_DOUBLE
+extern void docomplexl(void);
+#endif
+
+#if __rtems__
+rtems_task Init(
+ rtems_task_argument ignored
+)
+#else
+int main( void )
+#endif
+{
+ printf( "*** COMPLEX MATH TEST ***\n" );
+
+ docomplex();
+ docomplexf();
+#ifndef NO_LONG_DOUBLE
+ docomplexl();
+#endif
+ printf( "*** END OF COMPLEX 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_USE_DEVFS_AS_BASE_FILESYSTEM
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+#endif
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..65c1479cf0
--- /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 = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel) -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..71227df506
--- /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, "tanh : %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..fd1bd5d005
--- /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, "tanh@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..60c479f6ea
--- /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, "tanhf : %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..91991af6ec
--- /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, "tanhl : %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..b657d386c1
--- /dev/null
+++ b/testsuites/libtests/math/init.c
@@ -0,0 +1,64 @@
+/* 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_USE_DEVFS_AS_BASE_FILESYSTEM
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+#endif
diff --git a/testsuites/libtests/math/math.scn b/testsuites/libtests/math/math.scn
new file mode 100644
index 0000000000..120e61e1ba
--- /dev/null
+++ b/testsuites/libtests/math/math.scn
@@ -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
+tanh : 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
+tanhf : 1.046486
+truncf : 3.000000
+y0f : 0.228084
+y1f : -0.621136
+ynf : -3.589899
+*** END OF FLOAT MATH TEST ***