Average Error: 46.6 → 44.5
Time: 2.2m
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 -1.683896174743997203487521349289828429351 \cdot 10^{-70}:\\ \;\;\;\;\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot x\\ \mathbf{elif}\;t \le 2.712271615937073719503347788927402155894 \cdot 10^{-208}:\\ \;\;\;\;\left(x \cdot \left(\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot \cos \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) - \sin \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) \cdot \sin \left(0.0625 \cdot \left(z \cdot t\right)\right)\right)\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;x\\ \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 -1.683896174743997203487521349289828429351 \cdot 10^{-70}:\\
\;\;\;\;\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot x\\

\mathbf{elif}\;t \le 2.712271615937073719503347788927402155894 \cdot 10^{-208}:\\
\;\;\;\;\left(x \cdot \left(\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot \cos \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) - \sin \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) \cdot \sin \left(0.0625 \cdot \left(z \cdot t\right)\right)\right)\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\\

\mathbf{else}:\\
\;\;\;\;x\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r41591740 = x;
        double r41591741 = y;
        double r41591742 = 2.0;
        double r41591743 = r41591741 * r41591742;
        double r41591744 = 1.0;
        double r41591745 = r41591743 + r41591744;
        double r41591746 = z;
        double r41591747 = r41591745 * r41591746;
        double r41591748 = t;
        double r41591749 = r41591747 * r41591748;
        double r41591750 = 16.0;
        double r41591751 = r41591749 / r41591750;
        double r41591752 = cos(r41591751);
        double r41591753 = r41591740 * r41591752;
        double r41591754 = a;
        double r41591755 = r41591754 * r41591742;
        double r41591756 = r41591755 + r41591744;
        double r41591757 = b;
        double r41591758 = r41591756 * r41591757;
        double r41591759 = r41591758 * r41591748;
        double r41591760 = r41591759 / r41591750;
        double r41591761 = cos(r41591760);
        double r41591762 = r41591753 * r41591761;
        return r41591762;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r41591763 = t;
        double r41591764 = -1.6838961747439972e-70;
        bool r41591765 = r41591763 <= r41591764;
        double r41591766 = 0.0625;
        double r41591767 = z;
        double r41591768 = r41591767 * r41591763;
        double r41591769 = r41591766 * r41591768;
        double r41591770 = cos(r41591769);
        double r41591771 = x;
        double r41591772 = r41591770 * r41591771;
        double r41591773 = 2.7122716159370737e-208;
        bool r41591774 = r41591763 <= r41591773;
        double r41591775 = y;
        double r41591776 = r41591775 * r41591768;
        double r41591777 = 0.125;
        double r41591778 = r41591776 * r41591777;
        double r41591779 = cos(r41591778);
        double r41591780 = r41591770 * r41591779;
        double r41591781 = sin(r41591778);
        double r41591782 = sin(r41591769);
        double r41591783 = r41591781 * r41591782;
        double r41591784 = r41591780 - r41591783;
        double r41591785 = r41591771 * r41591784;
        double r41591786 = b;
        double r41591787 = 16.0;
        double r41591788 = r41591787 / r41591763;
        double r41591789 = a;
        double r41591790 = 2.0;
        double r41591791 = 1.0;
        double r41591792 = fma(r41591789, r41591790, r41591791);
        double r41591793 = r41591788 / r41591792;
        double r41591794 = r41591786 / r41591793;
        double r41591795 = cos(r41591794);
        double r41591796 = r41591785 * r41591795;
        double r41591797 = r41591774 ? r41591796 : r41591771;
        double r41591798 = r41591765 ? r41591772 : r41591797;
        return r41591798;
}

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.6
Target44.8
Herbie44.5
\[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 3 regimes
  2. if t < -1.6838961747439972e-70

    1. Initial program 57.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. Simplified57.1

      \[\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 inf 57.1

      \[\leadsto \left(\cos \color{blue}{\left(0.125 \cdot \left(t \cdot \left(z \cdot y\right)\right) + 0.0625 \cdot \left(t \cdot z\right)\right)} \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\]
    4. Simplified57.1

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

      \[\leadsto \left(\cos \left(\mathsf{fma}\left(\left(t \cdot z\right) \cdot y, 0.125, 0.0625 \cdot \left(t \cdot z\right)\right)\right) \cdot x\right) \cdot \color{blue}{1}\]
    6. Taylor expanded around 0 55.0

      \[\leadsto \left(\cos \color{blue}{\left(0.0625 \cdot \left(t \cdot z\right)\right)} \cdot x\right) \cdot 1\]

    if -1.6838961747439972e-70 < t < 2.7122716159370737e-208

    1. Initial program 27.3

      \[\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. Simplified26.7

      \[\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 inf 26.8

      \[\leadsto \left(\cos \color{blue}{\left(0.125 \cdot \left(t \cdot \left(z \cdot y\right)\right) + 0.0625 \cdot \left(t \cdot z\right)\right)} \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\]
    4. Simplified26.0

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

      \[\leadsto \left(\cos \color{blue}{\left(\left(\left(t \cdot z\right) \cdot y\right) \cdot 0.125 + 0.0625 \cdot \left(t \cdot z\right)\right)} \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\]
    7. Applied cos-sum26.0

      \[\leadsto \left(\color{blue}{\left(\cos \left(\left(\left(t \cdot z\right) \cdot y\right) \cdot 0.125\right) \cdot \cos \left(0.0625 \cdot \left(t \cdot z\right)\right) - \sin \left(\left(\left(t \cdot z\right) \cdot y\right) \cdot 0.125\right) \cdot \sin \left(0.0625 \cdot \left(t \cdot z\right)\right)\right)} \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\]

    if 2.7122716159370737e-208 < t

    1. Initial program 51.3

      \[\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. Simplified51.3

      \[\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 inf 51.3

      \[\leadsto \left(\cos \color{blue}{\left(0.125 \cdot \left(t \cdot \left(z \cdot y\right)\right) + 0.0625 \cdot \left(t \cdot z\right)\right)} \cdot x\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\]
    4. Simplified51.1

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

      \[\leadsto \left(\cos \left(\mathsf{fma}\left(\left(t \cdot z\right) \cdot y, 0.125, 0.0625 \cdot \left(t \cdot z\right)\right)\right) \cdot x\right) \cdot \color{blue}{1}\]
    6. Taylor expanded around 0 48.7

      \[\leadsto \color{blue}{x} \cdot 1\]
  3. Recombined 3 regimes into one program.
  4. Final simplification44.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.683896174743997203487521349289828429351 \cdot 10^{-70}:\\ \;\;\;\;\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot x\\ \mathbf{elif}\;t \le 2.712271615937073719503347788927402155894 \cdot 10^{-208}:\\ \;\;\;\;\left(x \cdot \left(\cos \left(0.0625 \cdot \left(z \cdot t\right)\right) \cdot \cos \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) - \sin \left(\left(y \cdot \left(z \cdot t\right)\right) \cdot 0.125\right) \cdot \sin \left(0.0625 \cdot \left(z \cdot t\right)\right)\right)\right) \cdot \cos \left(\frac{b}{\frac{\frac{16}{t}}{\mathsf{fma}\left(a, 2, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +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))))