Average Error: 28.4 → 0.4
Time: 16.2s
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(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
\[\frac{1}{\frac{a \cdot 3}{-a \cdot 3} \cdot \frac{b + \sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot \left(-3\right)\right)}}{c}}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}
\frac{1}{\frac{a \cdot 3}{-a \cdot 3} \cdot \frac{b + \sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot \left(-3\right)\right)}}{c}}
double f(double a, double b, double c) {
        double r91087 = b;
        double r91088 = -r91087;
        double r91089 = r91087 * r91087;
        double r91090 = 3.0;
        double r91091 = a;
        double r91092 = r91090 * r91091;
        double r91093 = c;
        double r91094 = r91092 * r91093;
        double r91095 = r91089 - r91094;
        double r91096 = sqrt(r91095);
        double r91097 = r91088 + r91096;
        double r91098 = r91097 / r91092;
        return r91098;
}

double f(double a, double b, double c) {
        double r91099 = 1.0;
        double r91100 = a;
        double r91101 = 3.0;
        double r91102 = r91100 * r91101;
        double r91103 = -r91102;
        double r91104 = r91102 / r91103;
        double r91105 = b;
        double r91106 = c;
        double r91107 = r91100 * r91106;
        double r91108 = -r91101;
        double r91109 = r91107 * r91108;
        double r91110 = fma(r91105, r91105, r91109);
        double r91111 = sqrt(r91110);
        double r91112 = r91105 + r91111;
        double r91113 = r91112 / r91106;
        double r91114 = r91104 * r91113;
        double r91115 = r91099 / r91114;
        return r91115;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Initial program 28.4

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

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

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

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

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

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

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

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

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

    \[\leadsto \frac{\frac{1}{1}}{\color{blue}{\frac{a \cdot 3}{\left(-3\right) \cdot a} \cdot \frac{b + \sqrt{\mathsf{fma}\left(\left(-3\right) \cdot a, c, {b}^{2}\right)}}{c}}}\]
  13. Taylor expanded around 0 0.4

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

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

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

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b c)
  :name "Cubic critical, 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) (* (* 3.0 a) c)))) (* 3.0 a)))