Average Error: 0.0 → 0.0
Time: 6.2s
Precision: 64
Internal Precision: 128
\[e^{-\left(1 - x \cdot x\right)}\]
\[(e^{\log_* (1 + e^{(x \cdot x + -1)_*})} - 1)^*\]

Error

Bits error versus x

Derivation

  1. Initial program 0.0

    \[e^{-\left(1 - x \cdot x\right)}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{e^{(x \cdot x + -1)_*}}\]
  3. Using strategy rm
  4. Applied expm1-log1p-u0.0

    \[\leadsto \color{blue}{(e^{\log_* (1 + e^{(x \cdot x + -1)_*})} - 1)^*}\]
  5. Final simplification0.0

    \[\leadsto (e^{\log_* (1 + e^{(x \cdot x + -1)_*})} - 1)^*\]

Reproduce

herbie shell --seed 2019022 +o rules:numerics
(FPCore (x)
  :name "exp neg sub"
  (exp (- (- 1 (* x x)))))

Details

Time bar (total: 5.7s)Debug log

sample38.0ms

Algorithm
intervals
Results
28.0ms495×body80valid

simplify65.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
65.0ms
(exp (- (- 1 (* x x))))

prune6.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize7.0ms

Local error

Found 1 expressions with local error:

0.0b
(exp (fma x x -1))

rewrite2.0ms

Algorithm
rewrite-expression-head
Rules
exp-prod
add-log-exp
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
rem-exp-log
log1p-expm1-u
fma-udef
add-exp-log
exp-sum
add-cbrt-cube
pow1
expm1-log1p-u
Counts
1 → 14
Calls
1 calls:
Slowest
1.0ms
(exp (fma x x -1))

series16.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
16.0ms
(exp (fma x x -1))

simplify336.0ms

Counts
8 → 17
Calls
8 calls:
Slowest
302.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
20.0ms
(exp (* (cbrt (fma x x -1)) (cbrt (fma x x -1))))
5.0ms
(exp (sqrt (fma x x -1)))
2.0ms
(exp (fma x x -1))
2.0ms
(exp (* x x))

prune100.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize8.0ms

Local error

Found 3 expressions with local error:

1.0b
(expm1 (log1p (exp (fma x x -1))))
1.0b
(log1p (exp (fma x x -1)))
0.0b
(exp (fma x x -1))

rewrite2.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
add-cube-cbrt
*-un-lft-identity
expm1-log1p-u
add-sqr-sqrt
log1p-expm1-u
add-exp-log
add-cbrt-cube
exp-prod
pow1
rem-exp-log
expm1-udef
fma-udef
log1p-expm1
exp-sum
expm1-log1p
log1p-udef
Counts
3 → 36
Calls
3 calls:
Slowest
1.0ms
(exp (fma x x -1))
0.0ms
(log1p (exp (fma x x -1)))
0.0ms
(expm1 (log1p (exp (fma x x -1))))

series316.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
178.0ms
(expm1 (log1p (exp (fma x x -1))))
115.0ms
(log1p (exp (fma x x -1)))
22.0ms
(exp (fma x x -1))

simplify771.0ms

Counts
16 → 45
Calls
16 calls:
Slowest
389.0ms
(- (+ (* 1/2 (/ (* (pow x 4) (exp -1)) (+ (exp -1) 1))) (+ (/ (* (pow x 2) (exp -1)) (+ (exp -1) 1)) (log (+ (exp -1) 1)))) (* 1/2 (/ (* (pow x 4) (pow (exp -1) 2)) (pow (+ (exp -1) 1) 2))))
132.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
126.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
35.0ms
(log (+ (exp (fma x x -1)) 1))
33.0ms
(log (+ (exp (fma x x -1)) 1))

prune406.0ms

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.0b

localize6.0ms

Local error

Found 4 expressions with local error:

1.0b
(expm1 (log1p (exp (fma x x -1))))
1.0b
(expm1 (log1p (exp (fma x x -1))))
1.0b
(log1p (exp (fma x x -1)))
1.0b
(log1p (exp (fma x x -1)))

rewrite2.0ms

Algorithm
rewrite-expression-head
Rules
expm1-log1p-u
add-log-exp
log1p-expm1-u
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
add-sqr-sqrt
expm1-udef
log1p-expm1
expm1-log1p
log1p-udef
Counts
4 → 44
Calls
4 calls:
Slowest
1.0ms
(log1p (exp (fma x x -1)))
0.0ms
(log1p (exp (fma x x -1)))
0.0ms
(expm1 (log1p (exp (fma x x -1))))
0.0ms
(expm1 (log1p (exp (fma x x -1))))

series489.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
176.0ms
(expm1 (log1p (exp (fma x x -1))))
136.0ms
(expm1 (log1p (exp (fma x x -1))))
98.0ms
(log1p (exp (fma x x -1)))
80.0ms
(log1p (exp (fma x x -1)))

simplify1.1s

Counts
16 → 56
Calls
16 calls:
Slowest
334.0ms
(- (+ (* 1/2 (/ (* (pow x 4) (exp -1)) (+ (exp -1) 1))) (+ (/ (* (pow x 2) (exp -1)) (+ (exp -1) 1)) (log (+ (exp -1) 1)))) (* 1/2 (/ (* (pow x 4) (pow (exp -1) 2)) (pow (+ (exp -1) 1) 2))))
309.0ms
(- (+ (* 1/2 (/ (* (pow x 4) (exp -1)) (+ (exp -1) 1))) (+ (/ (* (pow x 2) (exp -1)) (+ (exp -1) 1)) (log (+ (exp -1) 1)))) (* 1/2 (/ (* (pow x 4) (pow (exp -1) 2)) (pow (+ (exp -1) 1) 2))))
159.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
155.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
42.0ms
(log (+ (exp (fma x x -1)) 1))

prune538.0ms

Pruning

5 alts after pruning (2 fresh and 3 done)

Merged error: 0.0b

localize4.0ms

Local error

Found 1 expressions with local error:

0.1b
(pow E (fma x x -1))

rewrite1.0ms

Algorithm
rewrite-expression-head
Rules
pow-unpow
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
fma-udef
add-exp-log
add-cbrt-cube
unpow-prod-up
pow1
pow-to-exp
expm1-log1p-u
Counts
1 → 14
Calls
1 calls:
Slowest
1.0ms
(pow E (fma x x -1))

series37.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
37.0ms
(pow E (fma x x -1))

simplify150.0ms

Counts
7 → 17
Calls
7 calls:
Slowest
137.0ms
(+ (exp -1) (+ (* (pow x 2) (exp -1)) (* 1/2 (* (pow x 4) (exp -1)))))
3.0ms
(exp (fma x x -1))
3.0ms
(sqrt (fma x x -1))
3.0ms
(exp (fma x x -1))
2.0ms
(cbrt (fma x x -1))

prune119.0ms

Pruning

5 alts after pruning (1 fresh and 4 done)

Merged error: 0.0b

regimes47.0ms

Accuracy

0% (0.0b remaining)

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

bsearch1.0ms

end0.0ms

sample1.2s

Algorithm
intervals
Results
1.0s15909×body80valid