Average Error: 52.4 → 0.3
Time: 4.8m
Precision: 64
\[4.930380657631323783823303533017413935458 \cdot 10^{-32} \lt a \lt 20282409603651670423947251286016 \land 4.930380657631323783823303533017413935458 \cdot 10^{-32} \lt b \lt 20282409603651670423947251286016 \land 4.930380657631323783823303533017413935458 \cdot 10^{-32} \lt c \lt 20282409603651670423947251286016\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[-\frac{c \cdot \frac{4}{b + \sqrt{\mathsf{fma}\left(a \cdot c, -4, {b}^{2}\right)}}}{2}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
-\frac{c \cdot \frac{4}{b + \sqrt{\mathsf{fma}\left(a \cdot c, -4, {b}^{2}\right)}}}{2}
double f(double a, double b, double c) {
        double r37336 = b;
        double r37337 = -r37336;
        double r37338 = r37336 * r37336;
        double r37339 = 4.0;
        double r37340 = a;
        double r37341 = r37339 * r37340;
        double r37342 = c;
        double r37343 = r37341 * r37342;
        double r37344 = r37338 - r37343;
        double r37345 = sqrt(r37344);
        double r37346 = r37337 + r37345;
        double r37347 = 2.0;
        double r37348 = r37347 * r37340;
        double r37349 = r37346 / r37348;
        return r37349;
}

double f(double a, double b, double c) {
        double r37350 = c;
        double r37351 = 4.0;
        double r37352 = b;
        double r37353 = a;
        double r37354 = r37353 * r37350;
        double r37355 = -r37351;
        double r37356 = 2.0;
        double r37357 = pow(r37352, r37356);
        double r37358 = fma(r37354, r37355, r37357);
        double r37359 = sqrt(r37358);
        double r37360 = r37352 + r37359;
        double r37361 = r37351 / r37360;
        double r37362 = r37350 * r37361;
        double r37363 = 2.0;
        double r37364 = r37362 / r37363;
        double r37365 = -r37364;
        return r37365;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 52.4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \frac{1 \cdot \frac{\frac{-c \cdot 4}{\color{blue}{\left(\sqrt[3]{\frac{a}{a}} \cdot \sqrt[3]{\frac{a}{a}}\right) \cdot \sqrt[3]{\frac{a}{a}}}}}{1 \cdot \left(b + \sqrt{\mathsf{fma}\left(c \cdot a, -4, {b}^{2}\right)}\right)}}{2}\]
  21. Applied distribute-lft-neg-in0.1

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

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

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

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

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

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

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, wide range"
  :pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))