


Bits error versus x.re



Bits error versus x.im



Bits error versus y.re



Bits error versus y.im
Results
if y.re < -6.864987875366157e-55Initial program 37.5
Taylor expanded around -inf 0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied associate-*l*0.2
rmApplied cbrt-unprod0.2
rmApplied add-cube-cbrt0.2
Applied associate-*r*0.2
if -6.864987875366157e-55 < y.re Initial program 26.3
Taylor expanded around -inf 31.2
Simplified31.2
Taylor expanded around -inf 19.3
Simplified19.3
Final simplification9.8
herbie shell --seed 2019005
(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.8m)Debug log
1 calls. Slowest were:
| 491.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: 31.5b
Found 4 expressions with local error:
| 37.9b | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 29.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 29.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.3b | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
4 calls. Slowest were:
| 11.0ms | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 4.0ms | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
| 2.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
4 calls. Slowest were:
| 177.0ms | (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))) |
| 80.0ms | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
| 34.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 32.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
27 calls. Slowest were:
| 122.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 107.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 71.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 10.9b
Found 4 expressions with local error:
| 38.0b | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 29.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.3b | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
| 0.3b | (* (log (- x.re)) y.im) |
4 calls. Slowest were:
| 12.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 6.0ms | (* (log (- x.re)) y.im) |
| 4.0ms | (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) |
4 calls. Slowest were:
| 141.0ms | (sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re))) |
| 86.0ms | (* (log (- x.re)) y.im) |
| 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))) |
23 calls. Slowest were:
| 115.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 97.0ms | (* -1 (* y.re (log (/ -1 x.re)))) |
| 93.0ms | (* -1 (* y.re (log (/ 1 x.re)))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 4.0b
Found 4 expressions with local error:
| 37.9b | (sin (+ (* (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 29.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.5b | (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) |
| 0.5b | (cbrt (log (- x.re))) |
4 calls. Slowest were:
| 45.0ms | (sin (+ (* (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 5.0ms | (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) |
| 2.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
4 calls. Slowest were:
| 429.0ms | (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) |
| 376.0ms | (cbrt (log (- x.re))) |
| 118.0ms | (sin (+ (* (* (cbrt (log (- x.re))) (cbrt (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 20.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
45 calls. Slowest were:
| 158.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 123.0ms | (pow (pow (- (log -1) (log (/ 1 x.re))) 2) 1/3) |
| 66.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 4.0b
Found 4 expressions with local error:
| 37.9b | (sin (+ (* (cbrt (* (log (- x.re)) (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 29.7b | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
| 0.5b | (* (log (- x.re)) (log (- x.re))) |
| 0.5b | (cbrt (* (log (- x.re)) (log (- x.re)))) |
4 calls. Slowest were:
| 35.0ms | (sin (+ (* (cbrt (* (log (- x.re)) (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 10.0ms | (* (log (- x.re)) (log (- x.re))) |
| 4.0ms | (cbrt (* (log (- x.re)) (log (- x.re)))) |
4 calls. Slowest were:
| 405.0ms | (cbrt (* (log (- x.re)) (log (- x.re)))) |
| 243.0ms | (* (log (- x.re)) (log (- x.re))) |
| 167.0ms | (sin (+ (* (cbrt (* (log (- x.re)) (log (- x.re)))) (* (cbrt (log (- x.re))) y.im)) (* (atan2 x.im x.re) y.re))) |
| 19.0ms | (sqrt (+ (* x.re x.re) (* x.im x.im))) |
40 calls. Slowest were:
| 169.0ms | (sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im)))) |
| 118.0ms | (pow (- (log -1) (log (/ 1 x.re))) 2) |
| 98.0ms | (sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re))))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 4.0b
56.3% (4.7b remaining)
Error of 9.8b against oracle of 5.1b and baseline of 15.9b