Average Error: 5.3 → 6.2
Time: 7.1s
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}\;k \le 7.0669981561857078 \cdot 10^{-218} \lor \neg \left(k \le 4.00595738363528446 \cdot 10^{-73}\right):\\ \;\;\;\;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{else}:\\ \;\;\;\;t \cdot \left(0 - 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}\;k \le 7.0669981561857078 \cdot 10^{-218} \lor \neg \left(k \le 4.00595738363528446 \cdot 10^{-73}\right):\\
\;\;\;\;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{else}:\\
\;\;\;\;t \cdot \left(0 - 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 r139063 = x;
        double r139064 = 18.0;
        double r139065 = r139063 * r139064;
        double r139066 = y;
        double r139067 = r139065 * r139066;
        double r139068 = z;
        double r139069 = r139067 * r139068;
        double r139070 = t;
        double r139071 = r139069 * r139070;
        double r139072 = a;
        double r139073 = 4.0;
        double r139074 = r139072 * r139073;
        double r139075 = r139074 * r139070;
        double r139076 = r139071 - r139075;
        double r139077 = b;
        double r139078 = c;
        double r139079 = r139077 * r139078;
        double r139080 = r139076 + r139079;
        double r139081 = r139063 * r139073;
        double r139082 = i;
        double r139083 = r139081 * r139082;
        double r139084 = r139080 - r139083;
        double r139085 = j;
        double r139086 = 27.0;
        double r139087 = r139085 * r139086;
        double r139088 = k;
        double r139089 = r139087 * r139088;
        double r139090 = r139084 - r139089;
        return r139090;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r139091 = k;
        double r139092 = 7.066998156185708e-218;
        bool r139093 = r139091 <= r139092;
        double r139094 = 4.0059573836352845e-73;
        bool r139095 = r139091 <= r139094;
        double r139096 = !r139095;
        bool r139097 = r139093 || r139096;
        double r139098 = t;
        double r139099 = x;
        double r139100 = 18.0;
        double r139101 = r139099 * r139100;
        double r139102 = y;
        double r139103 = r139101 * r139102;
        double r139104 = z;
        double r139105 = r139103 * r139104;
        double r139106 = a;
        double r139107 = 4.0;
        double r139108 = r139106 * r139107;
        double r139109 = r139105 - r139108;
        double r139110 = r139098 * r139109;
        double r139111 = b;
        double r139112 = c;
        double r139113 = r139111 * r139112;
        double r139114 = r139099 * r139107;
        double r139115 = i;
        double r139116 = r139114 * r139115;
        double r139117 = j;
        double r139118 = 27.0;
        double r139119 = r139118 * r139091;
        double r139120 = r139117 * r139119;
        double r139121 = r139116 + r139120;
        double r139122 = r139113 - r139121;
        double r139123 = r139110 + r139122;
        double r139124 = 0.0;
        double r139125 = r139124 - r139108;
        double r139126 = r139098 * r139125;
        double r139127 = r139117 * r139118;
        double r139128 = r139127 * r139091;
        double r139129 = r139116 + r139128;
        double r139130 = r139113 - r139129;
        double r139131 = r139126 + r139130;
        double r139132 = r139097 ? r139123 : r139131;
        return r139132;
}

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 k < 7.066998156185708e-218 or 4.0059573836352845e-73 < k

    1. Initial program 5.4

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

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

      \[\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 7.066998156185708e-218 < k < 4.0059573836352845e-73

    1. Initial program 5.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. Simplified5.0

      \[\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. Taylor expanded around 0 11.1

      \[\leadsto t \cdot \left(\color{blue}{0} - 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 2 regimes into one program.
  4. Final simplification6.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 7.0669981561857078 \cdot 10^{-218} \lor \neg \left(k \le 4.00595738363528446 \cdot 10^{-73}\right):\\ \;\;\;\;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{else}:\\ \;\;\;\;t \cdot \left(0 - 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 2020062 
(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)))