mixedcos

Percentage Accurate: 66.2% → 98.8%
Time: 9.0s
Alternatives: 8
Speedup: 9.0×

Specification

?
\[\begin{array}{l} \\ \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \end{array} \]
(FPCore (x c s)
 :precision binary64
 (/ (cos (* 2.0 x)) (* (pow c 2.0) (* (* x (pow s 2.0)) x))))
double code(double x, double c, double s) {
	return cos((2.0 * x)) / (pow(c, 2.0) * ((x * pow(s, 2.0)) * x));
}
real(8) function code(x, c, s)
    real(8), intent (in) :: x
    real(8), intent (in) :: c
    real(8), intent (in) :: s
    code = cos((2.0d0 * x)) / ((c ** 2.0d0) * ((x * (s ** 2.0d0)) * x))
end function
public static double code(double x, double c, double s) {
	return Math.cos((2.0 * x)) / (Math.pow(c, 2.0) * ((x * Math.pow(s, 2.0)) * x));
}
def code(x, c, s):
	return math.cos((2.0 * x)) / (math.pow(c, 2.0) * ((x * math.pow(s, 2.0)) * x))
function code(x, c, s)
	return Float64(cos(Float64(2.0 * x)) / Float64((c ^ 2.0) * Float64(Float64(x * (s ^ 2.0)) * x)))
end
function tmp = code(x, c, s)
	tmp = cos((2.0 * x)) / ((c ^ 2.0) * ((x * (s ^ 2.0)) * x));
end
code[x_, c_, s_] := N[(N[Cos[N[(2.0 * x), $MachinePrecision]], $MachinePrecision] / N[(N[Power[c, 2.0], $MachinePrecision] * N[(N[(x * N[Power[s, 2.0], $MachinePrecision]), $MachinePrecision] * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\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: 66.2% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \end{array} \]
(FPCore (x c s)
 :precision binary64
 (/ (cos (* 2.0 x)) (* (pow c 2.0) (* (* x (pow s 2.0)) x))))
double code(double x, double c, double s) {
	return cos((2.0 * x)) / (pow(c, 2.0) * ((x * pow(s, 2.0)) * x));
}
real(8) function code(x, c, s)
    real(8), intent (in) :: x
    real(8), intent (in) :: c
    real(8), intent (in) :: s
    code = cos((2.0d0 * x)) / ((c ** 2.0d0) * ((x * (s ** 2.0d0)) * x))
end function
public static double code(double x, double c, double s) {
	return Math.cos((2.0 * x)) / (Math.pow(c, 2.0) * ((x * Math.pow(s, 2.0)) * x));
}
def code(x, c, s):
	return math.cos((2.0 * x)) / (math.pow(c, 2.0) * ((x * math.pow(s, 2.0)) * x))
function code(x, c, s)
	return Float64(cos(Float64(2.0 * x)) / Float64((c ^ 2.0) * Float64(Float64(x * (s ^ 2.0)) * x)))
end
function tmp = code(x, c, s)
	tmp = cos((2.0 * x)) / ((c ^ 2.0) * ((x * (s ^ 2.0)) * x));
end
code[x_, c_, s_] := N[(N[Cos[N[(2.0 * x), $MachinePrecision]], $MachinePrecision] / N[(N[Power[c, 2.0], $MachinePrecision] * N[(N[(x * N[Power[s, 2.0], $MachinePrecision]), $MachinePrecision] * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}
\end{array}

Alternative 1: 98.8% accurate, 2.3× speedup?

\[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\ \mathbf{if}\;x\_m \leq 3.2 \cdot 10^{-101}:\\ \;\;\;\;\frac{\frac{\frac{1}{\left(s\_m \cdot x\_m\right) \cdot c\_m}}{s\_m \cdot x\_m}}{c\_m}\\ \mathbf{else}:\\ \;\;\;\;\frac{\cos \left(x\_m + x\_m\right)}{t\_0 \cdot t\_0}\\ \end{array} \end{array} \]
s_m = (fabs.f64 s)
c_m = (fabs.f64 c)
x_m = (fabs.f64 x)
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
(FPCore (x_m c_m s_m)
 :precision binary64
 (let* ((t_0 (* (* c_m x_m) s_m)))
   (if (<= x_m 3.2e-101)
     (/ (/ (/ 1.0 (* (* s_m x_m) c_m)) (* s_m x_m)) c_m)
     (/ (cos (+ x_m x_m)) (* t_0 t_0)))))
s_m = fabs(s);
c_m = fabs(c);
x_m = fabs(x);
assert(x_m < c_m && c_m < s_m);
double code(double x_m, double c_m, double s_m) {
	double t_0 = (c_m * x_m) * s_m;
	double tmp;
	if (x_m <= 3.2e-101) {
		tmp = ((1.0 / ((s_m * x_m) * c_m)) / (s_m * x_m)) / c_m;
	} else {
		tmp = cos((x_m + x_m)) / (t_0 * t_0);
	}
	return tmp;
}
s_m = abs(s)
c_m = abs(c)
x_m = abs(x)
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
real(8) function code(x_m, c_m, s_m)
    real(8), intent (in) :: x_m
    real(8), intent (in) :: c_m
    real(8), intent (in) :: s_m
    real(8) :: t_0
    real(8) :: tmp
    t_0 = (c_m * x_m) * s_m
    if (x_m <= 3.2d-101) then
        tmp = ((1.0d0 / ((s_m * x_m) * c_m)) / (s_m * x_m)) / c_m
    else
        tmp = cos((x_m + x_m)) / (t_0 * t_0)
    end if
    code = tmp
end function
s_m = Math.abs(s);
c_m = Math.abs(c);
x_m = Math.abs(x);
assert x_m < c_m && c_m < s_m;
public static double code(double x_m, double c_m, double s_m) {
	double t_0 = (c_m * x_m) * s_m;
	double tmp;
	if (x_m <= 3.2e-101) {
		tmp = ((1.0 / ((s_m * x_m) * c_m)) / (s_m * x_m)) / c_m;
	} else {
		tmp = Math.cos((x_m + x_m)) / (t_0 * t_0);
	}
	return tmp;
}
s_m = math.fabs(s)
c_m = math.fabs(c)
x_m = math.fabs(x)
[x_m, c_m, s_m] = sort([x_m, c_m, s_m])
def code(x_m, c_m, s_m):
	t_0 = (c_m * x_m) * s_m
	tmp = 0
	if x_m <= 3.2e-101:
		tmp = ((1.0 / ((s_m * x_m) * c_m)) / (s_m * x_m)) / c_m
	else:
		tmp = math.cos((x_m + x_m)) / (t_0 * t_0)
	return tmp
s_m = abs(s)
c_m = abs(c)
x_m = abs(x)
x_m, c_m, s_m = sort([x_m, c_m, s_m])
function code(x_m, c_m, s_m)
	t_0 = Float64(Float64(c_m * x_m) * s_m)
	tmp = 0.0
	if (x_m <= 3.2e-101)
		tmp = Float64(Float64(Float64(1.0 / Float64(Float64(s_m * x_m) * c_m)) / Float64(s_m * x_m)) / c_m);
	else
		tmp = Float64(cos(Float64(x_m + x_m)) / Float64(t_0 * t_0));
	end
	return tmp
end
s_m = abs(s);
c_m = abs(c);
x_m = abs(x);
x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
function tmp_2 = code(x_m, c_m, s_m)
	t_0 = (c_m * x_m) * s_m;
	tmp = 0.0;
	if (x_m <= 3.2e-101)
		tmp = ((1.0 / ((s_m * x_m) * c_m)) / (s_m * x_m)) / c_m;
	else
		tmp = cos((x_m + x_m)) / (t_0 * t_0);
	end
	tmp_2 = tmp;
end
s_m = N[Abs[s], $MachinePrecision]
c_m = N[Abs[c], $MachinePrecision]
x_m = N[Abs[x], $MachinePrecision]
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
code[x$95$m_, c$95$m_, s$95$m_] := Block[{t$95$0 = N[(N[(c$95$m * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision]}, If[LessEqual[x$95$m, 3.2e-101], N[(N[(N[(1.0 / N[(N[(s$95$m * x$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]), $MachinePrecision] / N[(s$95$m * x$95$m), $MachinePrecision]), $MachinePrecision] / c$95$m), $MachinePrecision], N[(N[Cos[N[(x$95$m + x$95$m), $MachinePrecision]], $MachinePrecision] / N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
s_m = \left|s\right|
\\
c_m = \left|c\right|
\\
x_m = \left|x\right|
\\
[x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
\\
\begin{array}{l}
t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\
\mathbf{if}\;x\_m \leq 3.2 \cdot 10^{-101}:\\
\;\;\;\;\frac{\frac{\frac{1}{\left(s\_m \cdot x\_m\right) \cdot c\_m}}{s\_m \cdot x\_m}}{c\_m}\\

\mathbf{else}:\\
\;\;\;\;\frac{\cos \left(x\_m + x\_m\right)}{t\_0 \cdot t\_0}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x < 3.19999999999999978e-101

    1. Initial program 69.1%

      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \color{blue}{\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      3. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot {c}^{2}}} \]
      4. lift-pow.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{{c}^{2}}} \]
      5. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}} \]
      6. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c\right) \cdot c}} \]
      7. associate-/r*N/A

        \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
      8. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
    4. Applied rewrites87.3%

      \[\leadsto \color{blue}{\frac{\frac{\cos \left(x \cdot 2\right)}{{\left(x \cdot s\right)}^{2} \cdot c}}{c}} \]
    5. Taylor expanded in x around 0

      \[\leadsto \frac{\color{blue}{\frac{1}{c \cdot \left({s}^{2} \cdot {x}^{2}\right)}}}{c} \]
    6. Step-by-step derivation
      1. associate-/r*N/A

        \[\leadsto \frac{\color{blue}{\frac{\frac{1}{c}}{{s}^{2} \cdot {x}^{2}}}}{c} \]
      2. unpow2N/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot s\right)} \cdot {x}^{2}}}{c} \]
      3. unpow2N/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\left(s \cdot s\right) \cdot \color{blue}{\left(x \cdot x\right)}}}{c} \]
      4. unswap-sqrN/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot x\right) \cdot \left(s \cdot x\right)}}}{c} \]
      5. associate-/r*N/A

        \[\leadsto \frac{\color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{s \cdot x}}}{c} \]
      6. lower-/.f64N/A

        \[\leadsto \frac{\color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{s \cdot x}}}{c} \]
      7. associate-/l/N/A

        \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\left(s \cdot x\right) \cdot c}}}{s \cdot x}}{c} \]
      8. *-commutativeN/A

        \[\leadsto \frac{\frac{\frac{1}{\color{blue}{c \cdot \left(s \cdot x\right)}}}{s \cdot x}}{c} \]
      9. lower-/.f64N/A

        \[\leadsto \frac{\frac{\color{blue}{\frac{1}{c \cdot \left(s \cdot x\right)}}}{s \cdot x}}{c} \]
      10. *-commutativeN/A

        \[\leadsto \frac{\frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{s \cdot x}}{c} \]
      11. lower-*.f64N/A

        \[\leadsto \frac{\frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{s \cdot x}}{c} \]
      12. *-commutativeN/A

        \[\leadsto \frac{\frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{s \cdot x}}{c} \]
      13. lower-*.f64N/A

        \[\leadsto \frac{\frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{s \cdot x}}{c} \]
      14. *-commutativeN/A

        \[\leadsto \frac{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{x \cdot s}}}{c} \]
      15. lower-*.f6484.0

        \[\leadsto \frac{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{x \cdot s}}}{c} \]
    7. Applied rewrites84.0%

      \[\leadsto \frac{\color{blue}{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{x \cdot s}}}{c} \]

    if 3.19999999999999978e-101 < x

    1. Initial program 69.1%

      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in x around 0

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
    4. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
      2. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
      3. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
      4. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
      5. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
      6. unswap-sqrN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
      7. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
      8. unswap-sqrN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
      10. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      11. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      12. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      13. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
      14. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
      15. lower-*.f6498.4

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
    5. Applied rewrites98.4%

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
    6. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\cos \color{blue}{\left(2 \cdot x\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      2. count-2N/A

        \[\leadsto \frac{\cos \color{blue}{\left(x + x\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      3. lower-+.f6498.4

        \[\leadsto \frac{\cos \color{blue}{\left(x + x\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
    7. Applied rewrites98.4%

      \[\leadsto \frac{\cos \color{blue}{\left(x + x\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification88.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq 3.2 \cdot 10^{-101}:\\ \;\;\;\;\frac{\frac{\frac{1}{\left(s \cdot x\right) \cdot c}}{s \cdot x}}{c}\\ \mathbf{else}:\\ \;\;\;\;\frac{\cos \left(x + x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 82.7% accurate, 0.9× speedup?

\[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\ t_1 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\ \mathbf{if}\;\frac{\cos \left(2 \cdot x\_m\right)}{\left(\left({s\_m}^{2} \cdot x\_m\right) \cdot x\_m\right) \cdot {c\_m}^{2}} \leq -2000:\\ \;\;\;\;\frac{\mathsf{fma}\left(-2, x\_m \cdot x\_m, 1\right)}{t\_0 \cdot t\_0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{t\_1}}{t\_1}\\ \end{array} \end{array} \]
s_m = (fabs.f64 s)
c_m = (fabs.f64 c)
x_m = (fabs.f64 x)
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
(FPCore (x_m c_m s_m)
 :precision binary64
 (let* ((t_0 (* (* c_m x_m) s_m)) (t_1 (* (* s_m x_m) c_m)))
   (if (<=
        (/ (cos (* 2.0 x_m)) (* (* (* (pow s_m 2.0) x_m) x_m) (pow c_m 2.0)))
        -2000.0)
     (/ (fma -2.0 (* x_m x_m) 1.0) (* t_0 t_0))
     (/ (/ 1.0 t_1) t_1))))
s_m = fabs(s);
c_m = fabs(c);
x_m = fabs(x);
assert(x_m < c_m && c_m < s_m);
double code(double x_m, double c_m, double s_m) {
	double t_0 = (c_m * x_m) * s_m;
	double t_1 = (s_m * x_m) * c_m;
	double tmp;
	if ((cos((2.0 * x_m)) / (((pow(s_m, 2.0) * x_m) * x_m) * pow(c_m, 2.0))) <= -2000.0) {
		tmp = fma(-2.0, (x_m * x_m), 1.0) / (t_0 * t_0);
	} else {
		tmp = (1.0 / t_1) / t_1;
	}
	return tmp;
}
s_m = abs(s)
c_m = abs(c)
x_m = abs(x)
x_m, c_m, s_m = sort([x_m, c_m, s_m])
function code(x_m, c_m, s_m)
	t_0 = Float64(Float64(c_m * x_m) * s_m)
	t_1 = Float64(Float64(s_m * x_m) * c_m)
	tmp = 0.0
	if (Float64(cos(Float64(2.0 * x_m)) / Float64(Float64(Float64((s_m ^ 2.0) * x_m) * x_m) * (c_m ^ 2.0))) <= -2000.0)
		tmp = Float64(fma(-2.0, Float64(x_m * x_m), 1.0) / Float64(t_0 * t_0));
	else
		tmp = Float64(Float64(1.0 / t_1) / t_1);
	end
	return tmp
end
s_m = N[Abs[s], $MachinePrecision]
c_m = N[Abs[c], $MachinePrecision]
x_m = N[Abs[x], $MachinePrecision]
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
code[x$95$m_, c$95$m_, s$95$m_] := Block[{t$95$0 = N[(N[(c$95$m * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision]}, Block[{t$95$1 = N[(N[(s$95$m * x$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]}, If[LessEqual[N[(N[Cos[N[(2.0 * x$95$m), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[Power[s$95$m, 2.0], $MachinePrecision] * x$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * N[Power[c$95$m, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -2000.0], N[(N[(-2.0 * N[(x$95$m * x$95$m), $MachinePrecision] + 1.0), $MachinePrecision] / N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / t$95$1), $MachinePrecision] / t$95$1), $MachinePrecision]]]]
\begin{array}{l}
s_m = \left|s\right|
\\
c_m = \left|c\right|
\\
x_m = \left|x\right|
\\
[x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
\\
\begin{array}{l}
t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\
t_1 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\
\mathbf{if}\;\frac{\cos \left(2 \cdot x\_m\right)}{\left(\left({s\_m}^{2} \cdot x\_m\right) \cdot x\_m\right) \cdot {c\_m}^{2}} \leq -2000:\\
\;\;\;\;\frac{\mathsf{fma}\left(-2, x\_m \cdot x\_m, 1\right)}{t\_0 \cdot t\_0}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{t\_1}}{t\_1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (/.f64 (cos.f64 (*.f64 #s(literal 2 binary64) x)) (*.f64 (pow.f64 c #s(literal 2 binary64)) (*.f64 (*.f64 x (pow.f64 s #s(literal 2 binary64))) x))) < -2e3

    1. Initial program 72.8%

      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
    2. Add Preprocessing
    3. Taylor expanded in x around 0

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
    4. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
      2. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
      3. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
      4. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
      5. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
      6. unswap-sqrN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
      7. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
      8. unswap-sqrN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
      10. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      11. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      12. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
      13. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
      14. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
      15. lower-*.f6499.6

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
    5. Applied rewrites99.6%

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
    6. Taylor expanded in x around 0

      \[\leadsto \frac{\color{blue}{1 + -2 \cdot {x}^{2}}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
    7. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \frac{\color{blue}{-2 \cdot {x}^{2} + 1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      2. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(-2, {x}^{2}, 1\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      3. unpow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(-2, \color{blue}{x \cdot x}, 1\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      4. lower-*.f6453.2

        \[\leadsto \frac{\mathsf{fma}\left(-2, \color{blue}{x \cdot x}, 1\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
    8. Applied rewrites53.2%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(-2, x \cdot x, 1\right)}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]

    if -2e3 < (/.f64 (cos.f64 (*.f64 #s(literal 2 binary64) x)) (*.f64 (pow.f64 c #s(literal 2 binary64)) (*.f64 (*.f64 x (pow.f64 s #s(literal 2 binary64))) x)))

    1. Initial program 68.9%

      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \color{blue}{\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      3. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot {c}^{2}}} \]
      4. lift-pow.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{{c}^{2}}} \]
      5. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}} \]
      6. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c\right) \cdot c}} \]
      7. associate-/r*N/A

        \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
      8. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
    4. Applied rewrites85.8%

      \[\leadsto \color{blue}{\frac{\frac{\cos \left(x \cdot 2\right)}{{\left(x \cdot s\right)}^{2} \cdot c}}{c}} \]
    5. Taylor expanded in x around 0

      \[\leadsto \color{blue}{\frac{1}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
    6. Step-by-step derivation
      1. unpow2N/A

        \[\leadsto \frac{1}{\color{blue}{\left(c \cdot c\right)} \cdot \left({s}^{2} \cdot {x}^{2}\right)} \]
      2. associate-*l*N/A

        \[\leadsto \frac{1}{\color{blue}{c \cdot \left(c \cdot \left({s}^{2} \cdot {x}^{2}\right)\right)}} \]
      3. associate-/l/N/A

        \[\leadsto \color{blue}{\frac{\frac{1}{c \cdot \left({s}^{2} \cdot {x}^{2}\right)}}{c}} \]
      4. associate-/r*N/A

        \[\leadsto \frac{\color{blue}{\frac{\frac{1}{c}}{{s}^{2} \cdot {x}^{2}}}}{c} \]
      5. unpow2N/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot s\right)} \cdot {x}^{2}}}{c} \]
      6. unpow2N/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\left(s \cdot s\right) \cdot \color{blue}{\left(x \cdot x\right)}}}{c} \]
      7. unswap-sqrN/A

        \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot x\right) \cdot \left(s \cdot x\right)}}}{c} \]
      8. associate-/r*N/A

        \[\leadsto \frac{\color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{s \cdot x}}}{c} \]
      9. associate-/l/N/A

        \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
      10. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
      11. associate-/l/N/A

        \[\leadsto \frac{\color{blue}{\frac{1}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
      12. *-commutativeN/A

        \[\leadsto \frac{\frac{1}{\color{blue}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
      13. lower-/.f64N/A

        \[\leadsto \frac{\color{blue}{\frac{1}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
      14. *-commutativeN/A

        \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
      15. lower-*.f64N/A

        \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
      16. *-commutativeN/A

        \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
      17. lower-*.f64N/A

        \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
      18. *-commutativeN/A

        \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
      19. lower-*.f64N/A

        \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
      20. *-commutativeN/A

        \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
      21. lower-*.f6486.5

        \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
    7. Applied rewrites86.5%

      \[\leadsto \color{blue}{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\left(x \cdot s\right) \cdot c}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification84.7%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\cos \left(2 \cdot x\right)}{\left(\left({s}^{2} \cdot x\right) \cdot x\right) \cdot {c}^{2}} \leq -2000:\\ \;\;\;\;\frac{\mathsf{fma}\left(-2, x \cdot x, 1\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\left(s \cdot x\right) \cdot c}}{\left(s \cdot x\right) \cdot c}\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 82.7% accurate, 0.9× speedup?

\[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} t_0 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\ \mathbf{if}\;\frac{\cos \left(2 \cdot x\_m\right)}{\left(\left({s\_m}^{2} \cdot x\_m\right) \cdot x\_m\right) \cdot {c\_m}^{2}} \leq -2000:\\ \;\;\;\;\frac{\left(x\_m \cdot x\_m\right) \cdot -2}{\left(\left(\left(c\_m \cdot c\_m\right) \cdot x\_m\right) \cdot \left(s\_m \cdot x\_m\right)\right) \cdot s\_m}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{t\_0}}{t\_0}\\ \end{array} \end{array} \]
s_m = (fabs.f64 s)
c_m = (fabs.f64 c)
x_m = (fabs.f64 x)
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
(FPCore (x_m c_m s_m)
 :precision binary64
 (let* ((t_0 (* (* s_m x_m) c_m)))
   (if (<=
        (/ (cos (* 2.0 x_m)) (* (* (* (pow s_m 2.0) x_m) x_m) (pow c_m 2.0)))
        -2000.0)
     (/ (* (* x_m x_m) -2.0) (* (* (* (* c_m c_m) x_m) (* s_m x_m)) s_m))
     (/ (/ 1.0 t_0) t_0))))
s_m = fabs(s);
c_m = fabs(c);
x_m = fabs(x);
assert(x_m < c_m && c_m < s_m);
double code(double x_m, double c_m, double s_m) {
	double t_0 = (s_m * x_m) * c_m;
	double tmp;
	if ((cos((2.0 * x_m)) / (((pow(s_m, 2.0) * x_m) * x_m) * pow(c_m, 2.0))) <= -2000.0) {
		tmp = ((x_m * x_m) * -2.0) / ((((c_m * c_m) * x_m) * (s_m * x_m)) * s_m);
	} else {
		tmp = (1.0 / t_0) / t_0;
	}
	return tmp;
}
s_m = abs(s)
c_m = abs(c)
x_m = abs(x)
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
real(8) function code(x_m, c_m, s_m)
    real(8), intent (in) :: x_m
    real(8), intent (in) :: c_m
    real(8), intent (in) :: s_m
    real(8) :: t_0
    real(8) :: tmp
    t_0 = (s_m * x_m) * c_m
    if ((cos((2.0d0 * x_m)) / ((((s_m ** 2.0d0) * x_m) * x_m) * (c_m ** 2.0d0))) <= (-2000.0d0)) then
        tmp = ((x_m * x_m) * (-2.0d0)) / ((((c_m * c_m) * x_m) * (s_m * x_m)) * s_m)
    else
        tmp = (1.0d0 / t_0) / t_0
    end if
    code = tmp
end function
s_m = Math.abs(s);
c_m = Math.abs(c);
x_m = Math.abs(x);
assert x_m < c_m && c_m < s_m;
public static double code(double x_m, double c_m, double s_m) {
	double t_0 = (s_m * x_m) * c_m;
	double tmp;
	if ((Math.cos((2.0 * x_m)) / (((Math.pow(s_m, 2.0) * x_m) * x_m) * Math.pow(c_m, 2.0))) <= -2000.0) {
		tmp = ((x_m * x_m) * -2.0) / ((((c_m * c_m) * x_m) * (s_m * x_m)) * s_m);
	} else {
		tmp = (1.0 / t_0) / t_0;
	}
	return tmp;
}
s_m = math.fabs(s)
c_m = math.fabs(c)
x_m = math.fabs(x)
[x_m, c_m, s_m] = sort([x_m, c_m, s_m])
def code(x_m, c_m, s_m):
	t_0 = (s_m * x_m) * c_m
	tmp = 0
	if (math.cos((2.0 * x_m)) / (((math.pow(s_m, 2.0) * x_m) * x_m) * math.pow(c_m, 2.0))) <= -2000.0:
		tmp = ((x_m * x_m) * -2.0) / ((((c_m * c_m) * x_m) * (s_m * x_m)) * s_m)
	else:
		tmp = (1.0 / t_0) / t_0
	return tmp
s_m = abs(s)
c_m = abs(c)
x_m = abs(x)
x_m, c_m, s_m = sort([x_m, c_m, s_m])
function code(x_m, c_m, s_m)
	t_0 = Float64(Float64(s_m * x_m) * c_m)
	tmp = 0.0
	if (Float64(cos(Float64(2.0 * x_m)) / Float64(Float64(Float64((s_m ^ 2.0) * x_m) * x_m) * (c_m ^ 2.0))) <= -2000.0)
		tmp = Float64(Float64(Float64(x_m * x_m) * -2.0) / Float64(Float64(Float64(Float64(c_m * c_m) * x_m) * Float64(s_m * x_m)) * s_m));
	else
		tmp = Float64(Float64(1.0 / t_0) / t_0);
	end
	return tmp
end
s_m = abs(s);
c_m = abs(c);
x_m = abs(x);
x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
function tmp_2 = code(x_m, c_m, s_m)
	t_0 = (s_m * x_m) * c_m;
	tmp = 0.0;
	if ((cos((2.0 * x_m)) / ((((s_m ^ 2.0) * x_m) * x_m) * (c_m ^ 2.0))) <= -2000.0)
		tmp = ((x_m * x_m) * -2.0) / ((((c_m * c_m) * x_m) * (s_m * x_m)) * s_m);
	else
		tmp = (1.0 / t_0) / t_0;
	end
	tmp_2 = tmp;
end
s_m = N[Abs[s], $MachinePrecision]
c_m = N[Abs[c], $MachinePrecision]
x_m = N[Abs[x], $MachinePrecision]
NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
code[x$95$m_, c$95$m_, s$95$m_] := Block[{t$95$0 = N[(N[(s$95$m * x$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]}, If[LessEqual[N[(N[Cos[N[(2.0 * x$95$m), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[Power[s$95$m, 2.0], $MachinePrecision] * x$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * N[Power[c$95$m, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -2000.0], N[(N[(N[(x$95$m * x$95$m), $MachinePrecision] * -2.0), $MachinePrecision] / N[(N[(N[(N[(c$95$m * c$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * N[(s$95$m * x$95$m), $MachinePrecision]), $MachinePrecision] * s$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / t$95$0), $MachinePrecision] / t$95$0), $MachinePrecision]]]
\begin{array}{l}
s_m = \left|s\right|
\\
c_m = \left|c\right|
\\
x_m = \left|x\right|
\\
[x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
\\
\begin{array}{l}
t_0 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\
\mathbf{if}\;\frac{\cos \left(2 \cdot x\_m\right)}{\left(\left({s\_m}^{2} \cdot x\_m\right) \cdot x\_m\right) \cdot {c\_m}^{2}} \leq -2000:\\
\;\;\;\;\frac{\left(x\_m \cdot x\_m\right) \cdot -2}{\left(\left(\left(c\_m \cdot c\_m\right) \cdot x\_m\right) \cdot \left(s\_m \cdot x\_m\right)\right) \cdot s\_m}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{t\_0}}{t\_0}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (/.f64 (cos.f64 (*.f64 #s(literal 2 binary64) x)) (*.f64 (pow.f64 c #s(literal 2 binary64)) (*.f64 (*.f64 x (pow.f64 s #s(literal 2 binary64))) x))) < -2e3

    1. Initial program 72.8%

      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
      3. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left(x \cdot \left(x \cdot {s}^{2}\right)\right)}} \]
      4. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot x\right) \cdot \left(x \cdot {s}^{2}\right)}} \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left({c}^{2} \cdot x\right) \cdot \color{blue}{\left(x \cdot {s}^{2}\right)}} \]
      6. lift-pow.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left({c}^{2} \cdot x\right) \cdot \left(x \cdot \color{blue}{{s}^{2}}\right)} \]
      7. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left({c}^{2} \cdot x\right) \cdot \left(x \cdot \color{blue}{\left(s \cdot s\right)}\right)} \]
      8. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left({c}^{2} \cdot x\right) \cdot \color{blue}{\left(\left(x \cdot s\right) \cdot s\right)}} \]
      9. associate-*r*N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left({c}^{2} \cdot x\right) \cdot \left(x \cdot s\right)\right) \cdot s}} \]
      10. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left({c}^{2} \cdot x\right) \cdot \left(x \cdot s\right)\right) \cdot s}} \]
      11. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left({c}^{2} \cdot x\right) \cdot \color{blue}{\left(s \cdot x\right)}\right) \cdot s} \]
      12. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left({c}^{2} \cdot x\right) \cdot \left(s \cdot x\right)\right)} \cdot s} \]
      13. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot {c}^{2}\right)} \cdot \left(s \cdot x\right)\right) \cdot s} \]
      14. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot {c}^{2}\right)} \cdot \left(s \cdot x\right)\right) \cdot s} \]
      15. lift-pow.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot \color{blue}{{c}^{2}}\right) \cdot \left(s \cdot x\right)\right) \cdot s} \]
      16. unpow2N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot \left(s \cdot x\right)\right) \cdot s} \]
      17. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot \left(s \cdot x\right)\right) \cdot s} \]
      18. *-commutativeN/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \color{blue}{\left(x \cdot s\right)}\right) \cdot s} \]
      19. lower-*.f6479.4

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \color{blue}{\left(x \cdot s\right)}\right) \cdot s} \]
    4. Applied rewrites79.4%

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s}} \]
    5. Taylor expanded in x around 0

      \[\leadsto \frac{\color{blue}{1 + -2 \cdot {x}^{2}}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
    6. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \frac{\color{blue}{-2 \cdot {x}^{2} + 1}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
      2. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(-2, {x}^{2}, 1\right)}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
      3. unpow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(-2, \color{blue}{x \cdot x}, 1\right)}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
      4. lower-*.f6453.2

        \[\leadsto \frac{\mathsf{fma}\left(-2, \color{blue}{x \cdot x}, 1\right)}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
    7. Applied rewrites53.2%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(-2, x \cdot x, 1\right)}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
    8. Taylor expanded in x around inf

      \[\leadsto \frac{-2 \cdot \color{blue}{{x}^{2}}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]
    9. Step-by-step derivation
      1. Applied rewrites53.2%

        \[\leadsto \frac{-2 \cdot \color{blue}{\left(x \cdot x\right)}}{\left(\left(x \cdot \left(c \cdot c\right)\right) \cdot \left(x \cdot s\right)\right) \cdot s} \]

      if -2e3 < (/.f64 (cos.f64 (*.f64 #s(literal 2 binary64) x)) (*.f64 (pow.f64 c #s(literal 2 binary64)) (*.f64 (*.f64 x (pow.f64 s #s(literal 2 binary64))) x)))

      1. Initial program 68.9%

        \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto \color{blue}{\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
        2. lift-*.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
        3. *-commutativeN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot {c}^{2}}} \]
        4. lift-pow.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{{c}^{2}}} \]
        5. unpow2N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}} \]
        6. associate-*r*N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c\right) \cdot c}} \]
        7. associate-/r*N/A

          \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
        8. lower-/.f64N/A

          \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
      4. Applied rewrites85.8%

        \[\leadsto \color{blue}{\frac{\frac{\cos \left(x \cdot 2\right)}{{\left(x \cdot s\right)}^{2} \cdot c}}{c}} \]
      5. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\frac{1}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
      6. Step-by-step derivation
        1. unpow2N/A

          \[\leadsto \frac{1}{\color{blue}{\left(c \cdot c\right)} \cdot \left({s}^{2} \cdot {x}^{2}\right)} \]
        2. associate-*l*N/A

          \[\leadsto \frac{1}{\color{blue}{c \cdot \left(c \cdot \left({s}^{2} \cdot {x}^{2}\right)\right)}} \]
        3. associate-/l/N/A

          \[\leadsto \color{blue}{\frac{\frac{1}{c \cdot \left({s}^{2} \cdot {x}^{2}\right)}}{c}} \]
        4. associate-/r*N/A

          \[\leadsto \frac{\color{blue}{\frac{\frac{1}{c}}{{s}^{2} \cdot {x}^{2}}}}{c} \]
        5. unpow2N/A

          \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot s\right)} \cdot {x}^{2}}}{c} \]
        6. unpow2N/A

          \[\leadsto \frac{\frac{\frac{1}{c}}{\left(s \cdot s\right) \cdot \color{blue}{\left(x \cdot x\right)}}}{c} \]
        7. unswap-sqrN/A

          \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot x\right) \cdot \left(s \cdot x\right)}}}{c} \]
        8. associate-/r*N/A

          \[\leadsto \frac{\color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{s \cdot x}}}{c} \]
        9. associate-/l/N/A

          \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
        10. lower-/.f64N/A

          \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
        11. associate-/l/N/A

          \[\leadsto \frac{\color{blue}{\frac{1}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
        12. *-commutativeN/A

          \[\leadsto \frac{\frac{1}{\color{blue}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
        13. lower-/.f64N/A

          \[\leadsto \frac{\color{blue}{\frac{1}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
        14. *-commutativeN/A

          \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
        15. lower-*.f64N/A

          \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
        16. *-commutativeN/A

          \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
        17. lower-*.f64N/A

          \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
        18. *-commutativeN/A

          \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
        19. lower-*.f64N/A

          \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
        20. *-commutativeN/A

          \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
        21. lower-*.f6486.5

          \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
      7. Applied rewrites86.5%

        \[\leadsto \color{blue}{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\left(x \cdot s\right) \cdot c}} \]
    10. Recombined 2 regimes into one program.
    11. Final simplification84.7%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\cos \left(2 \cdot x\right)}{\left(\left({s}^{2} \cdot x\right) \cdot x\right) \cdot {c}^{2}} \leq -2000:\\ \;\;\;\;\frac{\left(x \cdot x\right) \cdot -2}{\left(\left(\left(c \cdot c\right) \cdot x\right) \cdot \left(s \cdot x\right)\right) \cdot s}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\left(s \cdot x\right) \cdot c}}{\left(s \cdot x\right) \cdot c}\\ \end{array} \]
    12. Add Preprocessing

    Alternative 4: 77.4% accurate, 7.8× speedup?

    \[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} \mathbf{if}\;x\_m \leq 1.3 \cdot 10^{-208}:\\ \;\;\;\;\frac{1}{\left(\left(s\_m \cdot x\_m\right) \cdot \left(s\_m \cdot x\_m\right)\right) \cdot \left(c\_m \cdot c\_m\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(\left(\left(\left(c\_m \cdot s\_m\right) \cdot x\_m\right) \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m}\\ \end{array} \end{array} \]
    s_m = (fabs.f64 s)
    c_m = (fabs.f64 c)
    x_m = (fabs.f64 x)
    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
    (FPCore (x_m c_m s_m)
     :precision binary64
     (if (<= x_m 1.3e-208)
       (/ 1.0 (* (* (* s_m x_m) (* s_m x_m)) (* c_m c_m)))
       (/ 1.0 (* (* (* (* (* c_m s_m) x_m) x_m) s_m) c_m))))
    s_m = fabs(s);
    c_m = fabs(c);
    x_m = fabs(x);
    assert(x_m < c_m && c_m < s_m);
    double code(double x_m, double c_m, double s_m) {
    	double tmp;
    	if (x_m <= 1.3e-208) {
    		tmp = 1.0 / (((s_m * x_m) * (s_m * x_m)) * (c_m * c_m));
    	} else {
    		tmp = 1.0 / (((((c_m * s_m) * x_m) * x_m) * s_m) * c_m);
    	}
    	return tmp;
    }
    
    s_m = abs(s)
    c_m = abs(c)
    x_m = abs(x)
    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
    real(8) function code(x_m, c_m, s_m)
        real(8), intent (in) :: x_m
        real(8), intent (in) :: c_m
        real(8), intent (in) :: s_m
        real(8) :: tmp
        if (x_m <= 1.3d-208) then
            tmp = 1.0d0 / (((s_m * x_m) * (s_m * x_m)) * (c_m * c_m))
        else
            tmp = 1.0d0 / (((((c_m * s_m) * x_m) * x_m) * s_m) * c_m)
        end if
        code = tmp
    end function
    
    s_m = Math.abs(s);
    c_m = Math.abs(c);
    x_m = Math.abs(x);
    assert x_m < c_m && c_m < s_m;
    public static double code(double x_m, double c_m, double s_m) {
    	double tmp;
    	if (x_m <= 1.3e-208) {
    		tmp = 1.0 / (((s_m * x_m) * (s_m * x_m)) * (c_m * c_m));
    	} else {
    		tmp = 1.0 / (((((c_m * s_m) * x_m) * x_m) * s_m) * c_m);
    	}
    	return tmp;
    }
    
    s_m = math.fabs(s)
    c_m = math.fabs(c)
    x_m = math.fabs(x)
    [x_m, c_m, s_m] = sort([x_m, c_m, s_m])
    def code(x_m, c_m, s_m):
    	tmp = 0
    	if x_m <= 1.3e-208:
    		tmp = 1.0 / (((s_m * x_m) * (s_m * x_m)) * (c_m * c_m))
    	else:
    		tmp = 1.0 / (((((c_m * s_m) * x_m) * x_m) * s_m) * c_m)
    	return tmp
    
    s_m = abs(s)
    c_m = abs(c)
    x_m = abs(x)
    x_m, c_m, s_m = sort([x_m, c_m, s_m])
    function code(x_m, c_m, s_m)
    	tmp = 0.0
    	if (x_m <= 1.3e-208)
    		tmp = Float64(1.0 / Float64(Float64(Float64(s_m * x_m) * Float64(s_m * x_m)) * Float64(c_m * c_m)));
    	else
    		tmp = Float64(1.0 / Float64(Float64(Float64(Float64(Float64(c_m * s_m) * x_m) * x_m) * s_m) * c_m));
    	end
    	return tmp
    end
    
    s_m = abs(s);
    c_m = abs(c);
    x_m = abs(x);
    x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
    function tmp_2 = code(x_m, c_m, s_m)
    	tmp = 0.0;
    	if (x_m <= 1.3e-208)
    		tmp = 1.0 / (((s_m * x_m) * (s_m * x_m)) * (c_m * c_m));
    	else
    		tmp = 1.0 / (((((c_m * s_m) * x_m) * x_m) * s_m) * c_m);
    	end
    	tmp_2 = tmp;
    end
    
    s_m = N[Abs[s], $MachinePrecision]
    c_m = N[Abs[c], $MachinePrecision]
    x_m = N[Abs[x], $MachinePrecision]
    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
    code[x$95$m_, c$95$m_, s$95$m_] := If[LessEqual[x$95$m, 1.3e-208], N[(1.0 / N[(N[(N[(s$95$m * x$95$m), $MachinePrecision] * N[(s$95$m * x$95$m), $MachinePrecision]), $MachinePrecision] * N[(c$95$m * c$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 / N[(N[(N[(N[(N[(c$95$m * s$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]), $MachinePrecision]]
    
    \begin{array}{l}
    s_m = \left|s\right|
    \\
    c_m = \left|c\right|
    \\
    x_m = \left|x\right|
    \\
    [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
    \\
    \begin{array}{l}
    \mathbf{if}\;x\_m \leq 1.3 \cdot 10^{-208}:\\
    \;\;\;\;\frac{1}{\left(\left(s\_m \cdot x\_m\right) \cdot \left(s\_m \cdot x\_m\right)\right) \cdot \left(c\_m \cdot c\_m\right)}\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{1}{\left(\left(\left(\left(c\_m \cdot s\_m\right) \cdot x\_m\right) \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if x < 1.30000000000000008e-208

      1. Initial program 69.1%

        \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
      4. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
        2. associate-*r*N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
        3. *-commutativeN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
        4. unpow2N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
        5. unpow2N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
        6. unswap-sqrN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
        7. unpow2N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
        8. unswap-sqrN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
        9. lower-*.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
        10. lower-*.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
        11. *-commutativeN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
        12. lower-*.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
        13. lower-*.f64N/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
        14. *-commutativeN/A

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
        15. lower-*.f6497.8

          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
      5. Applied rewrites97.8%

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
      6. Taylor expanded in x around 0

        \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
      7. Step-by-step derivation
        1. Applied rewrites84.4%

          \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
        2. Step-by-step derivation
          1. Applied rewrites70.9%

            \[\leadsto \frac{1}{\left(c \cdot c\right) \cdot \color{blue}{\left(\left(s \cdot x\right) \cdot \left(s \cdot x\right)\right)}} \]

          if 1.30000000000000008e-208 < x

          1. Initial program 69.1%

            \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
          2. Add Preprocessing
          3. Taylor expanded in x around 0

            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
            2. associate-*r*N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
            3. *-commutativeN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
            4. unpow2N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
            5. unpow2N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
            6. unswap-sqrN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
            7. unpow2N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
            8. unswap-sqrN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
            9. lower-*.f64N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
            10. lower-*.f64N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
            11. *-commutativeN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
            12. lower-*.f64N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
            13. lower-*.f64N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
            14. *-commutativeN/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
            15. lower-*.f6498.6

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
          5. Applied rewrites98.6%

            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
          6. Taylor expanded in x around 0

            \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
          7. Step-by-step derivation
            1. Applied rewrites78.9%

              \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
            2. Step-by-step derivation
              1. Applied rewrites73.8%

                \[\leadsto \frac{1}{c \cdot \color{blue}{\left(s \cdot \left(\left(\left(c \cdot x\right) \cdot s\right) \cdot x\right)\right)}} \]
              2. Step-by-step derivation
                1. Applied rewrites73.7%

                  \[\leadsto \frac{1}{c \cdot \left(s \cdot \left(\left(\left(s \cdot c\right) \cdot x\right) \cdot x\right)\right)} \]
              3. Recombined 2 regimes into one program.
              4. Final simplification72.1%

                \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq 1.3 \cdot 10^{-208}:\\ \;\;\;\;\frac{1}{\left(\left(s \cdot x\right) \cdot \left(s \cdot x\right)\right) \cdot \left(c \cdot c\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\left(\left(\left(\left(c \cdot s\right) \cdot x\right) \cdot x\right) \cdot s\right) \cdot c}\\ \end{array} \]
              5. Add Preprocessing

              Alternative 5: 79.2% accurate, 7.8× speedup?

              \[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} t_0 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\ \frac{\frac{1}{t\_0}}{t\_0} \end{array} \end{array} \]
              s_m = (fabs.f64 s)
              c_m = (fabs.f64 c)
              x_m = (fabs.f64 x)
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              (FPCore (x_m c_m s_m)
               :precision binary64
               (let* ((t_0 (* (* s_m x_m) c_m))) (/ (/ 1.0 t_0) t_0)))
              s_m = fabs(s);
              c_m = fabs(c);
              x_m = fabs(x);
              assert(x_m < c_m && c_m < s_m);
              double code(double x_m, double c_m, double s_m) {
              	double t_0 = (s_m * x_m) * c_m;
              	return (1.0 / t_0) / t_0;
              }
              
              s_m = abs(s)
              c_m = abs(c)
              x_m = abs(x)
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              real(8) function code(x_m, c_m, s_m)
                  real(8), intent (in) :: x_m
                  real(8), intent (in) :: c_m
                  real(8), intent (in) :: s_m
                  real(8) :: t_0
                  t_0 = (s_m * x_m) * c_m
                  code = (1.0d0 / t_0) / t_0
              end function
              
              s_m = Math.abs(s);
              c_m = Math.abs(c);
              x_m = Math.abs(x);
              assert x_m < c_m && c_m < s_m;
              public static double code(double x_m, double c_m, double s_m) {
              	double t_0 = (s_m * x_m) * c_m;
              	return (1.0 / t_0) / t_0;
              }
              
              s_m = math.fabs(s)
              c_m = math.fabs(c)
              x_m = math.fabs(x)
              [x_m, c_m, s_m] = sort([x_m, c_m, s_m])
              def code(x_m, c_m, s_m):
              	t_0 = (s_m * x_m) * c_m
              	return (1.0 / t_0) / t_0
              
              s_m = abs(s)
              c_m = abs(c)
              x_m = abs(x)
              x_m, c_m, s_m = sort([x_m, c_m, s_m])
              function code(x_m, c_m, s_m)
              	t_0 = Float64(Float64(s_m * x_m) * c_m)
              	return Float64(Float64(1.0 / t_0) / t_0)
              end
              
              s_m = abs(s);
              c_m = abs(c);
              x_m = abs(x);
              x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
              function tmp = code(x_m, c_m, s_m)
              	t_0 = (s_m * x_m) * c_m;
              	tmp = (1.0 / t_0) / t_0;
              end
              
              s_m = N[Abs[s], $MachinePrecision]
              c_m = N[Abs[c], $MachinePrecision]
              x_m = N[Abs[x], $MachinePrecision]
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              code[x$95$m_, c$95$m_, s$95$m_] := Block[{t$95$0 = N[(N[(s$95$m * x$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]}, N[(N[(1.0 / t$95$0), $MachinePrecision] / t$95$0), $MachinePrecision]]
              
              \begin{array}{l}
              s_m = \left|s\right|
              \\
              c_m = \left|c\right|
              \\
              x_m = \left|x\right|
              \\
              [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
              \\
              \begin{array}{l}
              t_0 := \left(s\_m \cdot x\_m\right) \cdot c\_m\\
              \frac{\frac{1}{t\_0}}{t\_0}
              \end{array}
              \end{array}
              
              Derivation
              1. Initial program 69.1%

                \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift-/.f64N/A

                  \[\leadsto \color{blue}{\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
                2. lift-*.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)}} \]
                3. *-commutativeN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot {c}^{2}}} \]
                4. lift-pow.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{{c}^{2}}} \]
                5. unpow2N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}} \]
                6. associate-*r*N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c\right) \cdot c}} \]
                7. associate-/r*N/A

                  \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
                8. lower-/.f64N/A

                  \[\leadsto \color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot {s}^{2}\right) \cdot x\right) \cdot c}}{c}} \]
              4. Applied rewrites86.6%

                \[\leadsto \color{blue}{\frac{\frac{\cos \left(x \cdot 2\right)}{{\left(x \cdot s\right)}^{2} \cdot c}}{c}} \]
              5. Taylor expanded in x around 0

                \[\leadsto \color{blue}{\frac{1}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
              6. Step-by-step derivation
                1. unpow2N/A

                  \[\leadsto \frac{1}{\color{blue}{\left(c \cdot c\right)} \cdot \left({s}^{2} \cdot {x}^{2}\right)} \]
                2. associate-*l*N/A

                  \[\leadsto \frac{1}{\color{blue}{c \cdot \left(c \cdot \left({s}^{2} \cdot {x}^{2}\right)\right)}} \]
                3. associate-/l/N/A

                  \[\leadsto \color{blue}{\frac{\frac{1}{c \cdot \left({s}^{2} \cdot {x}^{2}\right)}}{c}} \]
                4. associate-/r*N/A

                  \[\leadsto \frac{\color{blue}{\frac{\frac{1}{c}}{{s}^{2} \cdot {x}^{2}}}}{c} \]
                5. unpow2N/A

                  \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot s\right)} \cdot {x}^{2}}}{c} \]
                6. unpow2N/A

                  \[\leadsto \frac{\frac{\frac{1}{c}}{\left(s \cdot s\right) \cdot \color{blue}{\left(x \cdot x\right)}}}{c} \]
                7. unswap-sqrN/A

                  \[\leadsto \frac{\frac{\frac{1}{c}}{\color{blue}{\left(s \cdot x\right) \cdot \left(s \cdot x\right)}}}{c} \]
                8. associate-/r*N/A

                  \[\leadsto \frac{\color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{s \cdot x}}}{c} \]
                9. associate-/l/N/A

                  \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
                10. lower-/.f64N/A

                  \[\leadsto \color{blue}{\frac{\frac{\frac{1}{c}}{s \cdot x}}{c \cdot \left(s \cdot x\right)}} \]
                11. associate-/l/N/A

                  \[\leadsto \frac{\color{blue}{\frac{1}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
                12. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{\color{blue}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
                13. lower-/.f64N/A

                  \[\leadsto \frac{\color{blue}{\frac{1}{c \cdot \left(s \cdot x\right)}}}{c \cdot \left(s \cdot x\right)} \]
                14. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
                15. lower-*.f64N/A

                  \[\leadsto \frac{\frac{1}{\color{blue}{\left(s \cdot x\right) \cdot c}}}{c \cdot \left(s \cdot x\right)} \]
                16. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
                17. lower-*.f64N/A

                  \[\leadsto \frac{\frac{1}{\color{blue}{\left(x \cdot s\right)} \cdot c}}{c \cdot \left(s \cdot x\right)} \]
                18. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
                19. lower-*.f64N/A

                  \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(s \cdot x\right) \cdot c}} \]
                20. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
                21. lower-*.f6481.8

                  \[\leadsto \frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\color{blue}{\left(x \cdot s\right)} \cdot c} \]
              7. Applied rewrites81.8%

                \[\leadsto \color{blue}{\frac{\frac{1}{\left(x \cdot s\right) \cdot c}}{\left(x \cdot s\right) \cdot c}} \]
              8. Final simplification81.8%

                \[\leadsto \frac{\frac{1}{\left(s \cdot x\right) \cdot c}}{\left(s \cdot x\right) \cdot c} \]
              9. Add Preprocessing

              Alternative 6: 77.1% accurate, 9.0× speedup?

              \[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \begin{array}{l} t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\ \frac{1}{t\_0 \cdot t\_0} \end{array} \end{array} \]
              s_m = (fabs.f64 s)
              c_m = (fabs.f64 c)
              x_m = (fabs.f64 x)
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              (FPCore (x_m c_m s_m)
               :precision binary64
               (let* ((t_0 (* (* c_m x_m) s_m))) (/ 1.0 (* t_0 t_0))))
              s_m = fabs(s);
              c_m = fabs(c);
              x_m = fabs(x);
              assert(x_m < c_m && c_m < s_m);
              double code(double x_m, double c_m, double s_m) {
              	double t_0 = (c_m * x_m) * s_m;
              	return 1.0 / (t_0 * t_0);
              }
              
              s_m = abs(s)
              c_m = abs(c)
              x_m = abs(x)
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              real(8) function code(x_m, c_m, s_m)
                  real(8), intent (in) :: x_m
                  real(8), intent (in) :: c_m
                  real(8), intent (in) :: s_m
                  real(8) :: t_0
                  t_0 = (c_m * x_m) * s_m
                  code = 1.0d0 / (t_0 * t_0)
              end function
              
              s_m = Math.abs(s);
              c_m = Math.abs(c);
              x_m = Math.abs(x);
              assert x_m < c_m && c_m < s_m;
              public static double code(double x_m, double c_m, double s_m) {
              	double t_0 = (c_m * x_m) * s_m;
              	return 1.0 / (t_0 * t_0);
              }
              
              s_m = math.fabs(s)
              c_m = math.fabs(c)
              x_m = math.fabs(x)
              [x_m, c_m, s_m] = sort([x_m, c_m, s_m])
              def code(x_m, c_m, s_m):
              	t_0 = (c_m * x_m) * s_m
              	return 1.0 / (t_0 * t_0)
              
              s_m = abs(s)
              c_m = abs(c)
              x_m = abs(x)
              x_m, c_m, s_m = sort([x_m, c_m, s_m])
              function code(x_m, c_m, s_m)
              	t_0 = Float64(Float64(c_m * x_m) * s_m)
              	return Float64(1.0 / Float64(t_0 * t_0))
              end
              
              s_m = abs(s);
              c_m = abs(c);
              x_m = abs(x);
              x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
              function tmp = code(x_m, c_m, s_m)
              	t_0 = (c_m * x_m) * s_m;
              	tmp = 1.0 / (t_0 * t_0);
              end
              
              s_m = N[Abs[s], $MachinePrecision]
              c_m = N[Abs[c], $MachinePrecision]
              x_m = N[Abs[x], $MachinePrecision]
              NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
              code[x$95$m_, c$95$m_, s$95$m_] := Block[{t$95$0 = N[(N[(c$95$m * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision]}, N[(1.0 / N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]]
              
              \begin{array}{l}
              s_m = \left|s\right|
              \\
              c_m = \left|c\right|
              \\
              x_m = \left|x\right|
              \\
              [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
              \\
              \begin{array}{l}
              t_0 := \left(c\_m \cdot x\_m\right) \cdot s\_m\\
              \frac{1}{t\_0 \cdot t\_0}
              \end{array}
              \end{array}
              
              Derivation
              1. Initial program 69.1%

                \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
              2. Add Preprocessing
              3. Taylor expanded in x around 0

                \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
              4. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
                2. associate-*r*N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
                3. *-commutativeN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
                4. unpow2N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
                5. unpow2N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
                6. unswap-sqrN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
                7. unpow2N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
                8. unswap-sqrN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                9. lower-*.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                10. lower-*.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                11. *-commutativeN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                12. lower-*.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                13. lower-*.f64N/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                14. *-commutativeN/A

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
                15. lower-*.f6498.2

                  \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
              5. Applied rewrites98.2%

                \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
              6. Taylor expanded in x around 0

                \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
              7. Step-by-step derivation
                1. Applied rewrites82.0%

                  \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                2. Step-by-step derivation
                  1. Applied rewrites78.1%

                    \[\leadsto \frac{1}{c \cdot \color{blue}{\left(s \cdot \left(\left(\left(c \cdot x\right) \cdot s\right) \cdot x\right)\right)}} \]
                  2. Step-by-step derivation
                    1. Applied rewrites82.0%

                      \[\leadsto \frac{1}{\left(s \cdot \left(c \cdot x\right)\right) \cdot \color{blue}{\left(s \cdot \left(c \cdot x\right)\right)}} \]
                    2. Final simplification82.0%

                      \[\leadsto \frac{1}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                    3. Add Preprocessing

                    Alternative 7: 75.1% accurate, 9.0× speedup?

                    \[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \frac{1}{\left(\left(\left(\left(c\_m \cdot x\_m\right) \cdot s\_m\right) \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m} \end{array} \]
                    s_m = (fabs.f64 s)
                    c_m = (fabs.f64 c)
                    x_m = (fabs.f64 x)
                    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                    (FPCore (x_m c_m s_m)
                     :precision binary64
                     (/ 1.0 (* (* (* (* (* c_m x_m) s_m) x_m) s_m) c_m)))
                    s_m = fabs(s);
                    c_m = fabs(c);
                    x_m = fabs(x);
                    assert(x_m < c_m && c_m < s_m);
                    double code(double x_m, double c_m, double s_m) {
                    	return 1.0 / (((((c_m * x_m) * s_m) * x_m) * s_m) * c_m);
                    }
                    
                    s_m = abs(s)
                    c_m = abs(c)
                    x_m = abs(x)
                    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                    real(8) function code(x_m, c_m, s_m)
                        real(8), intent (in) :: x_m
                        real(8), intent (in) :: c_m
                        real(8), intent (in) :: s_m
                        code = 1.0d0 / (((((c_m * x_m) * s_m) * x_m) * s_m) * c_m)
                    end function
                    
                    s_m = Math.abs(s);
                    c_m = Math.abs(c);
                    x_m = Math.abs(x);
                    assert x_m < c_m && c_m < s_m;
                    public static double code(double x_m, double c_m, double s_m) {
                    	return 1.0 / (((((c_m * x_m) * s_m) * x_m) * s_m) * c_m);
                    }
                    
                    s_m = math.fabs(s)
                    c_m = math.fabs(c)
                    x_m = math.fabs(x)
                    [x_m, c_m, s_m] = sort([x_m, c_m, s_m])
                    def code(x_m, c_m, s_m):
                    	return 1.0 / (((((c_m * x_m) * s_m) * x_m) * s_m) * c_m)
                    
                    s_m = abs(s)
                    c_m = abs(c)
                    x_m = abs(x)
                    x_m, c_m, s_m = sort([x_m, c_m, s_m])
                    function code(x_m, c_m, s_m)
                    	return Float64(1.0 / Float64(Float64(Float64(Float64(Float64(c_m * x_m) * s_m) * x_m) * s_m) * c_m))
                    end
                    
                    s_m = abs(s);
                    c_m = abs(c);
                    x_m = abs(x);
                    x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
                    function tmp = code(x_m, c_m, s_m)
                    	tmp = 1.0 / (((((c_m * x_m) * s_m) * x_m) * s_m) * c_m);
                    end
                    
                    s_m = N[Abs[s], $MachinePrecision]
                    c_m = N[Abs[c], $MachinePrecision]
                    x_m = N[Abs[x], $MachinePrecision]
                    NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                    code[x$95$m_, c$95$m_, s$95$m_] := N[(1.0 / N[(N[(N[(N[(N[(c$95$m * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]), $MachinePrecision]
                    
                    \begin{array}{l}
                    s_m = \left|s\right|
                    \\
                    c_m = \left|c\right|
                    \\
                    x_m = \left|x\right|
                    \\
                    [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
                    \\
                    \frac{1}{\left(\left(\left(\left(c\_m \cdot x\_m\right) \cdot s\_m\right) \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m}
                    \end{array}
                    
                    Derivation
                    1. Initial program 69.1%

                      \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
                    2. Add Preprocessing
                    3. Taylor expanded in x around 0

                      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
                    4. Step-by-step derivation
                      1. *-commutativeN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
                      2. associate-*r*N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
                      3. *-commutativeN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
                      4. unpow2N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
                      5. unpow2N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
                      6. unswap-sqrN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
                      7. unpow2N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
                      8. unswap-sqrN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                      9. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                      10. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                      11. *-commutativeN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                      12. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                      13. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                      14. *-commutativeN/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
                      15. lower-*.f6498.2

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
                    5. Applied rewrites98.2%

                      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
                    6. Taylor expanded in x around 0

                      \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                    7. Step-by-step derivation
                      1. Applied rewrites82.0%

                        \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                      2. Step-by-step derivation
                        1. Applied rewrites78.1%

                          \[\leadsto \frac{1}{c \cdot \color{blue}{\left(s \cdot \left(\left(\left(c \cdot x\right) \cdot s\right) \cdot x\right)\right)}} \]
                        2. Final simplification78.1%

                          \[\leadsto \frac{1}{\left(\left(\left(\left(c \cdot x\right) \cdot s\right) \cdot x\right) \cdot s\right) \cdot c} \]
                        3. Add Preprocessing

                        Alternative 8: 72.1% accurate, 9.0× speedup?

                        \[\begin{array}{l} s_m = \left|s\right| \\ c_m = \left|c\right| \\ x_m = \left|x\right| \\ [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\ \\ \frac{1}{\left(\left(\left(\left(s\_m \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m\right) \cdot x\_m\right) \cdot c\_m} \end{array} \]
                        s_m = (fabs.f64 s)
                        c_m = (fabs.f64 c)
                        x_m = (fabs.f64 x)
                        NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                        (FPCore (x_m c_m s_m)
                         :precision binary64
                         (/ 1.0 (* (* (* (* (* s_m x_m) s_m) c_m) x_m) c_m)))
                        s_m = fabs(s);
                        c_m = fabs(c);
                        x_m = fabs(x);
                        assert(x_m < c_m && c_m < s_m);
                        double code(double x_m, double c_m, double s_m) {
                        	return 1.0 / (((((s_m * x_m) * s_m) * c_m) * x_m) * c_m);
                        }
                        
                        s_m = abs(s)
                        c_m = abs(c)
                        x_m = abs(x)
                        NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                        real(8) function code(x_m, c_m, s_m)
                            real(8), intent (in) :: x_m
                            real(8), intent (in) :: c_m
                            real(8), intent (in) :: s_m
                            code = 1.0d0 / (((((s_m * x_m) * s_m) * c_m) * x_m) * c_m)
                        end function
                        
                        s_m = Math.abs(s);
                        c_m = Math.abs(c);
                        x_m = Math.abs(x);
                        assert x_m < c_m && c_m < s_m;
                        public static double code(double x_m, double c_m, double s_m) {
                        	return 1.0 / (((((s_m * x_m) * s_m) * c_m) * x_m) * c_m);
                        }
                        
                        s_m = math.fabs(s)
                        c_m = math.fabs(c)
                        x_m = math.fabs(x)
                        [x_m, c_m, s_m] = sort([x_m, c_m, s_m])
                        def code(x_m, c_m, s_m):
                        	return 1.0 / (((((s_m * x_m) * s_m) * c_m) * x_m) * c_m)
                        
                        s_m = abs(s)
                        c_m = abs(c)
                        x_m = abs(x)
                        x_m, c_m, s_m = sort([x_m, c_m, s_m])
                        function code(x_m, c_m, s_m)
                        	return Float64(1.0 / Float64(Float64(Float64(Float64(Float64(s_m * x_m) * s_m) * c_m) * x_m) * c_m))
                        end
                        
                        s_m = abs(s);
                        c_m = abs(c);
                        x_m = abs(x);
                        x_m, c_m, s_m = num2cell(sort([x_m, c_m, s_m])){:}
                        function tmp = code(x_m, c_m, s_m)
                        	tmp = 1.0 / (((((s_m * x_m) * s_m) * c_m) * x_m) * c_m);
                        end
                        
                        s_m = N[Abs[s], $MachinePrecision]
                        c_m = N[Abs[c], $MachinePrecision]
                        x_m = N[Abs[x], $MachinePrecision]
                        NOTE: x_m, c_m, and s_m should be sorted in increasing order before calling this function.
                        code[x$95$m_, c$95$m_, s$95$m_] := N[(1.0 / N[(N[(N[(N[(N[(s$95$m * x$95$m), $MachinePrecision] * s$95$m), $MachinePrecision] * c$95$m), $MachinePrecision] * x$95$m), $MachinePrecision] * c$95$m), $MachinePrecision]), $MachinePrecision]
                        
                        \begin{array}{l}
                        s_m = \left|s\right|
                        \\
                        c_m = \left|c\right|
                        \\
                        x_m = \left|x\right|
                        \\
                        [x_m, c_m, s_m] = \mathsf{sort}([x_m, c_m, s_m])\\
                        \\
                        \frac{1}{\left(\left(\left(\left(s\_m \cdot x\_m\right) \cdot s\_m\right) \cdot c\_m\right) \cdot x\_m\right) \cdot c\_m}
                        \end{array}
                        
                        Derivation
                        1. Initial program 69.1%

                          \[\frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \left(\left(x \cdot {s}^{2}\right) \cdot x\right)} \]
                        2. Add Preprocessing
                        3. Taylor expanded in x around 0

                          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{c}^{2} \cdot \left({s}^{2} \cdot {x}^{2}\right)}} \]
                        4. Step-by-step derivation
                          1. *-commutativeN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{{c}^{2} \cdot \color{blue}{\left({x}^{2} \cdot {s}^{2}\right)}} \]
                          2. associate-*r*N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({c}^{2} \cdot {x}^{2}\right) \cdot {s}^{2}}} \]
                          3. *-commutativeN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left({x}^{2} \cdot {c}^{2}\right)} \cdot {s}^{2}} \]
                          4. unpow2N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot x\right)} \cdot {c}^{2}\right) \cdot {s}^{2}} \]
                          5. unpow2N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot x\right) \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot {s}^{2}} \]
                          6. unswap-sqrN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right)} \cdot {s}^{2}} \]
                          7. unpow2N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(x \cdot c\right) \cdot \left(x \cdot c\right)\right) \cdot \color{blue}{\left(s \cdot s\right)}} \]
                          8. unswap-sqrN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                          9. lower-*.f64N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)}} \]
                          10. lower-*.f64N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(x \cdot c\right) \cdot s\right)} \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                          11. *-commutativeN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                          12. lower-*.f64N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(c \cdot x\right)} \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                          13. lower-*.f64N/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                          14. *-commutativeN/A

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
                          15. lower-*.f6498.2

                            \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\color{blue}{\left(c \cdot x\right)} \cdot s\right)} \]
                        5. Applied rewrites98.2%

                          \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)}} \]
                        6. Taylor expanded in x around 0

                          \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                        7. Step-by-step derivation
                          1. Applied rewrites82.0%

                            \[\leadsto \frac{\color{blue}{1}}{\left(\left(c \cdot x\right) \cdot s\right) \cdot \left(\left(c \cdot x\right) \cdot s\right)} \]
                          2. Step-by-step derivation
                            1. Applied rewrites78.1%

                              \[\leadsto \frac{1}{c \cdot \color{blue}{\left(s \cdot \left(\left(\left(c \cdot x\right) \cdot s\right) \cdot x\right)\right)}} \]
                            2. Taylor expanded in x around 0

                              \[\leadsto \frac{1}{c \cdot \left(c \cdot \color{blue}{\left({s}^{2} \cdot {x}^{2}\right)}\right)} \]
                            3. Step-by-step derivation
                              1. Applied rewrites76.3%

                                \[\leadsto \frac{1}{c \cdot \left(\left(\left(\left(x \cdot s\right) \cdot s\right) \cdot c\right) \cdot \color{blue}{x}\right)} \]
                              2. Final simplification76.3%

                                \[\leadsto \frac{1}{\left(\left(\left(\left(s \cdot x\right) \cdot s\right) \cdot c\right) \cdot x\right) \cdot c} \]
                              3. Add Preprocessing

                              Reproduce

                              ?
                              herbie shell --seed 2024268 
                              (FPCore (x c s)
                                :name "mixedcos"
                                :precision binary64
                                (/ (cos (* 2.0 x)) (* (pow c 2.0) (* (* x (pow s 2.0)) x))))