Average Error: 46.1 → 44.1
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)\]
\[x \cdot \cos \left(\frac{0}{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)
x \cdot \cos \left(\frac{0}{16}\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r981847 = x;
        double r981848 = y;
        double r981849 = 2.0;
        double r981850 = r981848 * r981849;
        double r981851 = 1.0;
        double r981852 = r981850 + r981851;
        double r981853 = z;
        double r981854 = r981852 * r981853;
        double r981855 = t;
        double r981856 = r981854 * r981855;
        double r981857 = 16.0;
        double r981858 = r981856 / r981857;
        double r981859 = cos(r981858);
        double r981860 = r981847 * r981859;
        double r981861 = a;
        double r981862 = r981861 * r981849;
        double r981863 = r981862 + r981851;
        double r981864 = b;
        double r981865 = r981863 * r981864;
        double r981866 = r981865 * r981855;
        double r981867 = r981866 / r981857;
        double r981868 = cos(r981867);
        double r981869 = r981860 * r981868;
        return r981869;
}

double f(double x, double __attribute__((unused)) y, double __attribute__((unused)) z, double __attribute__((unused)) t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r981870 = x;
        double r981871 = 0.0;
        double r981872 = 16.0;
        double r981873 = r981871 / r981872;
        double r981874 = cos(r981873);
        double r981875 = r981870 * r981874;
        return r981875;
}

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.1
Target44.3
Herbie44.1
\[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.1

    \[\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 45.5

    \[\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}{0}}{16}\right)\]
  3. Taylor expanded around 0 44.1

    \[\leadsto \color{blue}{x} \cdot \cos \left(\frac{0}{16}\right)\]
  4. Final simplification44.1

    \[\leadsto x \cdot \cos \left(\frac{0}{16}\right)\]

Reproduce

herbie shell --seed 2020060 +o rules:numerics
(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))))