Average Error: 5.1 → 3.5
Time: 46.9s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;z \le -56303714882760.32:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \mathbf{elif}\;z \le 3.677986601675509 \cdot 10^{-57}:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + t \cdot \left(18.0 \cdot \left(x \cdot \left(z \cdot y\right)\right) - 4.0 \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k
\begin{array}{l}
\mathbf{if}\;z \le -56303714882760.32:\\
\;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\

\mathbf{elif}\;z \le 3.677986601675509 \cdot 10^{-57}:\\
\;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + t \cdot \left(18.0 \cdot \left(x \cdot \left(z \cdot y\right)\right) - 4.0 \cdot a\right)\\

\mathbf{else}:\\
\;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\

\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 r11058206 = x;
        double r11058207 = 18.0;
        double r11058208 = r11058206 * r11058207;
        double r11058209 = y;
        double r11058210 = r11058208 * r11058209;
        double r11058211 = z;
        double r11058212 = r11058210 * r11058211;
        double r11058213 = t;
        double r11058214 = r11058212 * r11058213;
        double r11058215 = a;
        double r11058216 = 4.0;
        double r11058217 = r11058215 * r11058216;
        double r11058218 = r11058217 * r11058213;
        double r11058219 = r11058214 - r11058218;
        double r11058220 = b;
        double r11058221 = c;
        double r11058222 = r11058220 * r11058221;
        double r11058223 = r11058219 + r11058222;
        double r11058224 = r11058206 * r11058216;
        double r11058225 = i;
        double r11058226 = r11058224 * r11058225;
        double r11058227 = r11058223 - r11058226;
        double r11058228 = j;
        double r11058229 = 27.0;
        double r11058230 = r11058228 * r11058229;
        double r11058231 = k;
        double r11058232 = r11058230 * r11058231;
        double r11058233 = r11058227 - r11058232;
        return r11058233;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r11058234 = z;
        double r11058235 = -56303714882760.32;
        bool r11058236 = r11058234 <= r11058235;
        double r11058237 = c;
        double r11058238 = b;
        double r11058239 = r11058237 * r11058238;
        double r11058240 = i;
        double r11058241 = x;
        double r11058242 = 4.0;
        double r11058243 = r11058241 * r11058242;
        double r11058244 = r11058240 * r11058243;
        double r11058245 = k;
        double r11058246 = j;
        double r11058247 = 27.0;
        double r11058248 = r11058246 * r11058247;
        double r11058249 = r11058245 * r11058248;
        double r11058250 = r11058244 + r11058249;
        double r11058251 = r11058239 - r11058250;
        double r11058252 = 18.0;
        double r11058253 = r11058252 * r11058241;
        double r11058254 = y;
        double r11058255 = r11058253 * r11058254;
        double r11058256 = r11058255 * r11058234;
        double r11058257 = a;
        double r11058258 = r11058242 * r11058257;
        double r11058259 = r11058256 - r11058258;
        double r11058260 = t;
        double r11058261 = r11058259 * r11058260;
        double r11058262 = r11058251 + r11058261;
        double r11058263 = 3.677986601675509e-57;
        bool r11058264 = r11058234 <= r11058263;
        double r11058265 = r11058234 * r11058254;
        double r11058266 = r11058241 * r11058265;
        double r11058267 = r11058252 * r11058266;
        double r11058268 = r11058267 - r11058258;
        double r11058269 = r11058260 * r11058268;
        double r11058270 = r11058251 + r11058269;
        double r11058271 = r11058264 ? r11058270 : r11058262;
        double r11058272 = r11058236 ? r11058262 : r11058271;
        return r11058272;
}

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 z < -56303714882760.32 or 3.677986601675509e-57 < z

    1. Initial program 6.0

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified9.7

      \[\leadsto \color{blue}{\left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \left(y \cdot \left(\left(x \cdot 18.0\right) \cdot z\right) - a \cdot 4.0\right) \cdot t}\]
    3. Using strategy rm
    4. Applied associate-*r*6.0

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

    if -56303714882760.32 < z < 3.677986601675509e-57

    1. Initial program 4.3

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified1.4

      \[\leadsto \color{blue}{\left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \left(y \cdot \left(\left(x \cdot 18.0\right) \cdot z\right) - a \cdot 4.0\right) \cdot t}\]
    3. Taylor expanded around inf 1.2

      \[\leadsto \left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \left(\color{blue}{18.0 \cdot \left(x \cdot \left(z \cdot y\right)\right)} - a \cdot 4.0\right) \cdot t\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -56303714882760.32:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \mathbf{elif}\;z \le 3.677986601675509 \cdot 10^{-57}:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + t \cdot \left(18.0 \cdot \left(x \cdot \left(z \cdot y\right)\right) - 4.0 \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;\left(c \cdot b - \left(i \cdot \left(x \cdot 4.0\right) + k \cdot \left(j \cdot 27.0\right)\right)\right) + \left(\left(\left(18.0 \cdot x\right) \cdot y\right) \cdot z - 4.0 \cdot a\right) \cdot t\\ \end{array}\]

Reproduce

herbie shell --seed 2019104 
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  (- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))