Average Error: 34.1 → 10.6
Time: 59.0s
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 -5.089942740476039 \cdot 10^{+37}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.336295819707417 \cdot 10^{-25}:\\ \;\;\;\;\frac{\left(\sqrt{\mathsf{fma}\left(\left(-4 \cdot c\right), a, \left(b \cdot b\right)\right)} - b\right) \cdot \frac{1}{2}}{a}\\ \mathbf{elif}\;b \le 4.565612504171058 \cdot 10^{+134}:\\ \;\;\;\;\frac{\frac{a \cdot \left(-4 \cdot c\right)}{\frac{a}{\frac{1}{2}}}}{\sqrt{\mathsf{fma}\left(\left(-4 \cdot c\right), a, \left(b \cdot b\right)\right)} + b}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \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 -5.089942740476039 \cdot 10^{+37}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r4438656 = b;
        double r4438657 = -r4438656;
        double r4438658 = r4438656 * r4438656;
        double r4438659 = 4.0;
        double r4438660 = a;
        double r4438661 = c;
        double r4438662 = r4438660 * r4438661;
        double r4438663 = r4438659 * r4438662;
        double r4438664 = r4438658 - r4438663;
        double r4438665 = sqrt(r4438664);
        double r4438666 = r4438657 + r4438665;
        double r4438667 = 2.0;
        double r4438668 = r4438667 * r4438660;
        double r4438669 = r4438666 / r4438668;
        return r4438669;
}

double f(double a, double b, double c) {
        double r4438670 = b;
        double r4438671 = -5.089942740476039e+37;
        bool r4438672 = r4438670 <= r4438671;
        double r4438673 = c;
        double r4438674 = r4438673 / r4438670;
        double r4438675 = a;
        double r4438676 = r4438670 / r4438675;
        double r4438677 = r4438674 - r4438676;
        double r4438678 = 1.336295819707417e-25;
        bool r4438679 = r4438670 <= r4438678;
        double r4438680 = -4.0;
        double r4438681 = r4438680 * r4438673;
        double r4438682 = r4438670 * r4438670;
        double r4438683 = fma(r4438681, r4438675, r4438682);
        double r4438684 = sqrt(r4438683);
        double r4438685 = r4438684 - r4438670;
        double r4438686 = 0.5;
        double r4438687 = r4438685 * r4438686;
        double r4438688 = r4438687 / r4438675;
        double r4438689 = 4.565612504171058e+134;
        bool r4438690 = r4438670 <= r4438689;
        double r4438691 = r4438675 * r4438681;
        double r4438692 = r4438675 / r4438686;
        double r4438693 = r4438691 / r4438692;
        double r4438694 = r4438684 + r4438670;
        double r4438695 = r4438693 / r4438694;
        double r4438696 = -r4438674;
        double r4438697 = r4438690 ? r4438695 : r4438696;
        double r4438698 = r4438679 ? r4438688 : r4438697;
        double r4438699 = r4438672 ? r4438677 : r4438698;
        return r4438699;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original34.1
Target20.7
Herbie10.6
\[\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 < -5.089942740476039e+37

    1. Initial program 34.9

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

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

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

    if -5.089942740476039e+37 < b < 1.336295819707417e-25

    1. Initial program 16.4

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

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

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

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

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

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

      \[\leadsto \left(\sqrt{\mathsf{fma}\left(\left(-4 \cdot c\right), a, \left(b \cdot b\right)\right)} - b\right) \cdot \color{blue}{\frac{\frac{1}{2}}{a}}\]
    9. Using strategy rm
    10. Applied associate-*r/16.4

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

    if 1.336295819707417e-25 < b < 4.565612504171058e+134

    1. Initial program 47.3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if 4.565612504171058e+134 < b

    1. Initial program 61.1

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

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

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

      \[\leadsto \color{blue}{-\frac{c}{b}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.089942740476039 \cdot 10^{+37}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.336295819707417 \cdot 10^{-25}:\\ \;\;\;\;\frac{\left(\sqrt{\mathsf{fma}\left(\left(-4 \cdot c\right), a, \left(b \cdot b\right)\right)} - b\right) \cdot \frac{1}{2}}{a}\\ \mathbf{elif}\;b \le 4.565612504171058 \cdot 10^{+134}:\\ \;\;\;\;\frac{\frac{a \cdot \left(-4 \cdot c\right)}{\frac{a}{\frac{1}{2}}}}{\sqrt{\mathsf{fma}\left(\left(-4 \cdot c\right), a, \left(b \cdot b\right)\right)} + b}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019121 +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)))