mirror of git://sourceware.org/git/glibc.git
Remove unnecessary factorial array
kf is n! at the end of the loop, so storing the values is unnecessary.
This commit is contained in:
parent
4e92d59e26
commit
c2af38aa76
|
@ -1,5 +1,7 @@
|
||||||
2013-02-13 Siddhesh Poyarekar <siddhesh@redhat.com>
|
2013-02-13 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Remove NFA.
|
||||||
|
|
||||||
* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Faster polynomial
|
* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Faster polynomial
|
||||||
evaluation.
|
evaluation.
|
||||||
|
|
||||||
|
|
|
@ -50,14 +50,6 @@ __mpexp (mp_no *x, mp_no *y, int p)
|
||||||
6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8
|
6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Factorials for the values of np above. */
|
|
||||||
static const double nfa[33] =
|
|
||||||
{
|
|
||||||
1.0, 1.0, 1.0, 1.0, 6.0, 6.0, 24.0, 24.0, 120.0, 24.0, 24.0,
|
|
||||||
120.0, 120.0, 120.0, 720.0, 720.0, 720.0, 720.0, 720.0, 720.0,
|
|
||||||
720.0, 720.0, 720.0, 720.0, 5040.0, 5040.0, 5040.0, 5040.0,
|
|
||||||
40320.0, 40320.0, 40320.0, 40320.0, 40320.0
|
|
||||||
};
|
|
||||||
static const int m1p[33] =
|
static const int m1p[33] =
|
||||||
{
|
{
|
||||||
0, 0, 0, 0,
|
0, 0, 0, 0,
|
||||||
|
@ -130,7 +122,8 @@ __mpexp (mp_no *x, mp_no *y, int p)
|
||||||
e^x = 1 + (x * n!/1! + x^2 * n!/2! + x^3 * n!/3!) / n!
|
e^x = 1 + (x * n!/1! + x^2 * n!/2! + x^3 * n!/3!) / n!
|
||||||
= 1 + (x * (n!/1! + x * (n!/2! + x * (n!/3! + x ...)))) / n!
|
= 1 + (x * (n!/1! + x * (n!/2! + x * (n!/3! + x ...)))) / n!
|
||||||
|
|
||||||
n! is pre-computed and saved while k! is computed on the fly. */
|
k! is computed on the fly as KF and at the end of the polynomial loop, KF
|
||||||
|
is n!, which can be used directly. */
|
||||||
__cpy (&mps, &mpt2, p);
|
__cpy (&mps, &mpt2, p);
|
||||||
|
|
||||||
double kf = 1.0;
|
double kf = 1.0;
|
||||||
|
@ -145,7 +138,7 @@ __mpexp (mp_no *x, mp_no *y, int p)
|
||||||
__add (&mpt2, &mpk, &mpt1, p);
|
__add (&mpt2, &mpk, &mpt1, p);
|
||||||
__mul (&mps, &mpt1, &mpt2, p);
|
__mul (&mps, &mpt1, &mpt2, p);
|
||||||
}
|
}
|
||||||
__dbl_mp (nfa[p], &mpk, p);
|
__dbl_mp (kf, &mpk, p);
|
||||||
__dvd (&mpt2, &mpk, &mpt1, p);
|
__dvd (&mpt2, &mpk, &mpt1, p);
|
||||||
__add (&mpone, &mpt1, &mpt2, p);
|
__add (&mpone, &mpt1, &mpt2, p);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue