



Bits error versus i




Bits error versus n
| Original | 42.8 |
|---|---|
| Target | 41.9 |
| Herbie | 12.9 |
if i < -1.8322447925192374e-58Initial program 33.9
rmApplied pow-to-exp33.9
Applied expm1-def27.2
Simplified0.9
rmApplied clear-num1.2
if -1.8322447925192374e-58 < i < 4.7404880186548754e-268Initial program 49.3
rmApplied pow-to-exp49.3
Applied expm1-def44.9
Simplified30.0
rmApplied clear-num30.2
Taylor expanded around 0 14.1
Simplified13.3
rmApplied un-div-inv13.4
if 4.7404880186548754e-268 < i < 3.35176024751346e-09Initial program 49.8
rmApplied pow-to-exp49.8
Applied expm1-def43.9
Simplified21.8
rmApplied clear-num22.0
Taylor expanded around 0 13.1
Simplified12.1
rmApplied log1p-expm1-u14.7
if 3.35176024751346e-09 < i Initial program 32.8
Taylor expanded around inf 30.4
Simplified32.9
Final simplification12.9
herbie shell --seed 2019002 +o rules:numerics
(FPCore (i n)
:name "Compound Interest"
:herbie-target
(* 100 (/ (- (exp (* n (if (== (+ 1 (/ i n)) 1) (/ i n) (/ (* (/ i n) (log (+ 1 (/ i n)))) (- (+ (/ i n) 1) 1))))) 1) (/ i n)))
(* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))))
Time bar (total: 26.4s)Debug log
1 calls. Slowest were:
| 345.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 40.8b
Found 4 expressions with local error:
| 12.1b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 6.5b | (pow (+ 1 (/ i n)) n) |
| 2.3b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 19.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 18.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 17.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 232.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 220.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 155.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 123.0ms | (pow (+ 1 (/ i n)) n) |
105 calls. Slowest were:
| 385.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 370.0ms | (/ (* (* (- (pow (+ 1 (/ i n)) n) 1) (- (pow (+ 1 (/ i n)) n) 1)) (- (pow (+ 1 (/ i n)) n) 1)) (* (* (/ i n) (/ i n)) (/ i n))) |
| 286.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 11.7b
Found 4 expressions with local error:
| 12.1b | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 12.1b | (* n (log1p (/ i n))) |
| 5.8b | (log1p (/ i n)) |
| 0.1b | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
4 calls. Slowest were:
| 3.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 2.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 1.0ms | (* n (log1p (/ i n))) |
4 calls. Slowest were:
| 341.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 314.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 64.0ms | (* n (log1p (/ i n))) |
| 59.0ms | (log1p (/ i n)) |
66 calls. Slowest were:
| 247.0ms | (/ (* (* (expm1 (* n (log1p (/ i n)))) (expm1 (* n (log1p (/ i n))))) (expm1 (* n (log1p (/ i n))))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 82.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
| 58.0ms | (/ (* (- (exp i) 1) n) i) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 11.5b
Found 4 expressions with local error:
| 12.1b | (/ (/ i n) (expm1 (* n (log1p (/ i n))))) |
| 12.1b | (* n (log1p (/ i n))) |
| 5.8b | (log1p (/ i n)) |
| 0.4b | (/ 1 (/ (/ i n) (expm1 (* n (log1p (/ i n)))))) |
4 calls. Slowest were:
| 6.0ms | (/ (/ i n) (expm1 (* n (log1p (/ i n))))) |
| 2.0ms | (/ 1 (/ (/ i n) (expm1 (* n (log1p (/ i n)))))) |
| 1.0ms | (* n (log1p (/ i n))) |
4 calls. Slowest were:
| 511.0ms | (/ (/ i n) (expm1 (* n (log1p (/ i n))))) |
| 196.0ms | (/ 1 (/ (/ i n) (expm1 (* n (log1p (/ i n)))))) |
| 44.0ms | (* n (log1p (/ i n))) |
| 42.0ms | (log1p (/ i n)) |
65 calls. Slowest were:
| 412.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 205.0ms | (/ (* (* (/ i n) (/ i n)) (/ i n)) (* (* (expm1 (* n (log1p (/ i n)))) (expm1 (* n (log1p (/ i n))))) (expm1 (* n (log1p (/ i n)))))) |
| 193.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 0.0b
Found 3 expressions with local error:
| 0.3b | (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n))) |
| 0.1b | (* 100 (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)))) |
| 0.1b | (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)) |
3 calls. Slowest were:
| 1.0ms | (* 100 (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)))) |
| 1.0ms | (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n))) |
| 0.0ms | (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)) |
3 calls. Slowest were:
| 35.0ms | (* 100 (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)))) |
| 29.0ms | (/ 1 (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n))) |
| 18.0ms | (fma (/ i n) (- (/ 1/2 n) 1/2) (/ 1 n)) |
19 calls. Slowest were:
| 330.0ms | (- (+ (* 200 (/ n i)) (+ (* 400 (/ n (pow i 2))) (* 200 (/ 1 i))))) |
| 288.0ms | (- (+ (* 2 (/ n i)) (+ (* 4 (/ n (pow i 2))) (* 2 (/ 1 i))))) |
| 277.0ms | (- (+ (* 2 (/ n i)) (+ (* 4 (/ n (pow i 2))) (* 2 (/ 1 i))))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 0.0b
36.6% (12.8b remaining)
Error of 12.9b against oracle of 0.1b and baseline of 20.3b