\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}\;t \le -2.0937067811032768 \cdot 10^{-172}:\\
\;\;\;\;\mathsf{fma}\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z - a \cdot 4.0\right), t, \left(b \cdot c - \left(\left(27.0 \cdot k\right) \cdot j + i \cdot \left(x \cdot 4.0\right)\right)\right)\right)\\
\mathbf{elif}\;t \le 6.778538938214973 \cdot 10^{-60}:\\
\;\;\;\;\mathsf{fma}\left(\left(-a \cdot 4.0\right), t, \left(b \cdot c - \left(i \cdot \left(x \cdot 4.0\right) + \left(j \cdot 27.0\right) \cdot k\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z - a \cdot 4.0\right), t, \left(b \cdot c - \left(\left(j \cdot k\right) \cdot 27.0 + i \cdot \left(x \cdot 4.0\right)\right)\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 r4377928 = x;
double r4377929 = 18.0;
double r4377930 = r4377928 * r4377929;
double r4377931 = y;
double r4377932 = r4377930 * r4377931;
double r4377933 = z;
double r4377934 = r4377932 * r4377933;
double r4377935 = t;
double r4377936 = r4377934 * r4377935;
double r4377937 = a;
double r4377938 = 4.0;
double r4377939 = r4377937 * r4377938;
double r4377940 = r4377939 * r4377935;
double r4377941 = r4377936 - r4377940;
double r4377942 = b;
double r4377943 = c;
double r4377944 = r4377942 * r4377943;
double r4377945 = r4377941 + r4377944;
double r4377946 = r4377928 * r4377938;
double r4377947 = i;
double r4377948 = r4377946 * r4377947;
double r4377949 = r4377945 - r4377948;
double r4377950 = j;
double r4377951 = 27.0;
double r4377952 = r4377950 * r4377951;
double r4377953 = k;
double r4377954 = r4377952 * r4377953;
double r4377955 = r4377949 - r4377954;
return r4377955;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r4377956 = t;
double r4377957 = -2.0937067811032768e-172;
bool r4377958 = r4377956 <= r4377957;
double r4377959 = x;
double r4377960 = 18.0;
double r4377961 = r4377959 * r4377960;
double r4377962 = y;
double r4377963 = r4377961 * r4377962;
double r4377964 = z;
double r4377965 = r4377963 * r4377964;
double r4377966 = a;
double r4377967 = 4.0;
double r4377968 = r4377966 * r4377967;
double r4377969 = r4377965 - r4377968;
double r4377970 = b;
double r4377971 = c;
double r4377972 = r4377970 * r4377971;
double r4377973 = 27.0;
double r4377974 = k;
double r4377975 = r4377973 * r4377974;
double r4377976 = j;
double r4377977 = r4377975 * r4377976;
double r4377978 = i;
double r4377979 = r4377959 * r4377967;
double r4377980 = r4377978 * r4377979;
double r4377981 = r4377977 + r4377980;
double r4377982 = r4377972 - r4377981;
double r4377983 = fma(r4377969, r4377956, r4377982);
double r4377984 = 6.778538938214973e-60;
bool r4377985 = r4377956 <= r4377984;
double r4377986 = -r4377968;
double r4377987 = r4377976 * r4377973;
double r4377988 = r4377987 * r4377974;
double r4377989 = r4377980 + r4377988;
double r4377990 = r4377972 - r4377989;
double r4377991 = fma(r4377986, r4377956, r4377990);
double r4377992 = r4377976 * r4377974;
double r4377993 = r4377992 * r4377973;
double r4377994 = r4377993 + r4377980;
double r4377995 = r4377972 - r4377994;
double r4377996 = fma(r4377969, r4377956, r4377995);
double r4377997 = r4377985 ? r4377991 : r4377996;
double r4377998 = r4377958 ? r4377983 : r4377997;
return r4377998;
}



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
if t < -2.0937067811032768e-172Initial program 3.4
Simplified3.4
rmApplied fma-udef3.4
rmApplied associate-*r*3.4
if -2.0937067811032768e-172 < t < 6.778538938214973e-60Initial program 8.3
Simplified8.3
rmApplied fma-udef8.3
Taylor expanded around 0 5.9
if 6.778538938214973e-60 < t Initial program 2.4
Simplified2.4
rmApplied fma-udef2.4
Taylor expanded around inf 2.4
Final simplification4.1
herbie shell --seed 2019132 +o rules:numerics
(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)))