Average Error: 5.6 → 1.5
Time: 24.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}\;\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 = -\infty \lor \neg \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 \le 5.079768789962101655659363683754551466573 \cdot 10^{304}\right):\\ \;\;\;\;\mathsf{fma}\left(\left(t \cdot y\right) \cdot \left(z \cdot x\right), 18, \mathsf{fma}\left(c, b, -\mathsf{fma}\left(4, \mathsf{fma}\left(t, a, x \cdot i\right), \left(j \cdot 27\right) \cdot k\right)\right)\right)\\ \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}\;\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 = -\infty \lor \neg \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 \le 5.079768789962101655659363683754551466573 \cdot 10^{304}\right):\\
\;\;\;\;\mathsf{fma}\left(\left(t \cdot y\right) \cdot \left(z \cdot x\right), 18, \mathsf{fma}\left(c, b, -\mathsf{fma}\left(4, \mathsf{fma}\left(t, a, x \cdot i\right), \left(j \cdot 27\right) \cdot k\right)\right)\right)\\

\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 r32301 = x;
        double r32302 = 18.0;
        double r32303 = r32301 * r32302;
        double r32304 = y;
        double r32305 = r32303 * r32304;
        double r32306 = z;
        double r32307 = r32305 * r32306;
        double r32308 = t;
        double r32309 = r32307 * r32308;
        double r32310 = a;
        double r32311 = 4.0;
        double r32312 = r32310 * r32311;
        double r32313 = r32312 * r32308;
        double r32314 = r32309 - r32313;
        double r32315 = b;
        double r32316 = c;
        double r32317 = r32315 * r32316;
        double r32318 = r32314 + r32317;
        double r32319 = r32301 * r32311;
        double r32320 = i;
        double r32321 = r32319 * r32320;
        double r32322 = r32318 - r32321;
        double r32323 = j;
        double r32324 = 27.0;
        double r32325 = r32323 * r32324;
        double r32326 = k;
        double r32327 = r32325 * r32326;
        double r32328 = r32322 - r32327;
        return r32328;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r32329 = x;
        double r32330 = 18.0;
        double r32331 = r32329 * r32330;
        double r32332 = y;
        double r32333 = r32331 * r32332;
        double r32334 = z;
        double r32335 = r32333 * r32334;
        double r32336 = t;
        double r32337 = r32335 * r32336;
        double r32338 = a;
        double r32339 = 4.0;
        double r32340 = r32338 * r32339;
        double r32341 = r32340 * r32336;
        double r32342 = r32337 - r32341;
        double r32343 = b;
        double r32344 = c;
        double r32345 = r32343 * r32344;
        double r32346 = r32342 + r32345;
        double r32347 = r32329 * r32339;
        double r32348 = i;
        double r32349 = r32347 * r32348;
        double r32350 = r32346 - r32349;
        double r32351 = -inf.0;
        bool r32352 = r32350 <= r32351;
        double r32353 = 5.079768789962102e+304;
        bool r32354 = r32350 <= r32353;
        double r32355 = !r32354;
        bool r32356 = r32352 || r32355;
        double r32357 = r32336 * r32332;
        double r32358 = r32334 * r32329;
        double r32359 = r32357 * r32358;
        double r32360 = r32329 * r32348;
        double r32361 = fma(r32336, r32338, r32360);
        double r32362 = j;
        double r32363 = 27.0;
        double r32364 = r32362 * r32363;
        double r32365 = k;
        double r32366 = r32364 * r32365;
        double r32367 = fma(r32339, r32361, r32366);
        double r32368 = -r32367;
        double r32369 = fma(r32344, r32343, r32368);
        double r32370 = fma(r32359, r32330, r32369);
        double r32371 = r32363 * r32365;
        double r32372 = r32362 * r32371;
        double r32373 = r32350 - r32372;
        double r32374 = r32356 ? r32370 : r32373;
        return r32374;
}

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 2 regimes
  2. if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0 or 5.079768789962102e+304 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i))

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

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

    if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 5.079768789962102e+304

    1. Initial program 0.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\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 = -\infty \lor \neg \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 \le 5.079768789962101655659363683754551466573 \cdot 10^{304}\right):\\ \;\;\;\;\mathsf{fma}\left(\left(t \cdot y\right) \cdot \left(z \cdot x\right), 18, \mathsf{fma}\left(c, b, -\mathsf{fma}\left(4, \mathsf{fma}\left(t, a, x \cdot i\right), \left(j \cdot 27\right) \cdot k\right)\right)\right)\\ \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 2019315 +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)))