



Bits error versus re




Bits error versus im
Results
| Original | 37.7 |
|---|---|
| Target | 32.9 |
| Herbie | 26.8 |
if re < 2.282023825232493e-248Initial program 43.7
rmApplied +-commutative43.7
rmApplied flip-+43.8
Applied associate-*r/43.8
Applied sqrt-div43.9
Simplified34.2
if 2.282023825232493e-248 < re < 1.942710743904727e-125Initial program 24.8
rmApplied add-sqr-sqrt24.8
Applied sqrt-prod24.9
Taylor expanded around 0 35.8
if 1.942710743904727e-125 < re < 2.049359572811252e+123Initial program 15.1
rmApplied +-commutative15.1
if 2.049359572811252e+123 < re Initial program 54.0
rmApplied +-commutative54.0
Taylor expanded around 0 9.3
Final simplification26.8
herbie shell --seed 2018362
(FPCore (re im)
:name "math.sqrt on complex, real part"
:herbie-target
(if (< re 0) (* 0.5 (* (sqrt 2) (sqrt (/ (* im im) (- (sqrt (+ (* re re) (* im im))) re))))) (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
(* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))))
Time bar (total: 10.4s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 36.0b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 1.0b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.5b | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 0.0b | (+ (* re re) (* im im)) |
4 calls. Slowest were:
| 15.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (+ (* re re) (* im im)) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 119.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 34.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 32.0ms | (sqrt (+ (* re re) (* im im))) |
| 18.0ms | (+ (* re re) (* im im)) |
22 calls. Slowest were:
| 311.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 123.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 114.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 16.7b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* im im) (* re re))) |
| 1.0b | (+ (sqrt (+ (* im im) (* re re))) re) |
| 0.5b | (sqrt (* 2.0 (+ (sqrt (+ (* im im) (* re re))) re))) |
| 0.0b | (+ (* im im) (* re re)) |
4 calls. Slowest were:
| 13.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 3.0ms | (+ (* im im) (* re re)) |
| 3.0ms | (sqrt (+ (* im im) (* re re))) |
4 calls. Slowest were:
| 85.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* im im) (* re re))) re))) |
| 35.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 29.0ms | (sqrt (+ (* im im) (* re re))) |
| 25.0ms | (+ (* im im) (* re re)) |
22 calls. Slowest were:
| 319.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* im im) (* re re))) (sqrt (+ (* im im) (* re re)))) (* re re)))) |
| 112.0ms | (sqrt (- (* (* im im) (* im im)) (* (* re re) (* re re)))) |
| 99.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* im im) (* re re))) 3) (pow re 3)))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 11.3b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 7.8b | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 0.5b | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
4 calls. Slowest were:
| 9.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 8.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 36.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 22.0ms | (sqrt (+ (* re re) (* im im))) |
| 21.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
64 calls. Slowest were:
| 199.0ms | (* (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3)))) (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
| 181.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 172.0ms | (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 11.3b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 30.0ms | (sqrt (+ (* re re) (* im im))) |
| 30.0ms | (sqrt (+ (* re re) (* im im))) |
| 26.0ms | (sqrt (+ (* re re) (* im im))) |
| 22.0ms | (sqrt (+ (* re re) (* im im))) |
36 calls. Slowest were:
| 187.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 127.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 116.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 11.3b
40.1% (16.4b remaining)
Error of 26.8b against oracle of 10.4b and baseline of 37.7b