


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
if y.re < -2.9013770437529842e+79Initial program 37.9
Simplified37.9
rmApplied add-sqr-sqrt37.9
Applied *-un-lft-identity37.9
Applied times-frac37.9
Simplified37.9
Simplified25.2
rmApplied associate-*l/25.1
Simplified25.1
Taylor expanded around -inf 19.5
Simplified19.5
if -2.9013770437529842e+79 < y.re < 5.390280842657685e+57Initial program 18.3
Simplified18.3
rmApplied add-sqr-sqrt18.3
Applied *-un-lft-identity18.3
Applied times-frac18.4
Simplified18.3
Simplified11.3
rmApplied associate-*l/11.2
Simplified11.2
if 5.390280842657685e+57 < y.re Initial program 35.5
Simplified35.5
rmApplied add-sqr-sqrt35.5
Applied *-un-lft-identity35.5
Applied times-frac35.5
Simplified35.5
Simplified23.3
rmApplied associate-*l/23.3
Simplified23.3
rmApplied add-sqr-sqrt23.4
Applied *-un-lft-identity23.4
Applied times-frac23.4
Taylor expanded around 0 18.5
Final simplification14.3
herbie shell --seed 2019002 +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: 17.4s)Debug log
1 calls. Slowest were:
| 11.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 | (/ (fma x.re y.re (* x.im y.im)) (fma y.im y.im (* y.re y.re))) |
| 0.3b | (fma x.re y.re (* x.im y.im)) |
2 calls. Slowest were:
| 7.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)) |
2 calls. Slowest were:
| 81.0ms | (/ (fma x.re y.re (* x.im y.im)) (fma y.im y.im (* y.re y.re))) |
| 44.0ms | (fma x.re y.re (* x.im y.im)) |
31 calls. Slowest were:
| 231.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)))) |
| 31.0ms | (/ (* (cbrt (fma x.re y.re (* x.im y.im))) (cbrt (fma x.re y.re (* x.im y.im)))) 1) |
| 27.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: 19.4b
Found 4 expressions with local error:
| 19.0b | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 0.2b | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 0.0b | (hypot y.im y.re) |
| 0.0b | (hypot y.im y.re) |
4 calls. Slowest were:
| 9.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 7.0ms | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 0.0ms | (hypot y.im y.re) |
4 calls. Slowest were:
| 132.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 60.0ms | (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re)) |
| 26.0ms | (hypot y.im y.re) |
| 25.0ms | (hypot y.im y.re) |
63 calls. Slowest were:
| 621.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)))) |
| 274.0ms | (* (/ 1 (hypot y.im y.re)) (/ (fma y.im x.im (* x.re y.re)) (hypot y.im y.re))) |
| 140.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 4 expressions with local error:
| 19.0b | (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) |
| 0.3b | (fma y.re x.re (* x.im y.im)) |
| 0.0b | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
| 0.0b | (hypot y.im y.re) |
4 calls. Slowest were:
| 12.0ms | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
| 7.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)) |
4 calls. Slowest were:
| 85.0ms | (/ (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) (hypot y.im y.re)) |
| 80.0ms | (/ (fma y.re x.re (* x.im y.im)) (hypot y.im y.re)) |
| 33.0ms | (fma y.re x.re (* x.im y.im)) |
| 33.0ms | (hypot y.im y.re) |
135 calls. Slowest were:
| 615.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))) |
| 369.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))) |
| 290.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) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 2.6b
Found 4 expressions with local error:
| 9.5b | (* (/ 1 (sqrt (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re)))) |
| 9.5b | (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re))) |
| 0.3b | (/ 1 (sqrt (hypot y.im y.re))) |
| 0.3b | (fma y.re x.re (* x.im y.im)) |
4 calls. Slowest were:
| 14.0ms | (* (/ 1 (sqrt (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re)))) |
| 7.0ms | (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re))) |
| 2.0ms | (/ 1 (sqrt (hypot y.im y.re))) |
4 calls. Slowest were:
| 146.0ms | (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re))) |
| 118.0ms | (* (/ 1 (sqrt (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re)))) |
| 54.0ms | (/ 1 (sqrt (hypot y.im y.re))) |
| 39.0ms | (fma y.re x.re (* x.im y.im)) |
101 calls. Slowest were:
| 681.0ms | (* (* (* (/ 1 (sqrt (hypot y.im y.re))) (/ 1 (sqrt (hypot y.im y.re)))) (/ 1 (sqrt (hypot y.im y.re)))) (* (* (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re)))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re))))) |
| 331.0ms | (* (/ 1 (sqrt (hypot y.im y.re))) (/ (fma y.re x.re (* x.im y.im)) (sqrt (hypot y.im y.re)))) |
| 189.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))) (* (* (sqrt (hypot y.im y.re)) (sqrt (hypot y.im y.re))) (sqrt (hypot y.im y.re)))) |
11 alts after pruning (8 fresh and 3 done)
Merged error: 2.6b
14.9% (11.9b remaining)
Error of 14.3b against oracle of 2.4b and baseline of 16.4b