Average Error: 12.0 → 12.3
Time: 11.1s
Precision: 64
\[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
\[\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)\]
\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)
\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r125158 = x;
        double r125159 = y;
        double r125160 = z;
        double r125161 = r125159 * r125160;
        double r125162 = t;
        double r125163 = a;
        double r125164 = r125162 * r125163;
        double r125165 = r125161 - r125164;
        double r125166 = r125158 * r125165;
        double r125167 = b;
        double r125168 = c;
        double r125169 = r125168 * r125160;
        double r125170 = i;
        double r125171 = r125170 * r125163;
        double r125172 = r125169 - r125171;
        double r125173 = r125167 * r125172;
        double r125174 = r125166 - r125173;
        double r125175 = j;
        double r125176 = r125168 * r125162;
        double r125177 = r125170 * r125159;
        double r125178 = r125176 - r125177;
        double r125179 = r125175 * r125178;
        double r125180 = r125174 + r125179;
        return r125180;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j) {
        double r125181 = c;
        double r125182 = t;
        double r125183 = r125181 * r125182;
        double r125184 = i;
        double r125185 = y;
        double r125186 = r125184 * r125185;
        double r125187 = r125183 - r125186;
        double r125188 = j;
        double r125189 = x;
        double r125190 = z;
        double r125191 = r125185 * r125190;
        double r125192 = a;
        double r125193 = r125182 * r125192;
        double r125194 = r125191 - r125193;
        double r125195 = r125189 * r125194;
        double r125196 = b;
        double r125197 = r125181 * r125190;
        double r125198 = r125184 * r125192;
        double r125199 = r125197 - r125198;
        double r125200 = cbrt(r125199);
        double r125201 = r125200 * r125200;
        double r125202 = r125201 * r125200;
        double r125203 = r125196 * r125202;
        double r125204 = r125195 - r125203;
        double r125205 = fma(r125187, r125188, r125204);
        return r125205;
}

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

Derivation

  1. Initial program 12.0

    \[\left(x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right) + j \cdot \left(c \cdot t - i \cdot y\right)\]
  2. Simplified12.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(c \cdot z - i \cdot a\right)\right)}\]
  3. Using strategy rm
  4. Applied add-cube-cbrt12.3

    \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \color{blue}{\left(\left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)}\right)\]
  5. Final simplification12.3

    \[\leadsto \mathsf{fma}\left(c \cdot t - i \cdot y, j, x \cdot \left(y \cdot z - t \cdot a\right) - b \cdot \left(\left(\sqrt[3]{c \cdot z - i \cdot a} \cdot \sqrt[3]{c \cdot z - i \cdot a}\right) \cdot \sqrt[3]{c \cdot z - i \cdot a}\right)\right)\]

Reproduce

herbie shell --seed 2020027 +o rules:numerics
(FPCore (x y z t a b c i j)
  :name "Linear.Matrix:det33 from linear-1.19.1.3"
  :precision binary64
  (+ (- (* x (- (* y z) (* t a))) (* b (- (* c z) (* i a)))) (* j (- (* c t) (* i y)))))