


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if x.im < -3.7549061336177695e+50 or 3.160825419620763e+142 < x.im Initial program 33.6
rmApplied add-sqr-sqrt33.6
Applied *-un-lft-identity33.6
Applied times-frac33.6
Simplified33.6
Simplified28.1
rmApplied associate-*l/28.0
Simplified28.0
rmApplied div-sub28.0
rmApplied *-un-lft-identity28.0
Applied times-frac10.2
Simplified10.2
if -3.7549061336177695e+50 < x.im < 3.160825419620763e+142Initial program 21.1
rmApplied add-sqr-sqrt21.1
Applied *-un-lft-identity21.1
Applied times-frac21.1
Simplified21.1
Simplified10.6
rmApplied associate-*l/10.5
Simplified10.5
rmApplied div-sub10.5
rmApplied *-un-lft-identity10.5
Applied times-frac2.3
Simplified2.3
Final simplification4.8
herbie shell --seed 2018362 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
:name "_divideComplex, imaginary part"
(/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))
Time bar (total: 25.2s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 22.7b
Found 3 expressions with local error:
| 22.7b | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 0.5b | (- (* x.im y.re) (* x.re y.im)) |
| 0.0b | (+ (* y.re y.re) (* y.im y.im)) |
3 calls. Slowest were:
| 7.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 6.0ms | (- (* x.im y.re) (* x.re y.im)) |
| 2.0ms | (+ (* y.re y.re) (* y.im y.im)) |
3 calls. Slowest were:
| 64.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 26.0ms | (- (* x.im y.re) (* x.re y.im)) |
| 15.0ms | (+ (* y.re y.re) (* y.im y.im)) |
43 calls. Slowest were:
| 619.0ms | (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.re y.im))) |
| 355.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)))) |
| 294.0ms | (- (pow (* x.im y.re) 3) (pow (* x.re y.im) 3)) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 15.4b
Found 4 expressions with local error:
| 15.1b | (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im)) |
| 0.5b | (- (* x.im y.re) (* x.re y.im)) |
| 0.3b | (* (/ 1 (hypot y.re y.im)) (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 0.0b | (/ 1 (hypot y.re y.im)) |
4 calls. Slowest were:
| 11.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im)) |
| 7.0ms | (* (/ 1 (hypot y.re y.im)) (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 4.0ms | (- (* x.im y.re) (* x.re y.im)) |
4 calls. Slowest were:
| 137.0ms | (* (/ 1 (hypot y.re y.im)) (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 117.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im)) |
| 44.0ms | (- (* x.im y.re) (* x.re y.im)) |
| 44.0ms | (/ 1 (hypot y.re y.im)) |
73 calls. Slowest were:
| 574.0ms | (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.re y.im))) |
| 357.0ms | (* 1 (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 297.0ms | (- (pow (* x.im y.re) 3) (pow (* x.re y.im) 3)) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 4.5b
Found 4 expressions with local error:
| 15.1b | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 0.5b | (- (* y.re x.im) (* x.re y.im)) |
| 0.1b | (/ (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (hypot y.re y.im)) |
| 0.0b | (hypot y.re y.im) |
4 calls. Slowest were:
| 7.0ms | (/ (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (hypot y.re y.im)) |
| 6.0ms | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 2.0ms | (- (* y.re x.im) (* x.re y.im)) |
4 calls. Slowest were:
| 89.0ms | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 88.0ms | (/ (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (hypot y.re y.im)) |
| 42.0ms | (- (* y.re x.im) (* x.re y.im)) |
| 33.0ms | (hypot y.re y.im) |
142 calls. Slowest were:
| 702.0ms | (- (* (* y.re x.im) (* y.re x.im)) (* (* x.re y.im) (* x.re y.im))) |
| 577.0ms | (/ (* (* (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im))) (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im))) (* (* (hypot y.re y.im) (hypot y.re y.im)) (hypot y.re y.im))) |
| 399.0ms | (/ (/ (* (* (- (* y.re x.im) (* x.re y.im)) (- (* y.re x.im) (* x.re y.im))) (- (* y.re x.im) (* x.re y.im))) (* (* (hypot y.re y.im) (hypot y.re y.im)) (hypot y.re y.im))) (* (* (hypot y.re y.im) (hypot y.re y.im)) (hypot y.re y.im))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 4.5b
Found 4 expressions with local error:
| 9.9b | (/ (* y.re x.im) (hypot y.re y.im)) |
| 9.5b | (/ (* x.re y.im) (hypot y.re y.im)) |
| 0.1b | (/ (- (/ (* y.re x.im) (hypot y.re y.im)) (/ (* x.re y.im) (hypot y.re y.im))) (hypot y.re y.im)) |
| 0.0b | (hypot y.re y.im) |
4 calls. Slowest were:
| 20.0ms | (/ (- (/ (* y.re x.im) (hypot y.re y.im)) (/ (* x.re y.im) (hypot y.re y.im))) (hypot y.re y.im)) |
| 3.0ms | (/ (* x.re y.im) (hypot y.re y.im)) |
| 3.0ms | (/ (* y.re x.im) (hypot y.re y.im)) |
4 calls. Slowest were:
| 203.0ms | (/ (- (/ (* y.re x.im) (hypot y.re y.im)) (/ (* x.re y.im) (hypot y.re y.im))) (hypot y.re y.im)) |
| 56.0ms | (/ (* x.re y.im) (hypot y.re y.im)) |
| 53.0ms | (/ (* y.re x.im) (hypot y.re y.im)) |
| 23.0ms | (hypot y.re y.im) |
84 calls. Slowest were:
| 567.0ms | (/ (* (* (* x.re y.im) (* x.re y.im)) (* x.re y.im)) (* (* (hypot y.re y.im) (hypot y.re y.im)) (hypot y.re y.im))) |
| 566.0ms | (/ (* (* (* y.re x.im) (* y.re x.im)) (* y.re x.im)) (* (* (hypot y.re y.im) (hypot y.re y.im)) (hypot y.re y.im))) |
| 370.0ms | (- (pow (/ (* y.re x.im) (hypot y.re y.im)) 3) (pow (/ (* x.re y.im) (hypot y.re y.im)) 3)) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 0.2b
52% (4.1b remaining)
Error of 4.8b against oracle of 0.7b and baseline of 9.3b