Average Error: 29.4 → 0.0
Time: 8.0s
Precision: 64
Internal Precision: 128
\[\log \left(N + 1\right) - \log N\]
\[\log_* (1 + \frac{1}{N})\]

Error

Bits error versus N

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 29.4

    \[\log \left(N + 1\right) - \log N\]
  2. Initial simplification29.4

    \[\leadsto \log_* (1 + N) - \log N\]
  3. Using strategy rm
  4. Applied log1p-udef29.4

    \[\leadsto \color{blue}{\log \left(1 + N\right)} - \log N\]
  5. Applied diff-log29.3

    \[\leadsto \color{blue}{\log \left(\frac{1 + N}{N}\right)}\]
  6. Using strategy rm
  7. Applied log1p-expm1-u29.3

    \[\leadsto \color{blue}{\log_* (1 + (e^{\log \left(\frac{1 + N}{N}\right)} - 1)^*)}\]
  8. Taylor expanded around -inf 0.0

    \[\leadsto \log_* (1 + \color{blue}{\frac{1}{N}})\]
  9. Final simplification0.0

    \[\leadsto \log_* (1 + \frac{1}{N})\]

Reproduce

herbie shell --seed 2018362 +o rules:numerics
(FPCore (N)
  :name "2log (problem 3.3.6)"
  (- (log (+ N 1)) (log N)))

Details

Time bar (total: 4.2s)Debug log

start134.0ms

Algorithm
intervals

setup24.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 27.4b

localize18.0ms

Local error

Found 1 expressions with local error:

1.7b
(- (log1p N) (log N))

rewrite6.0ms

Algorithm
rewrite-expression-head
Counts
1 → 29
Calls

1 calls. Slowest were:

6.0ms
(- (log1p N) (log N))

series84.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

84.0ms
(- (log1p N) (log N))

simplify821.0ms

Counts
28 → 32
Calls

28 calls. Slowest were:

177.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
158.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
100.0ms
(- N (+ (log N) (* 1/2 (pow N 2))))

prune321.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize8.0ms

Local error

Found 2 expressions with local error:

1.6b
(log (/ (+ 1 N) N))
0.0b
(/ (+ 1 N) N)

rewrite4.0ms

Algorithm
rewrite-expression-head
Counts
2 → 33
Calls

2 calls. Slowest were:

2.0ms
(/ (+ 1 N) N)
1.0ms
(log (/ (+ 1 N) N))

series66.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

44.0ms
(log (/ (+ 1 N) N))
22.0ms
(/ (+ 1 N) N)

simplify565.0ms

Counts
16 → 39
Calls

16 calls. Slowest were:

255.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
193.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
83.0ms
(- N (+ (log N) (* 1/2 (pow N 2))))

prune350.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize14.0ms

Local error

Found 3 expressions with local error:

3.0b
(expm1 (log (/ (+ 1 N) N)))
1.6b
(log (/ (+ 1 N) N))
0.0b
(/ (+ 1 N) N)

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
3 → 44
Calls

3 calls. Slowest were:

4.0ms
(/ (+ 1 N) N)
2.0ms
(log (/ (+ 1 N) N))
1.0ms
(expm1 (log (/ (+ 1 N) N)))

series526.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

454.0ms
(expm1 (log (/ (+ 1 N) N)))
41.0ms
(log (/ (+ 1 N) N))
32.0ms
(/ (+ 1 N) N)

simplify753.0ms

Counts
20 → 53
Calls

20 calls. Slowest were:

276.0ms
(- (+ (exp (- (log N))) (* N (exp (- (log N))))) 1)
177.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
169.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))

prune491.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0b

localize5.0ms

Local error

Found 0 expressions with local error:

rewrite0.0ms

Algorithm
rewrite-expression-head
Counts
0 → 0
Calls

0 calls. Slowest were:

series0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

simplify0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

prune5.0ms

Pruning

1 alts after pruning (0 fresh and 1 done)

Merged error: 0b