
Herbie found 8 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Initial program 56.3%
/-rgt-identity56.3%
metadata-eval56.3%
associate-/l*56.3%
associate-*r/56.3%
*-commutative56.3%
associate-*l/56.3%
associate-*r/56.3%
metadata-eval56.3%
metadata-eval56.3%
times-frac56.3%
neg-mul-156.3%
distribute-rgt-neg-in56.3%
times-frac56.3%
metadata-eval56.3%
neg-mul-156.3%
Simplified56.4%
Taylor expanded in b around inf 91.2%
fma-def91.2%
associate-/l*91.2%
unpow291.2%
fma-def91.2%
Simplified91.2%
unpow291.2%
associate-*l*91.2%
associate-*l*91.2%
Applied egg-rr91.2%
Final simplification91.2%
Initial program 56.3%
neg-sub056.3%
associate-+l-56.3%
sub0-neg56.3%
neg-mul-156.3%
associate-*r/56.3%
*-commutative56.3%
metadata-eval56.3%
metadata-eval56.3%
times-frac56.3%
*-commutative56.3%
times-frac56.3%
Simplified56.3%
add-cbrt-cube56.3%
pow1/356.2%
pow356.2%
Applied egg-rr56.2%
Taylor expanded in a around 0 91.2%
fma-def91.2%
Simplified91.2%
Taylor expanded in a around 0 91.2%
Final simplification91.2%
if b < 3.7999999999999998Initial program 82.8%
neg-sub082.8%
associate-+l-82.8%
sub0-neg82.8%
neg-mul-182.8%
associate-*r/82.8%
metadata-eval82.8%
metadata-eval82.8%
times-frac82.8%
*-commutative82.8%
times-frac82.8%
associate-*l/82.8%
Simplified82.9%
if 3.7999999999999998 < b Initial program 48.3%
/-rgt-identity48.3%
metadata-eval48.3%
associate-/l*48.3%
associate-*r/48.3%
*-commutative48.3%
associate-*l/48.3%
associate-*r/48.3%
metadata-eval48.3%
metadata-eval48.3%
times-frac48.3%
neg-mul-148.3%
distribute-rgt-neg-in48.3%
times-frac48.3%
metadata-eval48.3%
neg-mul-148.3%
Simplified48.4%
Taylor expanded in b around inf 92.5%
fma-def92.5%
associate-/l*92.5%
unpow292.5%
+-commutative92.5%
fma-def92.5%
associate-/l*92.5%
unpow292.5%
associate-*r/92.5%
Simplified92.5%
Final simplification90.3%
if (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 3 a) c)))) (*.f64 3 a)) < -4.9999999999999998e-8Initial program 72.1%
neg-sub072.1%
associate-+l-72.1%
sub0-neg72.1%
neg-mul-172.1%
associate-*r/72.1%
metadata-eval72.1%
metadata-eval72.1%
times-frac72.1%
*-commutative72.1%
times-frac72.1%
associate-*l/72.1%
Simplified72.1%
if -4.9999999999999998e-8 < (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 3 a) c)))) (*.f64 3 a)) Initial program 27.0%
/-rgt-identity27.0%
metadata-eval27.0%
associate-/l*27.0%
associate-*r/27.0%
*-commutative27.0%
associate-*l/27.0%
associate-*r/27.0%
metadata-eval27.0%
metadata-eval27.0%
times-frac27.0%
neg-mul-127.0%
distribute-rgt-neg-in27.0%
times-frac27.0%
metadata-eval27.0%
neg-mul-127.0%
Simplified27.2%
Taylor expanded in b around inf 86.4%
associate-*r/86.4%
Simplified86.4%
Final simplification77.2%
if b < 5Initial program 82.6%
neg-sub082.6%
associate-+l-82.6%
sub0-neg82.6%
neg-mul-182.6%
associate-*r/82.6%
metadata-eval82.6%
metadata-eval82.6%
times-frac82.6%
*-commutative82.6%
times-frac82.5%
associate-*l/82.6%
Simplified82.7%
if 5 < b Initial program 48.1%
/-rgt-identity48.1%
metadata-eval48.1%
associate-/l*48.1%
associate-*r/48.0%
*-commutative48.0%
associate-*l/48.1%
associate-*r/48.1%
metadata-eval48.1%
metadata-eval48.1%
times-frac48.1%
neg-mul-148.1%
distribute-rgt-neg-in48.1%
times-frac48.1%
metadata-eval48.1%
neg-mul-148.1%
Simplified48.2%
Taylor expanded in b around inf 87.6%
+-commutative87.6%
fma-def87.6%
associate-/l*87.6%
unpow287.6%
associate-*r/87.6%
Simplified87.6%
Final simplification86.4%
if b < 5.20000000000000018Initial program 82.6%
neg-sub082.6%
associate-+l-82.6%
sub0-neg82.6%
neg-mul-182.6%
associate-*r/82.6%
metadata-eval82.6%
metadata-eval82.6%
times-frac82.6%
*-commutative82.6%
times-frac82.5%
associate-*l/82.6%
Simplified82.7%
if 5.20000000000000018 < b Initial program 48.1%
/-rgt-identity48.1%
metadata-eval48.1%
associate-/l*48.1%
associate-*r/48.0%
*-commutative48.0%
associate-*l/48.1%
associate-*r/48.1%
metadata-eval48.1%
metadata-eval48.1%
times-frac48.1%
neg-mul-148.1%
distribute-rgt-neg-in48.1%
times-frac48.1%
metadata-eval48.1%
neg-mul-148.1%
Simplified48.2%
Taylor expanded in b around inf 87.3%
fma-def87.4%
associate-/l*87.3%
unpow287.3%
unpow287.3%
Simplified87.3%
expm1-log1p-u81.8%
expm1-udef58.0%
associate-/r/58.0%
associate-/l*58.0%
Applied egg-rr58.0%
expm1-def81.9%
expm1-log1p87.4%
associate-*r/87.5%
associate-/l*87.4%
associate-/r/87.4%
fma-udef87.3%
Simplified87.3%
Final simplification86.2%
Initial program 56.3%
/-rgt-identity56.3%
metadata-eval56.3%
associate-/r/56.3%
metadata-eval56.3%
metadata-eval56.3%
times-frac56.3%
*-commutative56.3%
times-frac56.3%
*-commutative56.3%
associate-/r*56.3%
associate-*l/56.3%
Simplified56.3%
Taylor expanded in b around inf 63.2%
associate-/l*63.2%
Simplified63.2%
expm1-log1p-u58.4%
expm1-udef45.3%
associate-/l*45.3%
associate-/r/45.3%
Applied egg-rr45.3%
expm1-def58.4%
expm1-log1p63.2%
*-commutative63.2%
associate-/r*63.3%
*-inverses63.3%
Simplified63.3%
Taylor expanded in c around 0 63.3%
associate-*r/63.3%
associate-/l*63.2%
associate-/r/63.2%
Simplified63.2%
Final simplification63.2%
Initial program 56.3%
/-rgt-identity56.3%
metadata-eval56.3%
associate-/l*56.3%
associate-*r/56.3%
*-commutative56.3%
associate-*l/56.3%
associate-*r/56.3%
metadata-eval56.3%
metadata-eval56.3%
times-frac56.3%
neg-mul-156.3%
distribute-rgt-neg-in56.3%
times-frac56.3%
metadata-eval56.3%
neg-mul-156.3%
Simplified56.4%
Taylor expanded in b around inf 63.3%
associate-*r/63.3%
Simplified63.3%
Final simplification63.3%
herbie shell --seed 2023166
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (and (and (< 1.0536712127723509e-8 a) (< a 94906265.62425156)) (and (< 1.0536712127723509e-8 b) (< b 94906265.62425156))) (and (< 1.0536712127723509e-8 c) (< c 94906265.62425156)))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))