Average Error: 29.0 → 0.0
Time: 10.1s
Precision: 64
Internal Precision: 128
\[\log \left(N + 1\right) - \log N\]
\[\begin{array}{l} \mathbf{if}\;N \le 7605.5711392871335:\\ \;\;\;\;\log \left(\frac{1 + N}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{N} - \frac{1}{N \cdot N} \cdot \left(\frac{1}{2} - \frac{\frac{1}{3}}{N}\right)\\ \end{array}\]

Error

Bits error versus N

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

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

    1. Initial program 0.1

      \[\log \left(N + 1\right) - \log N\]
    2. Using strategy rm
    3. Applied diff-log0.1

      \[\leadsto \color{blue}{\log \left(\frac{N + 1}{N}\right)}\]

    if 7605.5711392871335 < N

    1. Initial program 59.4

      \[\log \left(N + 1\right) - \log N\]
    2. Taylor expanded around -inf 0.0

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

      \[\leadsto \color{blue}{\frac{1}{N} - \frac{1}{N \cdot N} \cdot \left(\frac{1}{2} - \frac{\frac{1}{3}}{N}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;N \le 7605.5711392871335:\\ \;\;\;\;\log \left(\frac{1 + N}{N}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{N} - \frac{1}{N \cdot N} \cdot \left(\frac{1}{2} - \frac{\frac{1}{3}}{N}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019021 
(FPCore (N)
  :name "2log (problem 3.3.6)"
  (- (log (+ N 1)) (log N)))

Details

Time bar (total: 9.7s)Debug log

sample119.0ms

Algorithm
intervals
Results
32.0ms49×body1280valid
21.0ms43×body640valid
19.0ms263×body80nan
15.0ms138×body80valid
8.0ms21×body320valid
1.0msbody160valid

simplify7.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
7.0ms
(- (log (+ N 1)) (log N))

prune5.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 28.1b

localize12.0ms

Local error

Found 2 expressions with local error:

3.3b
(log (+ N 1))
2.4b
(- (log (+ N 1)) (log N))

rewrite10.0ms

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity
log-prod
add-sqr-sqrt
add-cube-cbrt
log-div
pow1
add-exp-log
associate--l+
add-log-exp
distribute-lft-out--
flip-+
log-pow
add-cbrt-cube
flip3-+
associate--l-
difference-of-squares
flip--
rem-log-exp
diff-log
flip3--
sub-neg
Counts
2 → 34
Calls
2 calls:
Slowest
8.0ms
(- (log (+ N 1)) (log N))
1.0ms
(log (+ N 1))

series103.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
53.0ms
(- (log (+ N 1)) (log N))
51.0ms
(log (+ N 1))

simplify827.0ms

Counts
22 → 40
Calls
22 calls:
Slowest
250.0ms
(- (+ (/ 1 N) (log -1)) (+ (* 1/2 (/ 1 (pow N 2))) (log (/ -1 N))))
132.0ms
(- (/ 1 N) (+ (* 1/2 (/ 1 (pow N 2))) (log (/ 1 N))))
115.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
91.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
91.0ms
(- (+ N (* 1/3 (pow N 3))) (* 1/2 (pow N 2)))

prune648.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.1b

localize11.0ms

Local error

Found 2 expressions with local error:

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

rewrite7.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
*-un-lft-identity
log-prod
add-sqr-sqrt
associate-/l*
add-exp-log
pow1
associate-/l/
add-log-exp
div-inv
add-cbrt-cube
flip-+
log-pow
rem-log-exp
flip3-+
frac-2neg
clear-num
log-div
Counts
2 → 29
Calls
2 calls:
Slowest
4.0ms
(/ (+ N 1) N)
2.0ms
(log (/ (+ N 1) N))

series69.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
51.0ms
(log (/ (+ N 1) N))
18.0ms
(/ (+ N 1) N)

simplify358.0ms

Counts
16 → 35
Calls
16 calls:
Slowest
151.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
110.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
45.0ms
(- N (+ (log N) (* 1/2 (pow N 2))))
12.0ms
(- (* N N) (* 1 1))
8.0ms
(* (cbrt (+ N 1)) (cbrt (+ N 1)))

prune213.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.1b

localize10.0ms

Local error

Found 4 expressions with local error:

2.3b
(log (/ (+ N 1) N))
2.3b
(log (/ (+ N 1) N))
0.3b
(* (sqrt (log (/ (+ N 1) N))) (sqrt (log (/ (+ N 1) N))))
0.1b
(sqrt (log (/ (+ N 1) N)))

rewrite17.0ms

Algorithm
rewrite-expression-head
Rules
14×pow1
12×sqrt-prod
12×add-sqr-sqrt
11×add-cube-cbrt
11×*-un-lft-identity
add-exp-log
log-prod
associate-*l*
associate-*r*
add-cbrt-cube
log-pow
pow1/2
add-log-exp
div-inv
pow-prod-up
pow-prod-down
rem-log-exp
log-div
cbrt-unprod
*-commutative
prod-exp
sqrt-unprod
pow-plus
rem-square-sqrt
rem-sqrt-square
pow2
Counts
4 → 73
Calls
4 calls:
Slowest
10.0ms
(* (sqrt (log (/ (+ N 1) N))) (sqrt (log (/ (+ N 1) N))))
2.0ms
(log (/ (+ N 1) N))
2.0ms
(sqrt (log (/ (+ N 1) N)))
1.0ms
(log (/ (+ N 1) N))

series190.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
55.0ms
(sqrt (log (/ (+ N 1) N)))
52.0ms
(* (sqrt (log (/ (+ N 1) N))) (sqrt (log (/ (+ N 1) N))))
50.0ms
(log (/ (+ N 1) N))
33.0ms
(log (/ (+ N 1) N))

simplify1.5s

Counts
53 → 85
Calls
53 calls:
Slowest
153.0ms
(- (+ (* 1/2 (/ N (sqrt (- (log N))))) (sqrt (- (log N)))) (+ (* 1/8 (/ (pow N 2) (pow (sqrt (- (log N))) 3))) (* 1/4 (/ (pow N 2) (sqrt (- (log N)))))))
141.0ms
(* (* (* (sqrt (log (/ (+ N 1) N))) (sqrt (log (/ (+ N 1) N)))) (sqrt (log (/ (+ N 1) N)))) (* (* (sqrt (log (/ (+ N 1) N))) (sqrt (log (/ (+ N 1) N)))) (sqrt (log (/ (+ N 1) N)))))
129.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
124.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
115.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))

prune641.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.1b

localize20.0ms

Local error

Found 4 expressions with local error:

2.3b
(log (/ (+ N 1) N))
2.3b
(log (/ (+ N 1) N))
1.7b
(log (exp (sqrt (log (/ (+ N 1) N)))))
1.2b
(exp (sqrt (log (/ (+ N 1) N))))

rewrite13.0ms

Algorithm
rewrite-expression-head
Rules
14×exp-prod
12×log-pow
11×add-cube-cbrt
11×*-un-lft-identity
11×log-prod
11×add-sqr-sqrt
pow1
sqrt-prod
add-exp-log
add-log-exp
add-cbrt-cube
rem-log-exp
div-inv
log-div
rem-exp-log
Counts
4 → 62
Calls
4 calls:
Slowest
6.0ms
(log (exp (sqrt (log (/ (+ N 1) N)))))
3.0ms
(exp (sqrt (log (/ (+ N 1) N))))
2.0ms
(log (/ (+ N 1) N))
2.0ms
(log (/ (+ N 1) N))

series194.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
59.0ms
(exp (sqrt (log (/ (+ N 1) N))))
57.0ms
(log (/ (+ N 1) N))
48.0ms
(log (exp (sqrt (log (/ (+ N 1) N)))))
30.0ms
(log (/ (+ N 1) N))

simplify1.0s

Counts
43 → 74
Calls
43 calls:
Slowest
169.0ms
(- (+ (* 1/2 (/ N (sqrt (- (log N))))) (sqrt (- (log N)))) (+ (* 1/8 (/ (pow N 2) (pow (sqrt (- (log N))) 3))) (* 1/4 (/ (pow N 2) (sqrt (- (log N)))))))
118.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
115.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
103.0ms
(- (+ (* 1/3 (/ 1 (pow N 3))) (/ 1 N)) (* 1/2 (/ 1 (pow N 2))))
103.0ms
(- (+ (* 1/2 (/ (* (exp (sqrt (- (log N)))) N) (sqrt (- (log N))))) (+ (exp (sqrt (- (log N)))) (* 1/8 (/ (* (exp (sqrt (- (log N)))) (pow N 2)) (pow (sqrt (- (log N))) 2))))) (+ (* 1/4 (/ (* (exp (sqrt (- (log N)))) (pow N 2)) (sqrt (- (log N))))) (* 1/8 (/ (* (exp (sqrt (- (log N)))) (pow N 2)) (pow (sqrt (- (log N))) 3)))))

prune746.0ms

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.1b

regimes130.0ms

Accuracy

100% (0.0b remaining)

Error of 0.0b against oracle of 0.0b and baseline of 28.9b

bsearch31.0ms

end0.0ms

sample2.9s

Algorithm
intervals
Results
991.0ms1718×body1280valid
565.0ms1229×body640valid
516.0ms7849×body80nan
435.0ms4143×body80valid
184.0ms611×body320valid
44.0ms300×body160valid