Average Error: 28.1 → 0.3
Time: 23.0s
Precision: 64
\[1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt a \lt 94906265.62425155937671661376953125 \land 1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt b \lt 94906265.62425155937671661376953125 \land 1.053671212772350866701172186984739043147 \cdot 10^{-8} \lt c \lt 94906265.62425155937671661376953125\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\frac{\left(-\frac{4 \cdot a}{a}\right) \cdot \frac{c}{\sqrt{\mathsf{fma}\left(b, b, \left(-c\right) \cdot \left(4 \cdot a\right)\right)} + b}}{2}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\frac{\left(-\frac{4 \cdot a}{a}\right) \cdot \frac{c}{\sqrt{\mathsf{fma}\left(b, b, \left(-c\right) \cdot \left(4 \cdot a\right)\right)} + b}}{2}
double f(double a, double b, double c) {
        double r57924 = b;
        double r57925 = -r57924;
        double r57926 = r57924 * r57924;
        double r57927 = 4.0;
        double r57928 = a;
        double r57929 = r57927 * r57928;
        double r57930 = c;
        double r57931 = r57929 * r57930;
        double r57932 = r57926 - r57931;
        double r57933 = sqrt(r57932);
        double r57934 = r57925 + r57933;
        double r57935 = 2.0;
        double r57936 = r57935 * r57928;
        double r57937 = r57934 / r57936;
        return r57937;
}

double f(double a, double b, double c) {
        double r57938 = 4.0;
        double r57939 = a;
        double r57940 = r57938 * r57939;
        double r57941 = r57940 / r57939;
        double r57942 = -r57941;
        double r57943 = c;
        double r57944 = b;
        double r57945 = -r57943;
        double r57946 = r57945 * r57940;
        double r57947 = fma(r57944, r57944, r57946);
        double r57948 = sqrt(r57947);
        double r57949 = r57948 + r57944;
        double r57950 = r57943 / r57949;
        double r57951 = r57942 * r57950;
        double r57952 = 2.0;
        double r57953 = r57951 / r57952;
        return r57953;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 28.1

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

    \[\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--28.1

    \[\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.5

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

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

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

    \[\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(b, b, c \cdot \left(-a \cdot 4\right)\right)}\right)}}{1 \cdot a}}{2}\]
  11. Applied times-frac0.5

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

    \[\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(b, b, c \cdot \left(-a \cdot 4\right)\right)}}}{a}}}{2}\]
  13. Simplified0.5

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

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

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

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (a b c)
  :name "Quadratic roots, narrow range"
  :pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))