\[\tan \left(x + \varepsilon\right) - \tan x
\]
↓
\[\begin{array}{l}
t_0 := 1 + \frac{{\sin x}^{2}}{{\cos x}^{2}}\\
t_1 := \tan x + \tan \varepsilon\\
\mathbf{if}\;\varepsilon \leq -1.95 \cdot 10^{-7}:\\
\;\;\;\;\frac{t_1}{1 - \tan x \cdot \tan \varepsilon} - \tan x\\
\mathbf{elif}\;\varepsilon \leq 6.2 \cdot 10^{-10}:\\
\;\;\;\;\mathsf{fma}\left(\varepsilon, t_0, \frac{\varepsilon \cdot \varepsilon}{\frac{\frac{\cos x}{\sin x}}{t_0}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t_1}{1 - \frac{\tan x}{\frac{1}{\tan \varepsilon}}} - \tan x\\
\end{array}
\]
(FPCore (x eps) :precision binary64 (- (tan (+ x eps)) (tan x)))
↓
(FPCore (x eps)
:precision binary64
(let* ((t_0 (+ 1.0 (/ (pow (sin x) 2.0) (pow (cos x) 2.0))))
(t_1 (+ (tan x) (tan eps))))
(if (<= eps -1.95e-7)
(- (/ t_1 (- 1.0 (* (tan x) (tan eps)))) (tan x))
(if (<= eps 6.2e-10)
(fma eps t_0 (/ (* eps eps) (/ (/ (cos x) (sin x)) t_0)))
(- (/ t_1 (- 1.0 (/ (tan x) (/ 1.0 (tan eps))))) (tan x))))))double code(double x, double eps) {
return tan((x + eps)) - tan(x);
}
↓
double code(double x, double eps) {
double t_0 = 1.0 + (pow(sin(x), 2.0) / pow(cos(x), 2.0));
double t_1 = tan(x) + tan(eps);
double tmp;
if (eps <= -1.95e-7) {
tmp = (t_1 / (1.0 - (tan(x) * tan(eps)))) - tan(x);
} else if (eps <= 6.2e-10) {
tmp = fma(eps, t_0, ((eps * eps) / ((cos(x) / sin(x)) / t_0)));
} else {
tmp = (t_1 / (1.0 - (tan(x) / (1.0 / tan(eps))))) - tan(x);
}
return tmp;
}
function code(x, eps)
return Float64(tan(Float64(x + eps)) - tan(x))
end
↓
function code(x, eps)
t_0 = Float64(1.0 + Float64((sin(x) ^ 2.0) / (cos(x) ^ 2.0)))
t_1 = Float64(tan(x) + tan(eps))
tmp = 0.0
if (eps <= -1.95e-7)
tmp = Float64(Float64(t_1 / Float64(1.0 - Float64(tan(x) * tan(eps)))) - tan(x));
elseif (eps <= 6.2e-10)
tmp = fma(eps, t_0, Float64(Float64(eps * eps) / Float64(Float64(cos(x) / sin(x)) / t_0)));
else
tmp = Float64(Float64(t_1 / Float64(1.0 - Float64(tan(x) / Float64(1.0 / tan(eps))))) - tan(x));
end
return tmp
end
code[x_, eps_] := N[(N[Tan[N[(x + eps), $MachinePrecision]], $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision]
↓
code[x_, eps_] := Block[{t$95$0 = N[(1.0 + N[(N[Power[N[Sin[x], $MachinePrecision], 2.0], $MachinePrecision] / N[Power[N[Cos[x], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Tan[x], $MachinePrecision] + N[Tan[eps], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[eps, -1.95e-7], N[(N[(t$95$1 / N[(1.0 - N[(N[Tan[x], $MachinePrecision] * N[Tan[eps], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision], If[LessEqual[eps, 6.2e-10], N[(eps * t$95$0 + N[(N[(eps * eps), $MachinePrecision] / N[(N[(N[Cos[x], $MachinePrecision] / N[Sin[x], $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(t$95$1 / N[(1.0 - N[(N[Tan[x], $MachinePrecision] / N[(1.0 / N[Tan[eps], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision]]]]]
\tan \left(x + \varepsilon\right) - \tan x
↓
\begin{array}{l}
t_0 := 1 + \frac{{\sin x}^{2}}{{\cos x}^{2}}\\
t_1 := \tan x + \tan \varepsilon\\
\mathbf{if}\;\varepsilon \leq -1.95 \cdot 10^{-7}:\\
\;\;\;\;\frac{t_1}{1 - \tan x \cdot \tan \varepsilon} - \tan x\\
\mathbf{elif}\;\varepsilon \leq 6.2 \cdot 10^{-10}:\\
\;\;\;\;\mathsf{fma}\left(\varepsilon, t_0, \frac{\varepsilon \cdot \varepsilon}{\frac{\frac{\cos x}{\sin x}}{t_0}}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t_1}{1 - \frac{\tan x}{\frac{1}{\tan \varepsilon}}} - \tan x\\
\end{array}