Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1

Percentage Accurate: 27.5% → 30.7%
Time: 10.5s
Alternatives: 8
Speedup: 44.8×

Specification

?
\[\begin{array}{l} \\ \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) \end{array} \]
(FPCore (x y z t a b)
 :precision binary64
 (*
  (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0)))
  (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))
double code(double x, double y, double z, double t, double a, double b) {
	return (x * cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(x, y, z, t, a, b)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = (x * cos((((((y * 2.0d0) + 1.0d0) * z) * t) / 16.0d0))) * cos((((((a * 2.0d0) + 1.0d0) * b) * t) / 16.0d0))
end function
public static double code(double x, double y, double z, double t, double a, double b) {
	return (x * Math.cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * Math.cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
}
def code(x, y, z, t, a, b):
	return (x * math.cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * math.cos((((((a * 2.0) + 1.0) * b) * t) / 16.0))
function code(x, y, z, t, a, b)
	return Float64(Float64(x * cos(Float64(Float64(Float64(Float64(Float64(y * 2.0) + 1.0) * z) * t) / 16.0))) * cos(Float64(Float64(Float64(Float64(Float64(a * 2.0) + 1.0) * b) * t) / 16.0)))
end
function tmp = code(x, y, z, t, a, b)
	tmp = (x * cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
end
code[x_, y_, z_, t_, a_, b_] := N[(N[(x * N[Cos[N[(N[(N[(N[(N[(y * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * z), $MachinePrecision] * t), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(N[(N[(N[(a * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * b), $MachinePrecision] * t), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\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)
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 8 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 27.5% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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) \end{array} \]
(FPCore (x y z t a b)
 :precision binary64
 (*
  (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0)))
  (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))
double code(double x, double y, double z, double t, double a, double b) {
	return (x * cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(x, y, z, t, a, b)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = (x * cos((((((y * 2.0d0) + 1.0d0) * z) * t) / 16.0d0))) * cos((((((a * 2.0d0) + 1.0d0) * b) * t) / 16.0d0))
end function
public static double code(double x, double y, double z, double t, double a, double b) {
	return (x * Math.cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * Math.cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
}
def code(x, y, z, t, a, b):
	return (x * math.cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * math.cos((((((a * 2.0) + 1.0) * b) * t) / 16.0))
function code(x, y, z, t, a, b)
	return Float64(Float64(x * cos(Float64(Float64(Float64(Float64(Float64(y * 2.0) + 1.0) * z) * t) / 16.0))) * cos(Float64(Float64(Float64(Float64(Float64(a * 2.0) + 1.0) * b) * t) / 16.0)))
end
function tmp = code(x, y, z, t, a, b)
	tmp = (x * cos((((((y * 2.0) + 1.0) * z) * t) / 16.0))) * cos((((((a * 2.0) + 1.0) * b) * t) / 16.0));
end
code[x_, y_, z_, t_, a_, b_] := N[(N[(x * N[Cos[N[(N[(N[(N[(N[(y * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * z), $MachinePrecision] * t), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(N[(N[(N[(a * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * b), $MachinePrecision] * t), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\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)
\end{array}

Alternative 1: 30.7% accurate, 0.3× speedup?

\[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ \begin{array}{l} t_1 := \sqrt[3]{\mathsf{PI}\left(\right)}\\ t_2 := x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\\ x\_s \cdot \begin{array}{l} \mathbf{if}\;t\_2 \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\ \;\;\;\;t\_2 \cdot \sin \left(\mathsf{fma}\left({t\_1}^{2}, \frac{t\_1}{2}, \frac{\mathsf{fma}\left(a \cdot 2, b\_m, b\_m\right) \cdot t\_m}{-16}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\ \end{array} \end{array} \end{array} \]
b_m = (fabs.f64 b)
t_m = (fabs.f64 t)
x\_m = (fabs.f64 x)
x\_s = (copysign.f64 #s(literal 1 binary64) x)
(FPCore (x_s x_m y z t_m a b_m)
 :precision binary64
 (let* ((t_1 (cbrt (PI)))
        (t_2 (* x_m (cos (/ (* (* (+ (* y 2.0) 1.0) z) t_m) 16.0)))))
   (*
    x_s
    (if (<= (* t_2 (cos (/ (* (* (+ (* a 2.0) 1.0) b_m) t_m) 16.0))) 1e+279)
      (*
       t_2
       (sin
        (fma
         (pow t_1 2.0)
         (/ t_1 2.0)
         (/ (* (fma (* a 2.0) b_m b_m) t_m) -16.0))))
      (* (cos (* -0.0625 (* b_m t_m))) x_m)))))
\begin{array}{l}
b_m = \left|b\right|
\\
t_m = \left|t\right|
\\
x\_m = \left|x\right|
\\
x\_s = \mathsf{copysign}\left(1, x\right)

\\
\begin{array}{l}
t_1 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
t_2 := x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\\
x\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_2 \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\
\;\;\;\;t\_2 \cdot \sin \left(\mathsf{fma}\left({t\_1}^{2}, \frac{t\_1}{2}, \frac{\mathsf{fma}\left(a \cdot 2, b\_m, b\_m\right) \cdot t\_m}{-16}\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\


\end{array}
\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64)))) < 1.00000000000000006e279

    1. Initial program 47.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. Add Preprocessing
    3. Step-by-step derivation
      1. lift-cos.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)} \]
      2. cos-neg-revN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right)} \]
      3. sin-+PI/2-revN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
      4. lower-sin.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
      5. lower-+.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
      6. lift-/.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\left(\mathsf{neg}\left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      7. distribute-neg-frac2N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      8. lower-/.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      9. lift-*.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(\left(a \cdot 2 + 1\right) \cdot b\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      10. *-commutativeN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      11. lower-*.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      12. lift-+.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\left(a \cdot 2 + 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      13. lift-*.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \left(\color{blue}{a \cdot 2} + 1\right)\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      14. lower-fma.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\mathsf{fma}\left(a, 2, 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      15. metadata-evalN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{\color{blue}{-16}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
      16. lower-/.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \color{blue}{\frac{\mathsf{PI}\left(\right)}{2}}\right) \]
      17. lower-PI.f6447.0

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \frac{\color{blue}{\mathsf{PI}\left(\right)}}{2}\right) \]
    4. Applied rewrites47.0%

      \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
    5. Step-by-step derivation
      1. lift-+.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
      2. +-commutativeN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\frac{\mathsf{PI}\left(\right)}{2} + \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)} \]
      3. lift-/.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\mathsf{PI}\left(\right)}{2}} + \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right) \]
      4. lift-PI.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\mathsf{PI}\left(\right)}}{2} + \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right) \]
      5. add-cube-cbrtN/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(\sqrt[3]{\mathsf{PI}\left(\right)} \cdot \sqrt[3]{\mathsf{PI}\left(\right)}\right) \cdot \sqrt[3]{\mathsf{PI}\left(\right)}}}{2} + \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right) \]
      6. associate-/l*N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\left(\sqrt[3]{\mathsf{PI}\left(\right)} \cdot \sqrt[3]{\mathsf{PI}\left(\right)}\right) \cdot \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}} + \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right) \]
      7. lower-fma.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\mathsf{fma}\left(\sqrt[3]{\mathsf{PI}\left(\right)} \cdot \sqrt[3]{\mathsf{PI}\left(\right)}, \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right)} \]
      8. pow2N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\color{blue}{{\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}^{2}}, \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      9. lower-pow.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\color{blue}{{\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}^{2}}, \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      10. lift-PI.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left({\left(\sqrt[3]{\color{blue}{\mathsf{PI}\left(\right)}}\right)}^{2}, \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      11. lower-cbrt.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left({\color{blue}{\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}}^{2}, \frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      12. lower-/.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left({\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}^{2}, \color{blue}{\frac{\sqrt[3]{\mathsf{PI}\left(\right)}}{2}}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      13. lift-PI.f64N/A

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left({\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}^{2}, \frac{\sqrt[3]{\color{blue}{\mathsf{PI}\left(\right)}}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
      14. lower-cbrt.f6447.0

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left({\left(\sqrt[3]{\mathsf{PI}\left(\right)}\right)}^{2}, \frac{\color{blue}{\sqrt[3]{\mathsf{PI}\left(\right)}}}{2}, \frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16}\right)\right) \]
    6. Applied rewrites47.0%

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

    if 1.00000000000000006e279 < (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64))))

    1. Initial program 3.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. Add Preprocessing
    3. Taylor expanded in z around 0

      \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
    4. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
      2. lower-*.f64N/A

        \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
      3. cos-neg-revN/A

        \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
      4. lower-cos.f64N/A

        \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
      5. distribute-lft-neg-inN/A

        \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
      6. lower-*.f64N/A

        \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
      7. metadata-evalN/A

        \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
      8. *-commutativeN/A

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
      9. lower-*.f64N/A

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
      10. *-commutativeN/A

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
      11. lower-*.f64N/A

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
      12. +-commutativeN/A

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
      13. lower-fma.f649.6

        \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
    5. Applied rewrites9.6%

      \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
    6. Taylor expanded in a around 0

      \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
    7. Step-by-step derivation
      1. Applied rewrites12.4%

        \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
    8. Recombined 2 regimes into one program.
    9. Add Preprocessing

    Alternative 2: 30.7% accurate, 0.5× speedup?

    \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ \begin{array}{l} t_1 := x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\\ x\_s \cdot \begin{array}{l} \mathbf{if}\;t\_1 \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\ \;\;\;\;t\_1 \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), 0.5, \left(b\_m \cdot t\_m\right) \cdot \mathsf{fma}\left(-0.125, a, -0.0625\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\ \end{array} \end{array} \end{array} \]
    b_m = (fabs.f64 b)
    t_m = (fabs.f64 t)
    x\_m = (fabs.f64 x)
    x\_s = (copysign.f64 #s(literal 1 binary64) x)
    (FPCore (x_s x_m y z t_m a b_m)
     :precision binary64
     (let* ((t_1 (* x_m (cos (/ (* (* (+ (* y 2.0) 1.0) z) t_m) 16.0)))))
       (*
        x_s
        (if (<= (* t_1 (cos (/ (* (* (+ (* a 2.0) 1.0) b_m) t_m) 16.0))) 1e+279)
          (* t_1 (sin (fma (PI) 0.5 (* (* b_m t_m) (fma -0.125 a -0.0625)))))
          (* (cos (* -0.0625 (* b_m t_m))) x_m)))))
    \begin{array}{l}
    b_m = \left|b\right|
    \\
    t_m = \left|t\right|
    \\
    x\_m = \left|x\right|
    \\
    x\_s = \mathsf{copysign}\left(1, x\right)
    
    \\
    \begin{array}{l}
    t_1 := x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\\
    x\_s \cdot \begin{array}{l}
    \mathbf{if}\;t\_1 \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\
    \;\;\;\;t\_1 \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), 0.5, \left(b\_m \cdot t\_m\right) \cdot \mathsf{fma}\left(-0.125, a, -0.0625\right)\right)\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\
    
    
    \end{array}
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64)))) < 1.00000000000000006e279

      1. Initial program 47.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. Add Preprocessing
      3. Step-by-step derivation
        1. lift-cos.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)} \]
        2. cos-neg-revN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right)} \]
        3. sin-+PI/2-revN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
        4. lower-sin.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
        5. lower-+.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
        6. lift-/.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\left(\mathsf{neg}\left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        7. distribute-neg-frac2N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        8. lower-/.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        9. lift-*.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(\left(a \cdot 2 + 1\right) \cdot b\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        10. *-commutativeN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        11. lower-*.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        12. lift-+.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\left(a \cdot 2 + 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        13. lift-*.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \left(\color{blue}{a \cdot 2} + 1\right)\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        14. lower-fma.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\mathsf{fma}\left(a, 2, 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        15. metadata-evalN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{\color{blue}{-16}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
        16. lower-/.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \color{blue}{\frac{\mathsf{PI}\left(\right)}{2}}\right) \]
        17. lower-PI.f6447.0

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \frac{\color{blue}{\mathsf{PI}\left(\right)}}{2}\right) \]
      4. Applied rewrites47.0%

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

        \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right) + \left(\frac{-1}{16} \cdot \left(b \cdot t\right) + \frac{1}{2} \cdot \mathsf{PI}\left(\right)\right)\right)} \]
      6. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\left(\frac{-1}{16} \cdot \left(b \cdot t\right) + \frac{1}{2} \cdot \mathsf{PI}\left(\right)\right) + \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right)\right)} \]
        2. +-commutativeN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\left(\frac{1}{2} \cdot \mathsf{PI}\left(\right) + \frac{-1}{16} \cdot \left(b \cdot t\right)\right)} + \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right)\right) \]
        3. associate-+l+N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\frac{1}{2} \cdot \mathsf{PI}\left(\right) + \left(\frac{-1}{16} \cdot \left(b \cdot t\right) + \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right)\right)\right)} \]
        4. *-commutativeN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\mathsf{PI}\left(\right) \cdot \frac{1}{2}} + \left(\frac{-1}{16} \cdot \left(b \cdot t\right) + \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right)\right)\right) \]
        5. +-commutativeN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \frac{1}{2} + \color{blue}{\left(\frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right) + \frac{-1}{16} \cdot \left(b \cdot t\right)\right)}\right) \]
        6. lower-fma.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\mathsf{fma}\left(\mathsf{PI}\left(\right), \frac{1}{2}, \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right) + \frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right)} \]
        7. lower-PI.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\color{blue}{\mathsf{PI}\left(\right)}, \frac{1}{2}, \frac{-1}{8} \cdot \left(a \cdot \left(b \cdot t\right)\right) + \frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \]
        8. associate-*r*N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), \frac{1}{2}, \color{blue}{\left(\frac{-1}{8} \cdot a\right) \cdot \left(b \cdot t\right)} + \frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \]
        9. distribute-rgt-outN/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), \frac{1}{2}, \color{blue}{\left(b \cdot t\right) \cdot \left(\frac{-1}{8} \cdot a + \frac{-1}{16}\right)}\right)\right) \]
        10. lower-*.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), \frac{1}{2}, \color{blue}{\left(b \cdot t\right) \cdot \left(\frac{-1}{8} \cdot a + \frac{-1}{16}\right)}\right)\right) \]
        11. lower-*.f64N/A

          \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), \frac{1}{2}, \color{blue}{\left(b \cdot t\right)} \cdot \left(\frac{-1}{8} \cdot a + \frac{-1}{16}\right)\right)\right) \]
        12. lower-fma.f6446.5

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

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

      if 1.00000000000000006e279 < (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64))))

      1. Initial program 3.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. Add Preprocessing
      3. Taylor expanded in z around 0

        \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
      4. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
        2. lower-*.f64N/A

          \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
        3. cos-neg-revN/A

          \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
        4. lower-cos.f64N/A

          \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
        5. distribute-lft-neg-inN/A

          \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
        6. lower-*.f64N/A

          \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
        7. metadata-evalN/A

          \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
        8. *-commutativeN/A

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
        9. lower-*.f64N/A

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
        10. *-commutativeN/A

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
        11. lower-*.f64N/A

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
        12. +-commutativeN/A

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
        13. lower-fma.f649.6

          \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
      5. Applied rewrites9.6%

        \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
      6. Taylor expanded in a around 0

        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
      7. Step-by-step derivation
        1. Applied rewrites12.4%

          \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
      8. Recombined 2 regimes into one program.
      9. Add Preprocessing

      Alternative 3: 30.7% accurate, 0.5× speedup?

      \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ \begin{array}{l} t_1 := \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right)\\ x\_s \cdot \begin{array}{l} \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot t\_1 \leq 10^{+279}:\\ \;\;\;\;\left(x\_m \cdot \cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\_m\right)\right)\right) \cdot t\_1\\ \mathbf{else}:\\ \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\ \end{array} \end{array} \end{array} \]
      b_m = (fabs.f64 b)
      t_m = (fabs.f64 t)
      x\_m = (fabs.f64 x)
      x\_s = (copysign.f64 #s(literal 1 binary64) x)
      (FPCore (x_s x_m y z t_m a b_m)
       :precision binary64
       (let* ((t_1 (cos (/ (* (* (+ (* a 2.0) 1.0) b_m) t_m) 16.0))))
         (*
          x_s
          (if (<=
               (* (* x_m (cos (/ (* (* (+ (* y 2.0) 1.0) z) t_m) 16.0))) t_1)
               1e+279)
            (* (* x_m (cos (* -0.0625 (* (* (fma 2.0 y 1.0) z) t_m)))) t_1)
            (* (cos (* -0.0625 (* b_m t_m))) x_m)))))
      b_m = fabs(b);
      t_m = fabs(t);
      x\_m = fabs(x);
      x\_s = copysign(1.0, x);
      double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
      	double t_1 = cos((((((a * 2.0) + 1.0) * b_m) * t_m) / 16.0));
      	double tmp;
      	if (((x_m * cos((((((y * 2.0) + 1.0) * z) * t_m) / 16.0))) * t_1) <= 1e+279) {
      		tmp = (x_m * cos((-0.0625 * ((fma(2.0, y, 1.0) * z) * t_m)))) * t_1;
      	} else {
      		tmp = cos((-0.0625 * (b_m * t_m))) * x_m;
      	}
      	return x_s * tmp;
      }
      
      b_m = abs(b)
      t_m = abs(t)
      x\_m = abs(x)
      x\_s = copysign(1.0, x)
      function code(x_s, x_m, y, z, t_m, a, b_m)
      	t_1 = cos(Float64(Float64(Float64(Float64(Float64(a * 2.0) + 1.0) * b_m) * t_m) / 16.0))
      	tmp = 0.0
      	if (Float64(Float64(x_m * cos(Float64(Float64(Float64(Float64(Float64(y * 2.0) + 1.0) * z) * t_m) / 16.0))) * t_1) <= 1e+279)
      		tmp = Float64(Float64(x_m * cos(Float64(-0.0625 * Float64(Float64(fma(2.0, y, 1.0) * z) * t_m)))) * t_1);
      	else
      		tmp = Float64(cos(Float64(-0.0625 * Float64(b_m * t_m))) * x_m);
      	end
      	return Float64(x_s * tmp)
      end
      
      b_m = N[Abs[b], $MachinePrecision]
      t_m = N[Abs[t], $MachinePrecision]
      x\_m = N[Abs[x], $MachinePrecision]
      x\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
      code[x$95$s_, x$95$m_, y_, z_, t$95$m_, a_, b$95$m_] := Block[{t$95$1 = N[Cos[N[(N[(N[(N[(N[(a * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * b$95$m), $MachinePrecision] * t$95$m), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]}, N[(x$95$s * If[LessEqual[N[(N[(x$95$m * N[Cos[N[(N[(N[(N[(N[(y * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * z), $MachinePrecision] * t$95$m), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision], 1e+279], N[(N[(x$95$m * N[Cos[N[(-0.0625 * N[(N[(N[(2.0 * y + 1.0), $MachinePrecision] * z), $MachinePrecision] * t$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision], N[(N[Cos[N[(-0.0625 * N[(b$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * x$95$m), $MachinePrecision]]), $MachinePrecision]]
      
      \begin{array}{l}
      b_m = \left|b\right|
      \\
      t_m = \left|t\right|
      \\
      x\_m = \left|x\right|
      \\
      x\_s = \mathsf{copysign}\left(1, x\right)
      
      \\
      \begin{array}{l}
      t_1 := \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right)\\
      x\_s \cdot \begin{array}{l}
      \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot t\_1 \leq 10^{+279}:\\
      \;\;\;\;\left(x\_m \cdot \cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\_m\right)\right)\right) \cdot t\_1\\
      
      \mathbf{else}:\\
      \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\
      
      
      \end{array}
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64)))) < 1.00000000000000006e279

        1. Initial program 47.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. Add Preprocessing
        3. Taylor expanded in y around inf

          \[\leadsto \left(x \cdot \color{blue}{\cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
        4. Step-by-step derivation
          1. cos-neg-revN/A

            \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          2. lower-cos.f64N/A

            \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          3. distribute-lft-neg-inN/A

            \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          4. lower-*.f64N/A

            \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)}\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          5. metadata-evalN/A

            \[\leadsto \left(x \cdot \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          6. *-commutativeN/A

            \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          7. lower-*.f64N/A

            \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          8. *-commutativeN/A

            \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          9. lower-*.f64N/A

            \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          10. +-commutativeN/A

            \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot y + 1\right)} \cdot z\right) \cdot t\right)\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right) \]
          11. lower-fma.f6447.1

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

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

        if 1.00000000000000006e279 < (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64))))

        1. Initial program 3.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. Add Preprocessing
        3. Taylor expanded in z around 0

          \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
          2. lower-*.f64N/A

            \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
          3. cos-neg-revN/A

            \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
          4. lower-cos.f64N/A

            \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
          5. distribute-lft-neg-inN/A

            \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
          6. lower-*.f64N/A

            \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
          7. metadata-evalN/A

            \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
          8. *-commutativeN/A

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
          9. lower-*.f64N/A

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
          10. *-commutativeN/A

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
          11. lower-*.f64N/A

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
          12. +-commutativeN/A

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
          13. lower-fma.f649.6

            \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
        5. Applied rewrites9.6%

          \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
        6. Taylor expanded in a around 0

          \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
        7. Step-by-step derivation
          1. Applied rewrites12.4%

            \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
        8. Recombined 2 regimes into one program.
        9. Add Preprocessing

        Alternative 4: 30.4% accurate, 0.5× speedup?

        \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ x\_s \cdot \begin{array}{l} \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\ \;\;\;\;\left(\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\_m\right)\right) \cdot x\_m\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), 0.5, -0.0625 \cdot \left(\left(\mathsf{fma}\left(a, 2, 1\right) \cdot t\_m\right) \cdot b\_m\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\ \end{array} \end{array} \]
        b_m = (fabs.f64 b)
        t_m = (fabs.f64 t)
        x\_m = (fabs.f64 x)
        x\_s = (copysign.f64 #s(literal 1 binary64) x)
        (FPCore (x_s x_m y z t_m a b_m)
         :precision binary64
         (*
          x_s
          (if (<=
               (*
                (* x_m (cos (/ (* (* (+ (* y 2.0) 1.0) z) t_m) 16.0)))
                (cos (/ (* (* (+ (* a 2.0) 1.0) b_m) t_m) 16.0)))
               1e+279)
            (*
             (* (cos (* -0.0625 (* (* (fma 2.0 y 1.0) z) t_m))) x_m)
             (sin (fma (PI) 0.5 (* -0.0625 (* (* (fma a 2.0 1.0) t_m) b_m)))))
            (* (cos (* -0.0625 (* b_m t_m))) x_m))))
        \begin{array}{l}
        b_m = \left|b\right|
        \\
        t_m = \left|t\right|
        \\
        x\_m = \left|x\right|
        \\
        x\_s = \mathsf{copysign}\left(1, x\right)
        
        \\
        x\_s \cdot \begin{array}{l}
        \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 10^{+279}:\\
        \;\;\;\;\left(\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\_m\right)\right) \cdot x\_m\right) \cdot \sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), 0.5, -0.0625 \cdot \left(\left(\mathsf{fma}\left(a, 2, 1\right) \cdot t\_m\right) \cdot b\_m\right)\right)\right)\\
        
        \mathbf{else}:\\
        \;\;\;\;\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64)))) < 1.00000000000000006e279

          1. Initial program 47.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. Add Preprocessing
          3. Step-by-step derivation
            1. lift-cos.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)} \]
            2. cos-neg-revN/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right)} \]
            3. sin-+PI/2-revN/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
            4. lower-sin.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{\sin \left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
            5. lower-+.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \color{blue}{\left(\left(\mathsf{neg}\left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right)} \]
            6. lift-/.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\left(\mathsf{neg}\left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}}\right)\right) + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            7. distribute-neg-frac2N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            8. lower-/.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\color{blue}{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\mathsf{neg}\left(16\right)}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            9. lift-*.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(\left(a \cdot 2 + 1\right) \cdot b\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            10. *-commutativeN/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            11. lower-*.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\color{blue}{\left(b \cdot \left(a \cdot 2 + 1\right)\right)} \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            12. lift-+.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\left(a \cdot 2 + 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            13. lift-*.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \left(\color{blue}{a \cdot 2} + 1\right)\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            14. lower-fma.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \color{blue}{\mathsf{fma}\left(a, 2, 1\right)}\right) \cdot t}{\mathsf{neg}\left(16\right)} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            15. metadata-evalN/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{\color{blue}{-16}} + \frac{\mathsf{PI}\left(\right)}{2}\right) \]
            16. lower-/.f64N/A

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \color{blue}{\frac{\mathsf{PI}\left(\right)}{2}}\right) \]
            17. lower-PI.f6447.0

              \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \sin \left(\frac{\left(b \cdot \mathsf{fma}\left(a, 2, 1\right)\right) \cdot t}{-16} + \frac{\color{blue}{\mathsf{PI}\left(\right)}}{2}\right) \]
          4. Applied rewrites47.0%

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

            \[\leadsto \color{blue}{x \cdot \left(\cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \cdot \sin \left(\frac{-1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right) + \frac{1}{2} \cdot \mathsf{PI}\left(\right)\right)\right)} \]
          6. Applied rewrites46.6%

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

          if 1.00000000000000006e279 < (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64))))

          1. Initial program 3.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. Add Preprocessing
          3. Taylor expanded in z around 0

            \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
            2. lower-*.f64N/A

              \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
            3. cos-neg-revN/A

              \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
            4. lower-cos.f64N/A

              \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
            5. distribute-lft-neg-inN/A

              \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
            6. lower-*.f64N/A

              \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
            7. metadata-evalN/A

              \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
            8. *-commutativeN/A

              \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
            9. lower-*.f64N/A

              \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
            10. *-commutativeN/A

              \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
            11. lower-*.f64N/A

              \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
            12. +-commutativeN/A

              \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
            13. lower-fma.f649.6

              \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
          5. Applied rewrites9.6%

            \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
          6. Taylor expanded in a around 0

            \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
          7. Step-by-step derivation
            1. Applied rewrites12.4%

              \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
          8. Recombined 2 regimes into one program.
          9. Add Preprocessing

          Alternative 5: 30.2% accurate, 0.5× speedup?

          \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ \begin{array}{l} t_1 := \cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right)\\ x\_s \cdot \begin{array}{l} \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 2 \cdot 10^{+261}:\\ \;\;\;\;\left(x\_m \cdot t\_1\right) \cdot \cos \left(-0.0625 \cdot \left(\mathsf{fma}\left(2, y, 1\right) \cdot \left(t\_m \cdot z\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t\_1 \cdot x\_m\\ \end{array} \end{array} \end{array} \]
          b_m = (fabs.f64 b)
          t_m = (fabs.f64 t)
          x\_m = (fabs.f64 x)
          x\_s = (copysign.f64 #s(literal 1 binary64) x)
          (FPCore (x_s x_m y z t_m a b_m)
           :precision binary64
           (let* ((t_1 (cos (* -0.0625 (* b_m t_m)))))
             (*
              x_s
              (if (<=
                   (*
                    (* x_m (cos (/ (* (* (+ (* y 2.0) 1.0) z) t_m) 16.0)))
                    (cos (/ (* (* (+ (* a 2.0) 1.0) b_m) t_m) 16.0)))
                   2e+261)
                (* (* x_m t_1) (cos (* -0.0625 (* (fma 2.0 y 1.0) (* t_m z)))))
                (* t_1 x_m)))))
          b_m = fabs(b);
          t_m = fabs(t);
          x\_m = fabs(x);
          x\_s = copysign(1.0, x);
          double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
          	double t_1 = cos((-0.0625 * (b_m * t_m)));
          	double tmp;
          	if (((x_m * cos((((((y * 2.0) + 1.0) * z) * t_m) / 16.0))) * cos((((((a * 2.0) + 1.0) * b_m) * t_m) / 16.0))) <= 2e+261) {
          		tmp = (x_m * t_1) * cos((-0.0625 * (fma(2.0, y, 1.0) * (t_m * z))));
          	} else {
          		tmp = t_1 * x_m;
          	}
          	return x_s * tmp;
          }
          
          b_m = abs(b)
          t_m = abs(t)
          x\_m = abs(x)
          x\_s = copysign(1.0, x)
          function code(x_s, x_m, y, z, t_m, a, b_m)
          	t_1 = cos(Float64(-0.0625 * Float64(b_m * t_m)))
          	tmp = 0.0
          	if (Float64(Float64(x_m * cos(Float64(Float64(Float64(Float64(Float64(y * 2.0) + 1.0) * z) * t_m) / 16.0))) * cos(Float64(Float64(Float64(Float64(Float64(a * 2.0) + 1.0) * b_m) * t_m) / 16.0))) <= 2e+261)
          		tmp = Float64(Float64(x_m * t_1) * cos(Float64(-0.0625 * Float64(fma(2.0, y, 1.0) * Float64(t_m * z)))));
          	else
          		tmp = Float64(t_1 * x_m);
          	end
          	return Float64(x_s * tmp)
          end
          
          b_m = N[Abs[b], $MachinePrecision]
          t_m = N[Abs[t], $MachinePrecision]
          x\_m = N[Abs[x], $MachinePrecision]
          x\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
          code[x$95$s_, x$95$m_, y_, z_, t$95$m_, a_, b$95$m_] := Block[{t$95$1 = N[Cos[N[(-0.0625 * N[(b$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, N[(x$95$s * If[LessEqual[N[(N[(x$95$m * N[Cos[N[(N[(N[(N[(N[(y * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * z), $MachinePrecision] * t$95$m), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(N[(N[(N[(a * 2.0), $MachinePrecision] + 1.0), $MachinePrecision] * b$95$m), $MachinePrecision] * t$95$m), $MachinePrecision] / 16.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2e+261], N[(N[(x$95$m * t$95$1), $MachinePrecision] * N[Cos[N[(-0.0625 * N[(N[(2.0 * y + 1.0), $MachinePrecision] * N[(t$95$m * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$1 * x$95$m), $MachinePrecision]]), $MachinePrecision]]
          
          \begin{array}{l}
          b_m = \left|b\right|
          \\
          t_m = \left|t\right|
          \\
          x\_m = \left|x\right|
          \\
          x\_s = \mathsf{copysign}\left(1, x\right)
          
          \\
          \begin{array}{l}
          t_1 := \cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right)\\
          x\_s \cdot \begin{array}{l}
          \mathbf{if}\;\left(x\_m \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t\_m}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\_m\right) \cdot t\_m}{16}\right) \leq 2 \cdot 10^{+261}:\\
          \;\;\;\;\left(x\_m \cdot t\_1\right) \cdot \cos \left(-0.0625 \cdot \left(\mathsf{fma}\left(2, y, 1\right) \cdot \left(t\_m \cdot z\right)\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_1 \cdot x\_m\\
          
          
          \end{array}
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64)))) < 1.9999999999999999e261

            1. Initial program 46.4%

              \[\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. Add Preprocessing
            3. Taylor expanded in a around 0

              \[\leadsto \color{blue}{x \cdot \left(\cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
            4. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
              2. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
              3. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)} \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              4. cos-neg-revN/A

                \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              5. lower-cos.f64N/A

                \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              6. distribute-lft-neg-inN/A

                \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot t\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              7. lower-*.f64N/A

                \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot t\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              8. metadata-evalN/A

                \[\leadsto \left(x \cdot \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              9. lower-*.f64N/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(b \cdot t\right)}\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              10. cos-neg-revN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
              11. lower-cos.f64N/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
              12. distribute-lft-neg-inN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
              13. lower-*.f64N/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
              14. metadata-evalN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
              15. *-commutativeN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right) \]
              16. lower-*.f64N/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right) \]
              17. *-commutativeN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right) \]
              18. lower-*.f64N/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right) \]
              19. +-commutativeN/A

                \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot y + 1\right)} \cdot z\right) \cdot t\right)\right) \]
              20. lower-fma.f6445.6

                \[\leadsto \left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, y, 1\right)} \cdot z\right) \cdot t\right)\right) \]
            5. Applied rewrites45.6%

              \[\leadsto \color{blue}{\left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\right)\right)} \]
            6. Step-by-step derivation
              1. Applied rewrites46.1%

                \[\leadsto \left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \left(\mathsf{fma}\left(2, y, 1\right) \cdot \left(t \cdot z\right)\right)\right) \]

              if 1.9999999999999999e261 < (*.f64 (*.f64 x (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 y #s(literal 2 binary64)) #s(literal 1 binary64)) z) t) #s(literal 16 binary64)))) (cos.f64 (/.f64 (*.f64 (*.f64 (+.f64 (*.f64 a #s(literal 2 binary64)) #s(literal 1 binary64)) b) t) #s(literal 16 binary64))))

              1. Initial program 6.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. Add Preprocessing
              3. Taylor expanded in z around 0

                \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
              4. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                2. lower-*.f64N/A

                  \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                3. cos-neg-revN/A

                  \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                4. lower-cos.f64N/A

                  \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                5. distribute-lft-neg-inN/A

                  \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                6. lower-*.f64N/A

                  \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                7. metadata-evalN/A

                  \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
                8. *-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                9. lower-*.f64N/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                10. *-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                11. lower-*.f64N/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                12. +-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
                13. lower-fma.f6412.2

                  \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
              5. Applied rewrites12.2%

                \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
              6. Taylor expanded in a around 0

                \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
              7. Step-by-step derivation
                1. Applied rewrites14.9%

                  \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
              8. Recombined 2 regimes into one program.
              9. Add Preprocessing

              Alternative 6: 29.7% accurate, 2.2× speedup?

              \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ x\_s \cdot \left(\sin \left(\mathsf{fma}\left(0.5, \mathsf{PI}\left(\right), 0.0625 \cdot \left(b\_m \cdot t\_m\right)\right)\right) \cdot x\_m\right) \end{array} \]
              b_m = (fabs.f64 b)
              t_m = (fabs.f64 t)
              x\_m = (fabs.f64 x)
              x\_s = (copysign.f64 #s(literal 1 binary64) x)
              (FPCore (x_s x_m y z t_m a b_m)
               :precision binary64
               (* x_s (* (sin (fma 0.5 (PI) (* 0.0625 (* b_m t_m)))) x_m)))
              \begin{array}{l}
              b_m = \left|b\right|
              \\
              t_m = \left|t\right|
              \\
              x\_m = \left|x\right|
              \\
              x\_s = \mathsf{copysign}\left(1, x\right)
              
              \\
              x\_s \cdot \left(\sin \left(\mathsf{fma}\left(0.5, \mathsf{PI}\left(\right), 0.0625 \cdot \left(b\_m \cdot t\_m\right)\right)\right) \cdot x\_m\right)
              \end{array}
              
              Derivation
              1. Initial program 28.9%

                \[\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. Add Preprocessing
              3. Taylor expanded in z around 0

                \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
              4. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                2. lower-*.f64N/A

                  \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                3. cos-neg-revN/A

                  \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                4. lower-cos.f64N/A

                  \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                5. distribute-lft-neg-inN/A

                  \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                6. lower-*.f64N/A

                  \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                7. metadata-evalN/A

                  \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
                8. *-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                9. lower-*.f64N/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                10. *-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                11. lower-*.f64N/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                12. +-commutativeN/A

                  \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
                13. lower-fma.f6430.6

                  \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
              5. Applied rewrites30.6%

                \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
              6. Taylor expanded in a around 0

                \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
              7. Step-by-step derivation
                1. Applied rewrites30.9%

                  \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
                2. Step-by-step derivation
                  1. Applied rewrites30.5%

                    \[\leadsto \sin \left(\mathsf{fma}\left(0.0625, b \cdot t, \frac{\mathsf{PI}\left(\right)}{2}\right)\right) \cdot x \]
                  2. Taylor expanded in a around 0

                    \[\leadsto \sin \left(\frac{1}{16} \cdot \left(b \cdot t\right) + \frac{1}{2} \cdot \mathsf{PI}\left(\right)\right) \cdot x \]
                  3. Step-by-step derivation
                    1. Applied rewrites30.5%

                      \[\leadsto \sin \left(\mathsf{fma}\left(0.5, \mathsf{PI}\left(\right), 0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot x \]
                    2. Add Preprocessing

                    Alternative 7: 29.7% accurate, 2.3× speedup?

                    \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ x\_s \cdot \left(\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\right) \end{array} \]
                    b_m = (fabs.f64 b)
                    t_m = (fabs.f64 t)
                    x\_m = (fabs.f64 x)
                    x\_s = (copysign.f64 #s(literal 1 binary64) x)
                    (FPCore (x_s x_m y z t_m a b_m)
                     :precision binary64
                     (* x_s (* (cos (* -0.0625 (* b_m t_m))) x_m)))
                    b_m = fabs(b);
                    t_m = fabs(t);
                    x\_m = fabs(x);
                    x\_s = copysign(1.0, x);
                    double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
                    	return x_s * (cos((-0.0625 * (b_m * t_m))) * x_m);
                    }
                    
                    b_m =     private
                    t_m =     private
                    x\_m =     private
                    x\_s =     private
                    module fmin_fmax_functions
                        implicit none
                        private
                        public fmax
                        public fmin
                    
                        interface fmax
                            module procedure fmax88
                            module procedure fmax44
                            module procedure fmax84
                            module procedure fmax48
                        end interface
                        interface fmin
                            module procedure fmin88
                            module procedure fmin44
                            module procedure fmin84
                            module procedure fmin48
                        end interface
                    contains
                        real(8) function fmax88(x, y) result (res)
                            real(8), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                        end function
                        real(4) function fmax44(x, y) result (res)
                            real(4), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                        end function
                        real(8) function fmax84(x, y) result(res)
                            real(8), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                        end function
                        real(8) function fmax48(x, y) result(res)
                            real(4), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                        end function
                        real(8) function fmin88(x, y) result (res)
                            real(8), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                        end function
                        real(4) function fmin44(x, y) result (res)
                            real(4), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                        end function
                        real(8) function fmin84(x, y) result(res)
                            real(8), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                        end function
                        real(8) function fmin48(x, y) result(res)
                            real(4), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                        end function
                    end module
                    
                    real(8) function code(x_s, x_m, y, z, t_m, a, b_m)
                    use fmin_fmax_functions
                        real(8), intent (in) :: x_s
                        real(8), intent (in) :: x_m
                        real(8), intent (in) :: y
                        real(8), intent (in) :: z
                        real(8), intent (in) :: t_m
                        real(8), intent (in) :: a
                        real(8), intent (in) :: b_m
                        code = x_s * (cos(((-0.0625d0) * (b_m * t_m))) * x_m)
                    end function
                    
                    b_m = Math.abs(b);
                    t_m = Math.abs(t);
                    x\_m = Math.abs(x);
                    x\_s = Math.copySign(1.0, x);
                    public static double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
                    	return x_s * (Math.cos((-0.0625 * (b_m * t_m))) * x_m);
                    }
                    
                    b_m = math.fabs(b)
                    t_m = math.fabs(t)
                    x\_m = math.fabs(x)
                    x\_s = math.copysign(1.0, x)
                    def code(x_s, x_m, y, z, t_m, a, b_m):
                    	return x_s * (math.cos((-0.0625 * (b_m * t_m))) * x_m)
                    
                    b_m = abs(b)
                    t_m = abs(t)
                    x\_m = abs(x)
                    x\_s = copysign(1.0, x)
                    function code(x_s, x_m, y, z, t_m, a, b_m)
                    	return Float64(x_s * Float64(cos(Float64(-0.0625 * Float64(b_m * t_m))) * x_m))
                    end
                    
                    b_m = abs(b);
                    t_m = abs(t);
                    x\_m = abs(x);
                    x\_s = sign(x) * abs(1.0);
                    function tmp = code(x_s, x_m, y, z, t_m, a, b_m)
                    	tmp = x_s * (cos((-0.0625 * (b_m * t_m))) * x_m);
                    end
                    
                    b_m = N[Abs[b], $MachinePrecision]
                    t_m = N[Abs[t], $MachinePrecision]
                    x\_m = N[Abs[x], $MachinePrecision]
                    x\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
                    code[x$95$s_, x$95$m_, y_, z_, t$95$m_, a_, b$95$m_] := N[(x$95$s * N[(N[Cos[N[(-0.0625 * N[(b$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * x$95$m), $MachinePrecision]), $MachinePrecision]
                    
                    \begin{array}{l}
                    b_m = \left|b\right|
                    \\
                    t_m = \left|t\right|
                    \\
                    x\_m = \left|x\right|
                    \\
                    x\_s = \mathsf{copysign}\left(1, x\right)
                    
                    \\
                    x\_s \cdot \left(\cos \left(-0.0625 \cdot \left(b\_m \cdot t\_m\right)\right) \cdot x\_m\right)
                    \end{array}
                    
                    Derivation
                    1. Initial program 28.9%

                      \[\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. Add Preprocessing
                    3. Taylor expanded in z around 0

                      \[\leadsto \color{blue}{x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \]
                    4. Step-by-step derivation
                      1. *-commutativeN/A

                        \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                      2. lower-*.f64N/A

                        \[\leadsto \color{blue}{\cos \left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x} \]
                      3. cos-neg-revN/A

                        \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                      4. lower-cos.f64N/A

                        \[\leadsto \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)\right)} \cdot x \]
                      5. distribute-lft-neg-inN/A

                        \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                      6. lower-*.f64N/A

                        \[\leadsto \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right)} \cdot x \]
                      7. metadata-evalN/A

                        \[\leadsto \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot \left(t \cdot \left(1 + 2 \cdot a\right)\right)\right)\right) \cdot x \]
                      8. *-commutativeN/A

                        \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                      9. lower-*.f64N/A

                        \[\leadsto \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(t \cdot \left(1 + 2 \cdot a\right)\right) \cdot b\right)}\right) \cdot x \]
                      10. *-commutativeN/A

                        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                      11. lower-*.f64N/A

                        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot a\right) \cdot t\right)} \cdot b\right)\right) \cdot x \]
                      12. +-commutativeN/A

                        \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot a + 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
                      13. lower-fma.f6430.6

                        \[\leadsto \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, a, 1\right)} \cdot t\right) \cdot b\right)\right) \cdot x \]
                    5. Applied rewrites30.6%

                      \[\leadsto \color{blue}{\cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, a, 1\right) \cdot t\right) \cdot b\right)\right) \cdot x} \]
                    6. Taylor expanded in a around 0

                      \[\leadsto \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right) \cdot x \]
                    7. Step-by-step derivation
                      1. Applied rewrites30.9%

                        \[\leadsto \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right) \cdot x \]
                      2. Add Preprocessing

                      Alternative 8: 30.6% accurate, 44.8× speedup?

                      \[\begin{array}{l} b_m = \left|b\right| \\ t_m = \left|t\right| \\ x\_m = \left|x\right| \\ x\_s = \mathsf{copysign}\left(1, x\right) \\ x\_s \cdot \left(1 \cdot x\_m\right) \end{array} \]
                      b_m = (fabs.f64 b)
                      t_m = (fabs.f64 t)
                      x\_m = (fabs.f64 x)
                      x\_s = (copysign.f64 #s(literal 1 binary64) x)
                      (FPCore (x_s x_m y z t_m a b_m) :precision binary64 (* x_s (* 1.0 x_m)))
                      b_m = fabs(b);
                      t_m = fabs(t);
                      x\_m = fabs(x);
                      x\_s = copysign(1.0, x);
                      double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
                      	return x_s * (1.0 * x_m);
                      }
                      
                      b_m =     private
                      t_m =     private
                      x\_m =     private
                      x\_s =     private
                      module fmin_fmax_functions
                          implicit none
                          private
                          public fmax
                          public fmin
                      
                          interface fmax
                              module procedure fmax88
                              module procedure fmax44
                              module procedure fmax84
                              module procedure fmax48
                          end interface
                          interface fmin
                              module procedure fmin88
                              module procedure fmin44
                              module procedure fmin84
                              module procedure fmin48
                          end interface
                      contains
                          real(8) function fmax88(x, y) result (res)
                              real(8), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                          end function
                          real(4) function fmax44(x, y) result (res)
                              real(4), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                          end function
                          real(8) function fmax84(x, y) result(res)
                              real(8), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                          end function
                          real(8) function fmax48(x, y) result(res)
                              real(4), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                          end function
                          real(8) function fmin88(x, y) result (res)
                              real(8), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                          end function
                          real(4) function fmin44(x, y) result (res)
                              real(4), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                          end function
                          real(8) function fmin84(x, y) result(res)
                              real(8), intent (in) :: x
                              real(4), intent (in) :: y
                              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                          end function
                          real(8) function fmin48(x, y) result(res)
                              real(4), intent (in) :: x
                              real(8), intent (in) :: y
                              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                          end function
                      end module
                      
                      real(8) function code(x_s, x_m, y, z, t_m, a, b_m)
                      use fmin_fmax_functions
                          real(8), intent (in) :: x_s
                          real(8), intent (in) :: x_m
                          real(8), intent (in) :: y
                          real(8), intent (in) :: z
                          real(8), intent (in) :: t_m
                          real(8), intent (in) :: a
                          real(8), intent (in) :: b_m
                          code = x_s * (1.0d0 * x_m)
                      end function
                      
                      b_m = Math.abs(b);
                      t_m = Math.abs(t);
                      x\_m = Math.abs(x);
                      x\_s = Math.copySign(1.0, x);
                      public static double code(double x_s, double x_m, double y, double z, double t_m, double a, double b_m) {
                      	return x_s * (1.0 * x_m);
                      }
                      
                      b_m = math.fabs(b)
                      t_m = math.fabs(t)
                      x\_m = math.fabs(x)
                      x\_s = math.copysign(1.0, x)
                      def code(x_s, x_m, y, z, t_m, a, b_m):
                      	return x_s * (1.0 * x_m)
                      
                      b_m = abs(b)
                      t_m = abs(t)
                      x\_m = abs(x)
                      x\_s = copysign(1.0, x)
                      function code(x_s, x_m, y, z, t_m, a, b_m)
                      	return Float64(x_s * Float64(1.0 * x_m))
                      end
                      
                      b_m = abs(b);
                      t_m = abs(t);
                      x\_m = abs(x);
                      x\_s = sign(x) * abs(1.0);
                      function tmp = code(x_s, x_m, y, z, t_m, a, b_m)
                      	tmp = x_s * (1.0 * x_m);
                      end
                      
                      b_m = N[Abs[b], $MachinePrecision]
                      t_m = N[Abs[t], $MachinePrecision]
                      x\_m = N[Abs[x], $MachinePrecision]
                      x\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
                      code[x$95$s_, x$95$m_, y_, z_, t$95$m_, a_, b$95$m_] := N[(x$95$s * N[(1.0 * x$95$m), $MachinePrecision]), $MachinePrecision]
                      
                      \begin{array}{l}
                      b_m = \left|b\right|
                      \\
                      t_m = \left|t\right|
                      \\
                      x\_m = \left|x\right|
                      \\
                      x\_s = \mathsf{copysign}\left(1, x\right)
                      
                      \\
                      x\_s \cdot \left(1 \cdot x\_m\right)
                      \end{array}
                      
                      Derivation
                      1. Initial program 28.9%

                        \[\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. Add Preprocessing
                      3. Taylor expanded in a around 0

                        \[\leadsto \color{blue}{x \cdot \left(\cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
                      4. Step-by-step derivation
                        1. associate-*r*N/A

                          \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
                        2. lower-*.f64N/A

                          \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
                        3. lower-*.f64N/A

                          \[\leadsto \color{blue}{\left(x \cdot \cos \left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)} \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        4. cos-neg-revN/A

                          \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        5. lower-cos.f64N/A

                          \[\leadsto \left(x \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(b \cdot t\right)\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        6. distribute-lft-neg-inN/A

                          \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot t\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        7. lower-*.f64N/A

                          \[\leadsto \left(x \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(b \cdot t\right)\right)}\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        8. metadata-evalN/A

                          \[\leadsto \left(x \cdot \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        9. lower-*.f64N/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(b \cdot t\right)}\right)\right) \cdot \cos \left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        10. cos-neg-revN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
                        11. lower-cos.f64N/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \color{blue}{\cos \left(\mathsf{neg}\left(\frac{1}{16} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)\right)} \]
                        12. distribute-lft-neg-inN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
                        13. lower-*.f64N/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{16}\right)\right) \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right)} \]
                        14. metadata-evalN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\color{blue}{\frac{-1}{16}} \cdot \left(t \cdot \left(z \cdot \left(1 + 2 \cdot y\right)\right)\right)\right) \]
                        15. *-commutativeN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right) \]
                        16. lower-*.f64N/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \color{blue}{\left(\left(z \cdot \left(1 + 2 \cdot y\right)\right) \cdot t\right)}\right) \]
                        17. *-commutativeN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right) \]
                        18. lower-*.f64N/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\color{blue}{\left(\left(1 + 2 \cdot y\right) \cdot z\right)} \cdot t\right)\right) \]
                        19. +-commutativeN/A

                          \[\leadsto \left(x \cdot \cos \left(\frac{-1}{16} \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(\frac{-1}{16} \cdot \left(\left(\color{blue}{\left(2 \cdot y + 1\right)} \cdot z\right) \cdot t\right)\right) \]
                        20. lower-fma.f6429.4

                          \[\leadsto \left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \left(\left(\color{blue}{\mathsf{fma}\left(2, y, 1\right)} \cdot z\right) \cdot t\right)\right) \]
                      5. Applied rewrites29.4%

                        \[\leadsto \color{blue}{\left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \left(\left(\mathsf{fma}\left(2, y, 1\right) \cdot z\right) \cdot t\right)\right)} \]
                      6. Step-by-step derivation
                        1. Applied rewrites25.7%

                          \[\leadsto \left(x \cdot \cos \left(-0.0625 \cdot \left(b \cdot t\right)\right)\right) \cdot \cos \left(-0.0625 \cdot \frac{\mathsf{fma}\left(y \cdot y, 4, -1\right) \cdot \left(t \cdot z\right)}{\mathsf{fma}\left(2, y, -1\right)}\right) \]
                        2. Taylor expanded in b around 0

                          \[\leadsto x \cdot \color{blue}{\cos \left(\frac{-1}{16} \cdot \frac{t \cdot \left(z \cdot \left(4 \cdot {y}^{2} - 1\right)\right)}{2 \cdot y - 1}\right)} \]
                        3. Step-by-step derivation
                          1. Applied rewrites24.7%

                            \[\leadsto \cos \left(\frac{0.0625 \cdot \left(\left(\left(\left(y \cdot y\right) \cdot 4 - 1\right) \cdot z\right) \cdot t\right)}{2 \cdot y - 1}\right) \cdot \color{blue}{x} \]
                          2. Taylor expanded in z around 0

                            \[\leadsto 1 \cdot x \]
                          3. Step-by-step derivation
                            1. Applied rewrites30.5%

                              \[\leadsto 1 \cdot x \]
                            2. Add Preprocessing

                            Developer Target 1: 30.2% accurate, 1.1× speedup?

                            \[\begin{array}{l} \\ x \cdot \cos \left(\frac{b}{16} \cdot \frac{t}{\left(1 - a \cdot 2\right) + {\left(a \cdot 2\right)}^{2}}\right) \end{array} \]
                            (FPCore (x y z t a b)
                             :precision binary64
                             (* x (cos (* (/ b 16.0) (/ t (+ (- 1.0 (* a 2.0)) (pow (* a 2.0) 2.0)))))))
                            double code(double x, double y, double z, double t, double a, double b) {
                            	return x * cos(((b / 16.0) * (t / ((1.0 - (a * 2.0)) + pow((a * 2.0), 2.0)))));
                            }
                            
                            module fmin_fmax_functions
                                implicit none
                                private
                                public fmax
                                public fmin
                            
                                interface fmax
                                    module procedure fmax88
                                    module procedure fmax44
                                    module procedure fmax84
                                    module procedure fmax48
                                end interface
                                interface fmin
                                    module procedure fmin88
                                    module procedure fmin44
                                    module procedure fmin84
                                    module procedure fmin48
                                end interface
                            contains
                                real(8) function fmax88(x, y) result (res)
                                    real(8), intent (in) :: x
                                    real(8), intent (in) :: y
                                    res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                                end function
                                real(4) function fmax44(x, y) result (res)
                                    real(4), intent (in) :: x
                                    real(4), intent (in) :: y
                                    res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                                end function
                                real(8) function fmax84(x, y) result(res)
                                    real(8), intent (in) :: x
                                    real(4), intent (in) :: y
                                    res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                                end function
                                real(8) function fmax48(x, y) result(res)
                                    real(4), intent (in) :: x
                                    real(8), intent (in) :: y
                                    res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                                end function
                                real(8) function fmin88(x, y) result (res)
                                    real(8), intent (in) :: x
                                    real(8), intent (in) :: y
                                    res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                                end function
                                real(4) function fmin44(x, y) result (res)
                                    real(4), intent (in) :: x
                                    real(4), intent (in) :: y
                                    res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                                end function
                                real(8) function fmin84(x, y) result(res)
                                    real(8), intent (in) :: x
                                    real(4), intent (in) :: y
                                    res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                                end function
                                real(8) function fmin48(x, y) result(res)
                                    real(4), intent (in) :: x
                                    real(8), intent (in) :: y
                                    res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                                end function
                            end module
                            
                            real(8) function code(x, y, z, t, a, b)
                            use fmin_fmax_functions
                                real(8), intent (in) :: x
                                real(8), intent (in) :: y
                                real(8), intent (in) :: z
                                real(8), intent (in) :: t
                                real(8), intent (in) :: a
                                real(8), intent (in) :: b
                                code = x * cos(((b / 16.0d0) * (t / ((1.0d0 - (a * 2.0d0)) + ((a * 2.0d0) ** 2.0d0)))))
                            end function
                            
                            public static double code(double x, double y, double z, double t, double a, double b) {
                            	return x * Math.cos(((b / 16.0) * (t / ((1.0 - (a * 2.0)) + Math.pow((a * 2.0), 2.0)))));
                            }
                            
                            def code(x, y, z, t, a, b):
                            	return x * math.cos(((b / 16.0) * (t / ((1.0 - (a * 2.0)) + math.pow((a * 2.0), 2.0)))))
                            
                            function code(x, y, z, t, a, b)
                            	return Float64(x * cos(Float64(Float64(b / 16.0) * Float64(t / Float64(Float64(1.0 - Float64(a * 2.0)) + (Float64(a * 2.0) ^ 2.0))))))
                            end
                            
                            function tmp = code(x, y, z, t, a, b)
                            	tmp = x * cos(((b / 16.0) * (t / ((1.0 - (a * 2.0)) + ((a * 2.0) ^ 2.0)))));
                            end
                            
                            code[x_, y_, z_, t_, a_, b_] := N[(x * N[Cos[N[(N[(b / 16.0), $MachinePrecision] * N[(t / N[(N[(1.0 - N[(a * 2.0), $MachinePrecision]), $MachinePrecision] + N[Power[N[(a * 2.0), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
                            
                            \begin{array}{l}
                            
                            \\
                            x \cdot \cos \left(\frac{b}{16} \cdot \frac{t}{\left(1 - a \cdot 2\right) + {\left(a \cdot 2\right)}^{2}}\right)
                            \end{array}
                            

                            Reproduce

                            ?
                            herbie shell --seed 2025015 
                            (FPCore (x y z t a b)
                              :name "Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1"
                              :precision binary64
                            
                              :alt
                              (! :herbie-platform default (* x (cos (* (/ b 16) (/ t (+ (- 1 (* a 2)) (pow (* a 2) 2)))))))
                            
                              (* (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0))) (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))