Average Error: 34.2 → 7.8
Time: 1.3m
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 -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le -4.565615297402513793822059617442033581563 \cdot 10^{-201}:\\ \;\;\;\;\frac{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 4.287176096066254708923845932443784224798 \cdot 10^{77}:\\ \;\;\;\;\frac{\frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}{\sqrt[3]{a}} \cdot \frac{c}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1 \cdot 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 -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\

\mathbf{elif}\;b \le -4.565615297402513793822059617442033581563 \cdot 10^{-201}:\\
\;\;\;\;\frac{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot a}\\

\mathbf{elif}\;b \le 4.287176096066254708923845932443784224798 \cdot 10^{77}:\\
\;\;\;\;\frac{\frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}{\sqrt[3]{a}} \cdot \frac{c}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}}}\\

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

\end{array}
double f(double a, double b, double c) {
        double r376818 = b;
        double r376819 = -r376818;
        double r376820 = r376818 * r376818;
        double r376821 = 4.0;
        double r376822 = a;
        double r376823 = r376821 * r376822;
        double r376824 = c;
        double r376825 = r376823 * r376824;
        double r376826 = r376820 - r376825;
        double r376827 = sqrt(r376826);
        double r376828 = r376819 + r376827;
        double r376829 = 2.0;
        double r376830 = r376829 * r376822;
        double r376831 = r376828 / r376830;
        return r376831;
}

double f(double a, double b, double c) {
        double r376832 = b;
        double r376833 = -3.828737593568667e+109;
        bool r376834 = r376832 <= r376833;
        double r376835 = c;
        double r376836 = r376835 / r376832;
        double r376837 = a;
        double r376838 = r376832 / r376837;
        double r376839 = r376836 - r376838;
        double r376840 = 1.0;
        double r376841 = r376839 * r376840;
        double r376842 = -4.565615297402514e-201;
        bool r376843 = r376832 <= r376842;
        double r376844 = r376832 * r376832;
        double r376845 = 4.0;
        double r376846 = r376845 * r376837;
        double r376847 = r376846 * r376835;
        double r376848 = r376844 - r376847;
        double r376849 = cbrt(r376848);
        double r376850 = fabs(r376849);
        double r376851 = sqrt(r376849);
        double r376852 = r376850 * r376851;
        double r376853 = -r376832;
        double r376854 = r376852 + r376853;
        double r376855 = 2.0;
        double r376856 = r376855 * r376837;
        double r376857 = r376854 / r376856;
        double r376858 = 4.2871760960662547e+77;
        bool r376859 = r376832 <= r376858;
        double r376860 = 1.0;
        double r376861 = sqrt(r376848);
        double r376862 = r376853 - r376861;
        double r376863 = r376860 / r376862;
        double r376864 = cbrt(r376837);
        double r376865 = r376860 / r376845;
        double r376866 = r376864 / r376865;
        double r376867 = r376864 / r376866;
        double r376868 = r376863 / r376867;
        double r376869 = r376868 / r376864;
        double r376870 = r376864 * r376864;
        double r376871 = r376870 / r376855;
        double r376872 = r376864 / r376871;
        double r376873 = r376835 / r376872;
        double r376874 = r376869 * r376873;
        double r376875 = -1.0;
        double r376876 = r376875 * r376835;
        double r376877 = r376876 / r376832;
        double r376878 = r376859 ? r376874 : r376877;
        double r376879 = r376843 ? r376857 : r376878;
        double r376880 = r376834 ? r376841 : r376879;
        return r376880;
}

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.2
Target21.0
Herbie7.8
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}}\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if b < -3.828737593568667e+109

    1. Initial program 49.5

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

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

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

    if -3.828737593568667e+109 < b < -4.565615297402514e-201

    1. Initial program 8.1

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt8.5

      \[\leadsto \frac{\left(-b\right) + \sqrt{\color{blue}{\left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{2 \cdot a}\]
    4. Applied sqrt-prod8.5

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

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

    if -4.565615297402514e-201 < b < 4.2871760960662547e+77

    1. Initial program 28.4

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied flip-+28.5

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

      \[\leadsto \frac{\frac{\color{blue}{0 + \left(4 \cdot a\right) \cdot c}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\]
    5. Using strategy rm
    6. Applied associate-/r*16.7

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

      \[\leadsto \frac{\color{blue}{\frac{4 \cdot a}{2} \cdot \frac{c}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}{a}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt15.4

      \[\leadsto \frac{\frac{4 \cdot a}{2} \cdot \frac{c}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}{\color{blue}{\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \sqrt[3]{a}}}\]
    10. Applied associate-/r*15.4

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

      \[\leadsto \frac{\color{blue}{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\frac{a}{\frac{2}{4}}}}}}{\sqrt[3]{a}}\]
    12. Using strategy rm
    13. Applied *-un-lft-identity12.1

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\frac{a}{\frac{2}{4}}}}}{\sqrt[3]{\color{blue}{1 \cdot a}}}\]
    14. Applied cbrt-prod12.1

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\frac{a}{\frac{2}{4}}}}}{\color{blue}{\sqrt[3]{1} \cdot \sqrt[3]{a}}}\]
    15. Applied div-inv12.1

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\frac{a}{\color{blue}{2 \cdot \frac{1}{4}}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    16. Applied add-cube-cbrt11.4

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\frac{\color{blue}{\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \sqrt[3]{a}}}{2 \cdot \frac{1}{4}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    17. Applied times-frac11.4

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\color{blue}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2} \cdot \frac{\sqrt[3]{a}}{\frac{1}{4}}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    18. Applied times-frac11.4

      \[\leadsto \frac{\frac{\frac{c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\color{blue}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}} \cdot \frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    19. Applied div-inv11.4

      \[\leadsto \frac{\frac{\color{blue}{c \cdot \frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}} \cdot \frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    20. Applied times-frac12.4

      \[\leadsto \frac{\color{blue}{\frac{c}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}}} \cdot \frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}}{\sqrt[3]{1} \cdot \sqrt[3]{a}}\]
    21. Applied times-frac12.0

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

    if 4.2871760960662547e+77 < b

    1. Initial program 58.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le -4.565615297402513793822059617442033581563 \cdot 10^{-201}:\\ \;\;\;\;\frac{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} + \left(-b\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 4.287176096066254708923845932443784224798 \cdot 10^{77}:\\ \;\;\;\;\frac{\frac{\frac{1}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a}}{\frac{1}{4}}}}}{\sqrt[3]{a}} \cdot \frac{c}{\frac{\sqrt[3]{a}}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1 \cdot c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019196 
(FPCore (a b c)
  :name "The quadratic formula (r1)"

  :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)))