[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 9d3528a4 3/4: Enable architecture identificat
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 9d3528a4 3/4: Enable architecture identification in C++ |
Date: |
Thu, 10 Mar 2022 16:07:29 -0500 (EST) |
branch: master
commit 9d3528a4ebec87994422c476f73e9a06d35815b8
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Enable architecture identification in C++
---
config.hpp | 13 +++++++++++++
zero_test.cpp | 12 +++++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/config.hpp b/config.hpp
index 12de1663..304edf64 100644
--- a/config.hpp
+++ b/config.hpp
@@ -43,8 +43,10 @@
#if defined unix || defined __unix__ || defined __unix // Detected POSIX.
# define LMI_POSIX
+# define LMI_OSTYPE "posix"
#elif defined __WIN32__ || defined _WIN32 || defined WIN32 // Detected msw.
# define LMI_MSW
+# define LMI_OSTYPE "msw"
#else // Unknown OS.
# error Unknown operating system. Consider contributing support.
#endif // Unknown OS.
@@ -54,10 +56,12 @@
#if defined __x86_64 || defined __x86_64__ || defined __amd64 || defined
__amd64__ || defined _M_X64
# define LMI_X86
# define LMI_X86_64
+# define LMI_MACHINE "x86_64"
#elif defined _X86_ || defined _M_IX86 || defined i386 || defined __i386
// Not amd64, so presumably x86-32.
# define LMI_X86
# define LMI_X86_32
+# define LMI_MACHINE "x86_32"
#else // Unknown hardware.
# error Unknown hardware. Consider contributing support.
#endif // Unknown hardware.
@@ -86,6 +90,11 @@
# else // Unknown compiler.
# error Unknown compiler--cannot detect SSE. Consider contributing
support.
# endif // Unknown compiler.
+# if defined LMI_X87
+# define LMI_FPTYPE "x87"
+# else // !defined LMI_X87
+# define LMI_FPTYPE "sse"
+# endif // !defined LMI_X87
#endif // defined LMI_X86
// This selects a correct snprintf() for MinGW-w64.
@@ -114,8 +123,10 @@
// Order of tests is important here: real gcc must be tested last.
#if defined __clang__
# define LMI_CLANG
+# define LMI_COMPILER "clang"
#elif defined __GNUC__
# define LMI_GCC
+# define LMI_COMPILER "gcc"
#endif // defined __GNUC__
// It is impossible to compile lmi with g++ prior to version 3, though
@@ -188,6 +199,8 @@
# define LMI_MSVCRT
#endif // Compilers that use the msvc C runtime, without corrections such as
libmingwex.
+#define LMI_CONTEXT LMI_MACHINE ", " LMI_FPTYPE ", " LMI_COMPILER ", "
LMI_OSTYPE
+
#if defined HAVE_CONFIG_H // Using autoconf.
# include "config.h"
#else // Not using autoconf.
diff --git a/zero_test.cpp b/zero_test.cpp
index ba2d0fef..c9f26d95 100644
--- a/zero_test.cpp
+++ b/zero_test.cpp
@@ -2979,18 +2979,28 @@ int test_main(int, char*[])
test_former_rounding_problem();
test_toms748();
- std::cout << "TOMS 748 tests:" << std::endl;
+ std::cout << "--8<----8<--" << std::endl;
+ std::cout << LMI_CONTEXT << std::endl;
#if defined TEST_ALEFELD
+ std::cout << "TOMS 748 tests: Alefeld, tol 1.0e-7" << std::endl;
test_alefeld_examples(2650, 1.0e-7);
+ std::cout << "TOMS 748 tests: Alefeld, tol 1.0e-10" << std::endl;
test_alefeld_examples(2786, 1.0e-10);
+ std::cout << "TOMS 748 tests: Alefeld, tol 1.0e-15" << std::endl;
test_alefeld_examples(2859, 1.0e-15);
+ std::cout << "TOMS 748 tests: Alefeld, tol 0.0" << std::endl;
test_alefeld_examples(2884, 0.0);
#else // !defined TEST_ALEFELD
+ std::cout << "TOMS 748 tests: Brent, tol 1.0e-7" << std::endl;
test_alefeld_examples(2804, 1.0e-7);
+ std::cout << "TOMS 748 tests: Brent, tol 1.0e-10" << std::endl;
test_alefeld_examples(2905, 1.0e-10);
+ std::cout << "TOMS 748 tests: Brent, tol 1.0e-15" << std::endl;
test_alefeld_examples(2975, 1.0e-15);
+ std::cout << "TOMS 748 tests: Brent, tol 0.0" << std::endl;
test_alefeld_examples(3008, 0.0);
#endif // !defined TEST_ALEFELD
+ std::cout << "--8<----8<--" << std::endl;
return 0;
}