]> Cypherpunks repositories - gostls13.git/commit
math: speed up and improve accuracy of Pow10
authorMartin Möhrmann <moehrmann@google.com>
Sat, 10 Dec 2016 07:04:40 +0000 (08:04 +0100)
committerRobert Griesemer <gri@golang.org>
Wed, 22 Feb 2017 19:17:04 +0000 (19:17 +0000)
commit8c6643846ef5572cb138c8f7c9ac2b1b3cb1d06c
treeaacc1ffec7a922993acf530a34277685e76192fb
parent6694a01016e2fb842ee6d8ae053b9c87f56185ff
math: speed up and improve accuracy of Pow10

Removes init function from the math package.

Allows stripping of arrays with pre-computed values
used for Pow10 from binaries if Pow10 is not used.
cmd/go shrinks by 128 bytes.

Fixed small values like 10**-323 being 0 instead of 1e-323.

Overall precision is increased but still not as good as
predefined constants for some inputs.

Samples:

Pow10(208)
before: 1.0000000000000006662e+208
after:  1.0000000000000000959e+208

Pow10(202)
before 1.0000000000000009895e+202
after  1.0000000000000001193e+202

Pow10(60)
before 1.0000000000000001278e+60
after  0.9999999999999999494e+60

Pow10(-100)
before 0.99999999999999938551e-100
after  0.99999999999999989309e-100

Pow10(-200)
before 0.9999999999999988218e-200
after  1.0000000000000001271e-200

name        old time/op  new time/op  delta
Pow10Pos-4  44.6ns ± 2%   1.2ns ± 1%  -97.39%  (p=0.000 n=19+17)
Pow10Neg-4  50.8ns ± 1%   4.1ns ± 2%  -92.02%  (p=0.000 n=17+19)

Change-Id: If094034286b8ac64be3a95fd9e8ffa3d4ad39b31
Reviewed-on: https://go-review.googlesource.com/36331
Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Martin Möhrmann <moehrmann@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/math/all_test.go
src/math/pow10.go