Average Error: 5.5 → 2.3
Time: 19.2s
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 -4.231030079622034677757047713069532532969 \cdot 10^{-84} \lor \neg \left(x \le 3.987060137731610333464591129755943173549 \cdot 10^{-19}\right):\\ \;\;\;\;\left(\left(\left(x \cdot \left(18 \cdot \left(\left(y \cdot z\right) \cdot t\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\\ \mathbf{else}:\\ \;\;\;\;\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) - j \cdot \left(27 \cdot k\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 -4.231030079622034677757047713069532532969 \cdot 10^{-84} \lor \neg \left(x \le 3.987060137731610333464591129755943173549 \cdot 10^{-19}\right):\\
\;\;\;\;\left(\left(\left(x \cdot \left(18 \cdot \left(\left(y \cdot z\right) \cdot t\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\\

\mathbf{else}:\\
\;\;\;\;\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) - j \cdot \left(27 \cdot k\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 r108382 = x;
        double r108383 = 18.0;
        double r108384 = r108382 * r108383;
        double r108385 = y;
        double r108386 = r108384 * r108385;
        double r108387 = z;
        double r108388 = r108386 * r108387;
        double r108389 = t;
        double r108390 = r108388 * r108389;
        double r108391 = a;
        double r108392 = 4.0;
        double r108393 = r108391 * r108392;
        double r108394 = r108393 * r108389;
        double r108395 = r108390 - r108394;
        double r108396 = b;
        double r108397 = c;
        double r108398 = r108396 * r108397;
        double r108399 = r108395 + r108398;
        double r108400 = r108382 * r108392;
        double r108401 = i;
        double r108402 = r108400 * r108401;
        double r108403 = r108399 - r108402;
        double r108404 = j;
        double r108405 = 27.0;
        double r108406 = r108404 * r108405;
        double r108407 = k;
        double r108408 = r108406 * r108407;
        double r108409 = r108403 - r108408;
        return r108409;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r108410 = x;
        double r108411 = -4.231030079622035e-84;
        bool r108412 = r108410 <= r108411;
        double r108413 = 3.9870601377316103e-19;
        bool r108414 = r108410 <= r108413;
        double r108415 = !r108414;
        bool r108416 = r108412 || r108415;
        double r108417 = 18.0;
        double r108418 = y;
        double r108419 = z;
        double r108420 = r108418 * r108419;
        double r108421 = t;
        double r108422 = r108420 * r108421;
        double r108423 = r108417 * r108422;
        double r108424 = r108410 * r108423;
        double r108425 = a;
        double r108426 = 4.0;
        double r108427 = r108425 * r108426;
        double r108428 = r108427 * r108421;
        double r108429 = r108424 - r108428;
        double r108430 = b;
        double r108431 = c;
        double r108432 = r108430 * r108431;
        double r108433 = r108429 + r108432;
        double r108434 = r108410 * r108426;
        double r108435 = i;
        double r108436 = r108434 * r108435;
        double r108437 = r108433 - r108436;
        double r108438 = j;
        double r108439 = 27.0;
        double r108440 = r108438 * r108439;
        double r108441 = k;
        double r108442 = r108440 * r108441;
        double r108443 = r108437 - r108442;
        double r108444 = r108410 * r108417;
        double r108445 = r108444 * r108418;
        double r108446 = r108445 * r108419;
        double r108447 = r108446 * r108421;
        double r108448 = r108447 - r108428;
        double r108449 = r108448 + r108432;
        double r108450 = r108449 - r108436;
        double r108451 = r108439 * r108441;
        double r108452 = r108438 * r108451;
        double r108453 = r108450 - r108452;
        double r108454 = r108416 ? r108443 : r108453;
        return r108454;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -4.231030079622035e-84 or 3.9870601377316103e-19 < x

    1. Initial program 9.9

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

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\]
    4. Using strategy rm
    5. Applied associate-*l*3.1

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot 18\right) \cdot \left(\left(y \cdot z\right) \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\]
    6. Using strategy rm
    7. Applied associate-*l*3.0

      \[\leadsto \left(\left(\left(\color{blue}{x \cdot \left(18 \cdot \left(\left(y \cdot z\right) \cdot t\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\]

    if -4.231030079622035e-84 < x < 3.9870601377316103e-19

    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. Using strategy rm
    3. Applied associate-*l*1.6

      \[\leadsto \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) - \color{blue}{j \cdot \left(27 \cdot k\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -4.231030079622034677757047713069532532969 \cdot 10^{-84} \lor \neg \left(x \le 3.987060137731610333464591129755943173549 \cdot 10^{-19}\right):\\ \;\;\;\;\left(\left(\left(x \cdot \left(18 \cdot \left(\left(y \cdot z\right) \cdot t\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\\ \mathbf{else}:\\ \;\;\;\;\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) - j \cdot \left(27 \cdot k\right)\\ \end{array}\]

Reproduce

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