Average Error: 46.5 → 44.3
Time: 11.9s
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)\]
\[\begin{array}{l} \mathbf{if}\;t \le -2.060669677199602035061477865845248702011 \cdot 10^{-68} \lor \neg \left(t \le 2.298617900197692054257084183444212053386 \cdot 10^{-208}\right):\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \sqrt[3]{1}\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\\ \end{array}\]
\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)
\begin{array}{l}
\mathbf{if}\;t \le -2.060669677199602035061477865845248702011 \cdot 10^{-68} \lor \neg \left(t \le 2.298617900197692054257084183444212053386 \cdot 10^{-208}\right):\\
\;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \sqrt[3]{1}\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot \cos \left(\frac{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r926036 = x;
        double r926037 = y;
        double r926038 = 2.0;
        double r926039 = r926037 * r926038;
        double r926040 = 1.0;
        double r926041 = r926039 + r926040;
        double r926042 = z;
        double r926043 = r926041 * r926042;
        double r926044 = t;
        double r926045 = r926043 * r926044;
        double r926046 = 16.0;
        double r926047 = r926045 / r926046;
        double r926048 = cos(r926047);
        double r926049 = r926036 * r926048;
        double r926050 = a;
        double r926051 = r926050 * r926038;
        double r926052 = r926051 + r926040;
        double r926053 = b;
        double r926054 = r926052 * r926053;
        double r926055 = r926054 * r926044;
        double r926056 = r926055 / r926046;
        double r926057 = cos(r926056);
        double r926058 = r926049 * r926057;
        return r926058;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r926059 = t;
        double r926060 = -2.060669677199602e-68;
        bool r926061 = r926059 <= r926060;
        double r926062 = 2.298617900197692e-208;
        bool r926063 = r926059 <= r926062;
        double r926064 = !r926063;
        bool r926065 = r926061 || r926064;
        double r926066 = x;
        double r926067 = 0.0;
        double r926068 = 16.0;
        double r926069 = r926067 / r926068;
        double r926070 = cos(r926069);
        double r926071 = r926066 * r926070;
        double r926072 = 1.0;
        double r926073 = cbrt(r926072);
        double r926074 = r926071 * r926073;
        double r926075 = y;
        double r926076 = 2.0;
        double r926077 = r926075 * r926076;
        double r926078 = 1.0;
        double r926079 = r926077 + r926078;
        double r926080 = z;
        double r926081 = r926080 * r926059;
        double r926082 = r926079 * r926081;
        double r926083 = r926082 / r926068;
        double r926084 = cos(r926083);
        double r926085 = r926066 * r926084;
        double r926086 = a;
        double r926087 = r926086 * r926076;
        double r926088 = r926087 + r926078;
        double r926089 = b;
        double r926090 = r926088 * r926089;
        double r926091 = r926090 * r926059;
        double r926092 = r926091 / r926068;
        double r926093 = cos(r926092);
        double r926094 = r926085 * r926093;
        double r926095 = r926065 ? r926074 : r926094;
        return r926095;
}

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.5
Target44.8
Herbie44.3
\[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. Split input into 2 regimes
  2. if t < -2.060669677199602e-68 or 2.298617900197692e-208 < t

    1. Initial program 53.5

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

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

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\color{blue}{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}}{16}\right)\]
    5. Using strategy rm
    6. Applied add-cbrt-cube52.4

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \color{blue}{\sqrt[3]{\left(\cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)}}\]
    7. Simplified52.4

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \sqrt[3]{\color{blue}{{\left(\cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)\right)}^{3}}}\]
    8. Taylor expanded around 0 50.7

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \sqrt[3]{\color{blue}{1}}\]

    if -2.060669677199602e-68 < t < 2.298617900197692e-208

    1. Initial program 28.0

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

      \[\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(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification44.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -2.060669677199602035061477865845248702011 \cdot 10^{-68} \lor \neg \left(t \le 2.298617900197692054257084183444212053386 \cdot 10^{-208}\right):\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \sqrt[3]{1}\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019354 
(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))))