Average Error: 5.6 → 3.9
Time: 40.9s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;t \le -5.60088969348530767 \cdot 10^{-115}:\\ \;\;\;\;\left(\mathsf{fma}\left(b, c, \left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(j, 27 \cdot k, x \cdot \left(4 \cdot i\right)\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\ \mathbf{elif}\;t \le 4188237234479459300:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot z\right) \cdot y\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - x \cdot \left(4 \cdot i\right)\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -5.60088969348530767 \cdot 10^{-115}:\\
\;\;\;\;\left(\mathsf{fma}\left(b, c, \left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(j, 27 \cdot k, x \cdot \left(4 \cdot i\right)\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\

\mathbf{elif}\;t \le 4188237234479459300:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot z\right) \cdot y\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - x \cdot \left(4 \cdot i\right)\right) - \left(j \cdot 27\right) \cdot k\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r515693 = x;
        double r515694 = 18.0;
        double r515695 = r515693 * r515694;
        double r515696 = y;
        double r515697 = r515695 * r515696;
        double r515698 = z;
        double r515699 = r515697 * r515698;
        double r515700 = t;
        double r515701 = r515699 * r515700;
        double r515702 = a;
        double r515703 = 4.0;
        double r515704 = r515702 * r515703;
        double r515705 = r515704 * r515700;
        double r515706 = r515701 - r515705;
        double r515707 = b;
        double r515708 = c;
        double r515709 = r515707 * r515708;
        double r515710 = r515706 + r515709;
        double r515711 = r515693 * r515703;
        double r515712 = i;
        double r515713 = r515711 * r515712;
        double r515714 = r515710 - r515713;
        double r515715 = j;
        double r515716 = 27.0;
        double r515717 = r515715 * r515716;
        double r515718 = k;
        double r515719 = r515717 * r515718;
        double r515720 = r515714 - r515719;
        return r515720;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r515721 = t;
        double r515722 = -5.600889693485308e-115;
        bool r515723 = r515721 <= r515722;
        double r515724 = b;
        double r515725 = c;
        double r515726 = 18.0;
        double r515727 = r515726 * r515721;
        double r515728 = x;
        double r515729 = z;
        double r515730 = y;
        double r515731 = r515729 * r515730;
        double r515732 = r515728 * r515731;
        double r515733 = r515727 * r515732;
        double r515734 = a;
        double r515735 = 4.0;
        double r515736 = r515734 * r515735;
        double r515737 = r515736 * r515721;
        double r515738 = r515733 - r515737;
        double r515739 = fma(r515724, r515725, r515738);
        double r515740 = j;
        double r515741 = 27.0;
        double r515742 = k;
        double r515743 = r515741 * r515742;
        double r515744 = i;
        double r515745 = r515735 * r515744;
        double r515746 = r515728 * r515745;
        double r515747 = fma(r515740, r515743, r515746);
        double r515748 = r515739 - r515747;
        double r515749 = r515740 * r515741;
        double r515750 = -r515742;
        double r515751 = r515750 + r515742;
        double r515752 = r515749 * r515751;
        double r515753 = r515748 + r515752;
        double r515754 = 4.1882372344794593e+18;
        bool r515755 = r515721 <= r515754;
        double r515756 = r515728 * r515726;
        double r515757 = r515756 * r515730;
        double r515758 = r515721 * r515729;
        double r515759 = r515757 * r515758;
        double r515760 = r515759 - r515737;
        double r515761 = r515724 * r515725;
        double r515762 = r515760 + r515761;
        double r515763 = r515728 * r515735;
        double r515764 = r515763 * r515744;
        double r515765 = r515762 - r515764;
        double r515766 = r515749 * r515742;
        double r515767 = r515765 - r515766;
        double r515768 = r515728 * r515729;
        double r515769 = r515768 * r515730;
        double r515770 = r515727 * r515769;
        double r515771 = r515770 - r515737;
        double r515772 = r515771 + r515761;
        double r515773 = r515772 - r515746;
        double r515774 = r515773 - r515766;
        double r515775 = r515755 ? r515767 : r515774;
        double r515776 = r515723 ? r515753 : r515775;
        return r515776;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus i

Bits error versus j

Bits error versus k

Target

Original5.6
Target1.5
Herbie3.9
\[\begin{array}{l} \mathbf{if}\;t \lt -1.6210815397541398 \cdot 10^{-69}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \mathbf{elif}\;t \lt 165.680279438052224:\\ \;\;\;\;\left(\left(18 \cdot y\right) \cdot \left(x \cdot \left(z \cdot t\right)\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) + \left(c \cdot b - 27 \cdot \left(k \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if t < -5.600889693485308e-115

    1. Initial program 3.3

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Taylor expanded around inf 3.7

      \[\leadsto \left(\left(\left(\color{blue}{18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    3. Using strategy rm
    4. Applied associate-*r*3.7

      \[\leadsto \left(\left(\left(\color{blue}{\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied pow13.7

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot \color{blue}{{i}^{1}}\right) - \left(j \cdot 27\right) \cdot k\]
    7. Applied pow13.7

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot \color{blue}{{4}^{1}}\right) \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    8. Applied pow13.7

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(\color{blue}{{x}^{1}} \cdot {4}^{1}\right) \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    9. Applied pow-prod-down3.7

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \color{blue}{{\left(x \cdot 4\right)}^{1}} \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    10. Applied pow-prod-down3.7

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \color{blue}{{\left(\left(x \cdot 4\right) \cdot i\right)}^{1}}\right) - \left(j \cdot 27\right) \cdot k\]
    11. Simplified3.8

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\color{blue}{\left(x \cdot \left(4 \cdot i\right)\right)}}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    12. Using strategy rm
    13. Applied add-sqr-sqrt33.9

      \[\leadsto \color{blue}{\sqrt{\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\left(x \cdot \left(4 \cdot i\right)\right)}^{1}} \cdot \sqrt{\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\left(x \cdot \left(4 \cdot i\right)\right)}^{1}}} - \left(j \cdot 27\right) \cdot k\]
    14. Applied prod-diff33.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\left(x \cdot \left(4 \cdot i\right)\right)}^{1}}, \sqrt{\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\left(x \cdot \left(4 \cdot i\right)\right)}^{1}}, -k \cdot \left(j \cdot 27\right)\right) + \mathsf{fma}\left(-k, j \cdot 27, k \cdot \left(j \cdot 27\right)\right)}\]
    15. Simplified3.9

      \[\leadsto \color{blue}{\left(\mathsf{fma}\left(b, c, \left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(j, 27 \cdot k, x \cdot \left(4 \cdot i\right)\right)\right)} + \mathsf{fma}\left(-k, j \cdot 27, k \cdot \left(j \cdot 27\right)\right)\]
    16. Simplified3.9

      \[\leadsto \left(\mathsf{fma}\left(b, c, \left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(j, 27 \cdot k, x \cdot \left(4 \cdot i\right)\right)\right) + \color{blue}{\left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)}\]

    if -5.600889693485308e-115 < t < 4.1882372344794593e+18

    1. Initial program 8.0

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*4.5

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Simplified4.5

      \[\leadsto \left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \color{blue}{\left(t \cdot z\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]

    if 4.1882372344794593e+18 < t

    1. Initial program 1.6

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Taylor expanded around inf 1.8

      \[\leadsto \left(\left(\left(\color{blue}{18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    3. Using strategy rm
    4. Applied associate-*r*2.0

      \[\leadsto \left(\left(\left(\color{blue}{\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot \color{blue}{{i}^{1}}\right) - \left(j \cdot 27\right) \cdot k\]
    7. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot \color{blue}{{4}^{1}}\right) \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    8. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(\color{blue}{{x}^{1}} \cdot {4}^{1}\right) \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    9. Applied pow-prod-down2.0

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \color{blue}{{\left(x \cdot 4\right)}^{1}} \cdot {i}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    10. Applied pow-prod-down2.0

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \color{blue}{{\left(\left(x \cdot 4\right) \cdot i\right)}^{1}}\right) - \left(j \cdot 27\right) \cdot k\]
    11. Simplified2.1

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\color{blue}{\left(x \cdot \left(4 \cdot i\right)\right)}}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
    12. Using strategy rm
    13. Applied associate-*r*1.9

      \[\leadsto \left(\left(\left(\left(18 \cdot t\right) \cdot \color{blue}{\left(\left(x \cdot z\right) \cdot y\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - {\left(x \cdot \left(4 \cdot i\right)\right)}^{1}\right) - \left(j \cdot 27\right) \cdot k\]
  3. Recombined 3 regimes into one program.
  4. Final simplification3.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -5.60088969348530767 \cdot 10^{-115}:\\ \;\;\;\;\left(\mathsf{fma}\left(b, c, \left(18 \cdot t\right) \cdot \left(x \cdot \left(z \cdot y\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(j, 27 \cdot k, x \cdot \left(4 \cdot i\right)\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\ \mathbf{elif}\;t \le 4188237234479459300:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot z\right) \cdot y\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - x \cdot \left(4 \cdot i\right)\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E"

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))