Average Error: 34.1 → 10.5
Time: 20.2s
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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 4.825478720088060668779950456669858064189 \cdot 10^{107}:\\ \;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \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 -9.332433396832084322962138528577137922234 \cdot 10^{-58}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\mathbf{elif}\;b \le 4.825478720088060668779950456669858064189 \cdot 10^{107}:\\
\;\;\;\;\left(-\frac{b}{2 \cdot a}\right) - \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r5940774 = b;
        double r5940775 = -r5940774;
        double r5940776 = r5940774 * r5940774;
        double r5940777 = 4.0;
        double r5940778 = a;
        double r5940779 = c;
        double r5940780 = r5940778 * r5940779;
        double r5940781 = r5940777 * r5940780;
        double r5940782 = r5940776 - r5940781;
        double r5940783 = sqrt(r5940782);
        double r5940784 = r5940775 - r5940783;
        double r5940785 = 2.0;
        double r5940786 = r5940785 * r5940778;
        double r5940787 = r5940784 / r5940786;
        return r5940787;
}

double f(double a, double b, double c) {
        double r5940788 = b;
        double r5940789 = -9.332433396832084e-58;
        bool r5940790 = r5940788 <= r5940789;
        double r5940791 = -1.0;
        double r5940792 = c;
        double r5940793 = r5940792 / r5940788;
        double r5940794 = r5940791 * r5940793;
        double r5940795 = 4.8254787200880607e+107;
        bool r5940796 = r5940788 <= r5940795;
        double r5940797 = 2.0;
        double r5940798 = a;
        double r5940799 = r5940797 * r5940798;
        double r5940800 = r5940788 / r5940799;
        double r5940801 = -r5940800;
        double r5940802 = r5940788 * r5940788;
        double r5940803 = 4.0;
        double r5940804 = r5940798 * r5940792;
        double r5940805 = r5940803 * r5940804;
        double r5940806 = r5940802 - r5940805;
        double r5940807 = sqrt(r5940806);
        double r5940808 = r5940807 / r5940799;
        double r5940809 = r5940801 - r5940808;
        double r5940810 = r5940788 / r5940798;
        double r5940811 = r5940791 * r5940810;
        double r5940812 = r5940796 ? r5940809 : r5940811;
        double r5940813 = r5940790 ? r5940794 : r5940812;
        return r5940813;
}

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.1
Target21.4
Herbie10.5
\[\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 < -9.332433396832084e-58

    1. Initial program 53.5

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

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

    if -9.332433396832084e-58 < b < 4.8254787200880607e+107

    1. Initial program 14.1

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

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

    if 4.8254787200880607e+107 < b

    1. Initial program 49.2

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

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

      \[\leadsto \frac{\frac{\color{blue}{0 + 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}{2 \cdot a}\]
    5. Simplified62.3

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    6. Taylor expanded around 0 3.7

      \[\leadsto \color{blue}{-1 \cdot \frac{b}{a}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.5

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

Reproduce

herbie shell --seed 2019171 
(FPCore (a b c)
  :name "quadm (p42, negative)"

  :herbie-target
  (if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))