Average Error: 0.2 → 0.0
Time: 4.0s
Precision: 64
\[\frac{x}{1 + \sqrt{x + 1}}\]
\[\begin{array}{l} \mathbf{if}\;x \le 0.105117093335230435:\\ \;\;\;\;\frac{x}{1 + \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{x + 1}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{x} \cdot \frac{\sqrt{x}}{1 + \sqrt{x + 1}}\\ \end{array}\]
\frac{x}{1 + \sqrt{x + 1}}
\begin{array}{l}
\mathbf{if}\;x \le 0.105117093335230435:\\
\;\;\;\;\frac{x}{1 + \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{x + 1}\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{x} \cdot \frac{\sqrt{x}}{1 + \sqrt{x + 1}}\\

\end{array}
double code(double x) {
	return (x / (1.0 + sqrt((x + 1.0))));
}
double code(double x) {
	double VAR;
	if ((x <= 0.10511709333523044)) {
		VAR = (x / (1.0 + expm1(log1p(sqrt((x + 1.0))))));
	} else {
		VAR = (sqrt(x) * (sqrt(x) / (1.0 + sqrt((x + 1.0)))));
	}
	return VAR;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < 0.10511709333523044

    1. Initial program 0.0

      \[\frac{x}{1 + \sqrt{x + 1}}\]
    2. Using strategy rm
    3. Applied expm1-log1p-u0.0

      \[\leadsto \frac{x}{1 + \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{x + 1}\right)\right)}}\]

    if 0.10511709333523044 < x

    1. Initial program 0.5

      \[\frac{x}{1 + \sqrt{x + 1}}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity0.5

      \[\leadsto \frac{x}{\color{blue}{1 \cdot \left(1 + \sqrt{x + 1}\right)}}\]
    4. Applied add-sqr-sqrt0.1

      \[\leadsto \frac{\color{blue}{\sqrt{x} \cdot \sqrt{x}}}{1 \cdot \left(1 + \sqrt{x + 1}\right)}\]
    5. Applied times-frac0.0

      \[\leadsto \color{blue}{\frac{\sqrt{x}}{1} \cdot \frac{\sqrt{x}}{1 + \sqrt{x + 1}}}\]
    6. Simplified0.0

      \[\leadsto \color{blue}{\sqrt{x}} \cdot \frac{\sqrt{x}}{1 + \sqrt{x + 1}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 0.105117093335230435:\\ \;\;\;\;\frac{x}{1 + \mathsf{expm1}\left(\mathsf{log1p}\left(\sqrt{x + 1}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{x} \cdot \frac{\sqrt{x}}{1 + \sqrt{x + 1}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020092 +o rules:numerics
(FPCore (x)
  :name "Numeric.Log:$clog1p from log-domain-0.10.2.1, B"
  :precision binary64
  (/ x (+ 1 (sqrt (+ x 1)))))