diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-16 16:55:27 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-01-16 16:55:27 +0000 |
commit | ff44adf2e118be6db337584d627d3e9637b876d3 (patch) | |
tree | 252065baee12c4b6545a47616cc3a36114d3be22 /libquadmath | |
parent | a6c9569e6a465cd066543232b4d45f700e82addb (diff) | |
download | gcc-ff44adf2e118be6db337584d627d3e9637b876d3.tar.gz |
PR fortran/46625
* quadmath.map (QUADMATH_1.0): Remove quadmath_strtopQ
and quadmath_dtoaq. Add strtoflt128 and quadmath_flt128tostr.
* quadmath_weak.h (quadmath_strtopQ, quadmath_dtoaq): Remove.
(strtoflt128, quadmath_flt128tostr): Add.
* gdtoa/strtopQ.c (quadmath_strtopQ): Rename to...
(strtoflt128): ... this. Return __float128, instead of writing
to memory pointed by last argument.
* quadmath.h: Use C style comments instead of C++ style.
(quadmath_strtopQ, quadmath_dtoaq): Remove prototypes.
(strtoflt128, quadmath_flt128tostr): Add prototypes.
* libquadmath.texi (quadmath_dtoaq): Rename to quadmath_flt128tostr.
(quadmath_strtopQ): Rename to strtoflt128. Adjust prototype,
adjust examples.
* quadmath_io.c (quadmath_dtoaq): Rename to...
(quadmath_flt128tostr): ... this.
libgfortran/
* io/write_float.def (DTOAQ): Use quadmath_flt128tostr
instead of quadmath_dtoa.
* io/transfer128.c (tmp1, tmp2): New variables, bring in
strtoflt128 and quadmath_flt128tostr.
(transfer_real128, transfer_real128_write, transfer_complex128,
transfer_complex128_write): Remove tmp1/tmp2 variables.
* io/read.c (convert_real): Use strtoflt128 instead of
quadmath_strtopQ, adjust for the changed arguments and return
value.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168856 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libquadmath')
-rw-r--r-- | libquadmath/ChangeLog | 17 | ||||
-rw-r--r-- | libquadmath/gdtoa/strtopQ.c | 15 | ||||
-rw-r--r-- | libquadmath/libquadmath.texi | 24 | ||||
-rw-r--r-- | libquadmath/quadmath.h | 20 | ||||
-rw-r--r-- | libquadmath/quadmath.map | 6 | ||||
-rw-r--r-- | libquadmath/quadmath_io.c | 2 | ||||
-rw-r--r-- | libquadmath/quadmath_weak.h | 6 |
7 files changed, 52 insertions, 38 deletions
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index da2045598ad..376dcbe789e 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,5 +1,22 @@ 2011-01-16 Jakub Jelinek <jakub@redhat.com> + PR fortran/46625 + * quadmath.map (QUADMATH_1.0): Remove quadmath_strtopQ + and quadmath_dtoaq. Add strtoflt128 and quadmath_flt128tostr. + * quadmath_weak.h (quadmath_strtopQ, quadmath_dtoaq): Remove. + (strtoflt128, quadmath_flt128tostr): Add. + * gdtoa/strtopQ.c (quadmath_strtopQ): Rename to... + (strtoflt128): ... this. Return __float128, instead of writing + to memory pointed by last argument. + * quadmath.h: Use C style comments instead of C++ style. + (quadmath_strtopQ, quadmath_dtoaq): Remove prototypes. + (strtoflt128, quadmath_flt128tostr): Add prototypes. + * libquadmath.texi (quadmath_dtoaq): Rename to quadmath_flt128tostr. + (quadmath_strtopQ): Rename to strtoflt128. Adjust prototype, + adjust examples. + * quadmath_io.c (quadmath_dtoaq): Rename to... + (quadmath_flt128tostr): ... this. + * quadmath.h (__quadmath_throw, __quadmath_nth): Define. Use it for all prototypes. diff --git a/libquadmath/gdtoa/strtopQ.c b/libquadmath/gdtoa/strtopQ.c index ed7fb9c8632..0d34c1c0454 100644 --- a/libquadmath/gdtoa/strtopQ.c +++ b/libquadmath/gdtoa/strtopQ.c @@ -49,18 +49,15 @@ THIS SOFTWARE. #define _3 0 #endif - int -#ifdef KR_headers -quadmath_strtopQ(s, sp, V) CONST char *s; char **sp; void *V; -#else -quadmath_strtopQ(CONST char *s, char **sp, void *V) -#endif +__float128 +strtoflt128(CONST char *s, char **sp) { static FPI fpi0 = { 113, 1-16383-113+1, 32766 - 16383 - 113 + 1, 1, SI }; ULong bits[4]; Long exp; int k; - ULong *L = (ULong*)V; + union { __float128 f; ULong L[4]; } u; + ULong *L = &u.L[0]; #ifdef Honor_FLT_ROUNDS #include "gdtoa_fltrnds.h" #else @@ -102,5 +99,5 @@ quadmath_strtopQ(CONST char *s, char **sp, void *V) } if (k & STRTOG_Neg) L[_0] |= 0x80000000L; - return k; - } + return u.f; +} diff --git a/libquadmath/libquadmath.texi b/libquadmath/libquadmath.texi index b336f9b4a12..3dbbe5d6380 100644 --- a/libquadmath/libquadmath.texi +++ b/libquadmath/libquadmath.texi @@ -198,20 +198,20 @@ The following mathematical functions are available: @chapter I/O Library Routines @menu -* @code{quadmath_strtopQ}: quadmath_strtopQ, Convert from string -* @code{quadmath_dtoaq}: quadmath_dtoaq, Convert to string +* @code{strtoflt128}: strtoflt128, Convert from string +* @code{quadmath_flt128tostr}: quadmath_flt128tostr, Convert to string @end menu -@node quadmath_strtopQ -@section @code{quadmath_strtopQ} --- Convert from string +@node strtoflt128 +@section @code{strtoflt128} --- Convert from string The function @code{dmath_strtopQ} converts a string into a @code{__float128} number. @table @asis @item Syntax -@code{int quadmath_strtopQ (const char *s, char **sp, void *V)} +@code{__float128 strtoflt128 (const char *s, char **sp)} @c The return values are defined in gdtoa/gdtoa.h STRTOG_* @c However, the values are currently not exported - thus we @@ -221,7 +221,6 @@ The function @code{dmath_strtopQ} converts a string into a @multitable @columnfractions .15 .70 @item @var{s} @tab input string @item @var{sp} @tab the address of the next character in the string -@item @var{V} @tab @code{__float128} containing the converted number @end multitable The argument @var{sp} contains, if not @code{NULL}, the address of the @@ -234,9 +233,8 @@ next character following the parts of the string, which have been read. int main () @{ __float128 r; - char str[200]; - quadmath_strtopQ ("1.2345678", NULL, &r); + r = strtoflt128 ("1.2345678", NULL); return 0; @} @@ -244,15 +242,15 @@ int main () @end table -@node quadmath_dtoaq -@section @code{quadmath_dtoaq} --- Convert to string +@node quadmath_flt128tostr +@section @code{quadmath_flt128tostr} --- Convert to string -The function @code{quadmath_dtoaq} converts a @code{__float128} floating-point +The function @code{quadmath_flt128tostr} converts a @code{__float128} floating-point number into a string. @table @asis @item Syntax -@code{void quadmath_dtoaq (char *s, size_t size, size_t n, __float128 x)} +@code{void quadmath_flt128tostr (char *s, size_t size, size_t n, __float128 x)} @item @emph{Arguments}: @multitable @columnfractions .15 .70 @@ -273,7 +271,7 @@ int main () r = 2.0q; r = sqrtq(r); - quadmath_dtoaq (str, sizeof (str), 20, r); + quadmath_flt128tostr (str, sizeof (str), 20, r); printf("%s\n", str); /* Prints: +1.41421356237309504880e+00 */ return 0; diff --git a/libquadmath/quadmath.h b/libquadmath/quadmath.h index 95fab71d998..25ef4139918 100644 --- a/libquadmath/quadmath.h +++ b/libquadmath/quadmath.h @@ -23,8 +23,8 @@ Boston, MA 02110-1301, USA. */ #include <stdlib.h> -// Define the complex type corresponding to __float128 -// ("_Complex __float128" is not allowed) +/* Define the complex type corresponding to __float128 + ("_Complex __float128" is not allowed) */ typedef _Complex float __attribute__((mode(TC))) __complex128; #ifdef __cplusplus @@ -35,7 +35,7 @@ typedef _Complex float __attribute__((mode(TC))) __complex128; # define __quadmath_nth(fct) __attribute__((__nothrow__)) fct #endif -// Prototypes for real functions +/* Prototypes for real functions */ extern __float128 acosq (__float128) __quadmath_throw; extern __float128 acoshq (__float128) __quadmath_throw; extern __float128 asinq (__float128) __quadmath_throw; @@ -103,7 +103,7 @@ extern __float128 y1q (__float128) __quadmath_throw; extern __float128 ynq (int, __float128) __quadmath_throw; -// Prototypes for complex functions +/* Prototypes for complex functions */ extern __float128 cabsq (__complex128) __quadmath_throw; extern __float128 cargq (__complex128) __quadmath_throw; extern __float128 cimagq (__complex128) __quadmath_throw; @@ -130,13 +130,13 @@ extern __complex128 ctanq (__complex128) __quadmath_throw; extern __complex128 ctanhq (__complex128) __quadmath_throw; -// Prototypes for our I/O functions -extern int quadmath_strtopQ (const char *, char **, void *) __quadmath_throw; -extern void quadmath_dtoaq (char *, size_t, size_t, __float128) +/* Prototypes for string <-> __float128 conversion functions */ +extern __float128 strtoflt128 (const char *, char **) __quadmath_throw; +extern void quadmath_flt128tostr (char *, size_t, size_t, __float128) __quadmath_throw; -// Macros +/* Macros */ #define FLT128_MAX 1.18973149535723176508575932662800702e4932Q #define FLT128_MIN 3.36210314311209350626267781732175260e-4932Q #define FLT128_EPSILON 1.92592994438723585305597794258492732e-34Q @@ -144,8 +144,8 @@ extern void quadmath_dtoaq (char *, size_t, size_t, __float128) #define FLT128_MANT_DIG 113 #define FLT128_MIN_EXP (-16381) #define FLT128_MAX_EXP 16384 -// TODO -- One day, we need to add the following macros: -// FLT128_DIG, FLT128_MIN_10_EXP, FLT128_MAX_10_EXP +/* TODO -- One day, we need to add the following macros: + FLT128_DIG, FLT128_MIN_10_EXP, FLT128_MAX_10_EXP */ #define HUGE_VALQ __builtin_huge_valq() diff --git a/libquadmath/quadmath.map b/libquadmath/quadmath.map index eab606dac60..f2ee76baae7 100644 --- a/libquadmath/quadmath.map +++ b/libquadmath/quadmath.map @@ -65,6 +65,7 @@ QUADMATH_1.0 { y0q; y1q; ynq; + cabsq; cargq; cimagq; @@ -89,8 +90,9 @@ QUADMATH_1.0 { csqrtq; ctanq; ctanhq; - quadmath_strtopQ; - quadmath_dtoaq; + + strtoflt128; + quadmath_flt128tostr; local: *; }; diff --git a/libquadmath/quadmath_io.c b/libquadmath/quadmath_io.c index 48a8fe75c58..f258f720763 100644 --- a/libquadmath/quadmath_io.c +++ b/libquadmath/quadmath_io.c @@ -101,7 +101,7 @@ format (char * res, const __float128 x, size_t n) void -quadmath_dtoaq (char *s, size_t size, size_t n, __float128 x) +quadmath_flt128tostr (char *s, size_t size, size_t n, __float128 x) { char buffer[1024]; memset (buffer, 0, sizeof(buffer)); diff --git a/libquadmath/quadmath_weak.h b/libquadmath/quadmath_weak.h index 28cc14ad8bb..23fef22c7a4 100644 --- a/libquadmath/quadmath_weak.h +++ b/libquadmath/quadmath_weak.h @@ -130,8 +130,8 @@ __qmath3 (ctanq) __qmath3 (ctanhq) -// Prototypes for our I/O functions -__qmath3 (quadmath_strtopQ) -__qmath3 (quadmath_dtoaq) +// Prototypes for string <-> flt128 conversion functions +__qmath3 (strtoflt128) +__qmath3 (quadmath_flt128tostr) #endif |