



Bits error versus re




Bits error versus im
Results
| Original | 37.1 |
|---|---|
| Target | 32.4 |
| Herbie | 29.1 |
if re < -3.072948457624708e+173Initial program 62.3
Taylor expanded around -inf 49.4
if -3.072948457624708e+173 < re < 3.683180931977577e+132Initial program 30.2
if 3.683180931977577e+132 < re Initial program 55.6
Taylor expanded around inf 8.1
Final simplification29.1
herbie shell --seed 2019021
(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.7s)Debug log
| 23.0ms | 174× | body | 80 | valid |
| 22.0ms | 27× | body | 2560 | valid |
| 18.0ms | 6× | body | 320 | valid |
| 16.0ms | 15× | body | 5120 | valid |
| 12.0ms | 18× | body | 1280 | valid |
| 6.0ms | 10× | body | 640 | valid |
| 1.0ms | 6× | body | 160 | valid |
| 17.0ms | (* 0.5 (sqrt (* 2.0 (+ (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 38.6b
Found 3 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 1.7b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (+ (* re re) (* im im)) |
| 5× | add-log-exp |
| 5× | add-sqr-sqrt |
| 4× | add-cube-cbrt |
| 4× | *-un-lft-identity |
| 3× | flip-+ |
| 3× | sqrt-prod |
| 3× | add-exp-log |
| 3× | add-cbrt-cube |
| 3× | flip3-+ |
| 3× | pow1 |
| 2× | sqrt-div |
| 2× | +-commutative |
| 1× | pow1/2 |
| 1× | sum-log |
| 1× | rem-sqrt-square |
| 14.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (+ (* re re) (* im im)) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 31.0ms | (sqrt (+ (* re re) (* im im))) |
| 27.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 22.0ms | (+ (* re re) (* im im)) |
| 117.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 32.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 5.0ms | (* (exp (* re re)) (exp (* im im))) |
| 3.0ms | (sqrt (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im))))) |
| 2.0ms | (sqrt (sqrt (+ (* re re) (* im im)))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 23.1b
Found 4 expressions with local error:
| 28.3b | (cbrt (+ (* re re) (* im im))) |
| 28.3b | (cbrt (+ (* re re) (* im im))) |
| 9.0b | (+ (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 0.3b | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 10× | add-cube-cbrt |
| 10× | *-un-lft-identity |
| 10× | add-sqr-sqrt |
| 9× | associate-*r* |
| 9× | cbrt-prod |
| 6× | sqrt-prod |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | cbrt-div |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | flip3-+ |
| 3× | associate-*l* |
| 2× | associate-*r/ |
| 2× | sqrt-div |
| 2× | pow1/3 |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 1× | +-commutative |
| 6.0ms | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 5.0ms | (+ (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 1.0ms | (cbrt (+ (* re re) (* im im))) |
| 1.0ms | (cbrt (+ (* re re) (* im im))) |
| 108.0ms | (cbrt (+ (* re re) (* im im))) |
| 103.0ms | (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) |
| 100.0ms | (cbrt (+ (* re re) (* im im))) |
| 87.0ms | (+ (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re) |
| 197.0ms | (+ re (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3))))) |
| 175.0ms | (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3)))) |
| 156.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 147.0ms | (sqrt (cbrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) |
| 118.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 23.1b
Found 4 expressions with local error:
| 28.3b | (cbrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 12.1b | (+ (* (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) re) |
| 9× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | sqrt-prod |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 3× | cbrt-prod |
| 2× | pow1/2 |
| 2× | cbrt-div |
| 2× | rem-sqrt-square |
| 1× | pow1/3 |
| 1× | +-commutative |
| 31.0ms | (+ (* (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) re) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (cbrt (+ (* re re) (* im im))) |
| 115.0ms | (cbrt (+ (* re re) (* im im))) |
| 92.0ms | (+ (* (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) (sqrt (cbrt (sqrt (+ (* re re) (* im im)))))) re) |
| 28.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 241.0ms | (+ re (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3))))) |
| 133.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 117.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 113.0ms | (cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 53.0ms | (cbrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
13 alts after pruning (12 fresh and 1 done)
Merged error: 23.1b
Found 4 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 10.4b | (+ (* (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))))) |
| 28× | sqrt-div |
| 24× | sqrt-prod |
| 14× | add-sqr-sqrt |
| 12× | add-cube-cbrt |
| 12× | *-un-lft-identity |
| 9× | flip-+ |
| 9× | associate-*l* |
| 9× | associate-*r* |
| 9× | flip3-+ |
| 9× | pow1 |
| 6× | add-exp-log |
| 6× | pow1/2 |
| 6× | add-cbrt-cube |
| 4× | add-log-exp |
| 4× | frac-times |
| 2× | pow-prod-up |
| 2× | associate-*r/ |
| 2× | associate-*l/ |
| 2× | pow-prod-down |
| 2× | rem-sqrt-square |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | sqrt-unprod |
| 1× | pow-plus |
| 1× | rem-square-sqrt |
| 1× | +-commutative |
| 1× | pow2 |
| 13.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 11.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 29.0ms | (+ (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 26.0ms | (sqrt (+ (* re re) (* im im))) |
| 20.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 224.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 211.0ms | (* (sqrt (sqrt (- (* re re) (* im im)))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 169.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 164.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im))))) |
| 158.0ms | (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) |
15 alts after pruning (13 fresh and 2 done)
Merged error: 23.1b
48.1% (8.7b remaining)
Error of 29.1b against oracle of 20.4b and baseline of 37.1b
| 861.0ms | 6032× | body | 80 | valid |
| 801.0ms | 480× | body | 1280 | valid |
| 657.0ms | 686× | body | 2560 | valid |
| 248.0ms | 295× | body | 5120 | valid |
| 130.0ms | 276× | body | 640 | valid |
| 53.0ms | 149× | body | 320 | valid |
| 18.0ms | 82× | body | 160 | valid |