Average Error: 46.2 → 45.3
Time: 1.4m
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(\left(\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{t}\right) \cdot \frac{\sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}\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(\left(\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{t}\right) \cdot \frac{\sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r35157996 = x;
        double r35157997 = y;
        double r35157998 = 2.0;
        double r35157999 = r35157997 * r35157998;
        double r35158000 = 1.0;
        double r35158001 = r35157999 + r35158000;
        double r35158002 = z;
        double r35158003 = r35158001 * r35158002;
        double r35158004 = t;
        double r35158005 = r35158003 * r35158004;
        double r35158006 = 16.0;
        double r35158007 = r35158005 / r35158006;
        double r35158008 = cos(r35158007);
        double r35158009 = r35157996 * r35158008;
        double r35158010 = a;
        double r35158011 = r35158010 * r35157998;
        double r35158012 = r35158011 + r35158000;
        double r35158013 = b;
        double r35158014 = r35158012 * r35158013;
        double r35158015 = r35158014 * r35158004;
        double r35158016 = r35158015 / r35158006;
        double r35158017 = cos(r35158016);
        double r35158018 = r35158009 * r35158017;
        return r35158018;
}

double f(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r35158019 = x;
        double r35158020 = t;
        double r35158021 = cbrt(r35158020);
        double r35158022 = r35158021 * r35158021;
        double r35158023 = cbrt(r35158022);
        double r35158024 = r35158023 * r35158021;
        double r35158025 = 16.0;
        double r35158026 = z;
        double r35158027 = r35158025 / r35158026;
        double r35158028 = 2.0;
        double r35158029 = y;
        double r35158030 = 1.0;
        double r35158031 = fma(r35158028, r35158029, r35158030);
        double r35158032 = r35158027 / r35158031;
        double r35158033 = cbrt(r35158021);
        double r35158034 = r35158032 / r35158033;
        double r35158035 = r35158021 / r35158034;
        double r35158036 = r35158024 * r35158035;
        double r35158037 = cos(r35158036);
        double r35158038 = r35158019 * r35158037;
        return r35158038;
}

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

Target

Original46.2
Target44.3
Herbie45.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. Initial program 46.2

    \[\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. Simplified46.0

    \[\leadsto \color{blue}{\left(\cos \left(\frac{t}{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}\right) \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)}\]
  3. Taylor expanded around 0 45.6

    \[\leadsto \left(\cos \left(\frac{t}{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}\right) \cdot x\right) \cdot \cos \color{blue}{\left(0.0625 \cdot \left(t \cdot b\right)\right)}\]
  4. Using strategy rm
  5. Applied add-cube-cbrt45.6

    \[\leadsto \left(\cos \left(\frac{\color{blue}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \sqrt[3]{t}}}{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}\right) \cdot x\right) \cdot \cos \left(0.0625 \cdot \left(t \cdot b\right)\right)\]
  6. Applied associate-/l*45.6

    \[\leadsto \left(\cos \color{blue}{\left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{t}}}\right)} \cdot x\right) \cdot \cos \left(0.0625 \cdot \left(t \cdot b\right)\right)\]
  7. Taylor expanded around 0 45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{t}}}\right) \cdot x\right) \cdot \color{blue}{1}\]
  8. Using strategy rm
  9. Applied add-cube-cbrt45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\color{blue}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \sqrt[3]{t}}}}}\right) \cdot x\right) \cdot 1\]
  10. Applied cbrt-prod45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\color{blue}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}}\right) \cdot x\right) \cdot 1\]
  11. Applied *-un-lft-identity45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\color{blue}{1 \cdot \mathsf{fma}\left(2, y, 1\right)}}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  12. Applied *-un-lft-identity45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{16}{\color{blue}{1 \cdot z}}}{1 \cdot \mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  13. Applied *-un-lft-identity45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\frac{\color{blue}{1 \cdot 16}}{1 \cdot z}}{1 \cdot \mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  14. Applied times-frac45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\frac{\color{blue}{\frac{1}{1} \cdot \frac{16}{z}}}{1 \cdot \mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  15. Applied times-frac45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\frac{\color{blue}{\frac{\frac{1}{1}}{1} \cdot \frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  16. Applied times-frac45.3

    \[\leadsto \left(\cos \left(\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{\color{blue}{\frac{\frac{\frac{1}{1}}{1}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}}\right) \cdot x\right) \cdot 1\]
  17. Applied times-frac45.3

    \[\leadsto \left(\cos \color{blue}{\left(\frac{\sqrt[3]{t}}{\frac{\frac{\frac{1}{1}}{1}}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}}} \cdot \frac{\sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}\right)} \cdot x\right) \cdot 1\]
  18. Simplified45.3

    \[\leadsto \left(\cos \left(\color{blue}{\left(\sqrt[3]{t} \cdot \sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right)} \cdot \frac{\sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}\right) \cdot x\right) \cdot 1\]
  19. Final simplification45.3

    \[\leadsto x \cdot \cos \left(\left(\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{t}\right) \cdot \frac{\sqrt[3]{t}}{\frac{\frac{\frac{16}{z}}{\mathsf{fma}\left(2, y, 1\right)}}{\sqrt[3]{\sqrt[3]{t}}}}\right)\]

Reproduce

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