



Bits error versus i




Bits error versus n
Results
| Original | 42.2 |
|---|---|
| Target | 41.6 |
| Herbie | 8.5 |
if n < -1.8564747933458696 or 7.104375322685901e-09 < n Initial program 51.0
rmApplied add-exp-log51.0
Applied expm1-def51.0
Simplified22.9
rmApplied associate-/r/24.0
Taylor expanded around 0 4.9
if -1.8564747933458696 < n < 2.7268656769834012e-222Initial program 18.6
rmApplied add-exp-log18.6
Applied expm1-def18.6
Simplified22.9
Taylor expanded around 0 14.8
if 2.7268656769834012e-222 < n < 7.104375322685901e-09Initial program 53.0
rmApplied add-exp-log53.0
Applied expm1-def53.0
Simplified9.4
rmApplied div-inv9.5
Applied associate-*r*9.4
Simplified9.4
Final simplification8.5
herbie shell --seed 2019007 +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: 25.1s)Debug log
1 calls. Slowest were:
| 343.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 41.2b
Found 4 expressions with local error:
| 11.8b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 7.3b | (pow (+ 1 (/ i n)) n) |
| 1.0b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 18.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 16.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 15.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 228.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 227.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 155.0ms | (pow (+ 1 (/ i n)) n) |
| 150.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
105 calls. Slowest were:
| 350.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 346.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))) |
| 237.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.3b
Found 4 expressions with local error:
| 11.6b | (* (log1p (/ i n)) n) |
| 11.5b | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 6.5b | (log1p (/ i n)) |
| 0.1b | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
4 calls. Slowest were:
| 3.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 2.0ms | (* (log1p (/ i n)) n) |
| 2.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
4 calls. Slowest were:
| 188.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 187.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 65.0ms | (* (log1p (/ i n)) n) |
| 41.0ms | (log1p (/ i n)) |
65 calls. Slowest were:
| 289.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 244.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 243.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 11.1b
Found 4 expressions with local error:
| 18.6b | (cbrt (/ i n)) |
| 18.6b | (cbrt (/ i n)) |
| 18.6b | (cbrt (/ i n)) |
| 11.6b | (* (log1p (/ i n)) n) |
4 calls. Slowest were:
| 5.0ms | (* (log1p (/ i n)) n) |
| 1.0ms | (cbrt (/ i n)) |
| 1.0ms | (cbrt (/ i n)) |
4 calls. Slowest were:
| 90.0ms | (cbrt (/ i n)) |
| 83.0ms | (cbrt (/ i n)) |
| 68.0ms | (cbrt (/ i n)) |
| 68.0ms | (* (log1p (/ i n)) n) |
29 calls. Slowest were:
| 210.0ms | (exp (* 1/3 (- (log (/ 1 n)) (log (/ 1 i))))) |
| 185.0ms | (exp (* 1/3 (- (log (/ 1 n)) (log (/ 1 i))))) |
| 163.0ms | (exp (* 1/3 (- (log (/ 1 n)) (log (/ 1 i))))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 11.1b
Found 4 expressions with local error:
| 11.6b | (* (log1p (/ i n)) n) |
| 6.5b | (log1p (/ i n)) |
| 0.1b | (* 100 (* (/ (expm1 (* (log1p (/ i n)) n)) i) n)) |
| 0.1b | (* (/ (expm1 (* (log1p (/ i n)) n)) i) n) |
4 calls. Slowest were:
| 4.0ms | (* (/ (expm1 (* (log1p (/ i n)) n)) i) n) |
| 3.0ms | (* (log1p (/ i n)) n) |
| 3.0ms | (* 100 (* (/ (expm1 (* (log1p (/ i n)) n)) i) n)) |
4 calls. Slowest were:
| 206.0ms | (* 100 (* (/ (expm1 (* (log1p (/ i n)) n)) i) n)) |
| 199.0ms | (* (/ (expm1 (* (log1p (/ i n)) n)) i) n) |
| 89.0ms | (* (log1p (/ i n)) n) |
| 48.0ms | (log1p (/ i n)) |
19 calls. Slowest were:
| 554.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 289.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 236.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 0.0b
61.4% (8.4b remaining)
Error of 8.5b against oracle of 0.0b and baseline of 21.9b