ldbl-128ibm: Automatic replacing of _Float128 and L()

The ldbl-128ibm implementation of j0l, j1l, lgammal_r, and cbrtl, as
well as the tables used by expl were copied from ldbl-128.  However, the
original files used _Float128 for the type and L() for the literal
suffix.  This patch uses the following sed command to rewrite _Float128
as long double and L(x) as xL (for e_expl.c, e_j0l.c, e_j1l.c,
e_lgammal_r.c, and t_expl.h):

  sed -i <filename> \
    -e "/^#define _Float128 long double/d" \
    -e "/^#define L(x) x ## L/d" \
    -e "/L(/s/)/L/" \
    -e "/L(/s/L(//" \
    -e "s/_Float128/long double/g"

For sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c, this sed command incorrectly
replaces a few occurrences of L(), so the following command is used
instead:

  sed -i sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c \
    -e "/^#define _Float128 long double/d" \
    -e "/^#define L(x) x ## L/d" \
    -e "s/L(0\.3\{40\})/0.3333333333333333333333333333333333333333L/" \
    -e "s/L(3\.7568280825958912391243e-1)/3.7568280825958912391243e-1L/" \
    -e "/L(/s/)/L/" \
    -e "/L(/s/L(//" \
    -e "s/_Float128/long double/g"

Tested for powerpc64le with patched [1] and unpatched gcc.

[1] https://gcc.gnu.org/ml/gcc-patches/2017-08/msg01028.html

	* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Remove definitions of
	_Float128 and L().
	* sysdeps/ieee754/ldbl-128ibm/e_j0l.c: Remove definitions of
	_Float128 and L(). Replace _Float128 with long double and L(x)
	with xL, throughout the file.
	* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: Likewise.
	* sysdeps/ieee754/ldbl-128ibm/t_expl.h: Likewise.
This commit is contained in:
Gabriel F. T. Gomes 2017-09-09 19:37:11 -03:00
parent c5c2e667bf
commit d2f0ed09f8
7 changed files with 2222 additions and 2222 deletions

View File

@ -1,3 +1,15 @@
2017-09-21 Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Remove definitions of
_Float128 and L().
* sysdeps/ieee754/ldbl-128ibm/e_j0l.c: Remove definitions of
_Float128 and L(). Replace _Float128 with long double and L(x)
with xL, throughout the file.
* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/t_expl.h: Likewise.
2017-09-21 Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: Include tables from

View File

@ -66,8 +66,6 @@
#include <inttypes.h>
#include <math_private.h>
#define _Float128 long double
#define L(x) x ## L
#include "t_expl.h"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -19,24 +19,22 @@
/* This file was copied from sysdeps/ieee754/ldbl-128/e_j0l.c. */
#define _Float128 long double
#define L(x) x ## L
#include <math_ldbl_opt.h>
#include <math.h>
#include <math_private.h>
static const _Float128 CBRT2 = L(1.259921049894873164767210607278228350570251);
static const _Float128 CBRT4 = L(1.587401051968199474751705639272308260391493);
static const _Float128 CBRT2I = L(0.7937005259840997373758528196361541301957467);
static const _Float128 CBRT4I = L(0.6299605249474365823836053036391141752851257);
static const long double CBRT2 = 1.259921049894873164767210607278228350570251L;
static const long double CBRT4 = 1.587401051968199474751705639272308260391493L;
static const long double CBRT2I = 0.7937005259840997373758528196361541301957467L;
static const long double CBRT4I = 0.6299605249474365823836053036391141752851257L;
_Float128
__cbrtl (_Float128 x)
long double
__cbrtl (long double x)
{
int e, rem, sign;
_Float128 z;
long double z;
if (!isfinite (x))
return x + x;
@ -58,11 +56,11 @@ __cbrtl (_Float128 x)
/* Approximate cube root of number between .5 and 1,
peak relative error = 1.2e-6 */
x = ((((L(1.3584464340920900529734e-1) * x
- L(6.3986917220457538402318e-1)) * x
+ L(1.2875551670318751538055e0)) * x
- L(1.4897083391357284957891e0)) * x
+ L(1.3304961236013647092521e0)) * x + L(3.7568280825958912391243e-1);
x = ((((1.3584464340920900529734e-1L * x
- 6.3986917220457538402318e-1L) * x
+ 1.2875551670318751538055e0L) * x
- 1.4897083391357284957891e0L) * x
+ 1.3304961236013647092521e0L) * x + 3.7568280825958912391243e-1L;
/* exponent divided by 3 */
if (e >= 0)
@ -92,9 +90,9 @@ __cbrtl (_Float128 x)
x = __ldexpl (x, e);
/* Newton iteration */
x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
x -= (x - (z / (x * x))) * L(0.3333333333333333333333333333333333333333);
x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L;
x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L;
x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L;
if (sign < 0)
x = -x;

File diff suppressed because it is too large Load Diff