



Bits error versus i




Bits error versus n
Results
| Original | 42.0 |
|---|---|
| Target | 41.8 |
| Herbie | 21.9 |
if n < -6.946497033310484e+191 or -4.056551695566858e+130 < n < -4.0276202651907404e-09 or 9.658195263911622e-134 < n Initial program 51.9
rmApplied div-sub51.9
Taylor expanded around 0 22.1
Simplified21.9
Taylor expanded around 0 22.1
Simplified21.9
if -6.946497033310484e+191 < n < -4.056551695566858e+130Initial program 42.7
rmApplied div-inv42.7
Applied associate-/r*42.4
if -4.0276202651907404e-09 < n < 9.658195263911622e-134Initial program 24.7
Taylor expanded around 0 18.1
Final simplification21.9
herbie shell --seed 2018362
(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: 19.1s)Debug log
2 alts after pruning (2 fresh and 0 done)
Merged error: 40.0b
Found 4 expressions with local error:
| 10.2b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 9.2b | (pow (+ 1 (/ i n)) n) |
| 1.2b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 39.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 17.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 16.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
4 calls. Slowest were:
| 249.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 241.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 158.0ms | (pow (+ 1 (/ i n)) n) |
| 111.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
97 calls. Slowest were:
| 347.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))) |
| 337.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 295.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 18.1b
Found 4 expressions with local error:
| 11.9b | (- (/ (pow (+ 1 (/ i n)) n) (/ i n)) (/ 1 (/ i n))) |
| 9.2b | (pow (+ 1 (/ i n)) n) |
| 0.6b | (/ 1 (/ i n)) |
| 0.6b | (/ (pow (+ 1 (/ i n)) n) (/ i n)) |
4 calls. Slowest were:
| 14.0ms | (- (/ (pow (+ 1 (/ i n)) n) (/ i n)) (/ 1 (/ i n))) |
| 5.0ms | (/ (pow (+ 1 (/ i n)) n) (/ i n)) |
| 1.0ms | (pow (+ 1 (/ i n)) n) |
4 calls. Slowest were:
| 231.0ms | (- (/ (pow (+ 1 (/ i n)) n) (/ i n)) (/ 1 (/ i n))) |
| 191.0ms | (/ (pow (+ 1 (/ i n)) n) (/ i n)) |
| 122.0ms | (pow (+ 1 (/ i n)) n) |
| 11.0ms | (/ 1 (/ i n)) |
103 calls. Slowest were:
| 402.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 285.0ms | (/ (* (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) n) i) |
| 279.0ms | (/ (* (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (pow (+ 1 (/ i n)) n)) (* (* (/ i n) (/ i n)) (/ i n))) |
14 alts after pruning (14 fresh and 0 done)
Merged error: 8.1b
Found 4 expressions with local error:
| 0.4b | (* 1/6 i) |
| 0.1b | (* (* i n) (+ (* 1/6 i) 1/2)) |
| 0.1b | (* 100 (+ n (* (* i n) (+ (* 1/6 i) 1/2)))) |
| 0.0b | (+ n (* (* i n) (+ (* 1/6 i) 1/2))) |
4 calls. Slowest were:
| 10.0ms | (* (* i n) (+ (* 1/6 i) 1/2)) |
| 3.0ms | (+ n (* (* i n) (+ (* 1/6 i) 1/2))) |
| 2.0ms | (* 100 (+ n (* (* i n) (+ (* 1/6 i) 1/2)))) |
4 calls. Slowest were:
| 35.0ms | (* (* i n) (+ (* 1/6 i) 1/2)) |
| 33.0ms | (* 100 (+ n (* (* i n) (+ (* 1/6 i) 1/2)))) |
| 32.0ms | (+ n (* (* i n) (+ (* 1/6 i) 1/2))) |
| 16.0ms | (* 1/6 i) |
31 calls. Slowest were:
| 375.0ms | (- n (* (* i n) (+ (* 1/6 i) 1/2))) |
| 345.0ms | (* 100 (* (* i n) (+ (* 1/6 i) 1/2))) |
| 292.0ms | (* (* (* i n) (+ (* 1/6 i) 1/2)) 100) |
19 alts after pruning (19 fresh and 0 done)
Merged error: 8.1b
Found 3 expressions with local error:
| 0.5b | (* 50/3 i) |
| 0.3b | (* (* i n) (+ 50 (* 50/3 i))) |
| 0.0b | (+ (* (* i n) (+ 50 (* 50/3 i))) (* 100 n)) |
3 calls. Slowest were:
| 4.0ms | (+ (* (* i n) (+ 50 (* 50/3 i))) (* 100 n)) |
| 3.0ms | (* (* i n) (+ 50 (* 50/3 i))) |
| 0.0ms | (* 50/3 i) |
3 calls. Slowest were:
| 35.0ms | (+ (* (* i n) (+ 50 (* 50/3 i))) (* 100 n)) |
| 34.0ms | (* (* i n) (+ 50 (* 50/3 i))) |
| 11.0ms | (* 50/3 i) |
22 calls. Slowest were:
| 191.0ms | (* (exp (* (* i n) (+ 50 (* 50/3 i)))) (exp (* 100 n))) |
| 161.0ms | (* (* (* (* i n) (* i n)) (* i n)) (* (* (+ 50 (* 50/3 i)) (+ 50 (* 50/3 i))) (+ 50 (* 50/3 i)))) |
| 137.0ms | (+ (* 50/3 (* (pow i 2) n)) (+ (* 100 n) (* 50 (* i n)))) |
19 alts after pruning (18 fresh and 1 done)
Merged error: 8.1b
46.2% (13.6b remaining)
Error of 21.9b against oracle of 8.3b and baseline of 33.6b