


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < -inf.0 or 1.8905920109414215e+242 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) 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 < (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) < 1.8905920109414215e+242Initial program 11.8
rmApplied add-sqr-sqrt11.8
Applied associate-/r*11.7
Final simplification19.3
herbie shell --seed 2019002
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, real part"
(/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))))
Time bar (total: 15.4s)Debug log
1 calls. Slowest were:
| 9.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 27.4b
Found 2 expressions with local error:
| 27.4b | (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 0.2b | (+ (* x.re y.re) (* x.im y.im)) |
2 calls. Slowest were:
| 22.0ms | (+ (* x.re y.re) (* x.im y.im)) |
| 20.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) |
2 calls. Slowest were:
| 85.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 41.0ms | (+ (* x.re y.re) (* x.im y.im)) |
36 calls. Slowest were:
| 317.0ms | (- (* (* x.re y.re) (* x.re y.re)) (* (* x.im y.im) (* x.im y.im))) |
| 232.0ms | (+ (* (* y.re y.re) (* y.re y.re)) (- (* (* y.im y.im) (* y.im y.im)) (* (* y.re y.re) (* y.im y.im)))) |
| 167.0ms | (/ (* (* (+ (* x.re y.re) (* x.im y.im)) (+ (* x.re y.re) (* x.im y.im))) (+ (* x.re y.re) (* x.im y.im))) (* (* (+ (* y.re y.re) (* y.im y.im)) (+ (* y.re y.re) (* y.im y.im))) (+ (* y.re y.re) (* y.im y.im)))) |
5 alts after pruning (4 fresh and 1 done)
Merged error: 27.0b
Found 4 expressions with local error:
| 29.1b | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 29.1b | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 19.0b | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 0.2b | (+ (* x.re y.re) (* x.im y.im)) |
4 calls. Slowest were:
| 10.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 2.0ms | (+ (* x.re y.re) (* x.im y.im)) |
| 2.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
4 calls. Slowest were:
| 100.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 41.0ms | (+ (* x.re y.re) (* x.im y.im)) |
| 22.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 18.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
75 calls. Slowest were:
| 250.0ms | (- (* (* x.re y.re) (* x.re y.re)) (* (* x.im y.im) (* x.im y.im))) |
| 154.0ms | (sqrt (+ (* (* y.re y.re) (* y.re y.re)) (- (* (* y.im y.im) (* y.im y.im)) (* (* y.re y.re) (* y.im y.im))))) |
| 146.0ms | (sqrt (- (* (* y.re y.re) (* y.re y.re)) (* (* y.im y.im) (* y.im y.im)))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 22.1b
Found 4 expressions with local error:
| 29.1b | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 29.1b | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 19.0b | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 0.2b | (* (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im))))) |
4 calls. Slowest were:
| 9.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 9.0ms | (* (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im))))) |
| 2.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
4 calls. Slowest were:
| 124.0ms | (* (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im))))) |
| 80.0ms | (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 27.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 19.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
113 calls. Slowest were:
| 808.0ms | (* (* (* (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im))))) (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im))))) (* (* (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im))))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im)))))) |
| 400.0ms | (* (/ 1 (sqrt (+ (* y.re y.re) (* y.im y.im)))) (/ (+ (* x.re y.re) (* x.im y.im)) (sqrt (+ (* y.re y.re) (* y.im y.im))))) |
| 277.0ms | (- (* (* x.re y.re) (* x.re y.re)) (* (* x.im y.im) (* x.im y.im))) |
8 alts after pruning (5 fresh and 3 done)
Merged error: 22.1b
Found 2 expressions with local error:
| 29.1b | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
| 0.0b | (/ (- x.re) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
2 calls. Slowest were:
| 5.0ms | (/ (- x.re) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 2.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
2 calls. Slowest were:
| 46.0ms | (/ (- x.re) (sqrt (+ (* y.re y.re) (* y.im y.im)))) |
| 19.0ms | (sqrt (+ (* y.re y.re) (* y.im y.im))) |
74 calls. Slowest were:
| 539.0ms | (sqrt (- (* (* y.re y.re) (* y.re y.re)) (* (* y.im y.im) (* y.im y.im)))) |
| 190.0ms | (/ (* (* (- x.re) (- x.re)) (- x.re)) (* (* (sqrt (+ (* y.re y.re) (* y.im y.im))) (sqrt (+ (* y.re y.re) (* y.im y.im)))) (sqrt (+ (* y.re y.re) (* y.im y.im))))) |
| 154.0ms | (sqrt (+ (* (* y.re y.re) (* y.re y.re)) (- (* (* y.im y.im) (* y.im y.im)) (* (* y.re y.re) (* y.im y.im))))) |
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