Average Error: 33.8 → 16.5
Time: 32.3s
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 7.488148662535596019530840801245208549295 \cdot 10^{-298}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 6.695434107567982389585546912636742560821 \cdot 10^{164}:\\ \;\;\;\;\frac{\left(\frac{a \cdot 4}{a} \cdot \frac{c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}\right) \cdot \frac{-1}{\sqrt[3]{\left|\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}\right| \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a \cdot 4, -c, 0\right)}{b \cdot 2}}{a}}{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 7.488148662535596019530840801245208549295 \cdot 10^{-298}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)} - b}{a}}{2}\\

\mathbf{elif}\;b \le 6.695434107567982389585546912636742560821 \cdot 10^{164}:\\
\;\;\;\;\frac{\left(\frac{a \cdot 4}{a} \cdot \frac{c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}\right) \cdot \frac{-1}{\sqrt[3]{\left|\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}\right| \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r53833 = b;
        double r53834 = -r53833;
        double r53835 = r53833 * r53833;
        double r53836 = 4.0;
        double r53837 = a;
        double r53838 = c;
        double r53839 = r53837 * r53838;
        double r53840 = r53836 * r53839;
        double r53841 = r53835 - r53840;
        double r53842 = sqrt(r53841);
        double r53843 = r53834 + r53842;
        double r53844 = 2.0;
        double r53845 = r53844 * r53837;
        double r53846 = r53843 / r53845;
        return r53846;
}

double f(double a, double b, double c) {
        double r53847 = b;
        double r53848 = 7.488148662535596e-298;
        bool r53849 = r53847 <= r53848;
        double r53850 = a;
        double r53851 = 4.0;
        double r53852 = c;
        double r53853 = r53851 * r53852;
        double r53854 = -r53853;
        double r53855 = r53847 * r53847;
        double r53856 = fma(r53850, r53854, r53855);
        double r53857 = sqrt(r53856);
        double r53858 = r53857 - r53847;
        double r53859 = r53858 / r53850;
        double r53860 = 2.0;
        double r53861 = r53859 / r53860;
        double r53862 = 6.695434107567982e+164;
        bool r53863 = r53847 <= r53862;
        double r53864 = r53850 * r53851;
        double r53865 = r53864 / r53850;
        double r53866 = -r53850;
        double r53867 = r53866 * r53852;
        double r53868 = fma(r53867, r53851, r53855);
        double r53869 = sqrt(r53868);
        double r53870 = r53869 + r53847;
        double r53871 = cbrt(r53870);
        double r53872 = r53852 / r53871;
        double r53873 = r53865 * r53872;
        double r53874 = -1.0;
        double r53875 = fma(r53851, r53867, r53855);
        double r53876 = cbrt(r53875);
        double r53877 = fabs(r53876);
        double r53878 = sqrt(r53876);
        double r53879 = r53877 * r53878;
        double r53880 = r53879 + r53847;
        double r53881 = cbrt(r53880);
        double r53882 = r53881 * r53871;
        double r53883 = r53874 / r53882;
        double r53884 = r53873 * r53883;
        double r53885 = r53884 / r53860;
        double r53886 = -r53852;
        double r53887 = 0.0;
        double r53888 = fma(r53864, r53886, r53887);
        double r53889 = 2.0;
        double r53890 = r53847 * r53889;
        double r53891 = r53888 / r53890;
        double r53892 = r53891 / r53850;
        double r53893 = r53892 / r53860;
        double r53894 = r53863 ? r53885 : r53893;
        double r53895 = r53849 ? r53861 : r53894;
        return r53895;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.8
Target21.2
Herbie16.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 3 regimes
  2. if b < 7.488148662535596e-298

    1. Initial program 22.0

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

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

    if 7.488148662535596e-298 < b < 6.695434107567982e+164

    1. Initial program 35.4

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{1}{\sqrt[3]{b + \sqrt{\mathsf{fma}\left(\left(-c\right) \cdot a, 4, b \cdot b\right)}} \cdot \sqrt[3]{b + \sqrt{\mathsf{fma}\left(\left(-c\right) \cdot a, 4, b \cdot b\right)}}} \cdot \color{blue}{\left(\frac{a \cdot 4}{a} \cdot \frac{-c}{\sqrt[3]{b + \sqrt{\mathsf{fma}\left(\left(-c\right) \cdot a, 4, b \cdot b\right)}}}\right)}}{2}\]
    15. Using strategy rm
    16. Applied add-cube-cbrt10.5

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

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

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

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

    if 6.695434107567982e+164 < b

    1. Initial program 64.0

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

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

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

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

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

      \[\leadsto \frac{\frac{\frac{\mathsf{fma}\left(a \cdot 4, -c, 0\right)}{\color{blue}{2 \cdot b}}}{a}}{2}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 7.488148662535596019530840801245208549295 \cdot 10^{-298}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)} - b}{a}}{2}\\ \mathbf{elif}\;b \le 6.695434107567982389585546912636742560821 \cdot 10^{164}:\\ \;\;\;\;\frac{\left(\frac{a \cdot 4}{a} \cdot \frac{c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}\right) \cdot \frac{-1}{\sqrt[3]{\left|\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}\right| \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(4, \left(-a\right) \cdot c, b \cdot b\right)}} + b} \cdot \sqrt[3]{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot c, 4, b \cdot b\right)} + b}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a \cdot 4, -c, 0\right)}{b \cdot 2}}{a}}{2}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))))

  (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))