\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -5.2389466313579672 \cdot 10^{127}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.78597839720700856 \cdot 10^{-284}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}\\
\mathbf{elif}\;b \le 3.3471968526963819 \cdot 10^{84}:\\
\;\;\;\;\frac{1}{\frac{\frac{2}{4}}{c} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)} \cdot \frac{\frac{1}{\sqrt[3]{1}}}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r94954 = b;
double r94955 = -r94954;
double r94956 = r94954 * r94954;
double r94957 = 4.0;
double r94958 = a;
double r94959 = c;
double r94960 = r94958 * r94959;
double r94961 = r94957 * r94960;
double r94962 = r94956 - r94961;
double r94963 = sqrt(r94962);
double r94964 = r94955 + r94963;
double r94965 = 2.0;
double r94966 = r94965 * r94958;
double r94967 = r94964 / r94966;
return r94967;
}
double f(double a, double b, double c) {
double r94968 = b;
double r94969 = -5.238946631357967e+127;
bool r94970 = r94968 <= r94969;
double r94971 = 1.0;
double r94972 = c;
double r94973 = r94972 / r94968;
double r94974 = a;
double r94975 = r94968 / r94974;
double r94976 = r94973 - r94975;
double r94977 = r94971 * r94976;
double r94978 = 1.7859783972070086e-284;
bool r94979 = r94968 <= r94978;
double r94980 = 1.0;
double r94981 = 2.0;
double r94982 = r94980 / r94981;
double r94983 = -r94968;
double r94984 = r94968 * r94968;
double r94985 = 4.0;
double r94986 = r94974 * r94972;
double r94987 = r94985 * r94986;
double r94988 = r94984 - r94987;
double r94989 = sqrt(r94988);
double r94990 = r94983 + r94989;
double r94991 = r94990 / r94974;
double r94992 = r94982 * r94991;
double r94993 = 3.347196852696382e+84;
bool r94994 = r94968 <= r94993;
double r94995 = r94981 / r94985;
double r94996 = r94995 / r94972;
double r94997 = cbrt(r94980);
double r94998 = r94997 * r94997;
double r94999 = r94996 * r94998;
double r95000 = r94980 / r94999;
double r95001 = r94980 / r94997;
double r95002 = r94983 - r94989;
double r95003 = r95001 / r95002;
double r95004 = r95000 * r95003;
double r95005 = -1.0;
double r95006 = r95005 * r94973;
double r95007 = r94994 ? r95004 : r95006;
double r95008 = r94979 ? r94992 : r95007;
double r95009 = r94970 ? r94977 : r95008;
return r95009;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.2 |
|---|---|
| Target | 21.6 |
| Herbie | 6.8 |
if b < -5.238946631357967e+127Initial program 54.2
Taylor expanded around -inf 3.3
Simplified3.3
if -5.238946631357967e+127 < b < 1.7859783972070086e-284Initial program 8.6
rmApplied *-un-lft-identity8.6
Applied times-frac8.6
if 1.7859783972070086e-284 < b < 3.347196852696382e+84Initial program 33.2
rmApplied flip-+33.2
Simplified16.5
rmApplied *-un-lft-identity16.5
Applied *-un-lft-identity16.5
Applied times-frac16.5
Applied associate-/l*16.7
Simplified16.1
rmApplied associate-/l*16.2
Simplified10.1
rmApplied add-cube-cbrt10.1
Applied add-sqr-sqrt10.1
Applied times-frac10.1
Applied times-frac9.9
Simplified9.9
Simplified9.9
if 3.347196852696382e+84 < b Initial program 58.6
Taylor expanded around inf 2.9
Final simplification6.8
herbie shell --seed 2020056 +o rules:numerics
(FPCore (a b c)
:name "quadp (p42, positive)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))