Average Error: 33.2 → 10.0
Time: 49.6s
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 -4.896735429482593 \cdot 10^{+46}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.1815645801505244 \cdot 10^{-79}:\\ \;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{1}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \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 -4.896735429482593 \cdot 10^{+46}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r4290256 = b;
        double r4290257 = -r4290256;
        double r4290258 = r4290256 * r4290256;
        double r4290259 = 4.0;
        double r4290260 = a;
        double r4290261 = c;
        double r4290262 = r4290260 * r4290261;
        double r4290263 = r4290259 * r4290262;
        double r4290264 = r4290258 - r4290263;
        double r4290265 = sqrt(r4290264);
        double r4290266 = r4290257 + r4290265;
        double r4290267 = 2.0;
        double r4290268 = r4290267 * r4290260;
        double r4290269 = r4290266 / r4290268;
        return r4290269;
}

double f(double a, double b, double c) {
        double r4290270 = b;
        double r4290271 = -4.896735429482593e+46;
        bool r4290272 = r4290270 <= r4290271;
        double r4290273 = c;
        double r4290274 = r4290273 / r4290270;
        double r4290275 = a;
        double r4290276 = r4290270 / r4290275;
        double r4290277 = r4290274 - r4290276;
        double r4290278 = 1.1815645801505244e-79;
        bool r4290279 = r4290270 <= r4290278;
        double r4290280 = -4.0;
        double r4290281 = r4290273 * r4290280;
        double r4290282 = r4290281 * r4290275;
        double r4290283 = r4290270 * r4290270;
        double r4290284 = r4290282 + r4290283;
        double r4290285 = sqrt(r4290284);
        double r4290286 = r4290285 - r4290270;
        double r4290287 = 1.0;
        double r4290288 = 2.0;
        double r4290289 = r4290275 * r4290288;
        double r4290290 = r4290287 / r4290289;
        double r4290291 = r4290286 * r4290290;
        double r4290292 = -r4290274;
        double r4290293 = r4290279 ? r4290291 : r4290292;
        double r4290294 = r4290272 ? r4290277 : r4290293;
        return r4290294;
}

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.2
Target20.4
Herbie10.0
\[\begin{array}{l} \mathbf{if}\;b \lt 0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \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 < -4.896735429482593e+46

    1. Initial program 34.5

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}}\]
    3. Taylor expanded around -inf 5.4

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

    if -4.896735429482593e+46 < b < 1.1815645801505244e-79

    1. Initial program 12.8

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}}\]
    3. Taylor expanded around inf 12.8

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

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

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

    if 1.1815645801505244e-79 < b

    1. Initial program 52.3

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}}\]
    3. Taylor expanded around inf 9.6

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    4. Simplified9.6

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

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

Reproduce

herbie shell --seed 2019119 
(FPCore (a b c)
  :name "quadp (p42, positive)"

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