double f(double x) {
double r19784012 = x;
double r19784013 = r19784012 * r19784012;
double r19784014 = 1.0;
double r19784015 = r19784013 + r19784014;
double r19784016 = sqrt(r19784015);
double r19784017 = r19784012 + r19784016;
double r19784018 = log(r19784017);
return r19784018;
}
double f(double x) {
double r19784019 = x;
double r19784020 = -1.0563392067882509;
bool r19784021 = r19784019 <= r19784020;
double r19784022 = 0.125;
double r19784023 = r19784022 / r19784019;
double r19784024 = r19784023 / r19784019;
double r19784025 = r19784024 / r19784019;
double r19784026 = -0.5;
double r19784027 = r19784026 / r19784019;
double r19784028 = r19784025 + r19784027;
double r19784029 = 0.0625;
double r19784030 = 5.0;
double r19784031 = pow(r19784019, r19784030);
double r19784032 = r19784029 / r19784031;
double r19784033 = r19784028 - r19784032;
double r19784034 = log(r19784033);
double r19784035 = 0.9630124045933048;
bool r19784036 = r19784019 <= r19784035;
double r19784037 = 0.075;
double r19784038 = r19784031 * r19784037;
double r19784039 = r19784019 * r19784019;
double r19784040 = -0.16666666666666666;
double r19784041 = r19784039 * r19784040;
double r19784042 = r19784019 * r19784041;
double r19784043 = r19784019 + r19784042;
double r19784044 = r19784038 + r19784043;
double r19784045 = 0.5;
double r19784046 = r19784045 / r19784019;
double r19784047 = -0.125;
double r19784048 = r19784019 * r19784039;
double r19784049 = r19784047 / r19784048;
double r19784050 = r19784019 + r19784049;
double r19784051 = r19784046 + r19784050;
double r19784052 = r19784019 + r19784051;
double r19784053 = log(r19784052);
double r19784054 = r19784036 ? r19784044 : r19784053;
double r19784055 = r19784021 ? r19784034 : r19784054;
return r19784055;
}
\log \left(x + \sqrt{x \cdot x + 1}\right)\begin{array}{l}
\mathbf{if}\;x \le -1.0563392067882509:\\
\;\;\;\;\log \left(\left(\frac{\frac{\frac{\frac{1}{8}}{x}}{x}}{x} + \frac{\frac{-1}{2}}{x}\right) - \frac{\frac{1}{16}}{{x}^{5}}\right)\\
\mathbf{elif}\;x \le 0.9630124045933048:\\
\;\;\;\;{x}^{5} \cdot \frac{3}{40} + \left(x + x \cdot \left(\left(x \cdot x\right) \cdot \frac{-1}{6}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\log \left(x + \left(\frac{\frac{1}{2}}{x} + \left(x + \frac{\frac{-1}{8}}{x \cdot \left(x \cdot x\right)}\right)\right)\right)\\
\end{array}



Bits error versus x
| Original | 52.5 |
|---|---|
| Target | 44.6 |
| Herbie | 0.2 |
if x < -1.0563392067882509Initial program 62.0
Taylor expanded around -inf 0.2
Simplified0.2
if -1.0563392067882509 < x < 0.9630124045933048Initial program 58.6
Taylor expanded around 0 0.2
Simplified0.2
if 0.9630124045933048 < x Initial program 31.0
Taylor expanded around inf 0.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2019102
(FPCore (x)
:name "Hyperbolic arcsine"
:herbie-target
(if (< x 0) (log (/ -1 (- x (sqrt (+ (* x x) 1))))) (log (+ x (sqrt (+ (* x x) 1)))))
(log (+ x (sqrt (+ (* x x) 1)))))