Average Error: 33.5 → 7.3
Time: 31.9s
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 -6.175442848374641 \cdot 10^{+103}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\ \;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\ \mathbf{elif}\;b \le 1.8091015183831773 \cdot 10^{+43}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \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 -6.175442848374641 \cdot 10^{+103}:\\
\;\;\;\;-\frac{c}{b}\\

\mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\
\;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\

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

\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r5342796 = b;
        double r5342797 = -r5342796;
        double r5342798 = r5342796 * r5342796;
        double r5342799 = 4.0;
        double r5342800 = a;
        double r5342801 = c;
        double r5342802 = r5342800 * r5342801;
        double r5342803 = r5342799 * r5342802;
        double r5342804 = r5342798 - r5342803;
        double r5342805 = sqrt(r5342804);
        double r5342806 = r5342797 - r5342805;
        double r5342807 = 2.0;
        double r5342808 = r5342807 * r5342800;
        double r5342809 = r5342806 / r5342808;
        return r5342809;
}

double f(double a, double b, double c) {
        double r5342810 = b;
        double r5342811 = -6.175442848374641e+103;
        bool r5342812 = r5342810 <= r5342811;
        double r5342813 = c;
        double r5342814 = r5342813 / r5342810;
        double r5342815 = -r5342814;
        double r5342816 = -2.5616198420313977e-226;
        bool r5342817 = r5342810 <= r5342816;
        double r5342818 = 4.0;
        double r5342819 = -4.0;
        double r5342820 = a;
        double r5342821 = r5342819 * r5342820;
        double r5342822 = r5342813 * r5342821;
        double r5342823 = r5342810 * r5342810;
        double r5342824 = r5342822 + r5342823;
        double r5342825 = sqrt(r5342824);
        double r5342826 = r5342825 - r5342810;
        double r5342827 = r5342818 / r5342826;
        double r5342828 = 0.5;
        double r5342829 = r5342828 * r5342813;
        double r5342830 = r5342827 * r5342829;
        double r5342831 = 1.8091015183831773e+43;
        bool r5342832 = r5342810 <= r5342831;
        double r5342833 = -r5342810;
        double r5342834 = r5342820 * r5342813;
        double r5342835 = r5342834 * r5342818;
        double r5342836 = r5342823 - r5342835;
        double r5342837 = sqrt(r5342836);
        double r5342838 = r5342833 - r5342837;
        double r5342839 = 2.0;
        double r5342840 = r5342839 * r5342820;
        double r5342841 = r5342838 / r5342840;
        double r5342842 = r5342810 / r5342820;
        double r5342843 = r5342814 - r5342842;
        double r5342844 = r5342832 ? r5342841 : r5342843;
        double r5342845 = r5342817 ? r5342830 : r5342844;
        double r5342846 = r5342812 ? r5342815 : r5342845;
        return r5342846;
}

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

Original33.5
Target21.1
Herbie7.3
\[\begin{array}{l} \mathbf{if}\;b \lt 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 4 regimes
  2. if b < -6.175442848374641e+103

    1. Initial program 59.2

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

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    3. Simplified2.8

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

    if -6.175442848374641e+103 < b < -2.5616198420313977e-226

    1. Initial program 35.4

      \[\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--35.5

      \[\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. Applied associate-/l/39.6

      \[\leadsto \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(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}\]
    5. Simplified20.9

      \[\leadsto \frac{\color{blue}{\left(a \cdot c\right) \cdot 4}}{\left(2 \cdot a\right) \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\]
    6. Using strategy rm
    7. Applied times-frac15.9

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

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

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

    if -2.5616198420313977e-226 < b < 1.8091015183831773e+43

    1. Initial program 10.6

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

    if 1.8091015183831773e+43 < b

    1. Initial program 36.3

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

      \[\leadsto \color{blue}{\frac{c}{b} - \frac{b}{a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification7.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -6.175442848374641 \cdot 10^{+103}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -2.5616198420313977 \cdot 10^{-226}:\\ \;\;\;\;\frac{4}{\sqrt{c \cdot \left(-4 \cdot a\right) + b \cdot b} - b} \cdot \left(\frac{1}{2} \cdot c\right)\\ \mathbf{elif}\;b \le 1.8091015183831773 \cdot 10^{+43}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< b 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)))