



Bits error versus i




Bits error versus n
| Original | 42.5 |
|---|---|
| Target | 42.3 |
| Herbie | 16.0 |
if (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) < 0.0Initial program 39.8
rmApplied add-exp-log39.8
Applied expm1-def39.8
Simplified6.7
rmApplied associate-*r/6.7
if 0.0 < (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) < 3.5009350877695735e-25Initial program 2.8
Taylor expanded around inf 57.4
Simplified2.7
if 3.5009350877695735e-25 < (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) Initial program 58.7
Taylor expanded around 0 49.8
Final simplification16.0
herbie shell --seed 2019022 +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: 20.7s)Debug log
| 112.0ms | 36× | body | 2560 | valid |
| 107.0ms | 73× | body | 1280 | valid |
| 26.0ms | 40× | body | 640 | valid |
| 14.0ms | 119× | body | 80 | valid |
| 10.0ms | 87× | body | 80 | nan |
| 7.0ms | 18× | body | 320 | valid |
| 3.0ms | 12× | body | 160 | valid |
| 236.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 41.5b
Found 4 expressions with local error:
| 12.2b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 9.3b | (pow (+ 1 (/ i n)) n) |
| 1.6b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 48× | add-sqr-sqrt |
| 40× | times-frac |
| 28× | add-cube-cbrt |
| 28× | *-un-lft-identity |
| 25× | associate-*r* |
| 20× | difference-of-sqr-1 |
| 16× | unpow-prod-down |
| 13× | div-inv |
| 9× | add-exp-log |
| 6× | fma-neg |
| 6× | add-cbrt-cube |
| 5× | associate-/l* |
| 5× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | associate-/r* |
| 4× | expm1-log1p-u |
| 3× | expm1-def |
| 2× | associate-/l/ |
| 2× | flip-- |
| 2× | associate-/r/ |
| 2× | pow-exp |
| 2× | flip3-- |
| 2× | pow-to-exp |
| 1× | *-commutative |
| 1× | associate-*r/ |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | pow-pow |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | cbrt-undiv |
| 29.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 15.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 9.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 2.0ms | (pow (+ 1 (/ i n)) n) |
| 195.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 166.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 151.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 119.0ms | (pow (+ 1 (/ i n)) n) |
| 244.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))) |
| 241.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 235.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 220.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 175.0ms | (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 11.6b
Found 4 expressions with local error:
| 11.8b | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 11.7b | (* (log1p (/ i n)) n) |
| 8.0b | (log1p (/ i n)) |
| 0.1b | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 24× | times-frac |
| 22× | add-cube-cbrt |
| 22× | *-un-lft-identity |
| 22× | add-sqr-sqrt |
| 17× | associate-*r* |
| 9× | div-inv |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | associate-/l* |
| 3× | associate-*l* |
| 2× | *-commutative |
| 2× | associate-/r/ |
| 1× | expm1-udef |
| 1× | associate-*r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 5.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 4.0ms | (* (log1p (/ i n)) n) |
| 2.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 0.0ms | (log1p (/ i n)) |
| 208.0ms | (/ (expm1 (* (log1p (/ i n)) n)) (/ i n)) |
| 204.0ms | (* 100 (/ (expm1 (* (log1p (/ i n)) n)) (/ i n))) |
| 64.0ms | (* (log1p (/ i n)) n) |
| 48.0ms | (log1p (/ i n)) |
| 312.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 238.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 221.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 179.0ms | (/ (* (* (expm1 (* (log1p (/ i n)) n)) (expm1 (* (log1p (/ i n)) n))) (expm1 (* (log1p (/ i n)) n))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 142.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 11.5b
Found 4 expressions with local error:
| 11.8b | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 11.7b | (* (log1p (/ i n)) n) |
| 8.0b | (log1p (/ i n)) |
| 0.1b | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | times-frac |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | div-inv |
| 3× | associate-*l* |
| 3× | associate-*r* |
| 2× | *-commutative |
| 1× | associate-/l* |
| 1× | associate-/r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 5.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 3.0ms | (* (log1p (/ i n)) n) |
| 1.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 0.0ms | (log1p (/ i n)) |
| 189.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 142.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 55.0ms | (* (log1p (/ i n)) n) |
| 45.0ms | (log1p (/ i n)) |
| 221.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 202.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 176.0ms | (* 100 (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1)) |
| 175.0ms | (+ (* 100 i) (+ (* 50 (pow i 2)) (* 50/3 (pow i 3)))) |
| 117.0ms | (* 100 (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 11.5b
Found 4 expressions with local error:
| 11.8b | (/ (expm1 (* (expm1 (log1p (log1p (/ i n)))) n)) (/ i n)) |
| 11.7b | (* (expm1 (log1p (log1p (/ i n)))) n) |
| 8.0b | (log1p (/ i n)) |
| 0.4b | (expm1 (log1p (log1p (/ i n)))) |
| 14× | add-cube-cbrt |
| 14× | *-un-lft-identity |
| 14× | add-sqr-sqrt |
| 12× | times-frac |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | div-inv |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | associate-/l* |
| 3× | associate-*l* |
| 2× | expm1-udef |
| 1× | *-commutative |
| 1× | associate-/r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | expm1-log1p |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 8.0ms | (* (expm1 (log1p (log1p (/ i n)))) n) |
| 5.0ms | (/ (expm1 (* (expm1 (log1p (log1p (/ i n)))) n)) (/ i n)) |
| 0.0ms | (log1p (/ i n)) |
| 0.0ms | (expm1 (log1p (log1p (/ i n)))) |
| 261.0ms | (/ (expm1 (* (expm1 (log1p (log1p (/ i n)))) n)) (/ i n)) |
| 95.0ms | (* (expm1 (log1p (log1p (/ i n)))) n) |
| 68.0ms | (expm1 (log1p (log1p (/ i n)))) |
| 50.0ms | (log1p (/ i n)) |
| 279.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 191.0ms | (/ (* (* (expm1 (* (expm1 (log1p (log1p (/ i n)))) n)) (expm1 (* (expm1 (log1p (log1p (/ i n)))) n))) (expm1 (* (expm1 (log1p (log1p (/ i n)))) n))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 147.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
| 56.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
| 51.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 11.5b
41% (6.3b remaining)
Error of 16.0b against oracle of 9.8b and baseline of 20.4b
| 2.9s | 2459× | body | 1280 | valid |
| 2.3s | 987× | body | 2560 | valid |
| 928.0ms | 1636× | body | 640 | valid |
| 335.0ms | 828× | body | 320 | valid |
| 276.0ms | 3073× | body | 80 | valid |
| 210.0ms | 2182× | body | 80 | nan |
| 90.0ms | 453× | body | 160 | valid |
| 7.0ms | 2× | body | 5120 | valid |