Average Error: 44.0 → 0.4
Time: 22.3s
Precision: 64
\[1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt a \lt 9007199254740992 \land 1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt b \lt 9007199254740992 \land 1.1102230246251565404236316680908203125 \cdot 10^{-16} \lt c \lt 9007199254740992\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\frac{4 \cdot \left(a \cdot c\right)}{\left(2 \cdot \left(\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\mathsf{fma}\left(\left(c \cdot 4\right) \cdot a, \mathsf{fma}\left(b, b, 4 \cdot \left(a \cdot c\right)\right), {b}^{4}\right)}}\right)\right) \cdot a}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\frac{4 \cdot \left(a \cdot c\right)}{\left(2 \cdot \left(\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\mathsf{fma}\left(\left(c \cdot 4\right) \cdot a, \mathsf{fma}\left(b, b, 4 \cdot \left(a \cdot c\right)\right), {b}^{4}\right)}}\right)\right) \cdot a}
double f(double a, double b, double c) {
        double r48086 = b;
        double r48087 = -r48086;
        double r48088 = r48086 * r48086;
        double r48089 = 4.0;
        double r48090 = a;
        double r48091 = r48089 * r48090;
        double r48092 = c;
        double r48093 = r48091 * r48092;
        double r48094 = r48088 - r48093;
        double r48095 = sqrt(r48094);
        double r48096 = r48087 + r48095;
        double r48097 = 2.0;
        double r48098 = r48097 * r48090;
        double r48099 = r48096 / r48098;
        return r48099;
}

double f(double a, double b, double c) {
        double r48100 = 4.0;
        double r48101 = a;
        double r48102 = c;
        double r48103 = r48101 * r48102;
        double r48104 = r48100 * r48103;
        double r48105 = 2.0;
        double r48106 = b;
        double r48107 = -r48106;
        double r48108 = 6.0;
        double r48109 = pow(r48106, r48108);
        double r48110 = r48100 * r48101;
        double r48111 = r48110 * r48102;
        double r48112 = 3.0;
        double r48113 = pow(r48111, r48112);
        double r48114 = r48109 - r48113;
        double r48115 = r48102 * r48100;
        double r48116 = r48115 * r48101;
        double r48117 = fma(r48106, r48106, r48104);
        double r48118 = 4.0;
        double r48119 = pow(r48106, r48118);
        double r48120 = fma(r48116, r48117, r48119);
        double r48121 = r48114 / r48120;
        double r48122 = sqrt(r48121);
        double r48123 = r48107 - r48122;
        double r48124 = r48105 * r48123;
        double r48125 = r48124 * r48101;
        double r48126 = r48104 / r48125;
        return r48126;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 44.0

    \[\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-+44.0

    \[\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. Simplified0.4

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

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

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

    \[\leadsto \frac{\frac{0 + \left(a \cdot c\right) \cdot 4}{\left(-b\right) - \sqrt{\frac{{b}^{6} - {\left(\left(4 \cdot a\right) \cdot c\right)}^{3}}{\color{blue}{\mathsf{fma}\left(\left(c \cdot 4\right) \cdot a, \mathsf{fma}\left(b, b, 4 \cdot \left(a \cdot c\right)\right), {b}^{4}\right)}}}}}{2 \cdot a}\]
  9. Using strategy rm
  10. Applied div-inv0.5

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

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

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

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

Reproduce

herbie shell --seed 2019303 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, medium range"
  :precision binary64
  :pre (and (< 1.11022e-16 a 9.0072e15) (< 1.11022e-16 b 9.0072e15) (< 1.11022e-16 c 9.0072e15))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))