Average Error: 46.7 → 44.6
Time: 1.9m
Precision: 64
\[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2.0 + 1.0\right) \cdot z\right) \cdot t}{16.0}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2.0 + 1.0\right) \cdot b\right) \cdot t}{16.0}\right)\]
\[x\]
\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2.0 + 1.0\right) \cdot z\right) \cdot t}{16.0}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2.0 + 1.0\right) \cdot b\right) \cdot t}{16.0}\right)
x
double f(double x, double y, double z, double t, double a, double b) {
        double r40011095 = x;
        double r40011096 = y;
        double r40011097 = 2.0;
        double r40011098 = r40011096 * r40011097;
        double r40011099 = 1.0;
        double r40011100 = r40011098 + r40011099;
        double r40011101 = z;
        double r40011102 = r40011100 * r40011101;
        double r40011103 = t;
        double r40011104 = r40011102 * r40011103;
        double r40011105 = 16.0;
        double r40011106 = r40011104 / r40011105;
        double r40011107 = cos(r40011106);
        double r40011108 = r40011095 * r40011107;
        double r40011109 = a;
        double r40011110 = r40011109 * r40011097;
        double r40011111 = r40011110 + r40011099;
        double r40011112 = b;
        double r40011113 = r40011111 * r40011112;
        double r40011114 = r40011113 * r40011103;
        double r40011115 = r40011114 / r40011105;
        double r40011116 = cos(r40011115);
        double r40011117 = r40011108 * r40011116;
        return r40011117;
}

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 r40011118 = x;
        return r40011118;
}

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.7
Target44.9
Herbie44.6
\[x \cdot \cos \left(\frac{b}{16.0} \cdot \frac{t}{\left(1.0 - a \cdot 2.0\right) + {\left(a \cdot 2.0\right)}^{2.0}}\right)\]

Derivation

  1. Initial program 46.7

    \[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2.0 + 1.0\right) \cdot z\right) \cdot t}{16.0}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2.0 + 1.0\right) \cdot b\right) \cdot t}{16.0}\right)\]
  2. Taylor expanded around 0 46.0

    \[\leadsto \left(x \cdot \color{blue}{1}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2.0 + 1.0\right) \cdot b\right) \cdot t}{16.0}\right)\]
  3. Taylor expanded around 0 44.6

    \[\leadsto \color{blue}{x}\]
  4. Final simplification44.6

    \[\leadsto x\]

Reproduce

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

  :herbie-target
  (* x (cos (* (/ b 16.0) (/ t (+ (- 1.0 (* a 2.0)) (pow (* a 2.0) 2.0))))))

  (* (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0))) (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))