



Bits error versus re




Bits error versus im
Results
| Original | 37.9 |
|---|---|
| Target | 32.7 |
| Herbie | 23.3 |
if im < -9.878549878455066e+150 or -8.285055990118468e-193 < im < -1.007255023949383e-251Initial program 56.8
rmApplied +-commutative56.8
Taylor expanded around -inf 18.1
if -9.878549878455066e+150 < im < -6.735337428424573e-160Initial program 24.9
rmApplied +-commutative24.9
rmApplied add-sqr-sqrt25.0
if -6.735337428424573e-160 < im < -8.285055990118468e-193 or -1.007255023949383e-251 < im < 3.0747566875798526e-136Initial program 42.1
Taylor expanded around inf 36.2
if 3.0747566875798526e-136 < im < 1.5698886127552807e+128Initial program 22.5
rmApplied flip-+29.8
Applied associate-*r/29.8
Applied sqrt-div29.9
Simplified22.2
if 1.5698886127552807e+128 < im Initial program 54.9
rmApplied add-exp-log55.4
Taylor expanded around 0 9.3
Final simplification23.3
herbie shell --seed 2019022
(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: 9.9s)Debug log
| 22.0ms | 180× | body | 80 | valid |
| 11.0ms | 22× | body | 2560 | valid |
| 9.0ms | 25× | body | 1280 | valid |
| 4.0ms | 7× | body | 5120 | valid |
| 3.0ms | 9× | body | 640 | valid |
| 2.0ms | 7× | body | 320 | valid |
| 1.0ms | 6× | body | 160 | valid |
| 10.0ms | (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 40.0b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* re re) (* im im))) |
| 1.8b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.1b | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 0.0b | (+ (* re re) (* im im)) |
| 6× | add-log-exp |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | flip-+ |
| 4× | sqrt-prod |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 2× | associate-*r/ |
| 2× | pow1/2 |
| 2× | +-commutative |
| 1× | sum-log |
| 1× | rem-sqrt-square |
| 11.0ms | (+ (* re re) (* im im)) |
| 7.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 1.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 109.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re))) |
| 28.0ms | (sqrt (+ (* re re) (* im im))) |
| 26.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 14.0ms | (+ (* re re) (* im im)) |
| 301.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 158.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 117.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 53.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 11.0ms | (* (exp (* re re)) (exp (* im im))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 18.5b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* im im) (* re re))) |
| 1.8b | (+ (sqrt (+ (* im im) (* re re))) re) |
| 0.1b | (sqrt (* 2.0 (+ (sqrt (+ (* im im) (* re re))) re))) |
| 0.0b | (+ (* im im) (* re re)) |
| 6× | add-log-exp |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | flip-+ |
| 4× | sqrt-prod |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 2× | associate-*r/ |
| 2× | pow1/2 |
| 2× | +-commutative |
| 1× | sum-log |
| 1× | rem-sqrt-square |
| 14.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 7.0ms | (+ (* im im) (* re re)) |
| 3.0ms | (sqrt (+ (* im im) (* re re))) |
| 2.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* im im) (* re re))) re))) |
| 112.0ms | (sqrt (* 2.0 (+ (sqrt (+ (* im im) (* re re))) re))) |
| 39.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 30.0ms | (sqrt (+ (* im im) (* re re))) |
| 21.0ms | (+ (* im im) (* re re)) |
| 269.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* im im) (* re re))) (sqrt (+ (* im im) (* re re)))) (* re re)))) |
| 132.0ms | (sqrt (* 2.0 (+ (pow (sqrt (+ (* im im) (* re re))) 3) (pow re 3)))) |
| 124.0ms | (sqrt (- (* (* im im) (* im im)) (* (* re re) (* re re)))) |
| 54.0ms | (sqrt (+ (pow (* im im) 3) (pow (* re re) 3))) |
| 5.0ms | (* (exp (* im im)) (exp (* re re))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 11.8b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* im im) (* re re))) |
| 31.0b | (sqrt (+ (* im im) (* re re))) |
| 1.8b | (+ (sqrt (+ (* im im) (* re re))) re) |
| 1.8b | (+ (sqrt (+ (* im im) (* re re))) re) |
| 8× | add-sqr-sqrt |
| 6× | sqrt-prod |
| 6× | add-cube-cbrt |
| 6× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 2× | pow1/2 |
| 2× | rem-sqrt-square |
| 2× | +-commutative |
| 14.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 14.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 3.0ms | (sqrt (+ (* im im) (* re re))) |
| 3.0ms | (sqrt (+ (* im im) (* re re))) |
| 36.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 30.0ms | (sqrt (+ (* im im) (* re re))) |
| 29.0ms | (sqrt (+ (* im im) (* re re))) |
| 24.0ms | (+ (sqrt (+ (* im im) (* re re))) re) |
| 157.0ms | (sqrt (- (* (* im im) (* im im)) (* (* re re) (* re re)))) |
| 153.0ms | (sqrt (- (* (* im im) (* im im)) (* (* re re) (* re re)))) |
| 47.0ms | (sqrt (+ (pow (* im im) 3) (pow (* re re) 3))) |
| 32.0ms | (sqrt (+ (pow (* im im) 3) (pow (* re re) 3))) |
| 4.0ms | (sqrt (+ (* im im) (* re re))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 11.8b
Found 4 expressions with local error:
| 31.0b | (sqrt (+ (* re re) (* im im))) |
| 17.6b | (+ (exp (log (sqrt (+ (* re re) (* im im))))) re) |
| 5.6b | (exp (log (sqrt (+ (* re re) (* im im))))) |
| 0.1b | (sqrt (* 2.0 (+ (exp (log (sqrt (+ (* re re) (* im im))))) re))) |
| 9× | add-sqr-sqrt |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 7× | sqrt-prod |
| 6× | exp-sum |
| 6× | sqrt-div |
| 6× | log-prod |
| 5× | exp-prod |
| 5× | pow1 |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 3× | pow1/2 |
| 2× | log-pow |
| 2× | associate-*r/ |
| 2× | exp-diff |
| 2× | log-div |
| 1× | rem-exp-log |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 19.0ms | (+ (exp (log (sqrt (+ (* re re) (* im im))))) re) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (exp (log (sqrt (+ (* re re) (* im im))))) |
| 2.0ms | (sqrt (* 2.0 (+ (exp (log (sqrt (+ (* re re) (* im im))))) re))) |
| 100.0ms | (sqrt (* 2.0 (+ (exp (log (sqrt (+ (* re re) (* im im))))) re))) |
| 34.0ms | (+ (exp (log (sqrt (+ (* re re) (* im im))))) re) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 18.0ms | (exp (log (sqrt (+ (* re re) (* im im))))) |
| 197.0ms | (sqrt (* 2.0 (- (* (exp (log (sqrt (+ (* re re) (* im im))))) (exp (log (sqrt (+ (* re re) (* im im)))))) (* re re)))) |
| 135.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 131.0ms | (exp (log (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
| 113.0ms | (sqrt (* 2.0 (+ (pow (exp (log (sqrt (+ (* re re) (* im im))))) 3) (pow re 3)))) |
| 65.0ms | (exp (log (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 11.7b
52% (13.6b remaining)
Error of 23.3b against oracle of 9.8b and baseline of 38.0b
| 807.0ms | 5985× | body | 80 | valid |
| 552.0ms | 657× | body | 2560 | valid |
| 335.0ms | 486× | body | 1280 | valid |
| 304.0ms | 310× | body | 5120 | valid |
| 176.0ms | 315× | body | 640 | valid |
| 109.0ms | 153× | body | 320 | valid |
| 20.0ms | 94× | body | 160 | valid |