\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 4.5162262000245942 \cdot 10^{147}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\
\end{array}double f(double a, double k, double m) {
double r424017 = a;
double r424018 = k;
double r424019 = m;
double r424020 = pow(r424018, r424019);
double r424021 = r424017 * r424020;
double r424022 = 1.0;
double r424023 = 10.0;
double r424024 = r424023 * r424018;
double r424025 = r424022 + r424024;
double r424026 = r424018 * r424018;
double r424027 = r424025 + r424026;
double r424028 = r424021 / r424027;
return r424028;
}
double f(double a, double k, double m) {
double r424029 = k;
double r424030 = 4.516226200024594e+147;
bool r424031 = r424029 <= r424030;
double r424032 = a;
double r424033 = m;
double r424034 = pow(r424029, r424033);
double r424035 = r424032 * r424034;
double r424036 = 1.0;
double r424037 = 10.0;
double r424038 = r424037 * r424029;
double r424039 = r424036 + r424038;
double r424040 = r424029 * r424029;
double r424041 = r424039 + r424040;
double r424042 = r424035 / r424041;
double r424043 = -1.0;
double r424044 = 1.0;
double r424045 = r424044 / r424029;
double r424046 = log(r424045);
double r424047 = r424033 * r424046;
double r424048 = r424043 * r424047;
double r424049 = exp(r424048);
double r424050 = r424049 / r424029;
double r424051 = r424032 / r424029;
double r424052 = 99.0;
double r424053 = r424032 * r424049;
double r424054 = 4.0;
double r424055 = pow(r424029, r424054);
double r424056 = r424053 / r424055;
double r424057 = r424052 * r424056;
double r424058 = 3.0;
double r424059 = pow(r424029, r424058);
double r424060 = r424053 / r424059;
double r424061 = r424037 * r424060;
double r424062 = r424057 - r424061;
double r424063 = fma(r424050, r424051, r424062);
double r424064 = r424031 ? r424042 : r424063;
return r424064;
}



Bits error versus a



Bits error versus k



Bits error versus m
if k < 4.516226200024594e+147Initial program 0.1
if 4.516226200024594e+147 < k Initial program 9.9
Taylor expanded around inf 9.9
Simplified0.1
Final simplification0.1
herbie shell --seed 2020062 +o rules:numerics
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))