* [PATCH v4 1/2] float128: Add strtof128, wcstof128, and related functions.
2017-06-09 16:54 [PATCH v4 0/2] Add string functions and libm tests for _Float128 Gabriel F. T. Gomes
2017-06-09 16:54 ` [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual Gabriel F. T. Gomes
@ 2017-06-09 16:54 ` Gabriel F. T. Gomes
2017-06-09 20:28 ` [PATCH v4 0/2] Add string functions and libm tests for _Float128 Joseph Myers
2 siblings, 0 replies; 6+ messages in thread
From: Gabriel F. T. Gomes @ 2017-06-09 16:54 UTC (permalink / raw)
To: libc-alpha
From: "Paul E. Murphy" <murphyp@linux.vnet.ibm.com>
Changes since v3:
- Removed the definition of CHAR (defined before inclusion).
- Converted the unnecessarily complex macros (_GEN and _DO) into IF_FLOAT128.
Changes since v2:
- Fixed the condition for defining F128 (no dependency on compiler version).
- Fixed the condition for defining CHAR (no dependency on __HAVE_FLOAT128).
- Removed the unnecessary indirections in the macros _GEN and _DO.
- Fixed the condition for declaring wcstof128 (__USE_GNU, not TS 18661-3).
Changes since v1:
- Removed NEWS entry to the commit that actually enables strtof128.
- Removed the check for __STDC_WANT_IEC_60559_TYPES_EXT__ from blocks of code
that are inside __USE_GNU conditional.
- Moved the declaration of wcstof128 closer to wcstod, wcstof, and wcstold.
- Redefined F128 in the tests to use the existing workaround for old.
compilers (i.e.: __f128 ()).
- Added descriptive comment before the copyright, as needed.
-- 8< --
The implementations are contained with sysdeps/ieee754/float128 as
they are only built when _Float128 is enabled within libc/m.
2017-05-23 Paul E. Murphy <murphyp@linux.vnet.ibm.com>
* include/gmp.h (__mpn_construct_float128): New declaration.
* include/stdlib.h: Include bits/floatn.h for _Float128 tests.
(__strtof128_l): New declaration.
(__strtof128_nan): Likewise.
(__wcstof128_nan): Likewise.
(__strtof128_internal): Likewise.
(____strtof128_l_internal): Likewise.
* include/wchar.h: Include bits/floatn.h for _Float128 tests.
(__wcstof128_l): New declaration.
(__wcstof128_internal): Likewise.
* stdlib/Makefile (bug-strtod2): Link libm too.
* stdlib/stdlib.h (strtof128): New declaration.
(strtof128_l): Likewise.
* stdlib/tst-strtod-nan-locale-main.c: Updated to use
tst-strtod.h macros to ensure float128 gets tested too.
* stdlib/tst-strtod-round-skeleton.c (CHOOSE_f128): New macro.
* stdlib/tst-strtod.h: Include bits/floatn.h for _Float128
tests.
(IF_FLOAT128): New macro.
(GEN_TEST_STRTOD): Update to optionally include _Float128 in
the tests.
(STRTOD_TEST_FOREACH): Likewise.
* sysdeps/ieee754/float128/Makefile: Insert new strtof128 and
wcstof128 functions into libc.
* sysdeps/ieee754/float128/Versions: Add exports for the above
new functions.
* sysdeps/ieee754/float128/mpn2float128.c: New file.
* sysdeps/ieee754/float128/strtod_nan_float128.h: New file.
* sysdeps/ieee754/float128/strtof128.c: New file.
* sysdeps/ieee754/float128/strtof128_l.c: New file.
* sysdeps/ieee754/float128/strtof128_nan.c: New file.
* sysdeps/ieee754/float128/wcstof128.c: New file.
* sysdeps/ieee754/float128/wcstof128_l.c: New file.
* sysdeps/ieee754/float128/wcstof128_nan.c: New fike.
* wcsmbs/Makefile: (CFLAGS-wcstof128.c): Append strtox-CFLAGS.
(CFLAGS-wcstof128_l): Likewise.
* wcsmbs/wchar.h: Include bits/floatn.h for _Float128 tests.
(wcstof128): New declaration.
(wcstof128_l): Likewise.
---
include/gmp.h | 4 ++
include/stdlib.h | 29 ++++++++++++++
include/wchar.h | 13 +++++++
stdlib/Makefile | 1 +
stdlib/stdlib.h | 14 +++++++
stdlib/tst-strtod-nan-locale-main.c | 36 ++++++++---------
stdlib/tst-strtod-round-skeleton.c | 1 +
stdlib/tst-strtod.h | 36 +++++++++++------
sysdeps/ieee754/float128/Makefile | 5 +++
sysdeps/ieee754/float128/Versions | 10 +++++
sysdeps/ieee754/float128/mpn2float128.c | 54 ++++++++++++++++++++++++++
sysdeps/ieee754/float128/strtod_nan_float128.h | 33 ++++++++++++++++
sysdeps/ieee754/float128/strtof128.c | 34 ++++++++++++++++
sysdeps/ieee754/float128/strtof128_l.c | 43 ++++++++++++++++++++
sysdeps/ieee754/float128/strtof128_nan.c | 28 +++++++++++++
sysdeps/ieee754/float128/wcstof128.c | 30 ++++++++++++++
sysdeps/ieee754/float128/wcstof128_l.c | 30 ++++++++++++++
sysdeps/ieee754/float128/wcstof128_nan.c | 24 ++++++++++++
wcsmbs/Makefile | 2 +
wcsmbs/wchar.h | 15 +++++++
20 files changed, 413 insertions(+), 29 deletions(-)
create mode 100644 sysdeps/ieee754/float128/mpn2float128.c
create mode 100644 sysdeps/ieee754/float128/strtod_nan_float128.h
create mode 100644 sysdeps/ieee754/float128/strtof128.c
create mode 100644 sysdeps/ieee754/float128/strtof128_l.c
create mode 100644 sysdeps/ieee754/float128/strtof128_nan.c
create mode 100644 sysdeps/ieee754/float128/wcstof128.c
create mode 100644 sysdeps/ieee754/float128/wcstof128_l.c
create mode 100644 sysdeps/ieee754/float128/wcstof128_nan.c
diff --git a/include/gmp.h b/include/gmp.h
index e6f635e..3590acf 100644
--- a/include/gmp.h
+++ b/include/gmp.h
@@ -31,5 +31,9 @@ extern double __mpn_construct_double (mp_srcptr frac_ptr, int expt,
extern long double __mpn_construct_long_double (mp_srcptr frac_ptr, int expt,
int sign);
+#if __HAVE_DISTINCT_FLOAT128
+extern _Float128 __mpn_construct_float128 (mp_srcptr frac_ptr, int expt,
+ int sign);
+#endif
#endif
diff --git a/include/stdlib.h b/include/stdlib.h
index 5847445..cae9f2c 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -219,6 +219,35 @@ libc_hidden_proto (__wcstof_nan)
libc_hidden_proto (__wcstod_nan)
libc_hidden_proto (__wcstold_nan)
+/* Enable _FloatN bits as needed. */
+#include <bits/floatn.h>
+
+#if __HAVE_DISTINCT_FLOAT128
+extern __typeof (strtof128_l) __strtof128_l;
+
+libc_hidden_proto (__strtof128_l)
+libc_hidden_proto (strtof128)
+
+extern _Float128 __strtof128_nan (const char *, char **, char)
+ internal_function;
+extern _Float128 __wcstof128_nan (const wchar_t *, wchar_t **, wchar_t)
+ internal_function;
+
+libc_hidden_proto (__strtof128_nan)
+libc_hidden_proto (__wcstof128_nan)
+
+extern _Float128 __strtof128_internal (const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __group);
+libc_hidden_proto (__strtof128_internal)
+
+extern _Float128 ____strtof128_l_internal (const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __group, __locale_t __loc);
+
+libc_hidden_proto (____strtof128_l_internal)
+#endif
+
extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign);
extern char *__fcvt (double __value, int __ndigit, int *__restrict __decpt,
diff --git a/include/wchar.h b/include/wchar.h
index a773d56..55de9be 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -4,6 +4,8 @@
# ifndef _ISOMAC
# ifdef _WCHAR_H
+#include <bits/floatn.h>
+
extern __typeof (wcscasecmp_l) __wcscasecmp_l;
extern __typeof (wcsncasecmp_l) __wcsncasecmp_l;
extern __typeof (wcscoll_l) __wcscoll_l;
@@ -70,6 +72,17 @@ libc_hidden_proto (wcstoll)
libc_hidden_proto (wcstoul)
libc_hidden_proto (wcstoull)
+#if __HAVE_DISTINCT_FLOAT128
+extern __typeof (wcstof128_l) __wcstof128_l;
+libc_hidden_proto (__wcstof128_l)
+extern _Float128 __wcstof128_internal (const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ int __group) __THROW;
+
+libc_hidden_proto (__wcstof128_internal)
+libc_hidden_proto (wcstof128)
+#endif
+
libc_hidden_proto (__wcscasecmp_l)
libc_hidden_proto (__wcsncasecmp_l)
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 9b0acce..0314d59 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -198,6 +198,7 @@ $(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
libof-tst-putenvmod = extramodules
$(objpfx)bug-getcontext: $(libm)
+$(objpfx)bug-strtod2: $(libm)
$(objpfx)tst-strtod-round: $(libm)
$(objpfx)tst-tininess: $(libm)
$(objpfx)tst-strtod-underflow: $(libm)
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 0a693c2..6f1e70e 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -128,6 +128,13 @@ extern long double strtold (const char *__restrict __nptr,
__THROW __nonnull ((1));
#endif
+#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
+/* Likewise for the '_Float128' format */
+extern _Float128 strtof128 (const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __THROW __nonnull ((1));
+#endif
+
/* Convert a string to a long integer. */
extern long int strtol (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
@@ -236,6 +243,13 @@ extern long double strtold_l (const char *__restrict __nptr,
char **__restrict __endptr,
__locale_t __loc)
__THROW __nonnull ((1, 3));
+
+# if __HAVE_FLOAT128
+extern _Float128 strtof128_l (const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __THROW __nonnull ((1, 3));
+# endif
#endif /* GNU */
diff --git a/stdlib/tst-strtod-nan-locale-main.c b/stdlib/tst-strtod-nan-locale-main.c
index 8044dad..8222174 100644
--- a/stdlib/tst-strtod-nan-locale-main.c
+++ b/stdlib/tst-strtod-nan-locale-main.c
@@ -23,6 +23,8 @@
#include <stdlib.h>
#include <wchar.h>
+#include <stdlib/tst-strtod.h>
+
#define STR_(X) #X
#define STR(X) STR_(X)
#define FNPFXS STR (FNPFX)
@@ -30,20 +32,22 @@
#define CONCAT(X, Y) CONCAT_ (X, Y)
#define FNX(FN) CONCAT (FNPFX, FN)
-#define TEST(LOC, STR, FN, TYPE) \
- do \
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static int \
+test_strto ## FSUF (const char * loc, CHAR * s) \
+{ \
+ CHAR *ep; \
+ FTYPE val = FNX (FSUF) (s, &ep); \
+ if (isnan (val) && *ep == 0) \
+ printf ("PASS: %s: " FNPFXS #FSUF " (" SFMT ")\n", loc, s); \
+ else \
{ \
- CHAR *ep; \
- TYPE val = FNX (FN) (STR, &ep); \
- if (isnan (val) && *ep == 0) \
- printf ("PASS: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- else \
- { \
- printf ("FAIL: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- result = 1; \
- } \
+ printf ("FAIL: %s: " FNPFXS #FSUF " (" SFMT ")\n", loc, s); \
+ return 1; \
} \
- while (0)
+ return 0; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
test_one_locale (const char *loc)
@@ -64,13 +68,9 @@ test_one_locale (const char *loc)
s[4] = L_('A') + i - 10;
s[5] = L_(')');
s[6] = 0;
- TEST (loc, s, f, float);
- TEST (loc, s, d, double);
- TEST (loc, s, ld, long double);
+ result |= STRTOD_TEST_FOREACH (test_strto, loc, s);
s[4] = L_('a') + i - 10;
- TEST (loc, s, f, float);
- TEST (loc, s, d, double);
- TEST (loc, s, ld, long double);
+ result |= STRTOD_TEST_FOREACH (test_strto, loc, s);
}
return result;
}
diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
index 73603e6..1a9f663 100644
--- a/stdlib/tst-strtod-round-skeleton.c
+++ b/stdlib/tst-strtod-round-skeleton.c
@@ -93,6 +93,7 @@
/* Add type specific choosing macros below. */
#define CHOOSE_f(f,...) f
#define CHOOSE_d(f,d,...) d
+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113
/* long double is special, and handled above. */
/* Selector for expected result field of a given type. */
diff --git a/stdlib/tst-strtod.h b/stdlib/tst-strtod.h
index bf5f901..e23ac3f 100644
--- a/stdlib/tst-strtod.h
+++ b/stdlib/tst-strtod.h
@@ -21,11 +21,24 @@
#define FSTRLENMAX 128
+#include <bits/floatn.h>
+
+#define F128 __f128 ()
+
+/* Test strfromf128 and strtof128 on all platforms that provide them,
+ whether or not the type _Float128 is ABI-distinct from long double. */
+#if __HAVE_FLOAT128
+# define IF_FLOAT128(x) x
+#else
+# define IF_FLOAT128(x)
+#endif
+
/* Splat n variants of the same test for the various strtod functions. */
-#define GEN_TEST_STRTOD_FOREACH(mfunc, ...) \
- mfunc ( f, float, strfromf, f, f, ##__VA_ARGS__) \
- mfunc ( d, double, strfromd, , , ##__VA_ARGS__) \
- mfunc ( ld, long double, strfroml, L, l, ##__VA_ARGS__)
+#define GEN_TEST_STRTOD_FOREACH(mfunc, ...) \
+ mfunc ( f, float, strfromf, f, f, ##__VA_ARGS__) \
+ mfunc ( d, double, strfromd, , , ##__VA_ARGS__) \
+ mfunc ( ld, long double, strfroml, L, l, ##__VA_ARGS__) \
+ IF_FLOAT128 (mfunc (f128, _Float128, strfromf128, F128, f128, ##__VA_ARGS__))
/* The arguments to the generated macros are:
FSUF - Function suffix
FTYPE - float type
@@ -36,13 +49,14 @@
-#define STRTOD_TEST_FOREACH(mfunc, ...) \
-({ \
- int result = 0; \
- result |= mfunc ## f (__VA_ARGS__); \
- result |= mfunc ## d (__VA_ARGS__); \
- result |= mfunc ## ld (__VA_ARGS__); \
- result; \
+#define STRTOD_TEST_FOREACH(mfunc, ...) \
+({ \
+ int result = 0; \
+ result |= mfunc ## f (__VA_ARGS__); \
+ result |= mfunc ## d (__VA_ARGS__); \
+ result |= mfunc ## ld (__VA_ARGS__); \
+ IF_FLOAT128 (result |= mfunc ## f128 (__VA_ARGS__)); \
+ result; \
})
diff --git a/sysdeps/ieee754/float128/Makefile b/sysdeps/ieee754/float128/Makefile
index c07586c..166e630 100644
--- a/sysdeps/ieee754/float128/Makefile
+++ b/sysdeps/ieee754/float128/Makefile
@@ -1,3 +1,8 @@
ifeq ($(subdir),stdlib)
routines += float1282mpn strfromf128
+routines += strtof128 strtof128_l strtof128_nan mpn2float128
+endif
+
+ifeq ($(subdir),wcsmbs)
+routines += wcstof128_l wcstof128 wcstof128_nan
endif
diff --git a/sysdeps/ieee754/float128/Versions b/sysdeps/ieee754/float128/Versions
index caf2064..ef9df2d 100644
--- a/sysdeps/ieee754/float128/Versions
+++ b/sysdeps/ieee754/float128/Versions
@@ -4,7 +4,17 @@
%endif
libc {
FLOAT128_VERSION {
+ __strtof128_internal;
+ __wcstof128_internal;
strfromf128;
+ strtof128;
+ strtof128_l;
+ wcstof128;
+ wcstof128_l;
+ }
+ GLIBC_PRIVATE {
+ # For __nanf128.
+ __strtof128_nan;
}
}
libm {
diff --git a/sysdeps/ieee754/float128/mpn2float128.c b/sysdeps/ieee754/float128/mpn2float128.c
new file mode 100644
index 0000000..12f703a
--- /dev/null
+++ b/sysdeps/ieee754/float128/mpn2float128.c
@@ -0,0 +1,54 @@
+/* Convert a number in multi-precision format to _Float128.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "gmp.h"
+#include "gmp-impl.h"
+#include <float.h>
+#include <math.h>
+
+#include "ieee754_float128.h"
+
+/* Convert a multi-precision integer of the needed number of bits (113 for
+ binary128) and an integral power of two to a `_Float128' in IEEE854
+ quad-precision format. */
+
+_Float128
+__mpn_construct_float128 (mp_srcptr frac_ptr, int expt, int sign)
+{
+ union ieee854_float128 u;
+
+ u.ieee.negative = sign;
+ u.ieee.exponent = expt + IEEE854_FLOAT128_BIAS;
+#if BITS_PER_MP_LIMB == 32
+ u.ieee.mantissa3 = frac_ptr[0];
+ u.ieee.mantissa2 = frac_ptr[1];
+ u.ieee.mantissa1 = frac_ptr[2];
+ u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
+ << (FLT128_MANT_DIG - 96)) - 1);
+#elif BITS_PER_MP_LIMB == 64
+ u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa2 = frac_ptr[0] >> 32;
+ u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
+ u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
+ << (FLT128_MANT_DIG - 96)) - 1);
+#else
+ #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
+#endif
+
+ return u.d;
+}
diff --git a/sysdeps/ieee754/float128/strtod_nan_float128.h b/sysdeps/ieee754/float128/strtod_nan_float128.h
new file mode 100644
index 0000000..79329fb
--- /dev/null
+++ b/sysdeps/ieee754/float128/strtod_nan_float128.h
@@ -0,0 +1,33 @@
+/* Convert string for NaN payload to corresponding NaN. For _Float128.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define FLOAT _Float128
+#define SET_MANTISSA(flt, mant) \
+ do \
+ { \
+ union ieee854_float128 u; \
+ u.d = (flt); \
+ u.ieee_nan.mantissa0 = 0; \
+ u.ieee_nan.mantissa1 = 0; \
+ u.ieee_nan.mantissa2 = (mant) >> 32; \
+ u.ieee_nan.mantissa3 = (mant); \
+ if ((u.ieee.mantissa0 | u.ieee.mantissa1 \
+ | u.ieee.mantissa2 | u.ieee.mantissa3) != 0) \
+ (flt) = u.d; \
+ } \
+ while (0)
diff --git a/sysdeps/ieee754/float128/strtof128.c b/sysdeps/ieee754/float128/strtof128.c
new file mode 100644
index 0000000..63cc80d
--- /dev/null
+++ b/sysdeps/ieee754/float128/strtof128.c
@@ -0,0 +1,34 @@
+/* strtof128 wrapper of strtof128_l.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* The actual implementation for all floating point sizes is in strtod.c.
+ These macros tell it to produce the `_Float128' version, `strtof128'. */
+
+#define FLOAT _Float128
+#define FLT FLT128
+#ifdef USE_WIDE_CHAR
+# define STRTOF wcstof128
+# define STRTOF_L __wcstof128_l
+#else
+# define STRTOF strtof128
+# define STRTOF_L __strtof128_l
+#endif
+
+#include <float128_private.h>
+
+#include <stdlib/strtod.c>
diff --git a/sysdeps/ieee754/float128/strtof128_l.c b/sysdeps/ieee754/float128/strtof128_l.c
new file mode 100644
index 0000000..0f768a3
--- /dev/null
+++ b/sysdeps/ieee754/float128/strtof128_l.c
@@ -0,0 +1,43 @@
+/* Convert string representing a number to a _Float128 value, with locale.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <xlocale.h>
+
+/* Bring in potential typedef for _Float128 early for declaration below. */
+#include <bits/floatn.h>
+
+extern _Float128 ____strtof128_l_internal (const char *, char **,
+ int, __locale_t);
+
+#define FLOAT _Float128
+#define FLT FLT128
+#ifdef USE_WIDE_CHAR
+# define STRTOF wcstof128_l
+# define __STRTOF __wcstof128_l
+# define STRTOF_NAN __wcstof128_nan
+#else
+# define STRTOF strtof128_l
+# define __STRTOF __strtof128_l
+# define STRTOF_NAN __strtof128_nan
+#endif
+#define MPN2FLOAT __mpn_construct_float128
+#define FLOAT_HUGE_VAL __builtin_huge_valf128 ()
+
+#include <float128_private.h>
+
+#include <stdlib/strtod_l.c>
diff --git a/sysdeps/ieee754/float128/strtof128_nan.c b/sysdeps/ieee754/float128/strtof128_nan.c
new file mode 100644
index 0000000..b9d79e3
--- /dev/null
+++ b/sysdeps/ieee754/float128/strtof128_nan.c
@@ -0,0 +1,28 @@
+/* Convert string for NaN payload to corresponding NaN. Narrow
+ strings, __float128.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+
+#include <float128_private.h>
+
+#include <strtod_nan_narrow.h>
+#include <strtod_nan_float128.h>
+
+#define STRTOD_NAN __strtof128_nan
+#include <stdlib/strtod_nan_main.c>
diff --git a/sysdeps/ieee754/float128/wcstof128.c b/sysdeps/ieee754/float128/wcstof128.c
new file mode 100644
index 0000000..c5a17ba
--- /dev/null
+++ b/sysdeps/ieee754/float128/wcstof128.c
@@ -0,0 +1,30 @@
+/* wcstof128 wrapper of wcstof128_l.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+#include <xlocale.h>
+
+#define USE_WIDE_CHAR 1
+
+/* Bring in _Float128 typedef if needed. */
+#include <bits/floatn.h>
+
+extern _Float128 ____wcstof128_l_internal (const wchar_t *, wchar_t **, int,
+ __locale_t);
+
+#include "strtof128.c"
diff --git a/sysdeps/ieee754/float128/wcstof128_l.c b/sysdeps/ieee754/float128/wcstof128_l.c
new file mode 100644
index 0000000..670b6af
--- /dev/null
+++ b/sysdeps/ieee754/float128/wcstof128_l.c
@@ -0,0 +1,30 @@
+/* Convert string representing a number to integer value, using given locale.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stddef.h>
+#include <xlocale.h>
+
+
+#define USE_WIDE_CHAR 1
+
+#include <bits/floatn.h>
+
+extern _Float128 ____wcstof128_l_internal (const wchar_t *, wchar_t **, int,
+ __locale_t);
+
+#include "strtof128_l.c"
diff --git a/sysdeps/ieee754/float128/wcstof128_nan.c b/sysdeps/ieee754/float128/wcstof128_nan.c
new file mode 100644
index 0000000..abad881
--- /dev/null
+++ b/sysdeps/ieee754/float128/wcstof128_nan.c
@@ -0,0 +1,24 @@
+/* Convert string for NaN payload to corresponding NaN. Wide strings,
+ _Float128.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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 2.1 of the License, or (at your option) any later version.
+
+ The GNU C 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 C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdlib/strtod_nan_wide.h>
+#include <float128_private.h>
+#include <strtod_nan_float128.h>
+#define STRTOD_NAN __wcstof128_nan
+#include <stdlib/strtod_nan_main.c>
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index d6b214b..84cf986 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -81,6 +81,7 @@ CFLAGS-wcstoll.c = $(strtox-CFLAGS)
CFLAGS-wcstoull.c = $(strtox-CFLAGS)
CFLAGS-wcstod.c = $(strtox-CFLAGS)
CFLAGS-wcstold.c = $(strtox-CFLAGS)
+CFLAGS-wcstof128.c = $(strtox-CFLAGS)
CFLAGS-wcstof.c = $(strtox-CFLAGS)
CFLAGS-wcstol_l.c = $(strtox-CFLAGS)
CFLAGS-wcstoul_l.c = $(strtox-CFLAGS)
@@ -88,6 +89,7 @@ CFLAGS-wcstoll_l.c = $(strtox-CFLAGS)
CFLAGS-wcstoull_l.c = $(strtox-CFLAGS)
CFLAGS-wcstod_l.c = $(strtox-CFLAGS)
CFLAGS-wcstold_l.c = $(strtox-CFLAGS)
+CFLAGS-wcstof128_l.c = $(strtox-CFLAGS)
CFLAGS-wcstof_l.c = $(strtox-CFLAGS)
CPPFLAGS-tst-wchar-h.c = -D_FORTIFY_SOURCE=2
diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h
index 79be9fc..5be993d 100644
--- a/wcsmbs/wchar.h
+++ b/wcsmbs/wchar.h
@@ -28,6 +28,9 @@
# include <bits/libc-header-start.h>
#endif
+/* Gather machine dependent type support. */
+#include <bits/floatn.h>
+
#ifdef _WCHAR_H
/* Get FILE definition. */
# define __need___FILE
@@ -426,6 +429,12 @@ extern long double wcstold (const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr) __THROW;
#endif /* C99 */
+/* Likewise for `_Float128' when support is enabled. */
+#if __HAVE_FLOAT128 && defined __USE_GNU
+extern _Float128 wcstof128 (const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr) __THROW;
+#endif
+
/* Convert initial portion of wide string NPTR to `long int'
representation. */
@@ -518,6 +527,12 @@ extern float wcstof_l (const wchar_t *__restrict __nptr,
extern long double wcstold_l (const wchar_t *__restrict __nptr,
wchar_t **__restrict __endptr,
__locale_t __loc) __THROW;
+
+# if __HAVE_FLOAT128
+extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr,
+ wchar_t **__restrict __endptr,
+ __locale_t __loc) __THROW;
+# endif
#endif /* use GNU */
--
2.4.11
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual
2017-06-09 16:54 [PATCH v4 0/2] Add string functions and libm tests for _Float128 Gabriel F. T. Gomes
@ 2017-06-09 16:54 ` Gabriel F. T. Gomes
2017-06-10 4:25 ` Rical Jasan
2017-06-09 16:54 ` [PATCH v4 1/2] float128: Add strtof128, wcstof128, and related functions Gabriel F. T. Gomes
2017-06-09 20:28 ` [PATCH v4 0/2] Add string functions and libm tests for _Float128 Joseph Myers
2 siblings, 1 reply; 6+ messages in thread
From: Gabriel F. T. Gomes @ 2017-06-09 16:54 UTC (permalink / raw)
To: libc-alpha
Changes since v3:
- Use strtofNx instead of strtofN in the @deftypefunx item.
- Added "@comment" to each new function definition.
- Added "@comment GNU" to wcstofN[x] definitions.
- Replaces use of @ref with @pxref.
- Reworded the safety comments to make clear that both strfromfN and
strfromfNx depend on both __printf_fp and __printf_fphex.
- Fixed grammatical errors and applied language suggestions.
Changes since v2:
- Fix typos and grammatical errors.
- Move @var{N} into the @code{} blocks
- Remove @var{N} from the function names and return types in the
@deftypefun and @deftypefunx blocks, because @var{N} causes errors in
'make html' and 'make info' (make 'pdf' was working fine).
Changes since v1:
- Added _FloatN and _FloatNx to the section that discusses C
floating-point types in the section Mathematics.
- Reworded the descriptions of strfromf128 etc. into descriptions of
strfromfN etc., to ease the changes needed in the manual when more
types from TS 18661-3 get added to glibc.
-- 8< --
2016-11-14 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
* manual/math.texi (Mathematics): Add description for _FloatN and
_FloatNx types and mentions that they are not support in glibc for
any architecture, so far.
* manual/arith.texi (wcstof, wcstold): Replace the mention to
stdlib.h with wchar.h.
(Parsing of Floats): Add descriptions for strtofN and wcstofN.
(Printing of Floats): Add description for strfromfN.
---
manual/arith.texi | 63 ++++++++++++++++++++++++++++++++++++++++++++++++-------
manual/math.texi | 11 ++++++++++
2 files changed, 67 insertions(+), 7 deletions(-)
diff --git a/manual/arith.texi b/manual/arith.texi
index dec12a0..5c1dcdc 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -2980,6 +2980,7 @@ examining @var{errno} and @var{tailptr}.
@comment ISO
@deftypefunx {long double} strtold (const char *@var{string}, char **@var{tailptr})
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
+@comment See safety comments for strtod.
These functions are analogous to @code{strtod}, but return @code{float}
and @code{long double} values respectively. They report errors in the
same way as @code{strtod}. @code{strtof} can be substantially faster
@@ -2990,23 +2991,52 @@ double} is a separate type).
These functions have been GNU extensions and are new to @w{ISO C99}.
@end deftypefun
+@comment stdlib.h
+@comment ISO/IEC TS 18661-3
+@deftypefun _FloatN strtofN (const char *@var{string}, char **@var{tailptr})
+@comment stdlib.h
+@comment ISO/IEC TS 18661-3
+@deftypefunx _FloatNx strtofNx (const char *@var{string}, char **@var{tailptr})
+@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
+@comment See safety comments for strtod.
+These functions are like @code{strtod}, except for the return type.
+
+They were introduced in @w{ISO/IEC TS 18661-3} and are available on machines
+that support the related types; @pxref{Mathematics}.
+@end deftypefun
+
@comment wchar.h
@comment ISO
@deftypefun double wcstod (const wchar_t *restrict @var{string}, wchar_t **restrict @var{tailptr})
-@comment stdlib.h
+@comment wchar.h
@comment ISO
@deftypefunx float wcstof (const wchar_t *@var{string}, wchar_t **@var{tailptr})
-@comment stdlib.h
+@comment wchar.h
@comment ISO
@deftypefunx {long double} wcstold (const wchar_t *@var{string}, wchar_t **@var{tailptr})
+@comment wchar.h
+@comment GNU
+@deftypefunx _FloatN wcstofN (const wchar_t *@var{string}, wchar_t **@var{tailptr})
+@comment wchar.h
+@comment GNU
+@deftypefunx _FloatNx wcstofNx (const wchar_t *@var{string}, wchar_t **@var{tailptr})
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
-The @code{wcstod}, @code{wcstof}, and @code{wcstol} functions are
-equivalent in nearly all aspect to the @code{strtod}, @code{strtof}, and
-@code{strtold} functions but it handles wide character string.
+@comment See safety comments for strtod.
+The @code{wcstod}, @code{wcstof}, @code{wcstol}, @code{wcstof@var{N}},
+and @code{wcstof@var{N}x} functions are equivalent in nearly all aspects
+to the @code{strtod}, @code{strtof}, @code{strtold},
+@code{strtof@var{N}}, and @code{strtof@var{N}x} functions, but they
+handle wide character strings.
The @code{wcstod} function was introduced in @w{Amendment 1} of @w{ISO
C90}. The @code{wcstof} and @code{wcstold} functions were introduced in
@w{ISO C99}.
+
+The @code{wcstof@var{N}} and @code{wcstof@var{N}x} functions are not in
+any standard, but are added to provide completeness for the
+non-deprecated interface of wide character string to floating-point
+conversion functions. They are only available on machines that support
+the related types; @pxref{Mathematics}.
@end deftypefun
@comment stdlib.h
@@ -3033,11 +3063,15 @@ The @samp{strfrom} functions are declared in @file{stdlib.h}.
@comment stdlib.h
@comment ISO/IEC TS 18661-1
@deftypefun int strfromd (char *restrict @var{string}, size_t @var{size}, const char *restrict @var{format}, double @var{value})
+@comment stdlib.h
+@comment ISO/IEC TS 18661-1
@deftypefunx int strfromf (char *restrict @var{string}, size_t @var{size}, const char *restrict @var{format}, float @var{value})
+@comment stdlib.h
+@comment ISO/IEC TS 18661-1
@deftypefunx int strfroml (char *restrict @var{string}, size_t @var{size}, const char *restrict @var{format}, long double @var{value})
@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
-@comment these functions depend on __printf_fp and __printf_fphex, which are
-@comment AS-unsafe (ascuheap) and AC-unsafe (acsmem).
+@comment All these functions depend on both __printf_fp and __printf_fphex,
+@comment which are both AS-unsafe (ascuheap) and AC-unsafe (acsmem).
The functions @code{strfromd} (``string-from-double''), @code{strfromf}
(``string-from-float''), and @code{strfroml} (``string-from-long-double'')
convert the floating-point number @var{value} to a string of characters and
@@ -3064,6 +3098,21 @@ has been completely written if and only if the returned value is less than
These functions were introduced by ISO/IEC TS 18661-1.
@end deftypefun
+@comment stdlib.h
+@comment ISO/IEC TS 18661-3
+@deftypefun int strfromfN (char *restrict @var{string}, size_t @var{size}, const char *restrict @var{format}, _Float@var{N} @var{value})
+@comment stdlib.h
+@comment ISO/IEC TS 18661-3
+@deftypefunx int strfromfNx (char *restrict @var{string}, size_t @var{size}, const char *restrict @var{format}, _Float@var{N}x @var{value})
+@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
+@comment See safety comments for strfromd.
+These functions are like @code{strfromd}, except for the type of
+@code{value}.
+
+They were introduced in @w{ISO/IEC TS 18661-3} and are available on machines
+that support the related types; @pxref{Mathematics}.
+@end deftypefun
+
@node System V Number Conversion
@section Old-fashioned System V number-to-string functions
diff --git a/manual/math.texi b/manual/math.texi
index 69a0ace..53c2bc1 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -53,6 +53,17 @@ usually wise to pick the narrowest type that can accommodate your data.
Not all machines have a distinct @code{long double} type; it may be the
same as @code{double}.
+On some machines, @theglibc{} also provides @code{_Float@var{N}} and
+@code{_Float@var{N}x} types. These types are defined in @w{ISO/IEC TS
+18661-3}, which extends @w{ISO C} and defines floating-point types that
+are not machine-dependent. When such a type, such as @code{_Float128},
+is supported by @theglibc{}, extra variants for most of the mathematical
+functions provided for @code{double}, @code{float}, and @code{long
+double} are also provided for the supported type.
+
+Currently, support for @code{_Float@var{N}} or @code{_Float@var{N}x}
+types is not provided for any machine.
+
@menu
* Mathematical Constants:: Precise numeric values for often-used
constants.
--
2.4.11
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 0/2] Add string functions and libm tests for _Float128
@ 2017-06-09 16:54 Gabriel F. T. Gomes
2017-06-09 16:54 ` [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual Gabriel F. T. Gomes
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Gabriel F. T. Gomes @ 2017-06-09 16:54 UTC (permalink / raw)
To: libc-alpha
I added a "Changes since v3" to each patch in this series.
Gabriel F. T. Gomes (1):
float128: Add strfromf128, strtof128, and wcstof128 to the manual
Paul E. Murphy (1):
float128: Add strtof128, wcstof128, and related functions.
include/gmp.h | 4 ++
include/stdlib.h | 29 ++++++++++++++
include/wchar.h | 13 +++++++
manual/arith.texi | 53 ++++++++++++++++++++++---
manual/math.texi | 11 ++++++
stdlib/Makefile | 1 +
stdlib/stdlib.h | 14 +++++++
stdlib/tst-strtod-nan-locale-main.c | 36 ++++++++---------
stdlib/tst-strtod-round-skeleton.c | 1 +
stdlib/tst-strtod.h | 36 +++++++++++------
sysdeps/ieee754/float128/Makefile | 5 +++
sysdeps/ieee754/float128/Versions | 10 +++++
sysdeps/ieee754/float128/mpn2float128.c | 54 ++++++++++++++++++++++++++
sysdeps/ieee754/float128/strtod_nan_float128.h | 33 ++++++++++++++++
sysdeps/ieee754/float128/strtof128.c | 34 ++++++++++++++++
sysdeps/ieee754/float128/strtof128_l.c | 43 ++++++++++++++++++++
sysdeps/ieee754/float128/strtof128_nan.c | 28 +++++++++++++
sysdeps/ieee754/float128/wcstof128.c | 30 ++++++++++++++
sysdeps/ieee754/float128/wcstof128_l.c | 30 ++++++++++++++
sysdeps/ieee754/float128/wcstof128_nan.c | 24 ++++++++++++
wcsmbs/Makefile | 2 +
wcsmbs/wchar.h | 15 +++++++
22 files changed, 472 insertions(+), 34 deletions(-)
create mode 100644 sysdeps/ieee754/float128/mpn2float128.c
create mode 100644 sysdeps/ieee754/float128/strtod_nan_float128.h
create mode 100644 sysdeps/ieee754/float128/strtof128.c
create mode 100644 sysdeps/ieee754/float128/strtof128_l.c
create mode 100644 sysdeps/ieee754/float128/strtof128_nan.c
create mode 100644 sysdeps/ieee754/float128/wcstof128.c
create mode 100644 sysdeps/ieee754/float128/wcstof128_l.c
create mode 100644 sysdeps/ieee754/float128/wcstof128_nan.c
--
2.4.11
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 0/2] Add string functions and libm tests for _Float128
2017-06-09 16:54 [PATCH v4 0/2] Add string functions and libm tests for _Float128 Gabriel F. T. Gomes
2017-06-09 16:54 ` [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual Gabriel F. T. Gomes
2017-06-09 16:54 ` [PATCH v4 1/2] float128: Add strtof128, wcstof128, and related functions Gabriel F. T. Gomes
@ 2017-06-09 20:28 ` Joseph Myers
2017-06-12 18:31 ` Gabriel F. T. Gomes
2 siblings, 1 reply; 6+ messages in thread
From: Joseph Myers @ 2017-06-09 20:28 UTC (permalink / raw)
To: Gabriel F. T. Gomes; +Cc: libc-alpha
These patches are OK.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual
2017-06-09 16:54 ` [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual Gabriel F. T. Gomes
@ 2017-06-10 4:25 ` Rical Jasan
0 siblings, 0 replies; 6+ messages in thread
From: Rical Jasan @ 2017-06-10 4:25 UTC (permalink / raw)
To: Gabriel F. T. Gomes, libc-alpha
LGTM, thank you.
Rical
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 0/2] Add string functions and libm tests for _Float128
2017-06-09 20:28 ` [PATCH v4 0/2] Add string functions and libm tests for _Float128 Joseph Myers
@ 2017-06-12 18:31 ` Gabriel F. T. Gomes
0 siblings, 0 replies; 6+ messages in thread
From: Gabriel F. T. Gomes @ 2017-06-12 18:31 UTC (permalink / raw)
To: Joseph Myers; +Cc: libc-alpha
On Fri, 9 Jun 2017 20:27:54 +0000
Joseph Myers <joseph@codesourcery.com> wrote:
> These patches are OK.
Thanks. I have commit these and the remaining patches from
https://sourceware.org/ml/libc-alpha/2017-06/msg00131.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-06-12 18:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-09 16:54 [PATCH v4 0/2] Add string functions and libm tests for _Float128 Gabriel F. T. Gomes
2017-06-09 16:54 ` [PATCH v4 2/2] float128: Add strfromf128, strtof128, and wcstof128 to the manual Gabriel F. T. Gomes
2017-06-10 4:25 ` Rical Jasan
2017-06-09 16:54 ` [PATCH v4 1/2] float128: Add strtof128, wcstof128, and related functions Gabriel F. T. Gomes
2017-06-09 20:28 ` [PATCH v4 0/2] Add string functions and libm tests for _Float128 Joseph Myers
2017-06-12 18:31 ` Gabriel F. T. Gomes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).