



Bits error versus x
Results
| Original | 39.5 |
|---|---|
| Target | 39.0 |
| Herbie | 1.1 |
Initial program 39.5
Taylor expanded around 0 12.0
Simplified1.1
Final simplification1.1
herbie shell --seed 2019016
(FPCore (x)
:name "expq2 (section 3.11)"
:herbie-target
(/ 1 (- 1 (exp (- x))))
(/ (exp x) (- (exp x) 1)))
Time bar (total: 13.8s)Debug log
| 315× | (pre true 80) |
| 109× | (body real 80) |
| 64× | (body real 1280) |
| 58× | (body exit 10240) |
| 46× | (body real 640) |
| 26× | (body real 320) |
| 12× | (body real 160) |
| 4.0ms | (/ (exp x) (- (exp x) 1)) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 36.2b
Found 2 expressions with local error:
| 4.2b | (- (exp x) 1) |
| 0.3b | (/ (exp x) (- (exp x) 1)) |
| 16× | add-sqr-sqrt |
| 12× | times-frac |
| 11× | add-cube-cbrt |
| 11× | *-un-lft-identity |
| 5× | difference-of-sqr-1 |
| 4× | add-cbrt-cube |
| 4× | associate-/r* |
| 3× | associate-/l* |
| 3× | add-exp-log |
| 2× | add-log-exp |
| 2× | flip-- |
| 2× | associate-/r/ |
| 2× | flip3-- |
| 2× | pow1 |
| 1× | div-inv |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | cbrt-undiv |
| 5.0ms | (/ (exp x) (- (exp x) 1)) |
| 3.0ms | (- (exp x) 1) |
| 21.0ms | (/ (exp x) (- (exp x) 1)) |
| 11.0ms | (- (exp x) 1) |
| 201.0ms | (/ (* (* (exp x) (exp x)) (exp x)) (* (* (- (exp x) 1) (- (exp x) 1)) (- (exp x) 1))) |
| 74.0ms | (+ x (+ (* 1/6 (pow x 3)) (* 1/2 (pow x 2)))) |
| 31.0ms | (+ (* (exp x) (exp x)) (+ (* 1 1) (* (exp x) 1))) |
| 18.0ms | (/ (* (cbrt (exp x)) (cbrt (exp x))) (* (cbrt (- (exp x) 1)) (cbrt (- (exp x) 1)))) |
| 11.0ms | (/ (* (cbrt (exp x)) (cbrt (exp x))) (sqrt (- (exp x) 1))) |
4 alts after pruning (4 fresh and 0 done)
Merged error: 0.3b
Found 3 expressions with local error:
| 0.3b | (* x 1/6) |
| 0.1b | (* (+ (* x 1/6) 1/2) (* x x)) |
| 0.0b | (/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x)))) |
| 12× | add-cube-cbrt |
| 12× | *-un-lft-identity |
| 12× | add-sqr-sqrt |
| 9× | times-frac |
| 7× | add-cbrt-cube |
| 6× | add-exp-log |
| 5× | pow1 |
| 3× | add-log-exp |
| 3× | associate-/l* |
| 3× | associate-*l* |
| 3× | associate-/r* |
| 2× | flip-+ |
| 2× | *-commutative |
| 2× | associate-/r/ |
| 2× | associate-*l/ |
| 2× | flip3-+ |
| 1× | div-inv |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | associate-*r* |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | cbrt-undiv |
| 6.0ms | (* (+ (* x 1/6) 1/2) (* x x)) |
| 6.0ms | (/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x)))) |
| 0.0ms | (* x 1/6) |
| 27.0ms | (* (+ (* x 1/6) 1/2) (* x x)) |
| 20.0ms | (/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x)))) |
| 7.0ms | (* x 1/6) |
| 438.0ms | (* (- (* (* x 1/6) (* x 1/6)) (* 1/2 1/2)) (* x x)) |
| 396.0ms | (* (+ (pow (* x 1/6) 3) (pow 1/2 3)) (* x x)) |
| 216.0ms | (- x (* (+ (* x 1/6) 1/2) (* x x))) |
| 145.0ms | (- (+ (* 18 (/ (exp x) (pow x 5))) (* 6 (/ (exp x) (pow x 3)))) (* 18 (/ (exp x) (pow x 4)))) |
| 114.0ms | (/ (sqrt (exp x)) (sqrt (+ x (* (+ (* x 1/6) 1/2) (* x x))))) |
4 alts after pruning (3 fresh and 1 done)
Merged error: 0.3b
Found 2 expressions with local error:
| 0.3b | (* 1/12 x) |
| 0.0b | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 4× | add-log-exp |
| 2× | add-cube-cbrt |
| 2× | add-exp-log |
| 2× | add-cbrt-cube |
| 2× | *-un-lft-identity |
| 2× | pow1 |
| 2× | add-sqr-sqrt |
| 1× | flip-+ |
| 1× | *-commutative |
| 1× | flip3-+ |
| 1× | sum-log |
| 1× | associate-+r+ |
| 1× | +-commutative |
| 6.0ms | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 0.0ms | (* 1/12 x) |
| 7.0ms | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 7.0ms | (* 1/12 x) |
| 23.0ms | (* (exp (* 1/12 x)) (exp (+ (/ 1 x) 1/2))) |
| 9.0ms | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 9.0ms | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 8.0ms | (+ (* 1/12 x) (+ (/ 1 x) 1/2)) |
| 3.0ms | (* 1/12 x) |
5 alts after pruning (3 fresh and 2 done)
Merged error: 0.3b
Found 4 expressions with local error:
| 4.2b | (- (* (exp x) (exp x)) (* 1 1)) |
| 0.3b | (* (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) (+ (exp x) 1)) |
| 0.3b | (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) |
| 0.0b | (* (exp x) (exp x)) |
| 24× | add-cube-cbrt |
| 24× | times-frac |
| 24× | *-un-lft-identity |
| 24× | add-sqr-sqrt |
| 21× | associate-*l* |
| 13× | add-cbrt-cube |
| 11× | pow1 |
| 9× | add-exp-log |
| 8× | difference-of-squares |
| 6× | add-log-exp |
| 6× | associate-*r* |
| 4× | associate-/r/ |
| 4× | associate-/r* |
| 3× | associate-/l* |
| 3× | flip-- |
| 3× | cbrt-unprod |
| 3× | prod-exp |
| 3× | flip3-- |
| 2× | div-inv |
| 2× | flip-+ |
| 2× | *-commutative |
| 2× | associate-*r/ |
| 2× | pow-prod-down |
| 2× | div-exp |
| 2× | flip3-+ |
| 2× | cbrt-undiv |
| 2× | frac-times |
| 1× | pow-prod-up |
| 1× | associate-*l/ |
| 1× | diff-log |
| 1× | pow-plus |
| 1× | distribute-lft-in |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | distribute-rgt-in |
| 1× | pow2 |
| 14.0ms | (* (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) (+ (exp x) 1)) |
| 10.0ms | (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) |
| 5.0ms | (- (* (exp x) (exp x)) (* 1 1)) |
| 3.0ms | (* (exp x) (exp x)) |
| 45.0ms | (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) |
| 39.0ms | (* (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) (+ (exp x) 1)) |
| 16.0ms | (- (* (exp x) (exp x)) (* 1 1)) |
| 9.0ms | (* (exp x) (exp x)) |
| 324.0ms | (* (- (* (exp x) (exp x)) (* 1 1)) (+ (* (exp x) (exp x)) (- (* 1 1) (* (exp x) 1)))) |
| 279.0ms | (* (/ (exp x) (- (* (exp x) (exp x)) (* 1 1))) (+ (exp x) 1)) |
| 235.0ms | (/ (* (exp x) (+ (exp x) 1)) (- (pow (exp x) 2) 1)) |
| 233.0ms | (* (exp x) (- (* (exp x) (exp x)) (* 1 1))) |
| 198.0ms | (* 1 (/ (exp x) (- (* (exp x) (exp x)) (* 1 1)))) |
4 alts after pruning (3 fresh and 1 done)
Merged error: 0.2b
0% (0.7b remaining)
Error of 1.1b against oracle of 0.5b and baseline of 1.1b
| 10554× | (pre true 80) |
| 2927× | (body real 80) |
| 2551× | (body exit 10240) |
| 2224× | (body real 1280) |
| 1655× | (body real 640) |
| 781× | (body real 320) |
| 416× | (body real 160) |