\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 -1.369694371126339229257094016308893237032 \cdot 10^{-83}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\mathbf{elif}\;b \le 6.823527231207463414371193958705943379769 \cdot 10^{100}:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2} \cdot \frac{1}{a}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}double f(double a, double b, double c) {
double r75025 = b;
double r75026 = -r75025;
double r75027 = r75025 * r75025;
double r75028 = 4.0;
double r75029 = a;
double r75030 = c;
double r75031 = r75029 * r75030;
double r75032 = r75028 * r75031;
double r75033 = r75027 - r75032;
double r75034 = sqrt(r75033);
double r75035 = r75026 - r75034;
double r75036 = 2.0;
double r75037 = r75036 * r75029;
double r75038 = r75035 / r75037;
return r75038;
}
double f(double a, double b, double c) {
double r75039 = b;
double r75040 = -1.3696943711263392e-83;
bool r75041 = r75039 <= r75040;
double r75042 = -1.0;
double r75043 = c;
double r75044 = r75043 / r75039;
double r75045 = r75042 * r75044;
double r75046 = 6.8235272312074634e+100;
bool r75047 = r75039 <= r75046;
double r75048 = -r75039;
double r75049 = r75039 * r75039;
double r75050 = 4.0;
double r75051 = a;
double r75052 = r75051 * r75043;
double r75053 = r75050 * r75052;
double r75054 = r75049 - r75053;
double r75055 = sqrt(r75054);
double r75056 = r75048 - r75055;
double r75057 = 2.0;
double r75058 = r75056 / r75057;
double r75059 = 1.0;
double r75060 = r75059 / r75051;
double r75061 = r75058 * r75060;
double r75062 = 1.0;
double r75063 = r75039 / r75051;
double r75064 = r75044 - r75063;
double r75065 = r75062 * r75064;
double r75066 = r75047 ? r75061 : r75065;
double r75067 = r75041 ? r75045 : r75066;
return r75067;
}




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.8 |
|---|---|
| Target | 20.8 |
| Herbie | 9.9 |
if b < -1.3696943711263392e-83Initial program 53.2
Taylor expanded around -inf 9.4
if -1.3696943711263392e-83 < b < 6.8235272312074634e+100Initial program 12.3
rmApplied div-inv12.5
rmApplied *-un-lft-identity12.5
Applied times-frac12.5
Applied associate-*r*12.5
Simplified12.5
if 6.8235272312074634e+100 < b Initial program 46.4
Taylor expanded around inf 3.6
Simplified3.6
Final simplification9.9
herbie shell --seed 2019362
(FPCore (a b c)
:name "quadm (p42, negative)"
:precision binary64
:herbie-target
(if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
(/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))