Average Error: 33.8 → 8.8
Time: 16.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 -8.301687926884188663878043402578250574713 \cdot 10^{98}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 3.849558639383284492876426675330012960339 \cdot 10^{-181}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}\\ \mathbf{elif}\;b \le 1.357284433132494781653830699845499522001 \cdot 10^{61}:\\ \;\;\;\;\frac{1}{\frac{a}{\frac{-4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}} \cdot \frac{1}{2}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \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 -8.301687926884188663878043402578250574713 \cdot 10^{98}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r64647 = b;
        double r64648 = -r64647;
        double r64649 = r64647 * r64647;
        double r64650 = 4.0;
        double r64651 = a;
        double r64652 = c;
        double r64653 = r64651 * r64652;
        double r64654 = r64650 * r64653;
        double r64655 = r64649 - r64654;
        double r64656 = sqrt(r64655);
        double r64657 = r64648 + r64656;
        double r64658 = 2.0;
        double r64659 = r64658 * r64651;
        double r64660 = r64657 / r64659;
        return r64660;
}

double f(double a, double b, double c) {
        double r64661 = b;
        double r64662 = -8.301687926884189e+98;
        bool r64663 = r64661 <= r64662;
        double r64664 = 1.0;
        double r64665 = c;
        double r64666 = r64665 / r64661;
        double r64667 = a;
        double r64668 = r64661 / r64667;
        double r64669 = r64666 - r64668;
        double r64670 = r64664 * r64669;
        double r64671 = 3.8495586393832845e-181;
        bool r64672 = r64661 <= r64671;
        double r64673 = 1.0;
        double r64674 = 2.0;
        double r64675 = r64673 / r64674;
        double r64676 = r64661 * r64661;
        double r64677 = 4.0;
        double r64678 = r64667 * r64665;
        double r64679 = r64677 * r64678;
        double r64680 = r64676 - r64679;
        double r64681 = sqrt(r64680);
        double r64682 = r64681 - r64661;
        double r64683 = r64682 / r64667;
        double r64684 = r64675 * r64683;
        double r64685 = 1.3572844331324948e+61;
        bool r64686 = r64661 <= r64685;
        double r64687 = -r64679;
        double r64688 = r64681 + r64661;
        double r64689 = r64687 / r64688;
        double r64690 = r64667 / r64689;
        double r64691 = r64673 / r64690;
        double r64692 = r64691 * r64675;
        double r64693 = -1.0;
        double r64694 = r64693 * r64666;
        double r64695 = r64686 ? r64692 : r64694;
        double r64696 = r64672 ? r64684 : r64695;
        double r64697 = r64663 ? r64670 : r64696;
        return r64697;
}

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.8
Target20.8
Herbie8.8
\[\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.301687926884189e+98

    1. Initial program 46.2

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

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

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

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

    if -8.301687926884189e+98 < b < 3.8495586393832845e-181

    1. Initial program 10.9

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

      \[\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 *-un-lft-identity10.9

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

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

    if 3.8495586393832845e-181 < b < 1.3572844331324948e+61

    1. Initial program 34.8

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

      \[\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 *-un-lft-identity34.8

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

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

      \[\leadsto \frac{1}{2} \cdot \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}\]
    8. Simplified15.7

      \[\leadsto \frac{1}{2} \cdot \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}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity15.7

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{0 - 4 \cdot \left(a \cdot c\right)}{\color{blue}{1 \cdot \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b\right)}}}{a}\]
    11. Applied *-un-lft-identity15.7

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{\color{blue}{1 \cdot \left(0 - 4 \cdot \left(a \cdot c\right)\right)}}{1 \cdot \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b\right)}}{a}\]
    12. Applied times-frac15.7

      \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{\frac{1}{1} \cdot \frac{0 - 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}}{a}\]
    13. Applied associate-/l*15.7

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

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

    if 1.3572844331324948e+61 < b

    1. Initial program 57.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -8.301687926884188663878043402578250574713 \cdot 10^{98}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 3.849558639383284492876426675330012960339 \cdot 10^{-181}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}\\ \mathbf{elif}\;b \le 1.357284433132494781653830699845499522001 \cdot 10^{61}:\\ \;\;\;\;\frac{1}{\frac{a}{\frac{-4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}} \cdot \frac{1}{2}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019304 
(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)))