



Bits error versus i




Bits error versus n
| Original | 42.0 |
|---|---|
| Target | 41.8 |
| Herbie | 19.0 |
if n < -1.6699497128870854e-36 or 1.668841499988779e-260 < n Initial program 49.6
rmApplied pow-to-exp53.0
Applied expm1-def48.4
Simplified20.7
rmApplied *-commutative20.7
if -1.6699497128870854e-36 < n < -5.921036522656228e-174Initial program 17.7
rmApplied div-inv17.7
Applied *-un-lft-identity17.7
Applied times-frac18.0
Applied associate-*r*18.6
Simplified18.6
if -5.921036522656228e-174 < n < -1.259835294447841e-283Initial program 12.1
rmApplied pow-to-exp12.1
Applied expm1-def2.4
Simplified8.3
rmApplied *-commutative8.3
rmApplied associate-*l/8.2
rmApplied div-inv8.2
Applied times-frac9.1
Simplified9.1
if -1.259835294447841e-283 < n < 1.668841499988779e-260Initial program 23.8
rmApplied pow-to-exp23.8
Applied expm1-def18.7
Simplified16.9
rmApplied *-commutative16.9
rmApplied associate-*l/16.8
Taylor expanded around 0 7.0
Final simplification19.0
herbie shell --seed 2019010 +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.7s)Debug log
| 360.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 43.7b
Found 4 expressions with local error:
| 11.6b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 6.5b | (pow (+ 1 (/ i n)) n) |
| 1.3b | (- (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 |
| 33.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 25.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 18.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 3.0ms | (pow (+ 1 (/ i n)) n) |
| 229.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 216.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 145.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 121.0ms | (pow (+ 1 (/ i n)) n) |
| 337.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))) |
| 268.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 257.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 240.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 191.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 11.0b
Found 4 expressions with local error:
| 11.5b | (* n (log1p (/ i n))) |
| 11.5b | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 5.8b | (log1p (/ i n)) |
| 0.1b | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 24× | times-frac |
| 22× | add-cube-cbrt |
| 22× | *-un-lft-identity |
| 22× | add-sqr-sqrt |
| 20× | 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* |
| 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 |
| 6.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 3.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 2.0ms | (* n (log1p (/ i n))) |
| 1.0ms | (log1p (/ i n)) |
| 314.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 302.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 46.0ms | (log1p (/ i n)) |
| 44.0ms | (* n (log1p (/ i n))) |
| 230.0ms | (/ (* (* (expm1 (* n (log1p (/ i n)))) (expm1 (* n (log1p (/ i n))))) (expm1 (* n (log1p (/ i n))))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 55.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
| 48.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 47.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 46.0ms | (/ (* (- (exp i) 1) n) i) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 10.8b
Found 4 expressions with local error:
| 11.5b | (* n (log1p (/ i n))) |
| 11.5b | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 5.8b | (log1p (/ i n)) |
| 0.1b | (* (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) 100) |
| 24× | times-frac |
| 22× | add-cube-cbrt |
| 22× | *-un-lft-identity |
| 22× | add-sqr-sqrt |
| 17× | associate-*l* |
| 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-*r* |
| 2× | *-commutative |
| 2× | associate-/r/ |
| 1× | expm1-udef |
| 1× | log1p-expm1 |
| 1× | associate-*l/ |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 4.0ms | (* (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) 100) |
| 3.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 1.0ms | (* n (log1p (/ i n))) |
| 0.0ms | (log1p (/ i n)) |
| 324.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 271.0ms | (* (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) 100) |
| 47.0ms | (log1p (/ i n)) |
| 46.0ms | (* n (log1p (/ i n))) |
| 194.0ms | (/ (* (* (expm1 (* n (log1p (/ i n)))) (expm1 (* n (log1p (/ i n))))) (expm1 (* n (log1p (/ i n))))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 65.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 45.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
| 45.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 44.0ms | (/ (* (- (exp i) 1) n) i) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 10.8b
Found 4 expressions with local error:
| 11.5b | (* n (log1p (/ i n))) |
| 11.5b | (/ (* (expm1 (* n (log1p (/ i n)))) 100) (/ i n)) |
| 5.8b | (log1p (/ i n)) |
| 0.1b | (* (expm1 (* n (log1p (/ i n)))) 100) |
| 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 |
| 11.0ms | (/ (* (expm1 (* n (log1p (/ i n)))) 100) (/ i n)) |
| 3.0ms | (* (expm1 (* n (log1p (/ i n)))) 100) |
| 2.0ms | (* n (log1p (/ i n))) |
| 0.0ms | (log1p (/ i n)) |
| 297.0ms | (/ (* (expm1 (* n (log1p (/ i n)))) 100) (/ i n)) |
| 152.0ms | (* (expm1 (* n (log1p (/ i n)))) 100) |
| 57.0ms | (log1p (/ i n)) |
| 45.0ms | (* n (log1p (/ i n))) |
| 88.0ms | (- (+ (* 50 (* (pow n 2) (pow (log n) 2))) (+ (* 50/3 (* (pow n 3) (pow (log i) 3))) (+ (* 100 (* n (log i))) (+ (* 100/3 (* (pow n 3) (* (pow (log n) 2) (log i)))) (+ (* 50/3 (* (pow n 3) (* (log i) (pow (log n) 2)))) (* 50 (* (pow n 2) (pow (log i) 2)))))))) (+ (* 100/3 (* (pow n 3) (* (pow (log i) 2) (log n)))) (+ (* 50 (* (pow n 2) (* (log n) (log i)))) (+ (* 50 (* (pow n 2) (* (log i) (log n)))) (+ (* 50/3 (* (pow n 3) (pow (log n) 3))) (+ (* 50/3 (* (pow n 3) (* (log n) (pow (log i) 2)))) (* 100 (* n (log n))))))))) |
| 82.0ms | (/ (* (* (* (expm1 (* n (log1p (/ i n)))) 100) (* (expm1 (* n (log1p (/ i n)))) 100)) (* (expm1 (* n (log1p (/ i n)))) 100)) (* (* (/ i n) (/ i n)) (/ i n))) |
| 75.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 69.0ms | (- (log (* (expm1 (* n (log1p (/ i n)))) 100)) (log (/ i n))) |
| 68.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 10.8b
12.7% (9.2b remaining)
Error of 19.0b against oracle of 9.7b and baseline of 20.3b