


Bits error versus re



Bits error versus im
Results
if re < -1.0721457802447118e+133Initial program 55.2
Taylor expanded around -inf 8.8
if -1.0721457802447118e+133 < re < 3.702325580433052e-276Initial program 20.9
rmApplied *-un-lft-identity20.9
if 3.702325580433052e-276 < re Initial program 46.1
rmApplied flip--46.0
Applied associate-*r/46.0
Applied sqrt-div46.1
Simplified35.3
Final simplification26.1
herbie shell --seed 2019008
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))
Time bar (total: 14.2s)Debug log
1 calls. Slowest were:
| 25.0ms | (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 36.3b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (+ (* re re) (* im im)) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
4 calls. Slowest were:
| 20.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 6.0ms | (sqrt (+ (* re re) (* im im))) |
| 4.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
4 calls. Slowest were:
| 112.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 37.0ms | (sqrt (+ (* re re) (* im im))) |
| 35.0ms | (+ (* re re) (* im im)) |
| 29.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
22 calls. Slowest were:
| 267.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 223.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 112.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 16.3b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (+ (* re re) (* im im)) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
4 calls. Slowest were:
| 10.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (+ (* re re) (* im im)) |
| 2.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
4 calls. Slowest were:
| 95.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 37.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 24.0ms | (+ (* re re) (* im im)) |
| 20.0ms | (sqrt (+ (* re re) (* im im))) |
22 calls. Slowest were:
| 322.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 200.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 133.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 16.3b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.8b | (- (sqrt (+ (* re re) (* im im))) re) |
4 calls. Slowest were:
| 14.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 10.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 39.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 39.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 23.0ms | (sqrt (+ (* re re) (* im im))) |
| 21.0ms | (sqrt (+ (* re re) (* im im))) |
24 calls. Slowest were:
| 139.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 139.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 63.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
6 alts after pruning (4 fresh and 2 done)
Merged error: 16.3b
Found 4 expressions with local error:
| 29.2b | (cbrt (+ (* re re) (* im im))) |
| 29.2b | (cbrt (+ (* re re) (* im im))) |
| 29.2b | (cbrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im))))) |
4 calls. Slowest were:
| 12.0ms | (sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im))))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 101.0ms | (cbrt (+ (* re re) (* im im))) |
| 99.0ms | (cbrt (+ (* re re) (* im im))) |
| 97.0ms | (cbrt (+ (* re re) (* im im))) |
| 25.0ms | (sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im)))) (cbrt (+ (* re re) (* im im))))) |
54 calls. Slowest were:
| 215.0ms | (sqrt (* (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
| 198.0ms | (sqrt (* (* (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
| 187.0ms | (sqrt (* (* (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))))) |
6 alts after pruning (4 fresh and 2 done)
Merged error: 16.3b
58.6% (8.3b remaining)
Error of 26.1b against oracle of 17.8b and baseline of 37.8b