diff options
author | Khem Raj <raj.khem@gmail.com> | 2025-03-07 09:55:12 -0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-03-08 18:08:04 +0000 |
commit | 19584fedb82fa6486f049a2645e4b2356a607fda (patch) | |
tree | a66f97b5973ee723fed223989c3eca4e37c0e8aa | |
parent | 7cc86c0e5aebce6beae4f0af2a798f138abae39b (diff) | |
download | poky-19584fedb82fa6486f049a2645e4b2356a607fda.tar.gz |
mpfr: Apply the backport of Float128 patch
This is the final patch that got applied to mpfr upstream
so lets drop the version we are carrying in favour of this backported.
(From OE-Core rev: e6fa8eea0cd035623f06d51da89cf2e3b9eb7449)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-support/mpfr/mpfr/0001-include-math.h-to-use-predefined-_Float128-definitio.patch | 382 |
1 files changed, 347 insertions, 35 deletions
diff --git a/meta/recipes-support/mpfr/mpfr/0001-include-math.h-to-use-predefined-_Float128-definitio.patch b/meta/recipes-support/mpfr/mpfr/0001-include-math.h-to-use-predefined-_Float128-definitio.patch index 0dcbdce0db..bb813ee94d 100644 --- a/meta/recipes-support/mpfr/mpfr/0001-include-math.h-to-use-predefined-_Float128-definitio.patch +++ b/meta/recipes-support/mpfr/mpfr/0001-include-math.h-to-use-predefined-_Float128-definitio.patch | |||
@@ -1,44 +1,356 @@ | |||
1 | From 4f2af1afce6edb4ba1dfc9bb4849c9f300efe213 Mon Sep 17 00:00:00 2001 | 1 | From c37c9d599b9aced92e182507bf223440bbc9a9f1 Mon Sep 17 00:00:00 2001 |
2 | From: Khem Raj <raj.khem@gmail.com> | 2 | From: Vincent Lefevre <vincent@vinc17.net> |
3 | Date: Thu, 26 Dec 2024 19:44:12 -0800 | 3 | Date: Thu, 6 Mar 2025 01:34:28 +0100 |
4 | Subject: [PATCH] include math.h to use predefined _Float128 definition | 4 | Subject: [PATCH] Portability: clean up support for binary128 (a.k.a. |
5 | float128). | ||
5 | 6 | ||
6 | glibc has added this patch [1] which defines __HAVE_FLOAT128 for clang | 7 | This fixes a configure failure with Clang and glibc 2.41: |
7 | therefore include math.h to avoid defining _Float128 during configure if | 8 | https://bugs.gentoo.org/949962 |
8 | not needed. | 9 | https://sourceware.org/bugzilla/show_bug.cgi?id=32750 |
10 | https://sympa.inria.fr/sympa/arc/mpfr/2025-02/msg00025.html | ||
11 | https://sympa.inria.fr/sympa/arc/mpfr/2025-03/msg00001.html | ||
9 | 12 | ||
10 | Fixes | 13 | The issue is the following: in its configure script, GNU MPFR first |
11 | cannot combine with previous '__float128' declaration specifier | 14 | tests whether _Float128 is supported (without header inclusions); |
15 | if it isn't, MPFR then tests whether __float128 is supported, and | ||
16 | in such a case, it defines _Float128 as __float128 with | ||
12 | 17 | ||
13 | [1] https://sourceware.org/git/?p=glibc.git;a=blobdiff;f=sysdeps/x86/bits/floatn.h;h=ba030d270a73c71f166083b30dbaf89371ff49fa;hp=e661abaea469b8b916fd312cc42382ad4c5e220f;hb=d773aff467840f5ed305e40c180466e90bd88183;hpb=b2556550a0f952b2a841a0b4bddc999c2df1b233 | 18 | AC_DEFINE([_Float128],[__float128],[__float128 fallback]) |
14 | 19 | ||
15 | Upstream-Status: Submitted [https://sympa.inria.fr/sympa/arc/mpfr/2024-12/msg00001.html] | 20 | As Clang supports __float128 but not _Float128 (at least on x86_64, |
16 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | 21 | up to version 19), this fallback is selected. But glibc 2.41 has a |
22 | similar fallback, with a typedef: | ||
23 | |||
24 | typedef __float128 _Float128; | ||
25 | |||
26 | With the MPFR _Float128 macro defined as __float128, as soon as some | ||
27 | header such as <stdio.h> is included, this yields | ||
28 | |||
29 | typedef __float128 __float128; | ||
30 | |||
31 | which is incorrect. This first occurs in the | ||
32 | |||
33 | AC_MSG_CHECKING(for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency) | ||
34 | [...] | ||
35 | |||
36 | configure test (in configure.ac), hence the failure of this test and | ||
37 | the configure script. | ||
38 | |||
39 | As an attempt to avoid such an issue with header inclusion, a solution | ||
40 | should be to include the common headers in every configure test. | ||
41 | |||
42 | But since _Float128 is a reserved identifier, we must avoid defining | ||
43 | it as a macro (a typedef would also be incorrect). This is done here, | ||
44 | by defining a mpfr_float128 macro instead. In the public mpfr.h header | ||
45 | file, if the user has defined MPFR_WANT_FLOAT128: mpfr_float128 will | ||
46 | be defined as _Float128 by default (thus this will not change the API), | ||
47 | but if _Float128 is not supported, the user should define mpfr_float128 | ||
48 | as __float128 (or an equivalent type that is supported). | ||
49 | |||
50 | * acinclude.m4: changed _Float128 to mpfr_float128 in AC_DEFINE. | ||
51 | * configure.ac: updated a comment about _Float128. | ||
52 | * doc/README.dev: update about MPFR_WANT_FLOAT128 and _Float128. | ||
53 | * doc/mpfr.texi: in "Nomenclature and Types", added a paragraph about | ||
54 | binary128 support and the mpfr_float128 macro; update concerning the | ||
55 | functions related to binary128 (in particular, in the prototypes, | ||
56 | changed _Float128 to mpfr_float128). | ||
57 | * src/mpfr.h: under "#ifdef MPFR_WANT_FLOAT128", define mpfr_float128 | ||
58 | as _Float128 if not defined yet; in the prototypes, changed | ||
59 | _Float128 to mpfr_float128. | ||
60 | * src/get_float128.c, src/set_float128.c, tests/tset_float128.c: | ||
61 | changed _Float128 to mpfr_float128; updated comments. | ||
62 | * tests/tversion.c: for "float128 = yes", also output the actual type. | ||
63 | |||
64 | Upstream-Status: Backport [https://gitlab.inria.fr/mpfr/mpfr/-/commit/c37c9d599b9aced92e182507bf223440bbc9a9f1] | ||
65 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
17 | --- | 66 | --- |
18 | acinclude.m4 | 6 ++++-- | 67 | acinclude.m4 | 11 +++++++---- |
19 | 1 file changed, 4 insertions(+), 2 deletions(-) | 68 | configure.ac | 2 +- |
69 | doc/README.dev | 11 ++--------- | ||
70 | doc/mpfr.texi | 37 ++++++++++++++++++++++++++----------- | ||
71 | src/get_float128.c | 17 ++++++++++------- | ||
72 | src/mpfr.h | 10 ++++++++-- | ||
73 | src/set_float128.c | 15 +++++++++------ | ||
74 | tests/tset_float128.c | 8 ++++---- | ||
75 | tests/tversion.c | 8 +++++++- | ||
76 | 9 files changed, 74 insertions(+), 45 deletions(-) | ||
20 | 77 | ||
21 | diff --git a/acinclude.m4 b/acinclude.m4 | ||
22 | index 3d7910517..65c4eb9fd 100644 | ||
23 | --- a/acinclude.m4 | 78 | --- a/acinclude.m4 |
24 | +++ b/acinclude.m4 | 79 | +++ b/acinclude.m4 |
25 | @@ -805,8 +805,9 @@ dnl the "undefined reference" error disappear. | 80 | @@ -781,8 +781,11 @@ fi |
26 | if test "$enable_float128" != no; then | 81 | # End of decimal float checks |
27 | AC_MSG_CHECKING(if _Float128 with hex constants is supported) | 82 | |
28 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ | 83 | dnl Check if _Float128 or __float128 is available. We also require the |
29 | -volatile _Float128 x = 0x1.fp+16383f128; | 84 | -dnl compiler to support hex constants with the f128 or q suffix (this |
30 | -return x == 0; | 85 | -dnl prevents the _Float128 support with GCC's -std=c90, but who cares?). |
31 | + #include <math.h> | 86 | +dnl compiler to support hex constants with the f128 or q suffix respectively. |
32 | + volatile _Float128 x = 0x1.fp+16383f128; | 87 | +dnl If _Float128 is supported, then the mpfr_float128 macro should be |
33 | + return x == 0; | 88 | +dnl defined as this type. We do not define it here because this will be |
34 | ]])], | 89 | +dnl done in mpfr.h, and not defining it here is the only way to ensure |
35 | [AC_MSG_RESULT(yes) | 90 | +dnl that under "make check", mpfr.h really defines it. |
36 | AC_DEFINE([MPFR_WANT_FLOAT128],1,[Build float128 functions])], | 91 | dnl Note: We use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE since an |
37 | @@ -816,6 +817,7 @@ dnl Use the q suffix in this case. | 92 | dnl error may occur only at link time, such as under NetBSD: |
38 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[ | 93 | dnl https://mail-index.netbsd.org/pkgsrc-users/2018/02/02/msg026220.html |
39 | #define _Float128 __float128 | 94 | @@ -809,8 +812,8 @@ return x == 0; |
40 | ]], [[ | ||
41 | +#include <math.h> | ||
42 | volatile _Float128 x = 0x1.fp+16383q; | ||
43 | return x == 0; | ||
44 | ]])], | 95 | ]])], |
96 | [AC_MSG_RESULT(yes) | ||
97 | AC_DEFINE([MPFR_WANT_FLOAT128],2, | ||
98 | - [Build float128 functions with float128 fallback]) | ||
99 | - AC_DEFINE([_Float128],[__float128],[__float128 fallback])], | ||
100 | + [Build float128 functions with __float128 fallback]) | ||
101 | + AC_DEFINE([mpfr_float128],[__float128],[__float128 fallback])], | ||
102 | [AC_MSG_RESULT(no) | ||
103 | if test "$enable_float128" = yes; then | ||
104 | AC_MSG_ERROR( | ||
105 | --- a/configure.ac | ||
106 | +++ b/configure.ac | ||
107 | @@ -277,7 +277,7 @@ AC_ARG_ENABLE(decimal-float, | ||
108 | |||
109 | dnl Warning! Not to be confused with _Decimal128. Thus it is better | ||
110 | dnl to say binary128 in the description. It can correspond to either | ||
111 | -dnl _Float128 (ISO/IEC TS 18661) or __float128 (old type name). | ||
112 | +dnl _Float128 (ISO C23) or __float128 (old type name). | ||
113 | AC_ARG_ENABLE(float128, | ||
114 | [ --disable-float128 explicitly disable binary128 support | ||
115 | --enable-float128 build conversion functions from/to binary128 | ||
116 | --- a/doc/README.dev | ||
117 | +++ b/doc/README.dev | ||
118 | @@ -836,13 +836,6 @@ does not conform to the C standard by de | ||
119 | |||
120 | ===================================================================== | ||
121 | |||
122 | -In MPFR, _Float128 may be defined as __float128 if the latter is provided | ||
123 | -by the compiler, but not the former. In such a case, do not assume that | ||
124 | -_Float128 and long double are necessarily different types (as required by | ||
125 | -the WG14 N2579 draft "IEC 60559 interchange and extended types"). | ||
126 | - | ||
127 | - ===================================================================== | ||
128 | - | ||
129 | For string suffix selection, do not write expressions of the form | ||
130 | string + integer, such as | ||
131 | |||
132 | --- a/doc/mpfr.texi | ||
133 | +++ b/doc/mpfr.texi | ||
134 | @@ -833,6 +833,26 @@ MPFR has a global (or per-thread) flag f | ||
135 | provides operations on flags (@ref{Exceptions}). This C data type is used | ||
136 | to represent a group of flags (or a mask). | ||
137 | |||
138 | +@cindex binary128 | ||
139 | +@cindex float128 | ||
140 | +@tindex @code{_Float128} | ||
141 | +@tindex @code{__float128} | ||
142 | +@tindex @code{mpfr_float128} | ||
143 | +MPFR can be built with binary128 support (a.k.a.@: float128) for some | ||
144 | +conversion functions if the @samp{_Float128} type (from ISO C23) or | ||
145 | +the @samp{__float128} type (a common extension) is available. This is | ||
146 | +automatically detected, but the @samp{--enable-float128} configure option | ||
147 | +can also be used to ensure this support. For this support, MPFR uses a | ||
148 | +@code{mpfr_float128} macro, which needs to be defined as a supported type | ||
149 | +for the binary128 format, typically @samp{_Float128} or @samp{__float128}, | ||
150 | +depending on the compiler and the system used to compile the user code. | ||
151 | +Before including @file{mpfr.h}, the user needs to do the following (in | ||
152 | +any order): define the @code{MPFR_WANT_FLOAT128} macro and define the | ||
153 | +@code{mpfr_float128} macro as the actual float128 type; @file{mpfr.h} will | ||
154 | +define @code{mpfr_float128} as @samp{_Float128} by default, but mainly for | ||
155 | +compatibility with software written for MPFR@tie{}4.1.x and 4.2.0, where | ||
156 | +the prototypes used @samp{_Float128}. | ||
157 | + | ||
158 | @node MPFR Variable Conventions, Rounding, Nomenclature and Types, MPFR Basics | ||
159 | @comment node-name, next, previous, up | ||
160 | @section MPFR Variable Conventions | ||
161 | @@ -3646,9 +3666,9 @@ return zero otherwise. | ||
162 | @end deftypefun | ||
163 | |||
164 | @deftypefun int mpfr_buildopt_float128_p (void) | ||
165 | -Return a non-zero value if MPFR was compiled with @samp{_Float128} support | ||
166 | -(that is, MPFR was built with the @samp{--enable-float128} configure option), | ||
167 | -return zero otherwise. | ||
168 | +Return a non-zero value if MPFR was compiled with binary128 support | ||
169 | +(a.k.a.@: float128), return zero otherwise. @xref{Nomenclature and Types} | ||
170 | +for additional information. | ||
171 | @end deftypefun | ||
172 | |||
173 | @deftypefun int mpfr_buildopt_decimal_p (void) | ||
174 | --- a/src/get_float128.c | ||
175 | +++ b/src/get_float128.c | ||
176 | @@ -1,5 +1,5 @@ | ||
177 | /* mpfr_get_float128 -- convert a multiple precision floating-point | ||
178 | - number to a _Float128 number | ||
179 | + number to a binary128 (a.k.a. float128) number | ||
180 | |||
181 | Copyright 2012-2023 Free Software Foundation, Inc. | ||
182 | Contributed by the AriC and Caramba projects, INRIA. | ||
183 | @@ -25,17 +25,20 @@ https://www.gnu.org/licenses/ or write t | ||
184 | |||
185 | #ifdef MPFR_WANT_FLOAT128 | ||
186 | |||
187 | +/* Note: mpfr_get_float128 is a macro defined as the actual binary128 type: | ||
188 | + either _Float128 or __float128. */ | ||
189 | + | ||
190 | /* generic code */ | ||
191 | -_Float128 | ||
192 | +mpfr_float128 | ||
193 | mpfr_get_float128 (mpfr_srcptr x, mpfr_rnd_t rnd_mode) | ||
194 | { | ||
195 | |||
196 | if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (x))) | ||
197 | - return (_Float128) mpfr_get_d (x, rnd_mode); | ||
198 | + return (mpfr_float128) mpfr_get_d (x, rnd_mode); | ||
199 | else /* now x is a normal non-zero number */ | ||
200 | { | ||
201 | - _Float128 r; /* result */ | ||
202 | - _Float128 m; | ||
203 | + mpfr_float128 r; /* result */ | ||
204 | + mpfr_float128 m; | ||
205 | mpfr_exp_t e; /* exponent of x (before rounding) */ | ||
206 | mpfr_exp_t sh; /* exponent shift, so that x/2^sh is in the double range */ | ||
207 | const int emin = -16381; | ||
208 | @@ -62,7 +65,7 @@ mpfr_get_float128 (mpfr_srcptr x, mpfr_r | ||
209 | |||
210 | MPFR_SAVE_EXPO_MARK (expo); | ||
211 | |||
212 | - /* First round x to the target _Float128 precision, taking the | ||
213 | + /* First round x to the target binary128 precision, taking the | ||
214 | reduced precision of the subnormals into account, so that all | ||
215 | subsequent operations are exact (this avoids double rounding | ||
216 | problems). */ | ||
217 | @@ -83,7 +86,7 @@ mpfr_get_float128 (mpfr_srcptr x, mpfr_r | ||
218 | always work if GMP_NUMB_BITS > IEEE_FLOAT128_MANT_DIG. | ||
219 | MPFR_LIMB_HIGHBIT has the advantage to fit on 1 bit. */ | ||
220 | r += yp[i]; | ||
221 | - r *= 1 / (2 * (_Float128) MPFR_LIMB_HIGHBIT); | ||
222 | + r *= 1 / (2 * (mpfr_float128) MPFR_LIMB_HIGHBIT); | ||
223 | } | ||
224 | |||
225 | mpfr_clear (y); | ||
226 | --- a/src/mpfr.h | ||
227 | +++ b/src/mpfr.h | ||
228 | @@ -476,8 +476,14 @@ __MPFR_DECLSPEC int mpfr_set_decimal128 | ||
229 | #endif | ||
230 | __MPFR_DECLSPEC int mpfr_set_ld (mpfr_ptr, long double, mpfr_rnd_t); | ||
231 | #ifdef MPFR_WANT_FLOAT128 | ||
232 | -__MPFR_DECLSPEC int mpfr_set_float128 (mpfr_ptr, _Float128, mpfr_rnd_t); | ||
233 | -__MPFR_DECLSPEC _Float128 mpfr_get_float128 (mpfr_srcptr, mpfr_rnd_t); | ||
234 | +/* The user is free to define mpfr_float128 as another equivalent type, | ||
235 | + such as __float128 if this one is supported by the current compiler | ||
236 | + but _Float128 isn't. */ | ||
237 | +# ifndef mpfr_float128 | ||
238 | +# define mpfr_float128 _Float128 | ||
239 | +# endif | ||
240 | +__MPFR_DECLSPEC int mpfr_set_float128 (mpfr_ptr, mpfr_float128, mpfr_rnd_t); | ||
241 | +__MPFR_DECLSPEC mpfr_float128 mpfr_get_float128 (mpfr_srcptr, mpfr_rnd_t); | ||
242 | #endif | ||
243 | __MPFR_DECLSPEC int mpfr_set_z (mpfr_ptr, mpz_srcptr, mpfr_rnd_t); | ||
244 | __MPFR_DECLSPEC int mpfr_set_z_2exp (mpfr_ptr, mpz_srcptr, mpfr_exp_t, | ||
245 | --- a/src/set_float128.c | ||
246 | +++ b/src/set_float128.c | ||
247 | @@ -1,4 +1,4 @@ | ||
248 | -/* mpfr_set_float128 -- convert a machine _Float128 number to | ||
249 | +/* mpfr_set_float128 -- convert a binary128 (a.k.a. float128) number to | ||
250 | a multiple precision floating-point number | ||
251 | |||
252 | Copyright 2012-2023 Free Software Foundation, Inc. | ||
253 | @@ -26,8 +26,11 @@ https://www.gnu.org/licenses/ or write t | ||
254 | |||
255 | #ifdef MPFR_WANT_FLOAT128 | ||
256 | |||
257 | +/* Note: mpfr_get_float128 is a macro defined as the actual binary128 type: | ||
258 | + either _Float128 or __float128. */ | ||
259 | + | ||
260 | #if MPFR_WANT_FLOAT128 == 1 | ||
261 | -/* _Float128 type from ISO/IEC TS 18661 */ | ||
262 | +/* _Float128 type from ISO C23 */ | ||
263 | # define MPFR_FLOAT128_MAX 0x1.ffffffffffffffffffffffffffffp+16383f128 | ||
264 | #elif MPFR_WANT_FLOAT128 == 2 | ||
265 | /* __float128 type (GNU C extension) */ | ||
266 | @@ -37,12 +40,12 @@ https://www.gnu.org/licenses/ or write t | ||
267 | #endif | ||
268 | |||
269 | int | ||
270 | -mpfr_set_float128 (mpfr_ptr r, _Float128 d, mpfr_rnd_t rnd_mode) | ||
271 | +mpfr_set_float128 (mpfr_ptr r, mpfr_float128 d, mpfr_rnd_t rnd_mode) | ||
272 | { | ||
273 | mpfr_t t; | ||
274 | mp_limb_t *tp; | ||
275 | int inexact, shift_exp, neg, e, i; | ||
276 | - _Float128 p[14], q[14]; | ||
277 | + mpfr_float128 p[14], q[14]; | ||
278 | MPFR_SAVE_EXPO_DECL (expo); | ||
279 | |||
280 | /* Check for NaN */ | ||
281 | @@ -66,7 +69,7 @@ mpfr_set_float128 (mpfr_ptr r, _Float128 | ||
282 | return 0; | ||
283 | } | ||
284 | /* Check for ZERO */ | ||
285 | - else if (MPFR_UNLIKELY (d == (_Float128) 0.0)) | ||
286 | + else if (MPFR_UNLIKELY (d == (mpfr_float128) 0.0)) | ||
287 | return mpfr_set_d (r, (double) d, rnd_mode); | ||
288 | |||
289 | shift_exp = 0; /* invariant: remainder to deal with is d*2^shift_exp */ | ||
290 | @@ -129,7 +132,7 @@ mpfr_set_float128 (mpfr_ptr r, _Float128 | ||
291 | |||
292 | for (i = MPFR_LAST_LIMB (t); i >= 0; i--) | ||
293 | { | ||
294 | - d *= 2 * (_Float128) MPFR_LIMB_HIGHBIT; | ||
295 | + d *= 2 * (mpfr_float128) MPFR_LIMB_HIGHBIT; | ||
296 | tp[i] = (mp_limb_t) d; | ||
297 | d -= tp[i]; | ||
298 | } | ||
299 | --- a/tests/tset_float128.c | ||
300 | +++ b/tests/tset_float128.c | ||
301 | @@ -33,7 +33,7 @@ https://www.gnu.org/licenses/ or write t | ||
302 | static void | ||
303 | check_special (void) | ||
304 | { | ||
305 | - _Float128 f; | ||
306 | + mpfr_float128 f; | ||
307 | mpfr_t x; | ||
308 | |||
309 | mpfr_init2 (x, 113); | ||
310 | @@ -162,7 +162,7 @@ static void | ||
311 | check_large (void) | ||
312 | { | ||
313 | mpfr_exp_t emin, emax; | ||
314 | - _Float128 f, e; | ||
315 | + mpfr_float128 f, e; | ||
316 | int i; | ||
317 | mpfr_t x, y; | ||
318 | int r; | ||
319 | @@ -177,7 +177,7 @@ check_large (void) | ||
320 | /* check with the largest float128 number 2^16384*(1-2^(-113)) */ | ||
321 | for (f = 1.0, i = 0; i < 113; i++) | ||
322 | f = f + f; | ||
323 | - f = f - (_Float128) 1.0; | ||
324 | + f = f - (mpfr_float128) 1.0; | ||
325 | mpfr_set_ui (y, 1, MPFR_RNDN); | ||
326 | mpfr_mul_2ui (y, y, 113, MPFR_RNDN); | ||
327 | mpfr_sub_ui (y, y, 1, MPFR_RNDN); | ||
328 | @@ -258,7 +258,7 @@ check_small (void) | ||
329 | { | ||
330 | int t[5] = { 1, 2, 17, 111, 112 }; | ||
331 | mpfr_exp_t emin; | ||
332 | - _Float128 e, f; | ||
333 | + mpfr_float128 e, f; | ||
334 | int i, j, neg, inex, r; | ||
335 | mpfr_t w, x, y, z; | ||
336 | |||
337 | --- a/tests/tversion.c | ||
338 | +++ b/tests/tversion.c | ||
339 | @@ -309,10 +309,16 @@ main (void) | ||
340 | err = 1; | ||
341 | } | ||
342 | |||
343 | +#ifdef MPFR_WANT_FLOAT128 | ||
344 | +# define MPFR_F128 "yes (" MAKE_STR(mpfr_float128) ")" | ||
345 | +#else | ||
346 | +# define MPFR_F128 "no" | ||
347 | +#endif | ||
348 | + | ||
349 | (printf) ("[tversion] TLS = %s, float128 = %s, decimal = %s," | ||
350 | " GMP internals = %s\n", | ||
351 | mpfr_buildopt_tls_p () ? "yes" : "no", | ||
352 | - mpfr_buildopt_float128_p () ? "yes" : "no", | ||
353 | + MPFR_F128, | ||
354 | mpfr_buildopt_decimal_p () ? "yes" | ||
355 | #if defined(DECIMAL_BID_FORMAT) | ||
356 | " (BID)" | ||