Format mplog.c

This commit is contained in:
Siddhesh Poyarekar 2013-02-27 11:24:45 +05:30
parent 90f42071e3
commit 11d6e2f237
2 changed files with 27 additions and 21 deletions

View File

@ -1,3 +1,7 @@
2013-02-27 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/ieee754/dbl-64/mplog.c: Reformat.
2013-02-26 Roland McGrath <roland@hack.frob.com>
* Makeconfig (%.v.i, %.v): Move these pattern rules outside of

View File

@ -1,4 +1,3 @@
/*
* IBM Accurate Mathematical Library
* written by International Business Machines Corp.
@ -37,27 +36,30 @@
#include "endian.h"
#include "mpa.h"
void __mpexp(mp_no *, mp_no *, int);
void
__mplog (mp_no *x, mp_no *y, int p)
{
int i, m;
static const int mp[33] =
{
0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
};
mp_no mpt1, mpt2;
void __mplog(mp_no *x, mp_no *y, int p) {
int i,m;
static const int mp[33] = {0,0,0,0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,
4,4,4,4,4,4,4,4,4,4,4,4,4,4};
mp_no mpt1,mpt2;
/* Choose m */
/* Choose m. */
m = mp[p];
/* Perform m newton iterations to solve for y: exp(y)-x=0. */
/* The iterations formula is: y(n+1)=y(n)+(x*exp(-y(n))-1). */
__cpy(y,&mpt1,p);
for (i=0; i<m; i++) {
mpt1.d[0]=-mpt1.d[0];
__mpexp(&mpt1,&mpt2,p);
__mul(x,&mpt2,&mpt1,p);
__sub(&mpt1,&mpone,&mpt2,p);
__add(y,&mpt2,&mpt1,p);
__cpy(&mpt1,y,p);
/* Perform m newton iterations to solve for y: exp(y) - x = 0. The
iterations formula is: y(n + 1) = y(n) + (x * exp(-y(n)) - 1). */
__cpy (y, &mpt1, p);
for (i = 0; i < m; i++)
{
mpt1.d[0] = -mpt1.d[0];
__mpexp (&mpt1, &mpt2, p);
__mul (x, &mpt2, &mpt1, p);
__sub (&mpt1, &mpone, &mpt2, p);
__add (y, &mpt2, &mpt1, p);
__cpy (&mpt1, y, p);
}
return;
}