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 r32619394 = x;
        double r32619395 = y;
        double r32619396 = 2.0;
        double r32619397 = r32619395 * r32619396;
        double r32619398 = 1.0;
        double r32619399 = r32619397 + r32619398;
        double r32619400 = z;
        double r32619401 = r32619399 * r32619400;
        double r32619402 = t;
        double r32619403 = r32619401 * r32619402;
        double r32619404 = 16.0;
        double r32619405 = r32619403 / r32619404;
        double r32619406 = cos(r32619405);
        double r32619407 = r32619394 * r32619406;
        double r32619408 = a;
        double r32619409 = r32619408 * r32619396;
        double r32619410 = r32619409 + r32619398;
        double r32619411 = b;
        double r32619412 = r32619410 * r32619411;
        double r32619413 = r32619412 * r32619402;
        double r32619414 = r32619413 / r32619404;
        double r32619415 = cos(r32619414);
        double r32619416 = r32619407 * r32619415;
        return r32619416;
}

double f(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
        double r32619417 = x;
        double r32619418 = t;
        double r32619419 = cbrt(r32619418);
        double r32619420 = r32619419 * r32619419;
        double r32619421 = cbrt(r32619420);
        double r32619422 = r32619421 * r32619419;
        double r32619423 = 16.0;
        double r32619424 = z;
        double r32619425 = r32619423 / r32619424;
        double r32619426 = 2.0;
        double r32619427 = y;
        double r32619428 = 1.0;
        double r32619429 = fma(r32619426, r32619427, r32619428);
        double r32619430 = r32619425 / r32619429;
        double r32619431 = cbrt(r32619419);
        double r32619432 = r32619430 / r32619431;
        double r32619433 = r32619419 / r32619432;
        double r32619434 = r32619422 * r32619433;
        double r32619435 = cos(r32619434);
        double r32619436 = r32619417 * r32619435;
        return r32619436;
}

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))))