



Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 25.8 |
|---|---|
| Target | 0.5 |
| Herbie | 25.7 |
Initial program 25.8
rmApplied add-sqr-sqrt25.8
Applied associate-/r*25.7
rmApplied clear-num25.7
Final simplification25.7
herbie shell --seed 2019010
(FPCore (a b c d)
:name "Complex division, imag part"
:herbie-target
(if (< (fabs d) (fabs c)) (/ (- b (* a (/ d c))) (+ c (* d (/ d c)))) (/ (+ (- a) (* b (/ c d))) (+ d (* c (/ c d)))))
(/ (- (* b c) (* a d)) (+ (* c c) (* d d))))
Time bar (total: 31.4s)Debug log
| 55.0ms | (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 24.4b
Found 3 expressions with local error:
| 24.4b | (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) |
| 0.0b | (- (* b c) (* a d)) |
| 0.0b | (+ (* c c) (* d d)) |
| 11× | add-cube-cbrt |
| 11× | *-un-lft-identity |
| 11× | add-sqr-sqrt |
| 9× | times-frac |
| 7× | add-log-exp |
| 5× | add-exp-log |
| 5× | add-cbrt-cube |
| 3× | associate-/l* |
| 3× | associate-/r* |
| 3× | pow1 |
| 2× | associate-/l/ |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | associate-/r/ |
| 2× | flip3-- |
| 2× | flip3-+ |
| 1× | div-inv |
| 1× | div-exp |
| 1× | div-sub |
| 1× | diff-log |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | sum-log |
| 1× | clear-num |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 7.0ms | (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) |
| 3.0ms | (+ (* c c) (* d d)) |
| 2.0ms | (- (* b c) (* a d)) |
| 92.0ms | (/ (- (* b c) (* a d)) (+ (* c c) (* d d))) |
| 45.0ms | (- (* b c) (* a d)) |
| 15.0ms | (+ (* c c) (* d d)) |
| 279.0ms | (- (* (* b c) (* b c)) (* (* a d) (* a d))) |
| 234.0ms | (- (pow (* b c) 3) (pow (* a d) 3)) |
| 174.0ms | (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))) |
| 95.0ms | (/ (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))) (* (* (+ (* c c) (* d d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)))) |
| 72.0ms | (/ (- (* b c) (* a d)) (cbrt (+ (* c c) (* d d)))) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 24.0b
Found 4 expressions with local error:
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 14.4b | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 0.1b | (/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))) |
| 288× | times-frac |
| 164× | add-sqr-sqrt |
| 162× | add-cube-cbrt |
| 162× | *-un-lft-identity |
| 156× | sqrt-prod |
| 27× | associate-/l* |
| 22× | sqrt-div |
| 18× | associate-/r/ |
| 12× | associate-/r* |
| 11× | flip-+ |
| 11× | add-exp-log |
| 11× | add-cbrt-cube |
| 11× | flip3-+ |
| 9× | div-inv |
| 4× | add-log-exp |
| 4× | div-exp |
| 4× | cbrt-undiv |
| 4× | pow1 |
| 3× | associate-/l/ |
| 3× | div-sub |
| 2× | pow1/2 |
| 2× | frac-2neg |
| 2× | clear-num |
| 2× | rem-sqrt-square |
| 1× | flip-- |
| 1× | flip3-- |
| 21.0ms | (/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))) |
| 7.0ms | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
| 105.0ms | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 68.0ms | (/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))) |
| 28.0ms | (sqrt (+ (* c c) (* d d))) |
| 24.0ms | (sqrt (+ (* c c) (* d d))) |
| 406.0ms | (/ (* (* (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))) |
| 244.0ms | (/ (/ (* (cbrt (- (* b c) (* a d))) (cbrt (- (* b c) (* a d)))) (* (cbrt (sqrt (+ (* c c) (* d d)))) (cbrt (sqrt (+ (* c c) (* d d)))))) 1) |
| 241.0ms | (- (pow (* b c) 3) (pow (* a d) 3)) |
| 226.0ms | (/ (/ (* (cbrt (- (* b c) (* a d))) (cbrt (- (* b c) (* a d)))) (* (cbrt (sqrt (+ (* c c) (* d d)))) (cbrt (sqrt (+ (* c c) (* d d)))))) (sqrt 1)) |
| 211.0ms | (- (* (* b c) (* b c)) (* (* a d) (* a d))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 21.8b
Found 4 expressions with local error:
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 14.5b | (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))) |
| 0.2b | (/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))) |
| 36× | times-frac |
| 36× | add-sqr-sqrt |
| 34× | add-cube-cbrt |
| 34× | *-un-lft-identity |
| 27× | sqrt-prod |
| 27× | associate-/r* |
| 9× | add-exp-log |
| 6× | associate-/l* |
| 6× | sqrt-div |
| 6× | add-cbrt-cube |
| 5× | associate-/r/ |
| 5× | pow1 |
| 4× | add-log-exp |
| 3× | div-inv |
| 3× | flip-+ |
| 3× | flip3-+ |
| 2× | associate-/l/ |
| 2× | flip-- |
| 2× | div-exp |
| 2× | pow1/2 |
| 2× | flip3-- |
| 2× | frac-2neg |
| 2× | clear-num |
| 2× | rec-exp |
| 2× | rem-sqrt-square |
| 1× | inv-pow |
| 1× | pow-flip |
| 1× | cbrt-undiv |
| 11.0ms | (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))) |
| 3.0ms | (/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
| 64.0ms | (/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))) |
| 50.0ms | (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))) |
| 19.0ms | (sqrt (+ (* c c) (* d d))) |
| 18.0ms | (sqrt (+ (* c c) (* d d))) |
| 116.0ms | (/ (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))) (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d)))) |
| 108.0ms | (sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d)))) |
| 88.0ms | (+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d)))) |
| 87.0ms | (+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d)))) |
| 87.0ms | (sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d)))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 21.8b
Found 4 expressions with local error:
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 31.8b | (sqrt (+ (* c c) (* d d))) |
| 14.4b | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 0.2b | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) |
| 37× | add-sqr-sqrt |
| 36× | times-frac |
| 35× | add-cube-cbrt |
| 35× | *-un-lft-identity |
| 27× | sqrt-prod |
| 24× | associate-*r* |
| 16× | add-exp-log |
| 11× | add-cbrt-cube |
| 10× | sqrt-div |
| 6× | associate-/r/ |
| 6× | associate-*l* |
| 6× | associate-/r* |
| 6× | pow1 |
| 5× | flip-+ |
| 5× | flip3-+ |
| 4× | add-log-exp |
| 4× | prod-exp |
| 3× | associate-/l* |
| 3× | div-inv |
| 3× | div-exp |
| 2× | associate-/l/ |
| 2× | cbrt-unprod |
| 2× | pow1/2 |
| 2× | rec-exp |
| 2× | rem-sqrt-square |
| 2× | cbrt-undiv |
| 1× | flip-- |
| 1× | *-commutative |
| 1× | associate-*r/ |
| 1× | associate-*l/ |
| 1× | pow-prod-down |
| 1× | div-sub |
| 1× | flip3-- |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | frac-times |
| 11.0ms | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 10.0ms | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) |
| 8.0ms | (sqrt (+ (* c c) (* d d))) |
| 4.0ms | (sqrt (+ (* c c) (* d d))) |
| 71.0ms | (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) |
| 70.0ms | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) |
| 19.0ms | (sqrt (+ (* c c) (* d d))) |
| 18.0ms | (sqrt (+ (* c c) (* d d))) |
| 203.0ms | (* 1 (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) |
| 192.0ms | (- (pow (* b c) 3) (pow (* a d) 3)) |
| 188.0ms | (- (* (* b c) (* b c)) (* (* a d) (* a d))) |
| 140.0ms | (/ (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))) |
| 109.0ms | (sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))) |
9 alts after pruning (7 fresh and 2 done)
Merged error: 21.8b
0% (2.6b remaining)
Error of 25.7b against oracle of 23.1b and baseline of 25.7b