



Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus d
Results
| Original | 25.7 |
|---|---|
| Target | 0.4 |
| Herbie | 19.3 |
if (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) < -inf.0 or 1.8905920109414215e+242 < (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) Initial program 59.2
rmApplied add-sqr-sqrt59.2
Applied associate-/r*59.2
Taylor expanded around -inf 58.8
Simplified58.8
Taylor expanded around -inf 37.5
Simplified37.5
if -inf.0 < (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) < 1.8905920109414215e+242Initial program 11.8
rmApplied add-sqr-sqrt11.8
Applied associate-/r*11.7
Final simplification19.3
herbie shell --seed 2019002
(FPCore (a b c d)
:name "Complex division, real part"
:herbie-target
(if (< (fabs d) (fabs c)) (/ (+ a (* b (/ d c))) (+ c (* d (/ d c)))) (/ (+ b (* a (/ c d))) (+ d (* c (/ c d)))))
(/ (+ (* a c) (* b d)) (+ (* c c) (* d d))))
Time bar (total: 13.5s)Debug log
1 calls. Slowest were:
| 8.0ms | (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 27.4b
Found 2 expressions with local error:
| 27.4b | (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) |
| 0.2b | (+ (* a c) (* b d)) |
2 calls. Slowest were:
| 17.0ms | (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) |
| 2.0ms | (+ (* a c) (* b d)) |
2 calls. Slowest were:
| 54.0ms | (/ (+ (* a c) (* b d)) (+ (* c c) (* d d))) |
| 29.0ms | (+ (* a c) (* b d)) |
36 calls. Slowest were:
| 185.0ms | (- (* (* a c) (* a c)) (* (* b d) (* b d))) |
| 142.0ms | (/ (* (* (+ (* a c) (* b d)) (+ (* a c) (* b d))) (+ (* a c) (* b d))) (* (* (+ (* c c) (* d d)) (+ (* c c) (* d d))) (+ (* c c) (* d d)))) |
| 116.0ms | (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))) |
5 alts after pruning (4 fresh and 1 done)
Merged error: 27.0b
Found 4 expressions with local error:
| 29.1b | (sqrt (+ (* c c) (* d d))) |
| 29.1b | (sqrt (+ (* c c) (* d d))) |
| 19.0b | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 0.2b | (+ (* a c) (* b d)) |
4 calls. Slowest were:
| 18.0ms | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 4.0ms | (+ (* a c) (* b d)) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
4 calls. Slowest were:
| 84.0ms | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 31.0ms | (+ (* a c) (* b d)) |
| 26.0ms | (sqrt (+ (* c c) (* d d))) |
| 22.0ms | (sqrt (+ (* c c) (* d d))) |
75 calls. Slowest were:
| 195.0ms | (- (* (* a c) (* a c)) (* (* b d) (* b d))) |
| 133.0ms | (sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d)))) |
| 130.0ms | (sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 22.1b
Found 4 expressions with local error:
| 29.1b | (sqrt (+ (* c c) (* d d))) |
| 29.1b | (sqrt (+ (* c c) (* d d))) |
| 19.0b | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 0.2b | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d))))) |
4 calls. Slowest were:
| 9.0ms | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d))))) |
| 9.0ms | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
4 calls. Slowest were:
| 89.0ms | (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) |
| 72.0ms | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d))))) |
| 26.0ms | (sqrt (+ (* c c) (* d d))) |
| 19.0ms | (sqrt (+ (* c c) (* d d))) |
113 calls. Slowest were:
| 737.0ms | (* (* (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ 1 (sqrt (+ (* c c) (* d d))))) (/ 1 (sqrt (+ (* c c) (* d d))))) (* (* (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d))))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d)))))) |
| 316.0ms | (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (+ (* a c) (* b d)) (sqrt (+ (* c c) (* d d))))) |
| 254.0ms | (- (* (* a c) (* a c)) (* (* b d) (* b d))) |
8 alts after pruning (5 fresh and 3 done)
Merged error: 22.1b
Found 2 expressions with local error:
| 29.1b | (sqrt (+ (* c c) (* d d))) |
| 0.0b | (/ (- a) (sqrt (+ (* c c) (* d d)))) |
2 calls. Slowest were:
| 4.0ms | (/ (- a) (sqrt (+ (* c c) (* d d)))) |
| 2.0ms | (sqrt (+ (* c c) (* d d))) |
2 calls. Slowest were:
| 34.0ms | (/ (- a) (sqrt (+ (* c c) (* d d)))) |
| 28.0ms | (sqrt (+ (* c c) (* d d))) |
74 calls. Slowest were:
| 151.0ms | (sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))) |
| 147.0ms | (/ (* (* (- a) (- a)) (- a)) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))) |
| 113.0ms | (sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d)))) |
9 alts after pruning (6 fresh and 3 done)
Merged error: 15.0b
57.6% (4.7b remaining)
Error of 19.3b against oracle of 14.6b and baseline of 25.6b