Average Error: 34.3 → 6.5
Time: 6.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 -1.388209440671705791656215927803897929135 \cdot 10^{145}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.923093372319420965417178887243986195644 \cdot 10^{-228}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.623901039151374283788841699611000843513 \cdot 10^{94}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{-\left(b + {\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{\frac{1}{2}}\right)}\\ \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 -1.388209440671705791656215927803897929135 \cdot 10^{145}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r79646 = b;
        double r79647 = -r79646;
        double r79648 = r79646 * r79646;
        double r79649 = 4.0;
        double r79650 = a;
        double r79651 = c;
        double r79652 = r79650 * r79651;
        double r79653 = r79649 * r79652;
        double r79654 = r79648 - r79653;
        double r79655 = sqrt(r79654);
        double r79656 = r79647 + r79655;
        double r79657 = 2.0;
        double r79658 = r79657 * r79650;
        double r79659 = r79656 / r79658;
        return r79659;
}

double f(double a, double b, double c) {
        double r79660 = b;
        double r79661 = -1.3882094406717058e+145;
        bool r79662 = r79660 <= r79661;
        double r79663 = 1.0;
        double r79664 = c;
        double r79665 = r79664 / r79660;
        double r79666 = a;
        double r79667 = r79660 / r79666;
        double r79668 = r79665 - r79667;
        double r79669 = r79663 * r79668;
        double r79670 = 1.923093372319421e-228;
        bool r79671 = r79660 <= r79670;
        double r79672 = -r79660;
        double r79673 = r79660 * r79660;
        double r79674 = 4.0;
        double r79675 = r79666 * r79664;
        double r79676 = r79674 * r79675;
        double r79677 = r79673 - r79676;
        double r79678 = sqrt(r79677);
        double r79679 = r79672 + r79678;
        double r79680 = 2.0;
        double r79681 = r79680 * r79666;
        double r79682 = r79679 / r79681;
        double r79683 = 1.6239010391513743e+94;
        bool r79684 = r79660 <= r79683;
        double r79685 = 1.0;
        double r79686 = r79685 / r79680;
        double r79687 = r79674 * r79664;
        double r79688 = 0.5;
        double r79689 = pow(r79677, r79688);
        double r79690 = r79660 + r79689;
        double r79691 = -r79690;
        double r79692 = r79687 / r79691;
        double r79693 = r79686 * r79692;
        double r79694 = -1.0;
        double r79695 = r79694 * r79665;
        double r79696 = r79684 ? r79693 : r79695;
        double r79697 = r79671 ? r79682 : r79696;
        double r79698 = r79662 ? r79669 : r79697;
        return r79698;
}

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.3
Target21.0
Herbie6.5
\[\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 < -1.3882094406717058e+145

    1. Initial program 60.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.5

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

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

    if -1.3882094406717058e+145 < b < 1.923093372319421e-228

    1. Initial program 9.4

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

    if 1.923093372319421e-228 < b < 1.6239010391513743e+94

    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. Simplified16.8

      \[\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. Using strategy rm
    6. Applied pow116.8

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{\color{blue}{{\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{1}}}}}{2 \cdot a}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity16.8

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

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot \left(0 + 4 \cdot \left(a \cdot c\right)\right)}}{1 \cdot \left(\left(-b\right) - \sqrt{{\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{1}}\right)}}{2 \cdot a}\]
    10. Applied times-frac16.8

      \[\leadsto \frac{\color{blue}{\frac{1}{1} \cdot \frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{{\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{1}}}}}{2 \cdot a}\]
    11. Applied times-frac16.8

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

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

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{\frac{4 \cdot \left(a \cdot c\right)}{a}}{-\left(b + {\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{\frac{1}{2}}\right)}}\]
    14. Taylor expanded around 0 7.8

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

    if 1.6239010391513743e+94 < b

    1. Initial program 59.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.388209440671705791656215927803897929135 \cdot 10^{145}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.923093372319420965417178887243986195644 \cdot 10^{-228}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.623901039151374283788841699611000843513 \cdot 10^{94}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{-\left(b + {\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right)}^{\frac{1}{2}}\right)}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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