Average Error: 46.4 → 45.9
Time: 11.8s
Precision: 64
\[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
\[\left(x \cdot \cos \left(\frac{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{z \cdot t}\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\]
\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)
\left(x \cdot \cos \left(\frac{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{z \cdot t}\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r899566 = x;
        double r899567 = y;
        double r899568 = 2.0;
        double r899569 = r899567 * r899568;
        double r899570 = 1.0;
        double r899571 = r899569 + r899570;
        double r899572 = z;
        double r899573 = r899571 * r899572;
        double r899574 = t;
        double r899575 = r899573 * r899574;
        double r899576 = 16.0;
        double r899577 = r899575 / r899576;
        double r899578 = cos(r899577);
        double r899579 = r899566 * r899578;
        double r899580 = a;
        double r899581 = r899580 * r899568;
        double r899582 = r899581 + r899570;
        double r899583 = b;
        double r899584 = r899582 * r899583;
        double r899585 = r899584 * r899574;
        double r899586 = r899585 / r899576;
        double r899587 = cos(r899586);
        double r899588 = r899579 * r899587;
        return r899588;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r899589 = x;
        double r899590 = y;
        double r899591 = 2.0;
        double r899592 = r899590 * r899591;
        double r899593 = 1.0;
        double r899594 = r899592 + r899593;
        double r899595 = z;
        double r899596 = t;
        double r899597 = r899595 * r899596;
        double r899598 = r899594 * r899597;
        double r899599 = cbrt(r899598);
        double r899600 = r899599 * r899599;
        double r899601 = cbrt(r899594);
        double r899602 = cbrt(r899597);
        double r899603 = r899601 * r899602;
        double r899604 = r899600 * r899603;
        double r899605 = 16.0;
        double r899606 = r899604 / r899605;
        double r899607 = cos(r899606);
        double r899608 = r899589 * r899607;
        double r899609 = a;
        double r899610 = r899609 * r899591;
        double r899611 = r899610 + r899593;
        double r899612 = b;
        double r899613 = r899612 * r899596;
        double r899614 = r899611 * r899613;
        double r899615 = r899614 / r899605;
        double r899616 = cos(r899615);
        double r899617 = r899608 * r899616;
        return r899617;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original46.4
Target44.6
Herbie45.9
\[x \cdot \cos \left(\frac{b}{16} \cdot \frac{t}{\left(1 - a \cdot 2\right) + {\left(a \cdot 2\right)}^{2}}\right)\]

Derivation

  1. Initial program 46.4

    \[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
  2. Using strategy rm
  3. Applied associate-*l*46.1

    \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\color{blue}{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}}{16}\right)\]
  4. Using strategy rm
  5. Applied associate-*l*45.8

    \[\leadsto \left(x \cdot \cos \left(\frac{\color{blue}{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\]
  6. Using strategy rm
  7. Applied add-cube-cbrt45.8

    \[\leadsto \left(x \cdot \cos \left(\frac{\color{blue}{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}}}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\]
  8. Using strategy rm
  9. Applied cbrt-prod45.9

    \[\leadsto \left(x \cdot \cos \left(\frac{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \color{blue}{\left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{z \cdot t}\right)}}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\]
  10. Final simplification45.9

    \[\leadsto \left(x \cdot \cos \left(\frac{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{z \cdot t}\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\]

Reproduce

herbie shell --seed 2020039 
(FPCore (x y z t a b)
  :name "Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1"
  :precision binary64

  :herbie-target
  (* x (cos (* (/ b 16) (/ t (+ (- 1 (* a 2)) (pow (* a 2) 2))))))

  (* (* x (cos (/ (* (* (+ (* y 2) 1) z) t) 16))) (cos (/ (* (* (+ (* a 2) 1) b) t) 16))))