\[\frac{x - lo}{hi - lo}
\]
↓
\[\begin{array}{l}
t_0 := 1 + \frac{hi}{lo}\\
t_1 := \frac{hi - x}{lo}\\
t_2 := {t_1}^{3}\\
t_3 := 1 + t_2\\
t_4 := 1 - {t_1}^{6}\\
\left(\frac{\left(1 - t_2\right) + {\left(\left(hi - x\right) \cdot \frac{t_0}{lo}\right)}^{2} \cdot \left(t_2 + -1\right)}{t_4 \cdot t_4} \cdot \left(t_3 \cdot t_3\right)\right) \cdot \left(1 + \left(t_1 \cdot t_0\right) \cdot \mathsf{fma}\left(t_0, t_1, 1\right)\right)
\end{array}
\]
(FPCore (lo hi x) :precision binary64 (/ (- x lo) (- hi lo)))
↓
(FPCore (lo hi x)
:precision binary64
(let* ((t_0 (+ 1.0 (/ hi lo)))
(t_1 (/ (- hi x) lo))
(t_2 (pow t_1 3.0))
(t_3 (+ 1.0 t_2))
(t_4 (- 1.0 (pow t_1 6.0))))
(*
(*
(/
(+ (- 1.0 t_2) (* (pow (* (- hi x) (/ t_0 lo)) 2.0) (+ t_2 -1.0)))
(* t_4 t_4))
(* t_3 t_3))
(+ 1.0 (* (* t_1 t_0) (fma t_0 t_1 1.0))))))double code(double lo, double hi, double x) {
return (x - lo) / (hi - lo);
}
↓
double code(double lo, double hi, double x) {
double t_0 = 1.0 + (hi / lo);
double t_1 = (hi - x) / lo;
double t_2 = pow(t_1, 3.0);
double t_3 = 1.0 + t_2;
double t_4 = 1.0 - pow(t_1, 6.0);
return ((((1.0 - t_2) + (pow(((hi - x) * (t_0 / lo)), 2.0) * (t_2 + -1.0))) / (t_4 * t_4)) * (t_3 * t_3)) * (1.0 + ((t_1 * t_0) * fma(t_0, t_1, 1.0)));
}
function code(lo, hi, x)
return Float64(Float64(x - lo) / Float64(hi - lo))
end
↓
function code(lo, hi, x)
t_0 = Float64(1.0 + Float64(hi / lo))
t_1 = Float64(Float64(hi - x) / lo)
t_2 = t_1 ^ 3.0
t_3 = Float64(1.0 + t_2)
t_4 = Float64(1.0 - (t_1 ^ 6.0))
return Float64(Float64(Float64(Float64(Float64(1.0 - t_2) + Float64((Float64(Float64(hi - x) * Float64(t_0 / lo)) ^ 2.0) * Float64(t_2 + -1.0))) / Float64(t_4 * t_4)) * Float64(t_3 * t_3)) * Float64(1.0 + Float64(Float64(t_1 * t_0) * fma(t_0, t_1, 1.0))))
end
code[lo_, hi_, x_] := N[(N[(x - lo), $MachinePrecision] / N[(hi - lo), $MachinePrecision]), $MachinePrecision]
↓
code[lo_, hi_, x_] := Block[{t$95$0 = N[(1.0 + N[(hi / lo), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(hi - x), $MachinePrecision] / lo), $MachinePrecision]}, Block[{t$95$2 = N[Power[t$95$1, 3.0], $MachinePrecision]}, Block[{t$95$3 = N[(1.0 + t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[(1.0 - N[Power[t$95$1, 6.0], $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(N[(1.0 - t$95$2), $MachinePrecision] + N[(N[Power[N[(N[(hi - x), $MachinePrecision] * N[(t$95$0 / lo), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] * N[(t$95$2 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t$95$4 * t$95$4), $MachinePrecision]), $MachinePrecision] * N[(t$95$3 * t$95$3), $MachinePrecision]), $MachinePrecision] * N[(1.0 + N[(N[(t$95$1 * t$95$0), $MachinePrecision] * N[(t$95$0 * t$95$1 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\frac{x - lo}{hi - lo}
↓
\begin{array}{l}
t_0 := 1 + \frac{hi}{lo}\\
t_1 := \frac{hi - x}{lo}\\
t_2 := {t_1}^{3}\\
t_3 := 1 + t_2\\
t_4 := 1 - {t_1}^{6}\\
\left(\frac{\left(1 - t_2\right) + {\left(\left(hi - x\right) \cdot \frac{t_0}{lo}\right)}^{2} \cdot \left(t_2 + -1\right)}{t_4 \cdot t_4} \cdot \left(t_3 \cdot t_3\right)\right) \cdot \left(1 + \left(t_1 \cdot t_0\right) \cdot \mathsf{fma}\left(t_0, t_1, 1\right)\right)
\end{array}