Average Error: 34.5 → 8.9
Time: 16.4s
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 -8.889080831912834239838349081155498349678 \cdot 10^{153}:\\ \;\;\;\;\frac{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}{2}\\ \mathbf{elif}\;b \le 7.666823646884851555969061278738005639466 \cdot 10^{-125}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 3.767837895140893460592828575869746587098 \cdot 10^{89}:\\ \;\;\;\;\frac{\frac{\frac{-4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \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 -8.889080831912834239838349081155498349678 \cdot 10^{153}:\\
\;\;\;\;\frac{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}{2}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r46255 = b;
        double r46256 = -r46255;
        double r46257 = r46255 * r46255;
        double r46258 = 4.0;
        double r46259 = a;
        double r46260 = c;
        double r46261 = r46259 * r46260;
        double r46262 = r46258 * r46261;
        double r46263 = r46257 - r46262;
        double r46264 = sqrt(r46263);
        double r46265 = r46256 + r46264;
        double r46266 = 2.0;
        double r46267 = r46266 * r46259;
        double r46268 = r46265 / r46267;
        return r46268;
}

double f(double a, double b, double c) {
        double r46269 = b;
        double r46270 = -8.889080831912834e+153;
        bool r46271 = r46269 <= r46270;
        double r46272 = 2.0;
        double r46273 = c;
        double r46274 = r46273 / r46269;
        double r46275 = r46272 * r46274;
        double r46276 = 2.0;
        double r46277 = a;
        double r46278 = r46269 / r46277;
        double r46279 = r46276 * r46278;
        double r46280 = r46275 - r46279;
        double r46281 = r46280 / r46272;
        double r46282 = 7.666823646884852e-125;
        bool r46283 = r46269 <= r46282;
        double r46284 = r46269 * r46269;
        double r46285 = 4.0;
        double r46286 = r46277 * r46273;
        double r46287 = r46285 * r46286;
        double r46288 = r46284 - r46287;
        double r46289 = sqrt(r46288);
        double r46290 = r46289 - r46269;
        double r46291 = r46290 / r46277;
        double r46292 = r46291 / r46272;
        double r46293 = 3.7678378951408935e+89;
        bool r46294 = r46269 <= r46293;
        double r46295 = -r46287;
        double r46296 = r46289 + r46269;
        double r46297 = r46295 / r46296;
        double r46298 = r46297 / r46277;
        double r46299 = r46298 / r46272;
        double r46300 = -2.0;
        double r46301 = r46300 * r46274;
        double r46302 = r46301 / r46272;
        double r46303 = r46294 ? r46299 : r46302;
        double r46304 = r46283 ? r46292 : r46303;
        double r46305 = r46271 ? r46281 : r46304;
        return r46305;
}

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.5
Target20.8
Herbie8.9
\[\begin{array}{l} \mathbf{if}\;b \lt 0.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 4 regimes
  2. if b < -8.889080831912834e+153

    1. Initial program 64.0

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2 \cdot a}}\]
    3. Using strategy rm
    4. Applied associate-/r*64.0

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2} \cdot \frac{1}{a}}\]
    7. Using strategy rm
    8. Applied associate-*l/64.0

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

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

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

    if -8.889080831912834e+153 < b < 7.666823646884852e-125

    1. Initial program 11.0

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2 \cdot a}}\]
    3. Using strategy rm
    4. Applied associate-/r*11.0

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2} \cdot \frac{1}{a}}\]
    7. Using strategy rm
    8. Applied associate-*l/11.2

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

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

    if 7.666823646884852e-125 < b < 3.7678378951408935e+89

    1. Initial program 40.1

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2 \cdot a}}\]
    3. Using strategy rm
    4. Applied associate-/r*40.1

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2} \cdot \frac{1}{a}}\]
    7. Using strategy rm
    8. Applied associate-*l/40.1

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

      \[\leadsto \frac{\color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}}{2}\]
    10. Using strategy rm
    11. Applied flip--40.1

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

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

    if 3.7678378951408935e+89 < b

    1. Initial program 59.4

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2 \cdot a}}\]
    3. Using strategy rm
    4. Applied associate-/r*59.4

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{2} \cdot \frac{1}{a}}\]
    7. Using strategy rm
    8. Applied associate-*l/59.4

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

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

      \[\leadsto \frac{\color{blue}{-2 \cdot \frac{c}{b}}}{2}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -8.889080831912834239838349081155498349678 \cdot 10^{153}:\\ \;\;\;\;\frac{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}{2}\\ \mathbf{elif}\;b \le 7.666823646884851555969061278738005639466 \cdot 10^{-125}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 3.767837895140893460592828575869746587098 \cdot 10^{89}:\\ \;\;\;\;\frac{\frac{\frac{-4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}{a}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \end{array}\]

Reproduce

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

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