| Alternative 1 | |
|---|---|
| Accuracy | 12.5% |
| Cost | 110916 |
(FPCore (x) :precision binary64 (* (fmod (exp x) (sqrt (cos x))) (exp (- x))))
(FPCore (x)
:precision binary64
(let* ((t_0 (fmod (exp x) (sqrt (cos x))))
(t_1 (/ t_0 (exp x)))
(t_2
(- 1.0 (expm1 (- (log (fmod (exp x) (fma x (* x -0.25) 1.0))) x)))))
(if (<= (* t_0 (exp (- x))) 0.0)
(- (/ 1.0 t_2) (/ (pow (expm1 (- x)) 2.0) t_2))
(fma
(+ 1.0 (pow t_1 3.0))
(/ 1.0 (fma t_1 (expm1 (- (log t_0) x)) 1.0))
-1.0))))double code(double x) {
return fmod(exp(x), sqrt(cos(x))) * exp(-x);
}
double code(double x) {
double t_0 = fmod(exp(x), sqrt(cos(x)));
double t_1 = t_0 / exp(x);
double t_2 = 1.0 - expm1((log(fmod(exp(x), fma(x, (x * -0.25), 1.0))) - x));
double tmp;
if ((t_0 * exp(-x)) <= 0.0) {
tmp = (1.0 / t_2) - (pow(expm1(-x), 2.0) / t_2);
} else {
tmp = fma((1.0 + pow(t_1, 3.0)), (1.0 / fma(t_1, expm1((log(t_0) - x)), 1.0)), -1.0);
}
return tmp;
}
function code(x) return Float64(rem(exp(x), sqrt(cos(x))) * exp(Float64(-x))) end
function code(x) t_0 = rem(exp(x), sqrt(cos(x))) t_1 = Float64(t_0 / exp(x)) t_2 = Float64(1.0 - expm1(Float64(log(rem(exp(x), fma(x, Float64(x * -0.25), 1.0))) - x))) tmp = 0.0 if (Float64(t_0 * exp(Float64(-x))) <= 0.0) tmp = Float64(Float64(1.0 / t_2) - Float64((expm1(Float64(-x)) ^ 2.0) / t_2)); else tmp = fma(Float64(1.0 + (t_1 ^ 3.0)), Float64(1.0 / fma(t_1, expm1(Float64(log(t_0) - x)), 1.0)), -1.0); end return tmp end
code[x_] := N[(N[With[{TMP1 = N[Exp[x], $MachinePrecision], TMP2 = N[Sqrt[N[Cos[x], $MachinePrecision]], $MachinePrecision]}, Mod[Abs[TMP1], Abs[TMP2]] * Sign[TMP1]], $MachinePrecision] * N[Exp[(-x)], $MachinePrecision]), $MachinePrecision]
code[x_] := Block[{t$95$0 = N[With[{TMP1 = N[Exp[x], $MachinePrecision], TMP2 = N[Sqrt[N[Cos[x], $MachinePrecision]], $MachinePrecision]}, Mod[Abs[TMP1], Abs[TMP2]] * Sign[TMP1]], $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 / N[Exp[x], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 - N[(Exp[N[(N[Log[N[With[{TMP1 = N[Exp[x], $MachinePrecision], TMP2 = N[(x * N[(x * -0.25), $MachinePrecision] + 1.0), $MachinePrecision]}, Mod[Abs[TMP1], Abs[TMP2]] * Sign[TMP1]], $MachinePrecision]], $MachinePrecision] - x), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(t$95$0 * N[Exp[(-x)], $MachinePrecision]), $MachinePrecision], 0.0], N[(N[(1.0 / t$95$2), $MachinePrecision] - N[(N[Power[N[(Exp[(-x)] - 1), $MachinePrecision], 2.0], $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 + N[Power[t$95$1, 3.0], $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(t$95$1 * N[(Exp[N[(N[Log[t$95$0], $MachinePrecision] - x), $MachinePrecision]] - 1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision]]]]]
\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}
\begin{array}{l}
t_0 := \left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)\\
t_1 := \frac{t_0}{e^{x}}\\
t_2 := 1 - \mathsf{expm1}\left(\log \left(\left(e^{x}\right) \bmod \left(\mathsf{fma}\left(x, x \cdot -0.25, 1\right)\right)\right) - x\right)\\
\mathbf{if}\;t_0 \cdot e^{-x} \leq 0:\\
\;\;\;\;\frac{1}{t_2} - \frac{{\left(\mathsf{expm1}\left(-x\right)\right)}^{2}}{t_2}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(1 + {t_1}^{3}, \frac{1}{\mathsf{fma}\left(t_1, \mathsf{expm1}\left(\log t_0 - x\right), 1\right)}, -1\right)\\
\end{array}
if (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) < 0.0Initial program 4.3%
Simplified4.3%
[Start]4.3 | \[ \left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}
\] |
|---|---|
exp-neg [=>]4.3 | \[ \left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot \color{blue}{\frac{1}{e^{x}}}
\] |
associate-*r/ [=>]4.3 | \[ \color{blue}{\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot 1}{e^{x}}}
\] |
*-rgt-identity [=>]4.3 | \[ \frac{\color{blue}{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}}{e^{x}}
\] |
Applied egg-rr4.3%
[Start]4.3 | \[ \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}
\] |
|---|---|
expm1-log1p-u [=>]4.3 | \[ \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)\right)}
\] |
expm1-udef [=>]4.3 | \[ \color{blue}{e^{\mathsf{log1p}\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)} - 1}
\] |
log1p-udef [=>]4.3 | \[ e^{\color{blue}{\log \left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}} - 1
\] |
add-exp-log [<=]4.3 | \[ \color{blue}{\left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)} - 1
\] |
Simplified4.3%
[Start]4.3 | \[ \left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right) - 1
\] |
|---|---|
associate--l+ [=>]4.3 | \[ \color{blue}{1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} - 1\right)}
\] |
Taylor expanded in x around 0 4.3%
Simplified4.3%
[Start]4.3 | \[ 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + -0.25 \cdot {x}^{2}\right)\right)}{e^{x}} - 1\right)
\] |
|---|---|
*-commutative [=>]4.3 | \[ 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \color{blue}{{x}^{2} \cdot -0.25}\right)\right)}{e^{x}} - 1\right)
\] |
unpow2 [=>]4.3 | \[ 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \color{blue}{\left(x \cdot x\right)} \cdot -0.25\right)\right)}{e^{x}} - 1\right)
\] |
Applied egg-rr4.3%
[Start]4.3 | \[ 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)
\] |
|---|---|
flip-+ [=>]4.3 | \[ \color{blue}{\frac{1 \cdot 1 - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right) \cdot \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}{1 - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}}
\] |
metadata-eval [=>]4.3 | \[ \frac{\color{blue}{1} - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right) \cdot \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}{1 - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}
\] |
div-sub [=>]4.3 | \[ \color{blue}{\frac{1}{1 - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)} - \frac{\left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right) \cdot \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}{1 - \left(\frac{\left(\left(e^{x}\right) \bmod \left(1 + \left(x \cdot x\right) \cdot -0.25\right)\right)}{e^{x}} - 1\right)}}
\] |
Taylor expanded in x around inf 12.0%
Simplified12.0%
[Start]12.0 | \[ \frac{1}{1 - \mathsf{expm1}\left(\log \left(\left(e^{x}\right) \bmod \left(\mathsf{fma}\left(x, x \cdot -0.25, 1\right)\right)\right) - x\right)} - \frac{{\left(\mathsf{expm1}\left(-1 \cdot x\right)\right)}^{2}}{1 - \mathsf{expm1}\left(\log \left(\left(e^{x}\right) \bmod \left(\mathsf{fma}\left(x, x \cdot -0.25, 1\right)\right)\right) - x\right)}
\] |
|---|---|
neg-mul-1 [<=]12.0 | \[ \frac{1}{1 - \mathsf{expm1}\left(\log \left(\left(e^{x}\right) \bmod \left(\mathsf{fma}\left(x, x \cdot -0.25, 1\right)\right)\right) - x\right)} - \frac{{\left(\mathsf{expm1}\left(\color{blue}{-x}\right)\right)}^{2}}{1 - \mathsf{expm1}\left(\log \left(\left(e^{x}\right) \bmod \left(\mathsf{fma}\left(x, x \cdot -0.25, 1\right)\right)\right) - x\right)}
\] |
if 0.0 < (*.f64 (fmod.f64 (exp.f64 x) (sqrt.f64 (cos.f64 x))) (exp.f64 (neg.f64 x))) Initial program 14.0%
Simplified14.1%
[Start]14.0 | \[ \left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}
\] |
|---|---|
exp-neg [=>]14.1 | \[ \left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot \color{blue}{\frac{1}{e^{x}}}
\] |
associate-*r/ [=>]14.1 | \[ \color{blue}{\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot 1}{e^{x}}}
\] |
*-rgt-identity [=>]14.1 | \[ \frac{\color{blue}{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}}{e^{x}}
\] |
Applied egg-rr14.0%
[Start]14.1 | \[ \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}
\] |
|---|---|
expm1-log1p-u [=>]14.1 | \[ \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)\right)}
\] |
expm1-udef [=>]14.0 | \[ \color{blue}{e^{\mathsf{log1p}\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)} - 1}
\] |
log1p-udef [=>]14.0 | \[ e^{\color{blue}{\log \left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}} - 1
\] |
add-exp-log [<=]14.0 | \[ \color{blue}{\left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)} - 1
\] |
Applied egg-rr14.0%
[Start]14.0 | \[ \left(1 + \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right) - 1
\] |
|---|---|
flip3-+ [=>]14.0 | \[ \color{blue}{\frac{{1}^{3} + {\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}^{3}}{1 \cdot 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} - 1 \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}} - 1
\] |
div-inv [=>]14.0 | \[ \color{blue}{\left({1}^{3} + {\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}^{3}\right) \cdot \frac{1}{1 \cdot 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} - 1 \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}} - 1
\] |
fma-neg [=>]14.0 | \[ \color{blue}{\mathsf{fma}\left({1}^{3} + {\left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}^{3}, \frac{1}{1 \cdot 1 + \left(\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}} - 1 \cdot \frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}\right)}, -1\right)}
\] |
Final simplification12.5%
| Alternative 1 | |
|---|---|
| Accuracy | 12.5% |
| Cost | 110916 |
| Alternative 2 | |
|---|---|
| Accuracy | 6.7% |
| Cost | 32768 |
| Alternative 3 | |
|---|---|
| Accuracy | 6.5% |
| Cost | 20096 |
| Alternative 4 | |
|---|---|
| Accuracy | 6.5% |
| Cost | 19840 |
| Alternative 5 | |
|---|---|
| Accuracy | 6.3% |
| Cost | 19456 |
| Alternative 6 | |
|---|---|
| Accuracy | 5.9% |
| Cost | 13568 |
| Alternative 7 | |
|---|---|
| Accuracy | 5.9% |
| Cost | 13440 |
| Alternative 8 | |
|---|---|
| Accuracy | 5.9% |
| Cost | 13184 |
| Alternative 9 | |
|---|---|
| Accuracy | 5.4% |
| Cost | 12928 |
herbie shell --seed 2023146
(FPCore (x)
:name "expfmod (used to be hard to sample)"
:precision binary64
(* (fmod (exp x) (sqrt (cos x))) (exp (- x))))