Average Error: 29.1 → 9.0
Time: 1.3m
Precision: 64
\[1.0536712127723509 \cdot 10^{-08} \lt a \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt b \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt c \lt 94906265.62425156\]
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le 6.078156491714919:\\ \;\;\;\;\frac{(\left(\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) + \left(-b \cdot \left(b \cdot b\right)\right))_*}{\left(\left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot b + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{(\frac{-9}{2} \cdot \left(b \cdot \left(a \cdot c\right)\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3}}{a}}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left((-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_* + b \cdot b\right))_*}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le 6.078156491714919:\\
\;\;\;\;\frac{(\left(\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) + \left(-b \cdot \left(b \cdot b\right)\right))_*}{\left(\left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot b + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{(\frac{-9}{2} \cdot \left(b \cdot \left(a \cdot c\right)\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3}}{a}}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left((-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_* + b \cdot b\right))_*}\\

\end{array}
double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r10058617 = b;
        double r10058618 = -r10058617;
        double r10058619 = r10058617 * r10058617;
        double r10058620 = 3.0;
        double r10058621 = a;
        double r10058622 = r10058620 * r10058621;
        double r10058623 = c;
        double r10058624 = r10058622 * r10058623;
        double r10058625 = r10058619 - r10058624;
        double r10058626 = sqrt(r10058625);
        double r10058627 = r10058618 + r10058626;
        double r10058628 = r10058627 / r10058622;
        return r10058628;
}

double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r10058629 = b;
        double r10058630 = 6.078156491714919;
        bool r10058631 = r10058629 <= r10058630;
        double r10058632 = a;
        double r10058633 = -3.0;
        double r10058634 = c;
        double r10058635 = r10058633 * r10058634;
        double r10058636 = r10058632 * r10058635;
        double r10058637 = fma(r10058629, r10058629, r10058636);
        double r10058638 = sqrt(r10058637);
        double r10058639 = r10058629 * r10058629;
        double r10058640 = r10058629 * r10058639;
        double r10058641 = -r10058640;
        double r10058642 = fma(r10058638, r10058637, r10058641);
        double r10058643 = r10058632 * r10058634;
        double r10058644 = fma(r10058633, r10058643, r10058639);
        double r10058645 = sqrt(r10058644);
        double r10058646 = r10058645 * r10058629;
        double r10058647 = r10058646 + r10058639;
        double r10058648 = r10058645 * r10058645;
        double r10058649 = r10058647 + r10058648;
        double r10058650 = 3.0;
        double r10058651 = r10058650 * r10058632;
        double r10058652 = r10058649 * r10058651;
        double r10058653 = r10058642 / r10058652;
        double r10058654 = -4.5;
        double r10058655 = r10058629 * r10058643;
        double r10058656 = 3.375;
        double r10058657 = r10058643 * r10058643;
        double r10058658 = r10058657 / r10058629;
        double r10058659 = r10058656 * r10058658;
        double r10058660 = fma(r10058654, r10058655, r10058659);
        double r10058661 = r10058660 / r10058650;
        double r10058662 = r10058661 / r10058632;
        double r10058663 = r10058644 + r10058639;
        double r10058664 = fma(r10058629, r10058645, r10058663);
        double r10058665 = r10058662 / r10058664;
        double r10058666 = r10058631 ? r10058653 : r10058665;
        return r10058666;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Derivation

  1. Split input into 2 regimes
  2. if b < 6.078156491714919

    1. Initial program 13.1

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

      \[\leadsto \color{blue}{\frac{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied flip3--13.1

      \[\leadsto \frac{\color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)}}}{3 \cdot a}\]
    5. Applied associate-/l/13.1

      \[\leadsto \color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}}\]
    6. Simplified12.5

      \[\leadsto \frac{\color{blue}{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - b \cdot \left(b \cdot b\right)}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]
    7. Using strategy rm
    8. Applied fma-neg12.4

      \[\leadsto \frac{\color{blue}{(\left(\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) + \left(-b \cdot \left(b \cdot b\right)\right))_*}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]

    if 6.078156491714919 < b

    1. Initial program 33.2

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

      \[\leadsto \color{blue}{\frac{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied flip3--33.2

      \[\leadsto \frac{\color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)}}}{3 \cdot a}\]
    5. Applied associate-/l/33.2

      \[\leadsto \color{blue}{\frac{{\left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*}\right)}^{3} - {b}^{3}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}}\]
    6. Simplified32.6

      \[\leadsto \frac{\color{blue}{\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*} \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* - b \cdot \left(b \cdot b\right)}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]
    7. Taylor expanded around inf 8.1

      \[\leadsto \frac{\color{blue}{\frac{27}{8} \cdot \frac{{a}^{2} \cdot {c}^{2}}{b} - \frac{9}{2} \cdot \left(a \cdot \left(b \cdot c\right)\right)}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]
    8. Simplified8.1

      \[\leadsto \frac{\color{blue}{(\frac{-9}{2} \cdot \left(\left(a \cdot c\right) \cdot b\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}}{\left(3 \cdot a\right) \cdot \left(\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)\right)}\]
    9. Using strategy rm
    10. Applied associate-/r*8.1

      \[\leadsto \color{blue}{\frac{\frac{(\frac{-9}{2} \cdot \left(\left(a \cdot c\right) \cdot b\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3 \cdot a}}{\sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} + \left(b \cdot b + \sqrt{(-3 \cdot \left(c \cdot a\right) + \left(b \cdot b\right))_*} \cdot b\right)}}\]
    11. Simplified8.1

      \[\leadsto \frac{\frac{(\frac{-9}{2} \cdot \left(\left(a \cdot c\right) \cdot b\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3 \cdot a}}{\color{blue}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left(b \cdot b + (-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*\right))_*}}\]
    12. Using strategy rm
    13. Applied associate-/r*8.1

      \[\leadsto \frac{\color{blue}{\frac{\frac{(\frac{-9}{2} \cdot \left(\left(a \cdot c\right) \cdot b\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3}}{a}}}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left(b \cdot b + (-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*\right))_*}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification9.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 6.078156491714919:\\ \;\;\;\;\frac{(\left(\sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) + \left(-b \cdot \left(b \cdot b\right)\right))_*}{\left(\left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot b + b \cdot b\right) + \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) \cdot \left(3 \cdot a\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{(\frac{-9}{2} \cdot \left(b \cdot \left(a \cdot c\right)\right) + \left(\frac{27}{8} \cdot \frac{\left(a \cdot c\right) \cdot \left(a \cdot c\right)}{b}\right))_*}{3}}{a}}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left((-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_* + b \cdot b\right))_*}\\ \end{array}\]

Reproduce

herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c d)
  :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 a) c)))) (* 3 a)))