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

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.1
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. Applied associate--l+1.0

    \[\leadsto \color{blue}{\log \left(\sqrt{1 + e^{x}}\right) + \left(\log \left(\sqrt{1 + e^{x}}\right) - x \cdot y\right)}\]
  6. Using strategy rm
  7. Applied add-sqr-sqrt1.0

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

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

Reproduce

herbie shell --seed 2019004 
(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: 18.2s)Debug log

sample133.0ms

Algorithm
intervals

simplify6.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune6.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.5b

localize23.0ms

Local error

Found 3 expressions with local error:

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

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))

series134.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

88.0ms
(log (+ 1 (exp x)))
40.0ms
(- (log (+ 1 (exp x))) (* x y))
7.0ms
(+ 1 (exp x))

simplify192.0ms

Counts
21 → 50
Calls

21 calls. Slowest were:

48.0ms
(+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2))))
37.0ms
(+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2))))
18.0ms
(+ x (+ (* 1/2 (pow x 2)) 2))

prune408.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.4b

localize11.0ms

Local error

Found 4 expressions with local error:

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

rewrite34.0ms

Algorithm
rewrite-expression-head
Counts
4 → 87
Calls

4 calls. Slowest were:

19.0ms
(+ (log (sqrt (+ 1 (exp x)))) (- (log (sqrt (+ 1 (exp x)))) (* x y)))
10.0ms
(- (log (sqrt (+ 1 (exp x)))) (* x y))
1.0ms
(log (sqrt (+ 1 (exp x))))

series376.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

110.0ms
(+ (log (sqrt (+ 1 (exp x)))) (- (log (sqrt (+ 1 (exp x)))) (* x y)))
97.0ms
(log (sqrt (+ 1 (exp x))))
89.0ms
(- (log (sqrt (+ 1 (exp x)))) (* x y))
80.0ms
(log (sqrt (+ 1 (exp x))))

simplify1.4s

Counts
60 → 99
Calls

60 calls. Slowest were:

335.0ms
(- (+ (* 1/2 (/ (pow x 2) (pow (sqrt 2) 2))) (+ (* 2 (log (sqrt 2))) (/ x (pow (sqrt 2) 2)))) (* 1/2 (/ (pow x 2) (pow (sqrt 2) 4))))
213.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))))
178.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))))

prune1.1s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.4b

localize22.0ms

Local error

Found 4 expressions with local error:

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

rewrite31.0ms

Algorithm
rewrite-expression-head
Counts
4 → 79
Calls

4 calls. Slowest were:

22.0ms
(+ (log (sqrt (+ 1 (exp x)))) (- (* (sqrt (log (sqrt (+ 1 (exp x))))) (sqrt (log (sqrt (+ 1 (exp x)))))) (* x y)))
3.0ms
(log (sqrt (+ 1 (exp x))))
2.0ms
(log (sqrt (+ 1 (exp x))))

series347.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

109.0ms
(log (sqrt (+ 1 (exp x))))
82.0ms
(log (sqrt (+ 1 (exp x))))
79.0ms
(log (sqrt (+ 1 (exp x))))
77.0ms
(+ (log (sqrt (+ 1 (exp x)))) (- (* (sqrt (log (sqrt (+ 1 (exp x))))) (sqrt (log (sqrt (+ 1 (exp x)))))) (* x y)))

simplify1.3s

Counts
54 → 91
Calls

54 calls. Slowest were:

332.0ms
(- (+ (* 1/2 (/ (pow x 2) (pow (sqrt 2) 2))) (+ (* 2 (log (sqrt 2))) (/ x (pow (sqrt 2) 2)))) (* 1/2 (/ (pow x 2) (pow (sqrt 2) 4))))
195.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))))
190.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))))

prune1.1s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.4b

localize27.0ms

Local error

Found 4 expressions with local error:

9.3b
(/ (- (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) (* (* x y) (* x y))) (+ (log (+ 1 (exp x))) (* x y)))
0.7b
(* (log (+ 1 (exp x))) (log (+ 1 (exp x))))
0.5b
(log (+ 1 (exp x)))
0.5b
(log (+ 1 (exp x)))

rewrite39.0ms

Algorithm
rewrite-expression-head
Counts
4 → 92
Calls

4 calls. Slowest were:

31.0ms
(/ (- (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) (* (* x y) (* x y))) (+ (log (+ 1 (exp x))) (* x y)))
5.0ms
(* (log (+ 1 (exp x))) (log (+ 1 (exp x))))
1.0ms
(log (+ 1 (exp x)))

series306.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

86.0ms
(* (log (+ 1 (exp x))) (log (+ 1 (exp x))))
84.0ms
(log (+ 1 (exp x)))
79.0ms
(/ (- (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) (* (* x y) (* x y))) (+ (log (+ 1 (exp x))) (* x y)))
57.0ms
(log (+ 1 (exp x)))

simplify5.2s

Counts
79 → 104
Calls

79 calls. Slowest were:

362.0ms
(- (pow (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) 3) (pow (* (* x y) (* x y)) 3))
254.0ms
(/ (sqrt (- (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) (* (* x y) (* x y)))) (cbrt (+ (log (+ 1 (exp x))) (* x y))))
249.0ms
(/ (cbrt (- (* (log (+ 1 (exp x))) (log (+ 1 (exp x)))) (* (* x y) (* x y)))) (+ (log (+ 1 (exp x))) (* x y)))

prune1.2s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.4b

regimes100.0ms

Accuracy

0% (0.7b remaining)

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

bsearch1.0ms

end0.0ms

sample4.8s

Algorithm
intervals