Average Error: 33.2 → 9.8
Time: 19.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 -1.3390906992477082 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\ \mathbf{elif}\;b \le -8.671664006593932 \cdot 10^{-208}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 8.123773458674236 \cdot 10^{+149}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\sqrt{\mathsf{fma}\left(a, \frac{c}{\frac{-1}{4}}, b \cdot b\right)} + b}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\left(b - \frac{a \cdot c}{b}\right) \cdot 2}}{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 -1.3390906992477082 \cdot 10^{+154}:\\
\;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\

\mathbf{elif}\;b \le -8.671664006593932 \cdot 10^{-208}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} - b}{a}}{2}\\

\mathbf{elif}\;b \le 8.123773458674236 \cdot 10^{+149}:\\
\;\;\;\;\frac{\frac{-4 \cdot c}{\sqrt{\mathsf{fma}\left(a, \frac{c}{\frac{-1}{4}}, b \cdot b\right)} + b}}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{-4 \cdot c}{\left(b - \frac{a \cdot c}{b}\right) \cdot 2}}{2}\\

\end{array}
double f(double a, double b, double c) {
        double r2838800 = b;
        double r2838801 = -r2838800;
        double r2838802 = r2838800 * r2838800;
        double r2838803 = 4.0;
        double r2838804 = a;
        double r2838805 = c;
        double r2838806 = r2838804 * r2838805;
        double r2838807 = r2838803 * r2838806;
        double r2838808 = r2838802 - r2838807;
        double r2838809 = sqrt(r2838808);
        double r2838810 = r2838801 + r2838809;
        double r2838811 = 2.0;
        double r2838812 = r2838811 * r2838804;
        double r2838813 = r2838810 / r2838812;
        return r2838813;
}

double f(double a, double b, double c) {
        double r2838814 = b;
        double r2838815 = -1.3390906992477082e+154;
        bool r2838816 = r2838814 <= r2838815;
        double r2838817 = -4.0;
        double r2838818 = c;
        double r2838819 = r2838817 * r2838818;
        double r2838820 = 2.0;
        double r2838821 = a;
        double r2838822 = r2838821 * r2838818;
        double r2838823 = r2838822 / r2838814;
        double r2838824 = r2838820 * r2838823;
        double r2838825 = r2838819 / r2838824;
        double r2838826 = r2838825 / r2838820;
        double r2838827 = -8.671664006593932e-208;
        bool r2838828 = r2838814 <= r2838827;
        double r2838829 = r2838817 * r2838821;
        double r2838830 = r2838814 * r2838814;
        double r2838831 = fma(r2838829, r2838818, r2838830);
        double r2838832 = sqrt(r2838831);
        double r2838833 = r2838832 - r2838814;
        double r2838834 = r2838833 / r2838821;
        double r2838835 = r2838834 / r2838820;
        double r2838836 = 8.123773458674236e+149;
        bool r2838837 = r2838814 <= r2838836;
        double r2838838 = -0.25;
        double r2838839 = r2838818 / r2838838;
        double r2838840 = fma(r2838821, r2838839, r2838830);
        double r2838841 = sqrt(r2838840);
        double r2838842 = r2838841 + r2838814;
        double r2838843 = r2838819 / r2838842;
        double r2838844 = r2838843 / r2838820;
        double r2838845 = r2838814 - r2838823;
        double r2838846 = r2838845 * r2838820;
        double r2838847 = r2838819 / r2838846;
        double r2838848 = r2838847 / r2838820;
        double r2838849 = r2838837 ? r2838844 : r2838848;
        double r2838850 = r2838828 ? r2838835 : r2838849;
        double r2838851 = r2838816 ? r2838826 : r2838850;
        return r2838851;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.2
Target20.6
Herbie9.8
\[\begin{array}{l} \mathbf{if}\;b \lt 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.3390906992477082e+154

    1. Initial program 60.9

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied flip--62.2

      \[\leadsto \frac{\frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b \cdot b}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{a}}{2}\]
    5. Simplified62.5

      \[\leadsto \frac{\frac{\frac{\color{blue}{\mathsf{fma}\left(a \cdot c, -4, 0\right)}}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{\color{blue}{1 \cdot a}}}{2}\]
    8. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\color{blue}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}}{1 \cdot a}}{2}\]
    9. Applied *-un-lft-identity62.5

      \[\leadsto \frac{\frac{\frac{\color{blue}{1 \cdot \mathsf{fma}\left(a \cdot c, -4, 0\right)}}{1 \cdot \left(\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b\right)}}{1 \cdot a}}{2}\]
    10. Applied times-frac62.5

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{1} \cdot \frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{1 \cdot a}}{2}\]
    11. Applied times-frac62.5

      \[\leadsto \frac{\color{blue}{\frac{\frac{1}{1}}{1} \cdot \frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}}{2}\]
    12. Simplified62.5

      \[\leadsto \frac{\color{blue}{1} \cdot \frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    13. Simplified62.5

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

      \[\leadsto \frac{1 \cdot \frac{\color{blue}{-4 \cdot c}}{\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(-4 \cdot c\right)\right)} + b}}{2}\]
    15. Taylor expanded around -inf 23.4

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

    if -1.3390906992477082e+154 < b < -8.671664006593932e-208

    1. Initial program 6.6

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity6.6

      \[\leadsto \frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{\color{blue}{1 \cdot a}}}{2}\]
    5. Applied associate-/r*6.6

      \[\leadsto \frac{\color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{1}}{a}}}{2}\]
    6. Simplified6.6

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

    if -8.671664006593932e-208 < b < 8.123773458674236e+149

    1. Initial program 32.1

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied flip--32.3

      \[\leadsto \frac{\frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b \cdot b}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{a}}{2}\]
    5. Simplified16.5

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

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

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

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

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

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

      \[\leadsto \frac{\color{blue}{1} \cdot \frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    13. Simplified14.8

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

      \[\leadsto \frac{1 \cdot \frac{\color{blue}{-4 \cdot c}}{\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(-4 \cdot c\right)\right)} + b}}{2}\]
    15. Taylor expanded around 0 9.7

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

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

    if 8.123773458674236e+149 < b

    1. Initial program 62.3

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b}{a}}{2}}\]
    3. Using strategy rm
    4. Applied flip--62.3

      \[\leadsto \frac{\frac{\color{blue}{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} - b \cdot b}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}}{a}}{2}\]
    5. Simplified38.2

      \[\leadsto \frac{\frac{\frac{\color{blue}{\mathsf{fma}\left(a \cdot c, -4, 0\right)}}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity38.2

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

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

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

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

      \[\leadsto \frac{\color{blue}{\frac{\frac{1}{1}}{1} \cdot \frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}}{2}\]
    12. Simplified38.2

      \[\leadsto \frac{\color{blue}{1} \cdot \frac{\frac{\mathsf{fma}\left(a \cdot c, -4, 0\right)}{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} + b}}{a}}{2}\]
    13. Simplified38.1

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

      \[\leadsto \frac{1 \cdot \frac{\color{blue}{-4 \cdot c}}{\sqrt{\mathsf{fma}\left(b, b, a \cdot \left(-4 \cdot c\right)\right)} + b}}{2}\]
    15. Taylor expanded around inf 6.7

      \[\leadsto \frac{1 \cdot \frac{-4 \cdot c}{\color{blue}{2 \cdot b - 2 \cdot \frac{a \cdot c}{b}}}}{2}\]
    16. Simplified6.7

      \[\leadsto \frac{1 \cdot \frac{-4 \cdot c}{\color{blue}{\left(b - \frac{c \cdot a}{b}\right) \cdot 2}}}{2}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3390906992477082 \cdot 10^{+154}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{2 \cdot \frac{a \cdot c}{b}}}{2}\\ \mathbf{elif}\;b \le -8.671664006593932 \cdot 10^{-208}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 8.123773458674236 \cdot 10^{+149}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\sqrt{\mathsf{fma}\left(a, \frac{c}{\frac{-1}{4}}, b \cdot b\right)} + b}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-4 \cdot c}{\left(b - \frac{a \cdot c}{b}\right) \cdot 2}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019162 +o rules:numerics
(FPCore (a b c)
  :name "quadp (p42, positive)"

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