


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.im < 4.4205857620523035e+121Initial program 23.1
rmApplied add-sqr-sqrt23.1
Applied *-un-lft-identity23.1
Applied times-frac23.1
Simplified23.1
Simplified14.5
rmApplied associate-*l/14.4
Simplified14.4
if 4.4205857620523035e+121 < y.im Initial program 41.1
rmApplied add-sqr-sqrt41.1
Applied *-un-lft-identity41.1
Applied times-frac41.1
Simplified41.1
Simplified26.3
rmApplied associate-*l/26.2
Simplified26.2
rmApplied clear-num26.3
Taylor expanded around 0 15.1
Simplified15.1
Final simplification14.5
herbie shell --seed 2019008 +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: 29.1s)Debug log
1 calls. Slowest were:
| 44.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 26.9b
Found 3 expressions with local error:
| 26.9b | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 0.7b | (- (* x.im y.re) (* x.re y.im)) |
| 0.0b | (+ (* y.re y.re) (* y.im y.im)) |
3 calls. Slowest were:
| 8.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 2.0ms | (+ (* y.re y.re) (* y.im y.im)) |
| 2.0ms | (- (* x.im y.re) (* x.re y.im)) |
3 calls. Slowest were:
| 85.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))) |
| 46.0ms | (- (* x.im y.re) (* x.re y.im)) |
| 22.0ms | (+ (* y.re y.re) (* y.im y.im)) |
43 calls. Slowest were:
| 575.0ms | (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.re y.im))) |
| 281.0ms | (- (pow (* x.im y.re) 3) (pow (* x.re y.im) 3)) |
| 268.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)))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 16.7b
Found 4 expressions with local error:
| 16.4b | (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im)) |
| 0.7b | (- (* 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:
| 15.0ms | (* (/ 1 (hypot y.re y.im)) (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 12.0ms | (/ (- (* 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:
| 493.0ms | (* (/ 1 (hypot y.re y.im)) (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 106.0ms | (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im)) |
| 39.0ms | (/ 1 (hypot y.re y.im)) |
| 36.0ms | (- (* x.im y.re) (* x.re y.im)) |
73 calls. Slowest were:
| 526.0ms | (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.re y.im))) |
| 329.0ms | (* 1 (/ (- (* x.im y.re) (* x.re y.im)) (hypot y.re y.im))) |
| 274.0ms | (- (pow (* x.im y.re) 3) (pow (* x.re y.im) 3)) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 5.7b
Found 4 expressions with local error:
| 16.4b | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 0.7b | (- (* 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:
| 15.0ms | (/ (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (hypot y.re y.im)) |
| 12.0ms | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 4.0ms | (- (* y.re x.im) (* x.re y.im)) |
4 calls. Slowest were:
| 93.0ms | (/ (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) (hypot y.re y.im)) |
| 88.0ms | (/ (- (* y.re x.im) (* x.re y.im)) (hypot y.re y.im)) |
| 46.0ms | (- (* y.re x.im) (* x.re y.im)) |
| 40.0ms | (hypot y.re y.im) |
142 calls. Slowest were:
| 591.0ms | (- (* (* y.re x.im) (* y.re x.im)) (* (* x.re y.im) (* x.re y.im))) |
| 510.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))) |
| 405.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))) |
14 alts after pruning (13 fresh and 1 done)
Merged error: 5.6b
Found 4 expressions with local error:
| 16.5b | (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im))) |
| 0.7b | (- (* y.re x.im) (* x.re y.im)) |
| 0.2b | (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) |
| 0.1b | (/ (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) (hypot y.re y.im)) |
4 calls. Slowest were:
| 9.0ms | (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im))) |
| 8.0ms | (/ (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) (hypot y.re y.im)) |
| 5.0ms | (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) |
4 calls. Slowest were:
| 151.0ms | (/ (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) (hypot y.re y.im)) |
| 85.0ms | (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) |
| 80.0ms | (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im))) |
| 33.0ms | (- (* y.re x.im) (* x.re y.im)) |
99 calls. Slowest were:
| 445.0ms | (/ (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) (hypot y.re y.im)) |
| 444.0ms | (/ (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im)))) (hypot y.re y.im)) |
| 355.0ms | (- (log (/ 1 (/ (hypot y.re y.im) (- (* y.re x.im) (* x.re y.im))))) (log (hypot y.re y.im))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 5.6b
16.7% (9.0b remaining)
Error of 14.5b against oracle of 5.6b and baseline of 16.3b