Average Error: 34.2 → 10.7
Time: 5.1s
Precision: 64
\[\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.3933893531775335 \cdot 10^{-90}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 2445759453.4737968:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]
\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.3933893531775335 \cdot 10^{-90}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\mathbf{elif}\;b \le 2445759453.4737968:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\

\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\end{array}
double f(double a, double b, double c) {
        double r84008 = b;
        double r84009 = -r84008;
        double r84010 = r84008 * r84008;
        double r84011 = 4.0;
        double r84012 = a;
        double r84013 = c;
        double r84014 = r84012 * r84013;
        double r84015 = r84011 * r84014;
        double r84016 = r84010 - r84015;
        double r84017 = sqrt(r84016);
        double r84018 = r84009 - r84017;
        double r84019 = 2.0;
        double r84020 = r84019 * r84012;
        double r84021 = r84018 / r84020;
        return r84021;
}

double f(double a, double b, double c) {
        double r84022 = b;
        double r84023 = -1.3933893531775335e-90;
        bool r84024 = r84022 <= r84023;
        double r84025 = -1.0;
        double r84026 = c;
        double r84027 = r84026 / r84022;
        double r84028 = r84025 * r84027;
        double r84029 = 2445759453.473797;
        bool r84030 = r84022 <= r84029;
        double r84031 = 1.0;
        double r84032 = 2.0;
        double r84033 = a;
        double r84034 = r84032 * r84033;
        double r84035 = -r84022;
        double r84036 = r84022 * r84022;
        double r84037 = 4.0;
        double r84038 = r84033 * r84026;
        double r84039 = r84037 * r84038;
        double r84040 = r84036 - r84039;
        double r84041 = sqrt(r84040);
        double r84042 = r84035 - r84041;
        double r84043 = r84034 / r84042;
        double r84044 = r84031 / r84043;
        double r84045 = 1.0;
        double r84046 = r84022 / r84033;
        double r84047 = r84027 - r84046;
        double r84048 = r84045 * r84047;
        double r84049 = r84030 ? r84044 : r84048;
        double r84050 = r84024 ? r84028 : r84049;
        return r84050;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original34.2
Target21.1
Herbie10.7
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if b < -1.3933893531775335e-90

    1. Initial program 52.8

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around -inf 9.8

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]

    if -1.3933893531775335e-90 < b < 2445759453.473797

    1. Initial program 14.5

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num14.5

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]

    if 2445759453.473797 < b

    1. Initial program 33.1

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around inf 6.5

      \[\leadsto \color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\]
    3. Simplified6.5

      \[\leadsto \color{blue}{1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3933893531775335 \cdot 10^{-90}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 2445759453.4737968:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020059 +o rules:numerics
(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)))