diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2011-10-25 00:37:10 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2011-10-25 00:37:10 +0000 |
commit | 4bbe4e2185c5484328182720ff7b3bb4f9593bff (patch) | |
tree | cd67e40a74928c0f58d4f5b79d2e260e4099fee7 /libc/sysdeps/ieee754/dbl-64/e_pow.c | |
parent | 91b4be71461f78cabe1fb5f164cea71b60e9e98a (diff) | |
download | eglibc2-4bbe4e2185c5484328182720ff7b3bb4f9593bff.tar.gz |
Merge changes between r15223 and r15532 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@15545 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc/sysdeps/ieee754/dbl-64/e_pow.c')
-rw-r--r-- | libc/sysdeps/ieee754/dbl-64/e_pow.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libc/sysdeps/ieee754/dbl-64/e_pow.c b/libc/sysdeps/ieee754/dbl-64/e_pow.c index 1e159f2c0..789054015 100644 --- a/libc/sysdeps/ieee754/dbl-64/e_pow.c +++ b/libc/sysdeps/ieee754/dbl-64/e_pow.c @@ -1,7 +1,7 @@ /* * IBM Accurate Mathematical Library * written by International Business Machines Corp. - * Copyright (C) 2001, 2002, 2004 Free Software Foundation + * Copyright (C) 2001, 2002, 2004, 2011 Free Software Foundation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -22,12 +22,12 @@ /* */ /* FUNCTIONS: upow */ /* power1 */ -/* my_log2 */ +/* my_log2 */ /* log1 */ /* checkint */ /* FILES NEEDED: dla.h endian.h mpa.h mydefs.h */ /* halfulp.c mpexp.c mplog.c slowexp.c slowpow.c mpa.c */ -/* uexp.c upow.c */ +/* uexp.c upow.c */ /* root.tbl uexp.tbl upow.tbl */ /* An ultimate power routine. Given two IEEE double machine numbers y,x */ /* it computes the correctly rounded (to nearest) value of x^y. */ @@ -37,7 +37,7 @@ /***************************************************************************/ #include "endian.h" #include "upow.h" -#include "dla.h" +#include <dla.h> #include "mydefs.h" #include "MathLib.h" #include "upow.tbl" @@ -77,7 +77,7 @@ double __ieee754_pow(double x, double y) { /* else */ if(((u.i[HIGH_HALF]>0 && u.i[HIGH_HALF]<0x7ff00000)|| /* x>0 and not x->0 */ (u.i[HIGH_HALF]==0 && u.i[LOW_HALF]!=0)) && - /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */ + /* 2^-1023< x<= 2^-1023 * 0x1.0000ffffffff */ (v.i[HIGH_HALF]&0x7fffffff) < 0x4ff00000) { /* if y<-1 or y>1 */ z = log1(x,&aa,&error); /* x^y =e^(y log (X)) */ t = y*134217729.0; @@ -153,6 +153,7 @@ double __ieee754_pow(double x, double y) { if (y<0) return (x<1.0)?INF.x:0; return 0; /* unreachable, to make the compiler happy */ } +strong_alias (__ieee754_pow, __pow_finite) /**************************************************************************/ /* Computing x^y using more accurate but more slow log routine */ @@ -282,7 +283,10 @@ static double my_log2(double x, double *delta, double *error) { double cor; #endif double ou1,ou2,lu1,lu2,ov,lv1,lv2,a,a1,a2; - double y,yy,z,zz,j1,j2,j3,j4,j5,j6,j7,j8; + double y,yy,z,zz,j1,j2,j7,j8; +#ifndef DLA_FMA + double j3,j4,j5,j6; +#endif mynumber u,v; #ifdef BIG_ENDI mynumber |