mixedcos

Percentage Accurate: 67.2% → 97.6%
Time: 9.1s
Alternatives: 9
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 9 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: 67.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: 97.6% accurate, 1.3× speedup?

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

    \[\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-*.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{s}^{2}} \cdot {\left(x \cdot c\right)}^{2}} \]
    20. unpow-prod-downN/A

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{s}}{x \cdot c}}}{\left(c \cdot x\right) \cdot s} \]
    11. lower-/.f6497.7

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

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

      \[\leadsto \frac{\frac{\frac{\cos \left(2 \cdot x\right)}{s}}{\color{blue}{c \cdot x}}}{\left(c \cdot x\right) \cdot s} \]
    14. lift-*.f6497.7

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

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

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

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

      \[\leadsto \frac{\frac{\color{blue}{\frac{1}{\frac{s}{\cos \left(2 \cdot x\right)}}}}{c \cdot x}}{\left(c \cdot x\right) \cdot s} \]
    4. lower-/.f6497.7

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

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

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

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

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

    \[\leadsto \frac{\frac{{\left(\frac{s}{\cos \left(x \cdot 2\right)}\right)}^{-1}}{c \cdot x}}{\left(c \cdot x\right) \cdot s} \]
  12. Add Preprocessing

Alternative 2: 82.5% accurate, 0.9× speedup?

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

\mathbf{else}:\\
\;\;\;\;\frac{1}{t\_1 \cdot 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))) < -1.99999999999999996e-113

    1. Initial program 58.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. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
      13. lower-*.f6495.6

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

      \[\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)}} \]
    6. Taylor expanded in x around 0

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

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

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

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

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

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

    if -1.99999999999999996e-113 < (/.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.3%

      \[\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. lower-*.f64N/A

        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
      13. lower-*.f6497.4

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

      \[\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)}} \]
    6. Taylor expanded in x around 0

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

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

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

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

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

        Alternative 3: 78.8% accurate, 0.9× speedup?

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

          1. Initial program 55.5%

            \[\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. lower-*.f64N/A

              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
            13. lower-*.f6495.3

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

            \[\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)}} \]
          6. Taylor expanded in x around 0

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

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

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

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

                if -9.9999999999999996e81 < (/.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.6%

                  \[\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. lower-*.f64N/A

                    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                  13. lower-*.f6497.4

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

                  \[\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)}} \]
                6. Taylor expanded in x around 0

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

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

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

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

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

                    Alternative 4: 97.6% accurate, 2.2× speedup?

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

                      \[\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-*.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{s}^{2}} \cdot {\left(x \cdot c\right)}^{2}} \]
                      20. unpow-prod-downN/A

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

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

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

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

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

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

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

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

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

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

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

                        \[\leadsto \frac{\color{blue}{\frac{\frac{\cos \left(2 \cdot x\right)}{s}}{x \cdot c}}}{\left(c \cdot x\right) \cdot s} \]
                      11. lower-/.f6497.7

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

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

                        \[\leadsto \frac{\frac{\frac{\cos \left(2 \cdot x\right)}{s}}{\color{blue}{c \cdot x}}}{\left(c \cdot x\right) \cdot s} \]
                      14. lift-*.f6497.7

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

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

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

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

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

                      \[\leadsto \frac{\frac{\frac{\cos \color{blue}{\left(x + x\right)}}{s}}{c \cdot x}}{\left(c \cdot x\right) \cdot s} \]
                    11. Add Preprocessing

                    Alternative 5: 97.5% accurate, 2.3× speedup?

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

                      \[\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-*.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\color{blue}{{s}^{2}} \cdot {\left(x \cdot c\right)}^{2}} \]
                      20. unpow-prod-downN/A

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

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

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

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

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

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

                      \[\leadsto \frac{\frac{\cos \color{blue}{\left(x + x\right)}}{\left(c \cdot x\right) \cdot s}}{\left(c \cdot x\right) \cdot s} \]
                    9. Add Preprocessing

                    Alternative 6: 97.2% accurate, 2.4× speedup?

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

                      \[\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. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                      13. lower-*.f6497.2

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

                      \[\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)}} \]
                    6. Step-by-step derivation
                      1. lift-*.f64N/A

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

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

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

                      \[\leadsto \frac{\cos \color{blue}{\left(x + x\right)}}{\left(\left(x \cdot c\right) \cdot s\right) \cdot \left(\left(x \cdot c\right) \cdot s\right)} \]
                    8. Add Preprocessing

                    Alternative 7: 78.8% accurate, 9.0× speedup?

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

                      \[\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. lower-*.f64N/A

                        \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                      13. lower-*.f6497.2

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

                      \[\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)}} \]
                    6. Taylor expanded in x around 0

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

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

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

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

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

                          Alternative 8: 78.2% accurate, 9.0× speedup?

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

                            \[\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. lower-*.f64N/A

                              \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                            13. lower-*.f6497.2

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

                            \[\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)}} \]
                          6. Taylor expanded in x around 0

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

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

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

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

                                Alternative 9: 76.8% accurate, 9.0× speedup?

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

                                  \[\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. lower-*.f64N/A

                                    \[\leadsto \frac{\cos \left(2 \cdot x\right)}{\left(\color{blue}{\left(x \cdot c\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(\left(x \cdot c\right) \cdot s\right) \cdot \color{blue}{\left(\left(x \cdot c\right) \cdot s\right)}} \]
                                  13. lower-*.f6497.2

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

                                  \[\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)}} \]
                                6. Taylor expanded in x around 0

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

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

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

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

                                      Reproduce

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