


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -2.0619687977359296e-96Initial program 36.8
Taylor expanded around -inf 0.8
Simplified0.8
rmApplied add-cbrt-cube0.8
if -2.0619687977359296e-96 < y.re < -1.7792701921219835e-297Initial program 32.0
rmApplied add-sqr-sqrt32.0
if -1.7792701921219835e-297 < y.re < 7.866105145579578e-231 or 1.2393756173610735e-129 < y.re Initial program 21.1
Taylor expanded around -inf 19.7
Simplified19.7
Taylor expanded around -inf 12.9
Simplified12.9
if 7.866105145579578e-231 < y.re < 1.2393756173610735e-129Initial program 29.5
Final simplification11.0
herbie shell --seed 2019002
(FPCore (x.re x.im y.re y.im)
:name "powComplex, imaginary part"
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))
Time bar (total: 4.3m)Debug log
1 calls. Slowest were:
| 138.0ms | (* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 30.3b
Found 4 expressions with local error:
| 35.1b | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 28.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 28.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.3b | (* (atan2 x.im x.re) y.im) |
4 calls. Slowest were:
| 28.0ms | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 2.0ms | (* (atan2 x.im x.re) y.im) |
| 2.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
4 calls. Slowest were:
| 159.0ms | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 26.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 19.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 13.0ms | (* (atan2 x.im x.re) y.im) |
27 calls. Slowest were:
| 163.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 160.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 65.0ms | (sqrt (+ (pow (* x.re x.re) 3) (pow (* x.im x.im) 3))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 10.0b
Found 4 expressions with local error:
| 35.1b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 28.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.3b | (* (atan2 x.im x.re) y.im) |
| 0.3b | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
4 calls. Slowest were:
| 13.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 3.0ms | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
| 2.0ms | (* (atan2 x.im x.re) y.im) |
4 calls. Slowest were:
| 130.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 83.0ms | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
| 19.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 13.0ms | (* (atan2 x.im x.re) y.im) |
23 calls. Slowest were:
| 146.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 97.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
| 69.0ms | (* -1 (* y.re (log (/ -1 x.re)))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 5.3b
Found 4 expressions with local error:
| 35.1b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 35.1b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 35.1b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 28.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
4 calls. Slowest were:
| 13.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 11.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 8.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
4 calls. Slowest were:
| 179.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 155.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 146.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 33.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
21 calls. Slowest were:
| 187.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 90.0ms | (sin (- (+ (* (atan2 x.im x.re) y.re) (* y.im (log -1))) (* y.im (log (/ 1 x.re))))) |
| 87.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 5.3b
Found 4 expressions with local error:
| 35.1b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 0.3b | (* (atan2 x.im x.re) y.im) |
| 0.3b | (* (log (- x.re)) y.im) |
| 0.3b | (* (log (- x.re)) y.re) |
4 calls. Slowest were:
| 17.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 5.0ms | (* (log (- x.re)) y.re) |
| 5.0ms | (* (log (- x.re)) y.im) |
4 calls. Slowest were:
| 127.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 77.0ms | (* (log (- x.re)) y.re) |
| 68.0ms | (* (log (- x.re)) y.im) |
| 13.0ms | (* (atan2 x.im x.re) y.im) |
19 calls. Slowest were:
| 104.0ms | (* -1 (* y.im (log (/ -1 x.re)))) |
| 77.0ms | (* -1 (* y.re (log (/ -1 x.re)))) |
| 76.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
12 alts after pruning (9 fresh and 3 done)
Merged error: 5.2b
56.2% (6.0b remaining)
Error of 11.0b against oracle of 5.0b and baseline of 18.7b