



Bits error versus re




Bits error versus im
Results
| Original | 37.7 |
|---|---|
| Target | 33.0 |
| Herbie | 25.8 |
if re < 2.1563411591081e-310Initial program 44.4
rmApplied flip-+44.4
Applied associate-*r/44.4
Applied sqrt-div44.5
Simplified34.3
if 2.1563411591081e-310 < re < 1.4141127969867808e+103Initial program 20.9
if 1.4141127969867808e+103 < re Initial program 51.1
rmApplied add-sqr-sqrt51.1
Applied sqrt-prod51.1
Taylor expanded around inf 10.6
Final simplification25.8
herbie shell --seed 2019008
(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: 13.1s)Debug log
1 calls. Slowest were:
| 18.0ms | (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 35.2b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (+ (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:
| 8.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (+ (* re re) (* im im)) |
4 calls. Slowest were:
| 124.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 23.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 14.0ms | (+ (* re re) (* im im)) |
22 calls. Slowest were:
| 321.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 144.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 115.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 17.6b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 8.3b | (+ (* (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:
| 10.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) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 419.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 25.0ms | (sqrt (+ (* re re) (* im im))) |
| 21.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
64 calls. Slowest were:
| 224.0ms | (* (sqrt (sqrt (- (* re re) (* im im)))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 187.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im))))) |
| 176.0ms | (* (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 17.6b
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))) |
| 9.6b | (+ (* (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
4 calls. Slowest were:
| 22.0ms | (+ (* (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
4 calls. Slowest were:
| 40.0ms | (+ (* (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) (sqrt (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
| 33.0ms | (sqrt (+ (* re re) (* im im))) |
| 22.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
30 calls. Slowest were:
| 155.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 128.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 109.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 17.6b
Found 4 expressions with local error:
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 28.3b | (sqrt (+ (* re re) (* im im))) |
| 8.3b | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 4.4b | (exp (log (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re))) |
4 calls. Slowest were:
| 26.0ms | (exp (log (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re))) |
| 15.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:
| 39.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 39.0ms | (exp (log (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re))) |
| 32.0ms | (sqrt (+ (* re re) (* im im))) |
| 31.0ms | (sqrt (+ (* re re) (* im im))) |
34 calls. Slowest were:
| 192.0ms | (exp (log (- (* (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im)))))) (* re re)))) |
| 174.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 158.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 17.6b
58.2% (8.5b remaining)
Error of 25.8b against oracle of 17.3b and baseline of 37.7b