Average Error: 0.5 → 1.0
Time: 15.5s
Precision: 64
Internal Precision: 128
\[\log \left(1 + e^{x}\right) - x \cdot y\]
\[\left(\log \left(\sqrt{1 + e^{x}}\right) + \log \left(\sqrt{1 + e^{x}}\right)\right) - x \cdot y\]

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.5
Target0.0
Herbie1.0
\[\begin{array}{l} \mathbf{if}\;x \le 0:\\ \;\;\;\;\log \left(1 + e^{x}\right) - x \cdot y\\ \mathbf{else}:\\ \;\;\;\;\log \left(1 + e^{-x}\right) - \left(-x\right) \cdot \left(1 - y\right)\\ \end{array}\]

Derivation

  1. Initial program 0.5

    \[\log \left(1 + e^{x}\right) - x \cdot y\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt1.3

    \[\leadsto \log \color{blue}{\left(\sqrt{1 + e^{x}} \cdot \sqrt{1 + e^{x}}\right)} - x \cdot y\]
  4. Applied log-prod1.0

    \[\leadsto \color{blue}{\left(\log \left(\sqrt{1 + e^{x}}\right) + \log \left(\sqrt{1 + e^{x}}\right)\right)} - x \cdot y\]
  5. Final simplification1.0

    \[\leadsto \left(\log \left(\sqrt{1 + e^{x}}\right) + \log \left(\sqrt{1 + e^{x}}\right)\right) - x \cdot y\]

Reproduce

herbie shell --seed 2019005 
(FPCore (x y)
  :name "Logistic regression 2"

  :herbie-target
  (if (<= x 0) (- (log (+ 1 (exp x))) (* x y)) (- (log (+ 1 (exp (- x)))) (* (- x) (- 1 y))))

  (- (log (+ 1 (exp x))) (* x y)))

Details

Time bar (total: 14.8s)Debug log

sample163.0ms

Algorithm
intervals

simplify11.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

11.0ms
(- (log (+ 1 (exp x))) (* x y))

prune11.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.7b

localize28.0ms

Local error

Found 3 expressions with local error:

0.8b
(log (+ 1 (exp x)))
0.0b
(+ 1 (exp x))
0.0b
(- (log (+ 1 (exp x))) (* x y))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
3 → 41
Calls

3 calls. Slowest were:

9.0ms
(- (log (+ 1 (exp x))) (* x y))
2.0ms
(log (+ 1 (exp x)))
1.0ms
(+ 1 (exp x))

series155.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

96.0ms
(log (+ 1 (exp x)))
48.0ms
(- (log (+ 1 (exp x))) (* x y))
11.0ms
(+ 1 (exp x))

simplify190.0ms

Counts
21 → 50
Calls

21 calls. Slowest were:

44.0ms
(+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2))))
43.0ms
(+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2))))
25.0ms
(+ x (+ (* 1/2 (pow x 2)) 2))

prune489.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.4b

localize10.0ms

Local error

Found 4 expressions with local error:

1.5b
(log (sqrt (+ 1 (exp x))))
1.5b
(log (sqrt (+ 1 (exp x))))
0.0b
(+ 1 (exp x))
0.0b
(+ 1 (exp x))

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
4 → 56
Calls

4 calls. Slowest were:

2.0ms
(log (sqrt (+ 1 (exp x))))
1.0ms
(+ 1 (exp x))
1.0ms
(+ 1 (exp x))

series179.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

83.0ms
(log (sqrt (+ 1 (exp x))))
81.0ms
(log (sqrt (+ 1 (exp x))))
8.0ms
(+ 1 (exp x))
7.0ms
(+ 1 (exp x))

simplify567.0ms

Counts
30 → 68
Calls

30 calls. Slowest were:

196.0ms
(- (+ (* 1/4 (/ (pow x 2) (pow (sqrt 2) 2))) (+ (log (sqrt 2)) (* 1/2 (/ x (pow (sqrt 2) 2))))) (* 1/4 (/ (pow x 2) (pow (sqrt 2) 4))))
185.0ms
(- (+ (* 1/4 (/ (pow x 2) (pow (sqrt 2) 2))) (+ (log (sqrt 2)) (* 1/2 (/ x (pow (sqrt 2) 2))))) (* 1/4 (/ (pow x 2) (pow (sqrt 2) 4))))
38.0ms
(+ x (+ (* 1/2 (pow x 2)) 2))

prune789.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.4b

localize25.0ms

Local error

Found 4 expressions with local error:

5.3b
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
0.0b
(- (log (+ x (+ (* 1/2 (pow x 2)) 2))) (* x y))
0.0b
(+ x (+ (* 1/2 (pow x 2)) 2))
0.0b
(* 1/2 (pow x 2))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
4 → 54
Calls

4 calls. Slowest were:

7.0ms
(- (log (+ x (+ (* 1/2 (pow x 2)) 2))) (* x y))
2.0ms
(+ x (+ (* 1/2 (pow x 2)) 2))
2.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))

series110.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

50.0ms
(- (log (+ x (+ (* 1/2 (pow x 2)) 2))) (* x y))
34.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
15.0ms
(* 1/2 (pow x 2))
11.0ms
(+ x (+ (* 1/2 (pow x 2)) 2))

simplify1.8s

Counts
27 → 66
Calls

27 calls. Slowest were:

285.0ms
(- (+ (log 1/2) (+ (* 2 (/ 1 (pow x 2))) (* 2 (/ 1 x)))) (* 2 (log (/ 1 x))))
208.0ms
(- (+ (log 1/2) (* 2 (/ 1 x))) (+ (* 2 (log (/ 1 x))) (* x y)))
205.0ms
(- (+ (log 1/2) (+ (* 2 (/ 1 (pow x 2))) (* 2 (/ 1 x)))) (* 2 (log (/ -1 x))))

prune716.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.4b

localize15.0ms

Local error

Found 4 expressions with local error:

5.3b
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
5.3b
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
5.3b
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
1.3b
(cbrt (log (+ x (+ (* 1/2 (pow x 2)) 2))))

rewrite6.0ms

Algorithm
rewrite-expression-head
Counts
4 → 54
Calls

4 calls. Slowest were:

2.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
2.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
2.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))

series147.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

68.0ms
(cbrt (log (+ x (+ (* 1/2 (pow x 2)) 2))))
31.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
24.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))
23.0ms
(log (+ x (+ (* 1/2 (pow x 2)) 2)))

simplify4.0s

Counts
34 → 66
Calls

34 calls. Slowest were:

483.0ms
(log (+ (pow x 3) (pow (+ (* 1/2 (pow x 2)) 2) 3)))
389.0ms
(- (+ (* 2/3 (* (/ 1 (pow x 2)) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ -1 x)))) 2)) 1/3))) (+ (pow (- (log 1/2) (* 2 (log (/ -1 x)))) 1/3) (* 2/3 (* (/ 1 x) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ -1 x)))) 2)) 1/3))))) (* 4/9 (* (/ 1 (pow x 2)) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ -1 x)))) 5)) 1/3))))
327.0ms
(- (+ (pow (- (log 1/2) (* 2 (log (/ 1 x)))) 1/3) (+ (* 2/3 (* (/ 1 x) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ 1 x)))) 2)) 1/3))) (* 2/3 (* (/ 1 (pow x 2)) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ 1 x)))) 2)) 1/3))))) (* 4/9 (* (/ 1 (pow x 2)) (pow (/ 1 (pow (- (log 1/2) (* 2 (log (/ 1 x)))) 5)) 1/3))))

prune955.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.4b

regimes85.0ms

Accuracy

0% (0.8b remaining)

Error of 1.0b against oracle of 0.2b and baseline of 1.0b

bsearch2.0ms

end0.0ms

sample4.4s

Algorithm
intervals