



Bits error versus i




Bits error versus n
| Original | 42.9 |
|---|---|
| Target | 41.9 |
| Herbie | 15.3 |
if (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) < 4.599814456066394e-286Initial program 40.2
rmApplied add-exp-log40.2
Applied expm1-def40.2
Simplified6.8
rmApplied *-commutative6.8
if 4.599814456066394e-286 < (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) < 515595789703.47595Initial program 3.1
rmApplied add-exp-log3.1
Applied expm1-def3.1
Simplified51.2
rmApplied *-commutative51.2
Taylor expanded around inf 58.4
Simplified3.9
if 515595789703.47595 < (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) Initial program 61.8
rmApplied add-exp-log61.8
Applied expm1-def61.8
Simplified61.8
Taylor expanded around 0 48.1
Final simplification15.3
herbie shell --seed 2019008 +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: 24.2s)Debug log
1 calls. Slowest were:
| 288.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 40.1b
Found 4 expressions with local error:
| 10.3b | (pow (+ 1 (/ i n)) n) |
| 8.9b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 0.8b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.0b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 35.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 12.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 10.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
4 calls. Slowest were:
| 174.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 164.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 144.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 98.0ms | (pow (+ 1 (/ i n)) n) |
105 calls. Slowest were:
| 426.0ms | (- (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (* 1 1)) |
| 306.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 227.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))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 8.6b
Found 4 expressions with local error:
| 9.5b | (log1p (/ i n)) |
| 8.8b | (* (log1p (/ i n)) n) |
| 8.7b | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 0.1b | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
4 calls. Slowest were:
| 5.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 3.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 2.0ms | (* (log1p (/ i n)) n) |
4 calls. Slowest were:
| 235.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 214.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 98.0ms | (* (log1p (/ i n)) n) |
| 59.0ms | (log1p (/ i n)) |
65 calls. Slowest were:
| 207.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 171.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 148.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 8.4b
Found 4 expressions with local error:
| 9.5b | (log1p (/ i n)) |
| 8.8b | (* (log1p (/ i n)) n) |
| 8.7b | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 0.1b | (* (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) 100) |
4 calls. Slowest were:
| 4.0ms | (* (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) 100) |
| 3.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 2.0ms | (* (log1p (/ i n)) n) |
4 calls. Slowest were:
| 167.0ms | (* (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) 100) |
| 158.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 55.0ms | (* (log1p (/ i n)) n) |
| 39.0ms | (log1p (/ i n)) |
65 calls. Slowest were:
| 258.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 173.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 171.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 8.4b
Found 4 expressions with local error:
| 9.5b | (log1p (/ i n)) |
| 8.8b | (* (log1p (/ i n)) n) |
| 8.8b | (/ (* (expm1 (* (log1p (/ i n)) n)) 100) (/ i n)) |
| 0.1b | (* (expm1 (* (log1p (/ i n)) n)) 100) |
4 calls. Slowest were:
| 5.0ms | (/ (* (expm1 (* (log1p (/ i n)) n)) 100) (/ i n)) |
| 3.0ms | (* (log1p (/ i n)) n) |
| 2.0ms | (* (expm1 (* (log1p (/ i n)) n)) 100) |
4 calls. Slowest were:
| 211.0ms | (/ (* (expm1 (* (log1p (/ i n)) n)) 100) (/ i n)) |
| 147.0ms | (* (expm1 (* (log1p (/ i n)) n)) 100) |
| 66.0ms | (* (log1p (/ i n)) n) |
| 40.0ms | (log1p (/ i n)) |
32 calls. Slowest were:
| 232.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 188.0ms | (+ (* 100 i) (+ (* 50 (pow i 2)) (* 50/3 (pow i 3)))) |
| 165.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 8.4b
48.2% (5.7b remaining)
Error of 15.3b against oracle of 9.6b and baseline of 20.6b