mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-02 22:54:52 +00:00
msun: Fix math error in comment explaining y reduction
x = k + y for some integer k and |y| < 1/2 exp2(x) = exp2(k + y) = exp2(k) * exp2(y) which can be written as 2**k * exp2(y) The original had x = 2**k + y, which is has an extra 2** in it which isn't correct. Confirmed by forumula 2 in Gal and Bachelis referenced in the comments for the source of this method https://dl.acm.org/doi/pdf/10.1145/103147.103151 The actual code is correct. Reviewed by: imp (who added s_exp2.c and wrote the commit message) Pull Request: https://github.com/freebsd/freebsd-src/pull/1127
This commit is contained in:
parent
2cf0c51793
commit
2b2cd97844
|
@ -314,7 +314,7 @@ static const double tbl[TBLSIZE * 2] = {
|
|||
* Method: (accurate tables)
|
||||
*
|
||||
* Reduce x:
|
||||
* x = 2**k + y, for integer k and |y| <= 1/2.
|
||||
* x = k + y, for integer k and |y| <= 1/2.
|
||||
* Thus we have exp2(x) = 2**k * exp2(y).
|
||||
*
|
||||
* Reduce y:
|
||||
|
|
|
@ -72,7 +72,7 @@ static const double exp2ft[TBLSIZE] = {
|
|||
* Method: (equally-spaced tables)
|
||||
*
|
||||
* Reduce x:
|
||||
* x = 2**k + y, for integer k and |y| <= 1/2.
|
||||
* x = k + y, for integer k and |y| <= 1/2.
|
||||
* Thus we have exp2f(x) = 2**k * exp2(y).
|
||||
*
|
||||
* Reduce y:
|
||||
|
|
Loading…
Reference in a new issue