Average Error: 29.6 → 0.1
Time: 6.7s
Precision: binary64
Cost: 26436
\[\log \left(N + 1\right) - \log N \]
\[\begin{array}{l} \mathbf{if}\;N \leq 954.8915609233318:\\ \;\;\;\;0.5 \cdot \left(\mathsf{log1p}\left(N\right) - \log N\right) + \log \left(\sqrt{\frac{N + 1}{N}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.3333333333333333}{{N}^{3}} + \frac{1 + \frac{-0.5}{N}}{N}\\ \end{array} \]
(FPCore (N) :precision binary64 (- (log (+ N 1.0)) (log N)))
(FPCore (N)
 :precision binary64
 (if (<= N 954.8915609233318)
   (+ (* 0.5 (- (log1p N) (log N))) (log (sqrt (/ (+ N 1.0) N))))
   (+ (/ 0.3333333333333333 (pow N 3.0)) (/ (+ 1.0 (/ -0.5 N)) N))))
double code(double N) {
	return log((N + 1.0)) - log(N);
}
double code(double N) {
	double tmp;
	if (N <= 954.8915609233318) {
		tmp = (0.5 * (log1p(N) - log(N))) + log(sqrt(((N + 1.0) / N)));
	} else {
		tmp = (0.3333333333333333 / pow(N, 3.0)) + ((1.0 + (-0.5 / N)) / N);
	}
	return tmp;
}
public static double code(double N) {
	return Math.log((N + 1.0)) - Math.log(N);
}
public static double code(double N) {
	double tmp;
	if (N <= 954.8915609233318) {
		tmp = (0.5 * (Math.log1p(N) - Math.log(N))) + Math.log(Math.sqrt(((N + 1.0) / N)));
	} else {
		tmp = (0.3333333333333333 / Math.pow(N, 3.0)) + ((1.0 + (-0.5 / N)) / N);
	}
	return tmp;
}
def code(N):
	return math.log((N + 1.0)) - math.log(N)
def code(N):
	tmp = 0
	if N <= 954.8915609233318:
		tmp = (0.5 * (math.log1p(N) - math.log(N))) + math.log(math.sqrt(((N + 1.0) / N)))
	else:
		tmp = (0.3333333333333333 / math.pow(N, 3.0)) + ((1.0 + (-0.5 / N)) / N)
	return tmp
function code(N)
	return Float64(log(Float64(N + 1.0)) - log(N))
end
function code(N)
	tmp = 0.0
	if (N <= 954.8915609233318)
		tmp = Float64(Float64(0.5 * Float64(log1p(N) - log(N))) + log(sqrt(Float64(Float64(N + 1.0) / N))));
	else
		tmp = Float64(Float64(0.3333333333333333 / (N ^ 3.0)) + Float64(Float64(1.0 + Float64(-0.5 / N)) / N));
	end
	return tmp
end
code[N_] := N[(N[Log[N[(N + 1.0), $MachinePrecision]], $MachinePrecision] - N[Log[N], $MachinePrecision]), $MachinePrecision]
code[N_] := If[LessEqual[N, 954.8915609233318], N[(N[(0.5 * N[(N[Log[1 + N], $MachinePrecision] - N[Log[N], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[Log[N[Sqrt[N[(N[(N + 1.0), $MachinePrecision] / N), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(0.3333333333333333 / N[Power[N, 3.0], $MachinePrecision]), $MachinePrecision] + N[(N[(1.0 + N[(-0.5 / N), $MachinePrecision]), $MachinePrecision] / N), $MachinePrecision]), $MachinePrecision]]
\log \left(N + 1\right) - \log N
\begin{array}{l}
\mathbf{if}\;N \leq 954.8915609233318:\\
\;\;\;\;0.5 \cdot \left(\mathsf{log1p}\left(N\right) - \log N\right) + \log \left(\sqrt{\frac{N + 1}{N}}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{0.3333333333333333}{{N}^{3}} + \frac{1 + \frac{-0.5}{N}}{N}\\


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if N < 954.89156092333178

    1. Initial program 0.1

      \[\log \left(N + 1\right) - \log N \]
    2. Simplified0.1

      \[\leadsto \color{blue}{\mathsf{log1p}\left(N\right) - \log N} \]
    3. Applied egg-rr0.1

      \[\leadsto \color{blue}{\log \left(\frac{N + 1}{N}\right)} \]
    4. Applied egg-rr0.1

      \[\leadsto \color{blue}{\log \left(\sqrt{\frac{N + 1}{N}}\right) + \log \left(\sqrt{\frac{N + 1}{N}}\right)} \]
    5. Applied egg-rr0.1

      \[\leadsto \color{blue}{0.5 \cdot \left(\mathsf{log1p}\left(N\right) - \log N\right)} + \log \left(\sqrt{\frac{N + 1}{N}}\right) \]

    if 954.89156092333178 < N

    1. Initial program 59.3

      \[\log \left(N + 1\right) - \log N \]
    2. Simplified59.3

      \[\leadsto \color{blue}{\mathsf{log1p}\left(N\right) - \log N} \]
    3. Taylor expanded in N around inf 0.1

      \[\leadsto \color{blue}{\left(\frac{1}{N} + 0.3333333333333333 \cdot \frac{1}{{N}^{3}}\right) - 0.5 \cdot \frac{1}{{N}^{2}}} \]
    4. Simplified0.1

      \[\leadsto \color{blue}{\frac{0.3333333333333333}{{N}^{3}} + \left(\frac{1}{N} - \frac{\frac{0.5}{N}}{N}\right)} \]
    5. Applied egg-rr0.1

      \[\leadsto \frac{0.3333333333333333}{{N}^{3}} + \color{blue}{\frac{1 + \frac{-0.5}{N}}{N}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;N \leq 954.8915609233318:\\ \;\;\;\;0.5 \cdot \left(\mathsf{log1p}\left(N\right) - \log N\right) + \log \left(\sqrt{\frac{N + 1}{N}}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.3333333333333333}{{N}^{3}} + \frac{1 + \frac{-0.5}{N}}{N}\\ \end{array} \]

Alternatives

Alternative 1
Error0.1
Cost7300
\[\begin{array}{l} \mathbf{if}\;N \leq 954.8915609233318:\\ \;\;\;\;\log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.3333333333333333}{{N}^{3}} + \frac{1 + \frac{-0.5}{N}}{N}\\ \end{array} \]
Alternative 2
Error0.4
Cost6852
\[\begin{array}{l} \mathbf{if}\;N \leq 506056.9125754291:\\ \;\;\;\;\log \left(\frac{N + 1}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{N}\\ \end{array} \]
Alternative 3
Error0.9
Cost6724
\[\begin{array}{l} \mathbf{if}\;N \leq 0.39211478482209317:\\ \;\;\;\;N - \log N\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{N}\\ \end{array} \]
Alternative 4
Error1.2
Cost6660
\[\begin{array}{l} \mathbf{if}\;N \leq 0.39211478482209317:\\ \;\;\;\;-\log N\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{N}\\ \end{array} \]
Alternative 5
Error30.8
Cost192
\[\frac{1}{N} \]
Alternative 6
Error61.1
Cost64
\[N \]

Error

Reproduce

herbie shell --seed 2022228 
(FPCore (N)
  :name "2log (problem 3.3.6)"
  :precision binary64
  (- (log (+ N 1.0)) (log N)))