Average Error: 32.7 → 10.0
Time: 26.2s
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 -7.3975762435547 \cdot 10^{+118}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.3115303715225787 \cdot 10^{-131}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \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 -7.3975762435547 \cdot 10^{+118}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r1764698 = b;
        double r1764699 = -r1764698;
        double r1764700 = r1764698 * r1764698;
        double r1764701 = 4.0;
        double r1764702 = a;
        double r1764703 = r1764701 * r1764702;
        double r1764704 = c;
        double r1764705 = r1764703 * r1764704;
        double r1764706 = r1764700 - r1764705;
        double r1764707 = sqrt(r1764706);
        double r1764708 = r1764699 + r1764707;
        double r1764709 = 2.0;
        double r1764710 = r1764709 * r1764702;
        double r1764711 = r1764708 / r1764710;
        return r1764711;
}

double f(double a, double b, double c) {
        double r1764712 = b;
        double r1764713 = -7.3975762435547e+118;
        bool r1764714 = r1764712 <= r1764713;
        double r1764715 = c;
        double r1764716 = r1764715 / r1764712;
        double r1764717 = a;
        double r1764718 = r1764712 / r1764717;
        double r1764719 = r1764716 - r1764718;
        double r1764720 = 1.3115303715225787e-131;
        bool r1764721 = r1764712 <= r1764720;
        double r1764722 = r1764712 * r1764712;
        double r1764723 = 4.0;
        double r1764724 = r1764717 * r1764723;
        double r1764725 = r1764724 * r1764715;
        double r1764726 = r1764722 - r1764725;
        double r1764727 = sqrt(r1764726);
        double r1764728 = r1764727 - r1764712;
        double r1764729 = 2.0;
        double r1764730 = r1764728 / r1764729;
        double r1764731 = r1764730 / r1764717;
        double r1764732 = -r1764716;
        double r1764733 = r1764721 ? r1764731 : r1764732;
        double r1764734 = r1764714 ? r1764719 : r1764733;
        return r1764734;
}

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 < -7.3975762435547e+118

    1. Initial program 49.0

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

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

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

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

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

    if -7.3975762435547e+118 < b < 1.3115303715225787e-131

    1. Initial program 10.7

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

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

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

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

    if 1.3115303715225787e-131 < b

    1. Initial program 50.3

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

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

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

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

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

      \[\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 -7.3975762435547 \cdot 10^{+118}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.3115303715225787 \cdot 10^{-131}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{2}}{a}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019134 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))