



Bits error versus i




Bits error versus n
Results
| Original | 42.6 |
|---|---|
| Target | 42.1 |
| Herbie | 7.9 |
if n < -0.5048727192312397 or 0.0021140823519030126 < n Initial program 50.9
rmApplied add-exp-log50.9
Applied expm1-def50.9
Simplified23.3
rmApplied associate-*r/23.3
rmApplied associate-/r/24.5
Taylor expanded around 0 5.0
if -0.5048727192312397 < n < -1.4243394807001e-310Initial program 16.5
rmApplied add-exp-log16.5
Applied expm1-def16.5
Simplified19.7
rmApplied associate-*r/19.6
rmApplied add-cbrt-cube10.0
if -1.4243394807001e-310 < n < 0.0021140823519030126Initial program 49.1
rmApplied add-exp-log49.1
Applied expm1-def49.1
Simplified12.9
rmApplied associate-*r/12.9
rmApplied associate-/r/12.8
rmApplied associate-/l*12.8
Final simplification7.9
herbie shell --seed 2019005 +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: 23.3s)Debug log
1 calls. Slowest were:
| 332.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 40.4b
Found 4 expressions with local error:
| 10.9b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 4.9b | (pow (+ 1 (/ i n)) n) |
| 2.2b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 22.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:
| 228.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 211.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 160.0ms | (pow (+ 1 (/ i n)) n) |
| 136.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
105 calls. Slowest were:
| 363.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 316.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))) |
| 281.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 10.4b
Found 4 expressions with local error:
| 10.9b | (* (log1p (/ i n)) n) |
| 10.7b | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 4.4b | (log1p (/ i n)) |
| 0.2b | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
4 calls. Slowest were:
| 7.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 5.0ms | (* (log1p (/ i n)) n) |
| 3.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
4 calls. Slowest were:
| 284.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 227.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 69.0ms | (* (log1p (/ i n)) n) |
| 48.0ms | (log1p (/ i n)) |
65 calls. Slowest were:
| 325.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 297.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 229.0ms | (/ (* (* (expm1 (* (log1p (/ i n)) n)) (expm1 (* (log1p (/ i n)) n))) (expm1 (* (log1p (/ i n)) n))) (* (* (/ i n) (/ i n)) (/ i n))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 10.2b
Found 4 expressions with local error:
| 10.9b | (* (log1p (/ i n)) n) |
| 10.8b | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 4.4b | (log1p (/ i n)) |
| 0.1b | (* 100 (expm1 (* (log1p (/ i n)) n))) |
4 calls. Slowest were:
| 7.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 4.0ms | (* (log1p (/ i n)) n) |
| 2.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
4 calls. Slowest were:
| 238.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 147.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 93.0ms | (* (log1p (/ i n)) n) |
| 63.0ms | (log1p (/ i n)) |
32 calls. Slowest were:
| 219.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 172.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 168.0ms | (* 100 (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1)) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 10.2b
Found 4 expressions with local error:
| 10.9b | (* (log1p (/ i n)) n) |
| 4.4b | (log1p (/ i n)) |
| 0.1b | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) i) |
| 0.1b | (* 100 (expm1 (* (log1p (/ i n)) n))) |
4 calls. Slowest were:
| 7.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) i) |
| 5.0ms | (* (log1p (/ i n)) n) |
| 2.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
4 calls. Slowest were:
| 137.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 91.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) i) |
| 66.0ms | (* (log1p (/ i n)) n) |
| 49.0ms | (log1p (/ i n)) |
18 calls. Slowest were:
| 317.0ms | (* -1 (/ (- 100 (* 100 (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))))) i)) |
| 248.0ms | (/ (- (* 100 (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n))) 100) i) |
| 194.0ms | (+ (* 100 i) (+ (* 50 (pow i 2)) (* 50/3 (pow i 3)))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 0.0b
60.9% (7.8b remaining)
Error of 7.9b against oracle of 0.0b and baseline of 20.1b