Average Error: 34.4 → 14.1
Time: 19.0s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.390658213785421360285622940547871300736 \cdot 10^{101}:\\ \;\;\;\;\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 1}{a}\\ \mathbf{elif}\;b \le 4.330541687749954965862284767620099540245 \cdot 10^{-17}:\\ \;\;\;\;\frac{\frac{1}{\frac{2}{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{1}{b} - \frac{1 \cdot b}{c \cdot a}}}{a}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.390658213785421360285622940547871300736 \cdot 10^{101}:\\
\;\;\;\;\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 1}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r1798821 = b;
        double r1798822 = -r1798821;
        double r1798823 = r1798821 * r1798821;
        double r1798824 = 4.0;
        double r1798825 = a;
        double r1798826 = r1798824 * r1798825;
        double r1798827 = c;
        double r1798828 = r1798826 * r1798827;
        double r1798829 = r1798823 - r1798828;
        double r1798830 = sqrt(r1798829);
        double r1798831 = r1798822 + r1798830;
        double r1798832 = 2.0;
        double r1798833 = r1798832 * r1798825;
        double r1798834 = r1798831 / r1798833;
        return r1798834;
}

double f(double a, double b, double c) {
        double r1798835 = b;
        double r1798836 = -1.3906582137854214e+101;
        bool r1798837 = r1798835 <= r1798836;
        double r1798838 = c;
        double r1798839 = a;
        double r1798840 = r1798835 / r1798839;
        double r1798841 = r1798838 / r1798840;
        double r1798842 = r1798841 - r1798835;
        double r1798843 = 1.0;
        double r1798844 = r1798842 * r1798843;
        double r1798845 = r1798844 / r1798839;
        double r1798846 = 4.330541687749955e-17;
        bool r1798847 = r1798835 <= r1798846;
        double r1798848 = 1.0;
        double r1798849 = 2.0;
        double r1798850 = r1798835 * r1798835;
        double r1798851 = r1798838 * r1798839;
        double r1798852 = 4.0;
        double r1798853 = r1798851 * r1798852;
        double r1798854 = r1798850 - r1798853;
        double r1798855 = sqrt(r1798854);
        double r1798856 = r1798855 - r1798835;
        double r1798857 = r1798849 / r1798856;
        double r1798858 = r1798848 / r1798857;
        double r1798859 = r1798858 / r1798839;
        double r1798860 = r1798843 / r1798835;
        double r1798861 = r1798843 * r1798835;
        double r1798862 = r1798861 / r1798851;
        double r1798863 = r1798860 - r1798862;
        double r1798864 = r1798848 / r1798863;
        double r1798865 = r1798864 / r1798839;
        double r1798866 = r1798847 ? r1798859 : r1798865;
        double r1798867 = r1798837 ? r1798845 : r1798866;
        return r1798867;
}

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

Derivation

  1. Split input into 3 regimes
  2. if b < -1.3906582137854214e+101

    1. Initial program 48.2

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

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

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

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

    if -1.3906582137854214e+101 < b < 4.330541687749955e-17

    1. Initial program 15.2

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}}\]
    3. Using strategy rm
    4. Applied clear-num15.3

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

    if 4.330541687749955e-17 < b

    1. Initial program 55.6

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.390658213785421360285622940547871300736 \cdot 10^{101}:\\ \;\;\;\;\frac{\left(\frac{c}{\frac{b}{a}} - b\right) \cdot 1}{a}\\ \mathbf{elif}\;b \le 4.330541687749954965862284767620099540245 \cdot 10^{-17}:\\ \;\;\;\;\frac{\frac{1}{\frac{2}{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{1}{b} - \frac{1 \cdot b}{c \cdot a}}}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019172 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))