Average Error: 5.5 → 4.9
Time: 20.3s
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}\;x \le -2.4272481818337534 \cdot 10^{181}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{elif}\;x \le 1.2900037542469239 \cdot 10^{120}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \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}\;x \le -2.4272481818337534 \cdot 10^{181}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{elif}\;x \le 1.2900037542469239 \cdot 10^{120}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, j \cdot \left(27 \cdot k\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\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 r114088 = x;
        double r114089 = 18.0;
        double r114090 = r114088 * r114089;
        double r114091 = y;
        double r114092 = r114090 * r114091;
        double r114093 = z;
        double r114094 = r114092 * r114093;
        double r114095 = t;
        double r114096 = r114094 * r114095;
        double r114097 = a;
        double r114098 = 4.0;
        double r114099 = r114097 * r114098;
        double r114100 = r114099 * r114095;
        double r114101 = r114096 - r114100;
        double r114102 = b;
        double r114103 = c;
        double r114104 = r114102 * r114103;
        double r114105 = r114101 + r114104;
        double r114106 = r114088 * r114098;
        double r114107 = i;
        double r114108 = r114106 * r114107;
        double r114109 = r114105 - r114108;
        double r114110 = j;
        double r114111 = 27.0;
        double r114112 = r114110 * r114111;
        double r114113 = k;
        double r114114 = r114112 * r114113;
        double r114115 = r114109 - r114114;
        return r114115;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r114116 = x;
        double r114117 = -2.4272481818337534e+181;
        bool r114118 = r114116 <= r114117;
        double r114119 = t;
        double r114120 = 18.0;
        double r114121 = r114116 * r114120;
        double r114122 = y;
        double r114123 = z;
        double r114124 = r114122 * r114123;
        double r114125 = r114121 * r114124;
        double r114126 = a;
        double r114127 = 4.0;
        double r114128 = r114126 * r114127;
        double r114129 = r114125 - r114128;
        double r114130 = b;
        double r114131 = c;
        double r114132 = r114130 * r114131;
        double r114133 = i;
        double r114134 = r114127 * r114133;
        double r114135 = j;
        double r114136 = 27.0;
        double r114137 = r114135 * r114136;
        double r114138 = k;
        double r114139 = r114137 * r114138;
        double r114140 = fma(r114116, r114134, r114139);
        double r114141 = r114132 - r114140;
        double r114142 = fma(r114119, r114129, r114141);
        double r114143 = 1.2900037542469239e+120;
        bool r114144 = r114116 <= r114143;
        double r114145 = r114120 * r114122;
        double r114146 = r114116 * r114145;
        double r114147 = r114146 * r114123;
        double r114148 = r114147 - r114128;
        double r114149 = r114136 * r114138;
        double r114150 = r114135 * r114149;
        double r114151 = fma(r114116, r114134, r114150);
        double r114152 = r114132 - r114151;
        double r114153 = fma(r114119, r114148, r114152);
        double r114154 = 0.0;
        double r114155 = r114154 - r114128;
        double r114156 = fma(r114119, r114155, r114141);
        double r114157 = r114144 ? r114153 : r114156;
        double r114158 = r114118 ? r114142 : r114157;
        return r114158;
}

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

Derivation

  1. Split input into 3 regimes
  2. if x < -2.4272481818337534e+181

    1. Initial program 18.7

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

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

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

    if -2.4272481818337534e+181 < x < 1.2900037542469239e+120

    1. Initial program 3.4

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

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

      \[\leadsto \mathsf{fma}\left(t, \color{blue}{\left(x \cdot \left(18 \cdot y\right)\right)} \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
    5. Using strategy rm
    6. Applied associate-*l*3.5

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

    if 1.2900037542469239e+120 < x

    1. Initial program 18.2

      \[\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. Simplified18.2

      \[\leadsto \color{blue}{\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)}\]
    3. Taylor expanded around 0 15.4

      \[\leadsto \mathsf{fma}\left(t, \color{blue}{0} - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.9

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

Reproduce

herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  :precision binary64
  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))