


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
if y.im < -9.234484326885406e+101Initial program 38.4
Simplified38.4
rmApplied add-sqr-sqrt38.4
Applied *-un-lft-identity38.4
Applied times-frac38.4
Simplified38.4
Simplified24.6
Taylor expanded around -inf 16.0
Simplified16.0
if -9.234484326885406e+101 < y.im < -1.1521206323075965e-237 or -7.3148665069542e-292 < y.im < 1.0294661443825063e+154Initial program 18.4
Simplified18.4
rmApplied add-sqr-sqrt18.4
Applied *-un-lft-identity18.4
Applied times-frac18.4
Simplified18.4
Simplified12.2
rmApplied associate-*l/12.0
Simplified12.0
if -1.1521206323075965e-237 < y.im < -7.3148665069542e-292Initial program 23.5
Simplified23.6
rmApplied add-sqr-sqrt23.6
Applied *-un-lft-identity23.6
Applied times-frac23.5
Simplified23.5
Simplified13.9
rmApplied associate-*l/13.8
Simplified13.8
Taylor expanded around -inf 30.6
Simplified30.6
if 1.0294661443825063e+154 < y.im Initial program 43.2
Simplified43.2
rmApplied add-sqr-sqrt43.2
Applied *-un-lft-identity43.2
Applied times-frac43.2
Simplified43.2
Simplified28.1
rmApplied associate-*l/28.1
Simplified28.1
Taylor expanded around 0 12.3
Final simplification13.5
herbie shell --seed 2019004 +o rules:numerics
(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: 18.0s)Debug log
1 calls. Slowest were:
| 8.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: 30.8b
Found 3 expressions with local error:
| 30.8b | (/ (fma x.re y.re (* x.im y.im)) (fma y.im y.im (* y.re y.re))) |
| 0.2b | (fma x.re y.re (* x.im y.im)) |
| 0.0b | (fma y.im y.im (* y.re y.re)) |
3 calls. Slowest were:
| 4.0ms | (/ (fma x.re y.re (* x.im y.im)) (fma y.im y.im (* y.re y.re))) |
| 0.0ms | (fma x.re y.re (* x.im y.im)) |
| 0.0ms | (fma y.im y.im (* y.re y.re)) |
3 calls. Slowest were:
| 73.0ms | (/ (fma x.re y.re (* x.im y.im)) (fma y.im y.im (* y.re y.re))) |
| 45.0ms | (fma x.re y.re (* x.im y.im)) |
| 31.0ms | (fma y.im y.im (* y.re y.re)) |
34 calls. Slowest were:
| 206.0ms | (/ (* (* (fma x.re y.re (* x.im y.im)) (fma x.re y.re (* x.im y.im))) (fma x.re y.re (* x.im y.im))) (* (* (fma y.im y.im (* y.re y.re)) (fma y.im y.im (* y.re y.re))) (fma y.im y.im (* y.re y.re)))) |
| 27.0ms | (/ (* (cbrt (fma x.re y.re (* x.im y.im))) (cbrt (fma x.re y.re (* x.im y.im)))) 1) |
| 26.0ms | (/ (* (cbrt (fma x.re y.re (* x.im y.im))) (cbrt (fma x.re y.re (* x.im y.im)))) (* (cbrt (fma y.im y.im (* y.re y.re))) (cbrt (fma y.im y.im (* y.re y.re))))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 21.8b
Found 4 expressions with local error:
| 21.5b | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 1.0b | (fma y.im x.im (* x.re y.re)) |
| 0.3b | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 0.0b | (/ 1 (hypot y.im y.re)) |
4 calls. Slowest were:
| 6.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 4.0ms | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 1.0ms | (/ 1 (hypot y.im y.re)) |
4 calls. Slowest were:
| 148.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 75.0ms | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 32.0ms | (fma y.im x.im (* x.re y.re)) |
| 30.0ms | (/ 1 (hypot y.im y.re)) |
67 calls. Slowest were:
| 535.0ms | (* (* (* (/ 1 (hypot y.im y.re)) (/ 1 (hypot y.im y.re))) (/ 1 (hypot y.im y.re))) (* (* (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)))) |
| 244.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 158.0ms | (/ (* (* (fma y.im x.im (* x.re y.re)) (fma y.im x.im (* x.re y.re))) (fma y.im x.im (* x.re y.re))) (* (* (hypot y.im y.re) (hypot y.im y.re)) (hypot y.im y.re))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 8.1b
Found 3 expressions with local error:
| 21.5b | (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) |
| 0.2b | (fma y.re x.re (* x.im y.im)) |
| 0.1b | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
3 calls. Slowest were:
| 8.0ms | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
| 3.0ms | (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) |
| 0.0ms | (fma y.re x.re (* x.im y.im)) |
3 calls. Slowest were:
| 91.0ms | (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) |
| 80.0ms | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
| 39.0ms | (fma y.re x.re (* x.im y.im)) |
132 calls. Slowest were:
| 349.0ms | (/ (/ (* (* (fma y.re x.re (* x.im y.im)) (fma y.re x.re (* x.im y.im))) (fma y.re x.re (* x.im y.im))) (* (* (hypot y.im y.re) (hypot y.im y.re)) (hypot y.im y.re))) (* (* (hypot y.im y.re) (hypot y.im y.re)) (hypot y.im y.re))) |
| 245.0ms | (/ (* (* (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re))) (* (* (hypot y.im y.re) (hypot y.im y.re)) (hypot y.im y.re))) |
| 175.0ms | (/ (/ (* (cbrt (fma y.re x.re (* x.im y.im))) (cbrt (fma y.re x.re (* x.im y.im)))) (* (cbrt (hypot y.im y.re)) (cbrt (hypot y.im y.re)))) 1) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 3.3b
Found 4 expressions with local error:
| 22.1b | (cbrt (fma y.im x.im (* x.re y.re))) |
| 22.1b | (cbrt (fma y.im x.im (* x.re y.re))) |
| 22.1b | (cbrt (fma y.im x.im (* x.re y.re))) |
| 4.7b | (* (/ 1 (hypot y.im y.re)) (/ (* (cbrt (fma y.im x.im (* x.re y.re))) (cbrt (fma y.im x.im (* x.re y.re)))) 1)) |
4 calls. Slowest were:
| 14.0ms | (* (/ 1 (hypot y.im y.re)) (/ (* (cbrt (fma y.im x.im (* x.re y.re))) (cbrt (fma y.im x.im (* x.re y.re)))) 1)) |
| 1.0ms | (cbrt (fma y.im x.im (* x.re y.re))) |
| 1.0ms | (cbrt (fma y.im x.im (* x.re y.re))) |
4 calls. Slowest were:
| 270.0ms | (* (/ 1 (hypot y.im y.re)) (/ (* (cbrt (fma y.im x.im (* x.re y.re))) (cbrt (fma y.im x.im (* x.re y.re)))) 1)) |
| 152.0ms | (cbrt (fma y.im x.im (* x.re y.re))) |
| 137.0ms | (cbrt (fma y.im x.im (* x.re y.re))) |
| 100.0ms | (cbrt (fma y.im x.im (* x.re y.re))) |
34 calls. Slowest were:
| 443.0ms | (* (/ 1 (hypot y.im y.re)) (/ (* (cbrt (fma y.im x.im (* x.re y.re))) (cbrt (fma y.im x.im (* x.re y.re)))) 1)) |
| 419.0ms | (exp (* -1/3 (+ (log (/ 1 x.im)) (log (/ 1 y.im))))) |
| 383.0ms | (exp (* -1/3 (+ (log (/ 1 x.im)) (log (/ 1 y.im))))) |
10 alts after pruning (7 fresh and 3 done)
Merged error: 3.3b
20.2% (11.4b remaining)
Error of 13.5b against oracle of 2.2b and baseline of 16.4b