summaryrefslogtreecommitdiff
path: root/libquadmath
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-16 16:55:27 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2011-01-16 16:55:27 +0000
commitff44adf2e118be6db337584d627d3e9637b876d3 (patch)
tree252065baee12c4b6545a47616cc3a36114d3be22 /libquadmath
parenta6c9569e6a465cd066543232b4d45f700e82addb (diff)
downloadgcc-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/ChangeLog17
-rw-r--r--libquadmath/gdtoa/strtopQ.c15
-rw-r--r--libquadmath/libquadmath.texi24
-rw-r--r--libquadmath/quadmath.h20
-rw-r--r--libquadmath/quadmath.map6
-rw-r--r--libquadmath/quadmath_io.c2
-rw-r--r--libquadmath/quadmath_weak.h6
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