Average Error: 5.6 → 4.5
Time: 24.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 -9.206800721396283745070197539175102484788 \cdot 10^{-173}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\ \mathbf{elif}\;t \le 3.139097384817554521245580418208289195104 \cdot 10^{-115}:\\ \;\;\;\;\left(-t\right) \cdot \left(a \cdot 4\right) - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\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 -9.206800721396283745070197539175102484788 \cdot 10^{-173}:\\
\;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\

\mathbf{elif}\;t \le 3.139097384817554521245580418208289195104 \cdot 10^{-115}:\\
\;\;\;\;\left(-t\right) \cdot \left(a \cdot 4\right) - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(j \cdot k\right) \cdot 27 + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\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 r36759448 = x;
        double r36759449 = 18.0;
        double r36759450 = r36759448 * r36759449;
        double r36759451 = y;
        double r36759452 = r36759450 * r36759451;
        double r36759453 = z;
        double r36759454 = r36759452 * r36759453;
        double r36759455 = t;
        double r36759456 = r36759454 * r36759455;
        double r36759457 = a;
        double r36759458 = 4.0;
        double r36759459 = r36759457 * r36759458;
        double r36759460 = r36759459 * r36759455;
        double r36759461 = r36759456 - r36759460;
        double r36759462 = b;
        double r36759463 = c;
        double r36759464 = r36759462 * r36759463;
        double r36759465 = r36759461 + r36759464;
        double r36759466 = r36759448 * r36759458;
        double r36759467 = i;
        double r36759468 = r36759466 * r36759467;
        double r36759469 = r36759465 - r36759468;
        double r36759470 = j;
        double r36759471 = 27.0;
        double r36759472 = r36759470 * r36759471;
        double r36759473 = k;
        double r36759474 = r36759472 * r36759473;
        double r36759475 = r36759469 - r36759474;
        return r36759475;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r36759476 = t;
        double r36759477 = -9.206800721396284e-173;
        bool r36759478 = r36759476 <= r36759477;
        double r36759479 = z;
        double r36759480 = 18.0;
        double r36759481 = r36759479 * r36759480;
        double r36759482 = x;
        double r36759483 = r36759481 * r36759482;
        double r36759484 = y;
        double r36759485 = r36759483 * r36759484;
        double r36759486 = a;
        double r36759487 = 4.0;
        double r36759488 = r36759486 * r36759487;
        double r36759489 = r36759485 - r36759488;
        double r36759490 = r36759489 * r36759476;
        double r36759491 = j;
        double r36759492 = k;
        double r36759493 = r36759491 * r36759492;
        double r36759494 = 27.0;
        double r36759495 = r36759493 * r36759494;
        double r36759496 = i;
        double r36759497 = r36759482 * r36759496;
        double r36759498 = r36759497 * r36759487;
        double r36759499 = c;
        double r36759500 = b;
        double r36759501 = r36759499 * r36759500;
        double r36759502 = r36759498 - r36759501;
        double r36759503 = r36759495 + r36759502;
        double r36759504 = r36759490 - r36759503;
        double r36759505 = 3.1390973848175545e-115;
        bool r36759506 = r36759476 <= r36759505;
        double r36759507 = -r36759476;
        double r36759508 = r36759507 * r36759488;
        double r36759509 = r36759508 - r36759503;
        double r36759510 = r36759506 ? r36759509 : r36759504;
        double r36759511 = r36759478 ? r36759504 : r36759510;
        return r36759511;
}

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

Target

Original5.6
Target1.7
Herbie4.5
\[\begin{array}{l} \mathbf{if}\;t \lt -1.62108153975413982700795070153457058168 \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.6802794380522243500308832153677940369:\\ \;\;\;\;\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 2 regimes
  2. if t < -9.206800721396284e-173 or 3.1390973848175545e-115 < t

    1. Initial program 3.8

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

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

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

    if -9.206800721396284e-173 < t < 3.1390973848175545e-115

    1. Initial program 9.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. Simplified9.4

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

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

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

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

Reproduce

herbie shell --seed 2019192 
(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)))