Average Error: 5.7 → 4.8
Time: 15.4s
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 -3.8492526108756578 \cdot 10^{-88}:\\ \;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{elif}\;t \le 2.5769923735091747 \cdot 10^{-63}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, x \cdot \left(\left(18 \cdot y\right) \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)\\ \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 -3.8492526108756578 \cdot 10^{-88}:\\
\;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\

\mathbf{elif}\;t \le 2.5769923735091747 \cdot 10^{-63}:\\
\;\;\;\;\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)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, x \cdot \left(\left(18 \cdot y\right) \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)\\

\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 r228233 = x;
        double r228234 = 18.0;
        double r228235 = r228233 * r228234;
        double r228236 = y;
        double r228237 = r228235 * r228236;
        double r228238 = z;
        double r228239 = r228237 * r228238;
        double r228240 = t;
        double r228241 = r228239 * r228240;
        double r228242 = a;
        double r228243 = 4.0;
        double r228244 = r228242 * r228243;
        double r228245 = r228244 * r228240;
        double r228246 = r228241 - r228245;
        double r228247 = b;
        double r228248 = c;
        double r228249 = r228247 * r228248;
        double r228250 = r228246 + r228249;
        double r228251 = r228233 * r228243;
        double r228252 = i;
        double r228253 = r228251 * r228252;
        double r228254 = r228250 - r228253;
        double r228255 = j;
        double r228256 = 27.0;
        double r228257 = r228255 * r228256;
        double r228258 = k;
        double r228259 = r228257 * r228258;
        double r228260 = r228254 - r228259;
        return r228260;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r228261 = t;
        double r228262 = -3.849252610875658e-88;
        bool r228263 = r228261 <= r228262;
        double r228264 = x;
        double r228265 = 18.0;
        double r228266 = r228264 * r228265;
        double r228267 = y;
        double r228268 = r228266 * r228267;
        double r228269 = z;
        double r228270 = r228268 * r228269;
        double r228271 = a;
        double r228272 = 4.0;
        double r228273 = r228271 * r228272;
        double r228274 = r228270 - r228273;
        double r228275 = b;
        double r228276 = c;
        double r228277 = r228275 * r228276;
        double r228278 = i;
        double r228279 = r228272 * r228278;
        double r228280 = j;
        double r228281 = 27.0;
        double r228282 = k;
        double r228283 = r228281 * r228282;
        double r228284 = r228280 * r228283;
        double r228285 = fma(r228264, r228279, r228284);
        double r228286 = r228277 - r228285;
        double r228287 = fma(r228261, r228274, r228286);
        double r228288 = 2.5769923735091747e-63;
        bool r228289 = r228261 <= r228288;
        double r228290 = 0.0;
        double r228291 = r228290 - r228273;
        double r228292 = r228280 * r228281;
        double r228293 = r228292 * r228282;
        double r228294 = fma(r228264, r228279, r228293);
        double r228295 = r228277 - r228294;
        double r228296 = fma(r228261, r228291, r228295);
        double r228297 = r228265 * r228267;
        double r228298 = r228297 * r228269;
        double r228299 = r228264 * r228298;
        double r228300 = r228299 - r228273;
        double r228301 = fma(r228261, r228300, r228295);
        double r228302 = r228289 ? r228296 : r228301;
        double r228303 = r228263 ? r228287 : r228302;
        return r228303;
}

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 t < -3.849252610875658e-88

    1. Initial program 2.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. Simplified2.8

      \[\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*2.9

      \[\leadsto \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, \color{blue}{j \cdot \left(27 \cdot k\right)}\right)\right)\]

    if -3.849252610875658e-88 < t < 2.5769923735091747e-63

    1. Initial program 9.1

      \[\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. Simplified9.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 6.6

      \[\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)\]

    if 2.5769923735091747e-63 < t

    1. Initial program 2.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. Simplified2.0

      \[\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*2.1

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

      \[\leadsto \mathsf{fma}\left(t, \color{blue}{x \cdot \left(\left(18 \cdot y\right) \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)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -3.8492526108756578 \cdot 10^{-88}:\\ \;\;\;\;\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, j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{elif}\;t \le 2.5769923735091747 \cdot 10^{-63}:\\ \;\;\;\;\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)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, x \cdot \left(\left(18 \cdot y\right) \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)\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +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)))