Average Error: 5.4 → 3.7
Time: 6.5s
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}\;z \le -4.69108630807474606 \cdot 10^{73}:\\ \;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\ \mathbf{elif}\;z \le 1.310910086329059 \cdot 10^{-90}:\\ \;\;\;\;t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \sqrt{z}\right) \cdot \sqrt{z} - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \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}\;z \le -4.69108630807474606 \cdot 10^{73}:\\
\;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\

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

\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \sqrt{z}\right) \cdot \sqrt{z} - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \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 r1576339 = x;
        double r1576340 = 18.0;
        double r1576341 = r1576339 * r1576340;
        double r1576342 = y;
        double r1576343 = r1576341 * r1576342;
        double r1576344 = z;
        double r1576345 = r1576343 * r1576344;
        double r1576346 = t;
        double r1576347 = r1576345 * r1576346;
        double r1576348 = a;
        double r1576349 = 4.0;
        double r1576350 = r1576348 * r1576349;
        double r1576351 = r1576350 * r1576346;
        double r1576352 = r1576347 - r1576351;
        double r1576353 = b;
        double r1576354 = c;
        double r1576355 = r1576353 * r1576354;
        double r1576356 = r1576352 + r1576355;
        double r1576357 = r1576339 * r1576349;
        double r1576358 = i;
        double r1576359 = r1576357 * r1576358;
        double r1576360 = r1576356 - r1576359;
        double r1576361 = j;
        double r1576362 = 27.0;
        double r1576363 = r1576361 * r1576362;
        double r1576364 = k;
        double r1576365 = r1576363 * r1576364;
        double r1576366 = r1576360 - r1576365;
        return r1576366;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r1576367 = z;
        double r1576368 = -4.691086308074746e+73;
        bool r1576369 = r1576367 <= r1576368;
        double r1576370 = t;
        double r1576371 = x;
        double r1576372 = 18.0;
        double r1576373 = r1576371 * r1576372;
        double r1576374 = y;
        double r1576375 = r1576373 * r1576374;
        double r1576376 = r1576375 * r1576367;
        double r1576377 = a;
        double r1576378 = 4.0;
        double r1576379 = r1576377 * r1576378;
        double r1576380 = r1576376 - r1576379;
        double r1576381 = r1576370 * r1576380;
        double r1576382 = b;
        double r1576383 = c;
        double r1576384 = r1576382 * r1576383;
        double r1576385 = r1576371 * r1576378;
        double r1576386 = i;
        double r1576387 = r1576385 * r1576386;
        double r1576388 = j;
        double r1576389 = 27.0;
        double r1576390 = k;
        double r1576391 = r1576389 * r1576390;
        double r1576392 = r1576388 * r1576391;
        double r1576393 = r1576387 + r1576392;
        double r1576394 = r1576384 - r1576393;
        double r1576395 = r1576381 + r1576394;
        double r1576396 = 1.310910086329059e-90;
        bool r1576397 = r1576367 <= r1576396;
        double r1576398 = r1576374 * r1576367;
        double r1576399 = r1576373 * r1576398;
        double r1576400 = r1576399 - r1576379;
        double r1576401 = r1576370 * r1576400;
        double r1576402 = r1576388 * r1576389;
        double r1576403 = r1576402 * r1576390;
        double r1576404 = r1576387 + r1576403;
        double r1576405 = r1576384 - r1576404;
        double r1576406 = r1576401 + r1576405;
        double r1576407 = sqrt(r1576367);
        double r1576408 = r1576375 * r1576407;
        double r1576409 = r1576408 * r1576407;
        double r1576410 = r1576409 - r1576379;
        double r1576411 = r1576370 * r1576410;
        double r1576412 = r1576411 + r1576405;
        double r1576413 = r1576397 ? r1576406 : r1576412;
        double r1576414 = r1576369 ? r1576395 : r1576413;
        return r1576414;
}

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.4
Target1.7
Herbie3.7
\[\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 z < -4.691086308074746e+73

    1. Initial program 7.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. Simplified7.7

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

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

    if -4.691086308074746e+73 < z < 1.310910086329059e-90

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

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

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

    if 1.310910086329059e-90 < z

    1. Initial program 5.5

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

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

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

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

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

Reproduce

herbie shell --seed 2020057 
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E"
  :precision binary64

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

  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))