\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 -9.91243958875386880555748684589545292526 \cdot 10^{101}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.209120745343099452134664059704875392955 \cdot 10^{-70}:\\
\;\;\;\;\frac{1 \cdot \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r84823 = b;
double r84824 = -r84823;
double r84825 = r84823 * r84823;
double r84826 = 4.0;
double r84827 = a;
double r84828 = c;
double r84829 = r84827 * r84828;
double r84830 = r84826 * r84829;
double r84831 = r84825 - r84830;
double r84832 = sqrt(r84831);
double r84833 = r84824 + r84832;
double r84834 = 2.0;
double r84835 = r84834 * r84827;
double r84836 = r84833 / r84835;
return r84836;
}
double f(double a, double b, double c) {
double r84837 = b;
double r84838 = -9.912439588753869e+101;
bool r84839 = r84837 <= r84838;
double r84840 = 1.0;
double r84841 = c;
double r84842 = r84841 / r84837;
double r84843 = a;
double r84844 = r84837 / r84843;
double r84845 = r84842 - r84844;
double r84846 = r84840 * r84845;
double r84847 = 1.2091207453430995e-70;
bool r84848 = r84837 <= r84847;
double r84849 = 1.0;
double r84850 = r84837 * r84837;
double r84851 = 4.0;
double r84852 = r84843 * r84841;
double r84853 = r84851 * r84852;
double r84854 = r84850 - r84853;
double r84855 = sqrt(r84854);
double r84856 = r84855 - r84837;
double r84857 = r84849 * r84856;
double r84858 = 2.0;
double r84859 = r84858 * r84843;
double r84860 = r84857 / r84859;
double r84861 = -1.0;
double r84862 = r84861 * r84842;
double r84863 = r84848 ? r84860 : r84862;
double r84864 = r84839 ? r84846 : r84863;
return r84864;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 34.4 |
|---|---|
| Target | 21.0 |
| Herbie | 10.0 |
if b < -9.912439588753869e+101Initial program 46.9
Taylor expanded around -inf 3.6
Simplified3.6
if -9.912439588753869e+101 < b < 1.2091207453430995e-70Initial program 13.3
rmApplied *-un-lft-identity13.3
Applied *-un-lft-identity13.3
Applied distribute-lft-out13.3
Simplified13.3
if 1.2091207453430995e-70 < b Initial program 53.7
Taylor expanded around inf 8.7
Final simplification10.0
herbie shell --seed 2020002
(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)))