Average Error: 28.4 → 0.4
Time: 15.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(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 r108096 = b;
        double r108097 = -r108096;
        double r108098 = r108096 * r108096;
        double r108099 = 3.0;
        double r108100 = a;
        double r108101 = r108099 * r108100;
        double r108102 = c;
        double r108103 = r108101 * r108102;
        double r108104 = r108098 - r108103;
        double r108105 = sqrt(r108104);
        double r108106 = r108097 + r108105;
        double r108107 = r108106 / r108101;
        return r108107;
}

double f(double a, double b, double c) {
        double r108108 = 1.0;
        double r108109 = a;
        double r108110 = 3.0;
        double r108111 = r108109 * r108110;
        double r108112 = -r108111;
        double r108113 = r108111 / r108112;
        double r108114 = b;
        double r108115 = c;
        double r108116 = r108109 * r108115;
        double r108117 = -r108110;
        double r108118 = r108116 * r108117;
        double r108119 = fma(r108114, r108114, r108118);
        double r108120 = sqrt(r108119);
        double r108121 = r108114 + r108120;
        double r108122 = r108121 / r108115;
        double r108123 = r108113 * r108122;
        double r108124 = r108108 / r108123;
        return r108124;
}

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)))