Average Error: 5.6 → 3.6
Time: 9.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}\;t \le -2.70726270936473879 \cdot 10^{-123} \lor \neg \left(t \le 1.15170273475346789 \cdot 10^{41}\right):\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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}\;t \le -2.70726270936473879 \cdot 10^{-123} \lor \neg \left(t \le 1.15170273475346789 \cdot 10^{41}\right):\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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 r158826 = x;
        double r158827 = 18.0;
        double r158828 = r158826 * r158827;
        double r158829 = y;
        double r158830 = r158828 * r158829;
        double r158831 = z;
        double r158832 = r158830 * r158831;
        double r158833 = t;
        double r158834 = r158832 * r158833;
        double r158835 = a;
        double r158836 = 4.0;
        double r158837 = r158835 * r158836;
        double r158838 = r158837 * r158833;
        double r158839 = r158834 - r158838;
        double r158840 = b;
        double r158841 = c;
        double r158842 = r158840 * r158841;
        double r158843 = r158839 + r158842;
        double r158844 = r158826 * r158836;
        double r158845 = i;
        double r158846 = r158844 * r158845;
        double r158847 = r158843 - r158846;
        double r158848 = j;
        double r158849 = 27.0;
        double r158850 = r158848 * r158849;
        double r158851 = k;
        double r158852 = r158850 * r158851;
        double r158853 = r158847 - r158852;
        return r158853;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r158854 = t;
        double r158855 = -2.7072627093647388e-123;
        bool r158856 = r158854 <= r158855;
        double r158857 = 1.1517027347534679e+41;
        bool r158858 = r158854 <= r158857;
        double r158859 = !r158858;
        bool r158860 = r158856 || r158859;
        double r158861 = x;
        double r158862 = 18.0;
        double r158863 = r158861 * r158862;
        double r158864 = y;
        double r158865 = z;
        double r158866 = r158864 * r158865;
        double r158867 = r158863 * r158866;
        double r158868 = r158867 * r158854;
        double r158869 = a;
        double r158870 = 4.0;
        double r158871 = r158869 * r158870;
        double r158872 = r158871 * r158854;
        double r158873 = r158868 - r158872;
        double r158874 = b;
        double r158875 = c;
        double r158876 = r158874 * r158875;
        double r158877 = r158873 + r158876;
        double r158878 = r158861 * r158870;
        double r158879 = i;
        double r158880 = r158878 * r158879;
        double r158881 = r158877 - r158880;
        double r158882 = j;
        double r158883 = 27.0;
        double r158884 = k;
        double r158885 = r158883 * r158884;
        double r158886 = r158882 * r158885;
        double r158887 = r158881 - r158886;
        double r158888 = r158863 * r158864;
        double r158889 = r158865 * r158854;
        double r158890 = r158888 * r158889;
        double r158891 = r158890 - r158872;
        double r158892 = r158891 + r158876;
        double r158893 = r158892 - r158880;
        double r158894 = r158893 - r158886;
        double r158895 = r158860 ? r158887 : r158894;
        return r158895;
}

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 t < -2.7072627093647388e-123 or 1.1517027347534679e+41 < t

    1. Initial program 3.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. Using strategy rm
    3. Applied associate-*l*3.1

      \[\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)}\]
    4. Using strategy rm
    5. Applied associate-*l*3.1

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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)\]

    if -2.7072627093647388e-123 < t < 1.1517027347534679e+41

    1. Initial program 7.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. Using strategy rm
    3. Applied associate-*l*7.8

      \[\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)}\]
    4. Using strategy rm
    5. Applied associate-*l*4.1

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \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)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -2.70726270936473879 \cdot 10^{-123} \lor \neg \left(t \le 1.15170273475346789 \cdot 10^{41}\right):\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right) - \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 2020035 
(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)))