| /* Test file for mpfr_version. |
| |
| Copyright 2004-2016 Free Software Foundation, Inc. |
| Contributed by the AriC and Caramba projects, INRIA. |
| |
| This file is part of the GNU MPFR Library. |
| |
| The GNU MPFR Library is free software; you can redistribute it and/or modify |
| it under the terms of the GNU Lesser General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or (at your |
| option) any later version. |
| |
| The GNU MPFR Library is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
| License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public License |
| along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see |
| http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., |
| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ |
| |
| #ifdef HAVE_CONFIG_H |
| # include "config.h" |
| #endif |
| |
| #include <stdlib.h> |
| |
| #include "mpfr-intmax.h" |
| #include "mpfr-test.h" |
| |
| int |
| main (void) |
| { |
| int err = 0; |
| |
| /* Test the GMP and MPFR versions. */ |
| if (test_version ()) |
| exit (1); |
| |
| printf ("[tversion] MPFR %s\n", MPFR_VERSION_STRING); |
| |
| /* TODO: We may want to output info for non-GNUC-compat compilers too. See: |
| * http://sourceforge.net/p/predef/wiki/Compilers/ |
| * http://nadeausoftware.com/articles/2012/10/c_c_tip_how_detect_compiler_name_and_version_using_compiler_predefined_macros |
| * |
| * For ICC, do not check the __ICC macro as it is obsolete and not always |
| * defined. |
| */ |
| #define COMP "[tversion] Compiler: " |
| #ifdef __INTEL_COMPILER |
| # ifdef __VERSION__ |
| # define ICCV " [" __VERSION__ "]" |
| # else |
| # define ICCV "" |
| # endif |
| printf (COMP "ICC %d.%d.%d" ICCV "\n", __INTEL_COMPILER / 100, |
| __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE); |
| #elif (defined(__GNUC__) || defined(__clang__)) && defined(__VERSION__) |
| # ifdef __clang__ |
| # define COMP2 COMP |
| # else |
| # define COMP2 COMP "GCC " |
| # endif |
| printf (COMP2 "%s\n", __VERSION__); |
| #endif |
| |
| #ifdef __MPIR_VERSION |
| printf ("[tversion] MPIR: header %d.%d.%d, library %s\n", |
| __MPIR_VERSION, __MPIR_VERSION_MINOR, __MPIR_VERSION_PATCHLEVEL, |
| mpir_version); |
| #else |
| printf ("[tversion] GMP: header %d.%d.%d, library %s\n", |
| __GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL, |
| gmp_version); |
| #endif |
| |
| if ( |
| #ifdef MPFR_USE_THREAD_SAFE |
| ! |
| #endif |
| mpfr_buildopt_tls_p ()) |
| { |
| printf ("ERROR! mpfr_buildopt_tls_p() and macros" |
| " do not match!\n"); |
| err = 1; |
| } |
| |
| if ( |
| #ifdef MPFR_WANT_DECIMAL_FLOATS |
| ! |
| #endif |
| mpfr_buildopt_decimal_p ()) |
| { |
| printf ("ERROR! mpfr_buildopt_decimal_p() and macros" |
| " do not match!\n"); |
| err = 1; |
| } |
| |
| if ( |
| #if defined(MPFR_HAVE_GMP_IMPL) || defined(WANT_GMP_INTERNALS) |
| ! |
| #endif |
| mpfr_buildopt_gmpinternals_p ()) |
| { |
| printf ("ERROR! mpfr_buildopt_gmpinternals_p() and macros" |
| " do not match!\n"); |
| err = 1; |
| } |
| |
| printf ("[tversion] TLS = %s, decimal = %s, GMP internals = %s\n", |
| mpfr_buildopt_tls_p () ? "yes" : "no", |
| mpfr_buildopt_decimal_p () ? "yes" : "no", |
| mpfr_buildopt_gmpinternals_p () ? "yes" : "no"); |
| |
| printf ("[tversion] intmax_t = " |
| #if defined(_MPFR_H_HAVE_INTMAX_T) |
| "yes" |
| #else |
| "no" |
| #endif |
| ", printf = " |
| #if defined(HAVE_STDARG) && !defined(MPFR_USE_MINI_GMP) |
| "yes" |
| #else |
| "no" |
| #endif |
| "\n"); |
| |
| printf ("[tversion] gmp_printf: hhd = " |
| #if defined(NPRINTF_HH) |
| "no" |
| #else |
| "yes" |
| #endif |
| ", lld = " |
| #if defined(NPRINTF_LL) |
| "no" |
| #else |
| "yes" |
| #endif |
| ", jd = " |
| #if defined(NPRINTF_J) |
| "no" |
| #else |
| "yes" |
| #endif |
| ", td = " |
| #if defined(NPRINTF_T) |
| "no" |
| #else |
| "yes" |
| #endif |
| ", Ld = " |
| #if defined(NPRINTF_L) |
| "no" |
| #else |
| "yes" |
| #endif |
| "\n"); |
| |
| if (strcmp (mpfr_buildopt_tune_case (), MPFR_TUNE_CASE) != 0) |
| { |
| printf ("ERROR! mpfr_buildopt_tune_case() and MPFR_TUNE_CASE" |
| " do not match!\n %s\n %s\n", |
| mpfr_buildopt_tune_case (), MPFR_TUNE_CASE); |
| err = 1; |
| } |
| else |
| printf ("[tversion] MPFR tuning parameters from %s\n", MPFR_TUNE_CASE); |
| |
| if (strcmp (mpfr_get_patches (), "") != 0) |
| printf ("[tversion] MPFR patches: %s\n", mpfr_get_patches ()); |
| |
| return err; |
| } |