
Results
Herbie found 8 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 77.0%
add-sqr-sqrt76.9%
times-frac76.6%
hypot-def76.6%
hypot-def100.0%
Applied egg-rr100.0%
Final simplification100.0%
if (/.f64 (*.f64 (-.f64 x y) (+.f64 x y)) (+.f64 (*.f64 x x) (*.f64 y y))) < 2Initial program 100.0%
if 2 < (/.f64 (*.f64 (-.f64 x y) (+.f64 x y)) (+.f64 (*.f64 x x) (*.f64 y y))) Initial program 0.0%
Taylor expanded in y around inf 55.9%
distribute-rgt1-in55.9%
metadata-eval55.9%
associate-*r/55.9%
mul0-lft55.9%
metadata-eval55.9%
mul0-lft55.9%
metadata-eval55.9%
distribute-lft1-in55.9%
associate-*r/55.9%
associate--r+55.9%
sub-neg55.9%
Simplified74.5%
Final simplification94.1%
if y < -4.19999999999999996e-163Initial program 76.9%
Taylor expanded in x around 0 91.6%
if -4.19999999999999996e-163 < y < 2.74999999999999993e-126Initial program 65.8%
Taylor expanded in x around inf 84.0%
mul-1-neg84.0%
unsub-neg84.0%
Simplified84.0%
if 2.74999999999999993e-126 < y Initial program 100.0%
associate-/l*99.8%
fma-def99.8%
Simplified99.8%
Taylor expanded in x around 0 72.6%
Final simplification86.6%
if y < -1.52000000000000002e-161Initial program 76.9%
Taylor expanded in x around 0 91.6%
if -1.52000000000000002e-161 < y < 2.8e-125Initial program 65.8%
Taylor expanded in x around inf 84.0%
mul-1-neg84.0%
unsub-neg84.0%
Simplified84.0%
associate-+r-84.0%
Applied egg-rr84.0%
if 2.8e-125 < y Initial program 100.0%
associate-/l*99.8%
fma-def99.8%
Simplified99.8%
Taylor expanded in x around 0 72.6%
Final simplification86.6%
if y < -1.80000000000000004e-179Initial program 76.2%
Taylor expanded in y around inf 89.7%
distribute-rgt1-in89.7%
metadata-eval89.7%
associate-*r/89.7%
mul0-lft89.7%
metadata-eval89.7%
mul0-lft89.7%
metadata-eval89.7%
distribute-lft1-in89.7%
associate-*r/89.7%
associate--r+89.7%
sub-neg89.7%
Simplified91.1%
if -1.80000000000000004e-179 < y < 6.2e-127Initial program 66.7%
Taylor expanded in x around inf 85.8%
mul-1-neg85.8%
unsub-neg85.8%
Simplified85.8%
associate-+r-85.9%
Applied egg-rr85.9%
if 6.2e-127 < y Initial program 100.0%
associate-/l*99.8%
fma-def99.8%
Simplified99.8%
Taylor expanded in x around 0 72.6%
Final simplification87.0%
if y < -1.1e-160Initial program 76.9%
Taylor expanded in x around 0 91.6%
if -1.1e-160 < y < 2.4999999999999999e-127Initial program 65.8%
Taylor expanded in x around inf 83.8%
if 2.4999999999999999e-127 < y Initial program 100.0%
associate-/l*99.8%
fma-def99.8%
Simplified99.8%
Taylor expanded in x around 0 72.6%
Final simplification86.5%
if y < -7.9999999999999999e-160 or 2.0000000000000001e-114 < y Initial program 81.3%
Taylor expanded in x around 0 88.2%
if -7.9999999999999999e-160 < y < 2.0000000000000001e-114Initial program 67.5%
Taylor expanded in x around inf 82.2%
Final simplification86.3%
Initial program 77.0%
Taylor expanded in x around 0 66.4%
Final simplification66.4%
herbie shell --seed 2023167
(FPCore (x y)
:name "Kahan p9 Example"
:precision binary64
:pre (and (and (< 0.0 x) (< x 1.0)) (< y 1.0))
:herbie-target
(if (and (< 0.5 (fabs (/ x y))) (< (fabs (/ x y)) 2.0)) (/ (* (- x y) (+ x y)) (+ (* x x) (* y y))) (- 1.0 (/ 2.0 (+ 1.0 (* (/ x y) (/ x y))))))
(/ (* (- x y) (+ x y)) (+ (* x x) (* y y))))