Hyperbolic tangent

Time bar (total: 5.0s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
100%100%0%0%0%0%0%2
Compiler

Compiled 15 to 9 computations (40% saved)

sample3.6s (72%)

Memory
70.6MiB live, 5 935.5MiB allocated
Samples
1.3s2 780×2valid
885.0ms4 645×1valid
609.0ms7 492×0exit
43.0ms579×0valid
Precisions
Click to see histograms. Total time spent on operations: 2.3s
ival-exp: 1.5s (65.5% of total)
ival-div: 199.0ms (8.8% of total)
adjust: 184.0ms (8.1% of total)
ival-sub: 147.0ms (6.5% of total)
ival-add: 123.0ms (5.4% of total)
ival-neg: 106.0ms (4.7% of total)
ival-true: 14.0ms (0.6% of total)
ival-assert: 7.0ms (0.3% of total)
Bogosity

explain3.0ms (0.1%)

Memory
6.2MiB live, 6.2MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
30-0-(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
00-0-(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
00-0-(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
00-0-(exp.f64 x)
01(574.16931023239)0-(exp.f64 (neg.f64 x))
00-0-(neg.f64 x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))cancellation30
exp.f64(exp.f64 (neg.f64 x))sensitivity10
Confusion
Predicted +Predicted -
+30
-10
Precision
0.75
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+300
-100
Precision?
0.75
Recall?
1.0
Freqs
test
numberfreq
14
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
1.0ms1valid
0.0ms0valid
Compiler

Compiled 116 to 32 computations (72.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0ms
ival-div: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-exp: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-neg: 0.0ms (0% of total)

preprocess91.0ms (1.8%)

Memory
2.6MiB live, 81.3MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0927
13227
28026
319926
446826
5113026
6154726
7158526
8160426
9162326
10165726
11166926
0713
01313
12513
24213
36713
412213
527613
646213
768213
890513
9105813
10118613
11123313
0123313
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
Symmetry

(negabs x)

Compiler

Compiled 13 to 7 computations (46.2% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
27.9%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 13 to 7 computations (46.2% saved)

simplify41.0ms (0.8%)

Memory
1.4MiB live, 42.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(exp.f64 (neg.f64 x))
cost-diff0
(exp.f64 x)
cost-diff0
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
cost-diff0
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0733
01333
12533
24233
36733
412233
527633
646233
768233
890533
9105833
10118633
11123333
0123333
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(exp.f64 x)
x
(exp.f64 (neg.f64 x))
(neg.f64 x)
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(exp.f64 x)
x
(exp.f64 (neg.f64 x))
(neg.f64 x)
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))

localize1.0ms (0%)

Memory
2.6MiB live, 2.6MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0
(neg.f64 x)
accuracy0
(exp.f64 (neg.f64 x))
accuracy0
(exp.f64 x)
accuracy46.140319582840846
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Samples
1.0ms1valid
0.0ms0valid
Compiler

Compiled 68 to 16 computations (76.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-div: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-exp: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-sub: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
ival-neg: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
9.8MiB live, 9.8MiB allocated
Counts
5 → 60
Calls
Call 1
Inputs
#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())
#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())
#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())
#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())
#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1/3 (pow x 2)))) (taylor 0 x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))) (taylor 0 x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3)))) (taylor 0 x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* 1/3 (pow x 2)))) (taylor 0 x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 1/3 (* 1/60 (pow x 2)))))) (taylor 0 x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (* x (+ 2 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/60 (* 1/2520 (pow x 2)))))))) (taylor 0 x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 x) (taylor 0 x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* x (+ 1 (* 1/2 x)))) (taylor 0 x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))) (taylor 0 x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt 1 (taylor 0 x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* -1 x)) (taylor 0 x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* x (- (* 1/2 x) 1))) (taylor 0 x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (+ 1 (* x (- (* x (+ 1/2 (* -1/6 x))) 1))) (taylor 0 x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor 0 x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (taylor inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (taylor inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (taylor inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (taylor inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (neg x))) (taylor inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (neg x))) (taylor inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (neg x))) (taylor inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (neg x))) (taylor inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp (neg x)) (taylor inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (neg x)) (taylor inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (neg x)) (taylor inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (neg x)) (taylor inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x)))) (taylor -inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x)))) (taylor -inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x)))) (taylor -inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x)))) (taylor -inf x) (#s(alt (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (patch (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (* -1 x))) (taylor -inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (* -1 x))) (taylor -inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (* -1 x))) (taylor -inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (- (exp x) (exp (* -1 x))) (taylor -inf x) (#s(alt (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (patch (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor -inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor -inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor -inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp x) (taylor -inf x) (#s(alt (exp.f64 x) (patch (exp.f64 x) #<representation binary64>) () ())) ())
#s(alt (exp (* -1 x)) (taylor -inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (* -1 x)) (taylor -inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (* -1 x)) (taylor -inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (exp (* -1 x)) (taylor -inf x) (#s(alt (exp.f64 (neg.f64 x)) (patch (exp.f64 (neg.f64 x)) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 x) (taylor -inf x) (#s(alt (neg.f64 x) (patch (neg.f64 x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (- (exp x) (exp (neg x))) (exp x) (exp (neg x)) (neg x))
1.0ms
x
@-inf
((/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (- (exp x) (exp (neg x))) (exp x) (exp (neg x)) (neg x))
1.0ms
x
@0
((/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x)))) (- (exp x) (exp (neg x))) (exp x) (exp (neg x)) (neg x))

simplify192.0ms (3.8%)

Memory
2.4MiB live, 237.4MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
077363
1220362
2490356
31296356
42173356
53648356
64347356
75852356
87977356
08013334
Stop Event
iter limit
node limit
Counts
60 → 59
Calls
Call 1
Inputs
x
(* x (+ 1 (* -1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(* 2 x)
(* x (+ 2 (* 1/3 (pow x 2))))
(* x (+ 2 (* (pow x 2) (+ 1/3 (* 1/60 (pow x 2))))))
(* x (+ 2 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/60 (* 1/2520 (pow x 2))))))))
1
(+ 1 x)
(+ 1 (* x (+ 1 (* 1/2 x))))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
1
(+ 1 (* -1 x))
(+ 1 (* x (- (* 1/2 x) 1)))
(+ 1 (* x (- (* x (+ 1/2 (* -1/6 x))) 1)))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(- (exp x) (exp (neg x)))
(- (exp x) (exp (neg x)))
(- (exp x) (exp (neg x)))
(- (exp x) (exp (neg x)))
(exp x)
(exp x)
(exp x)
(exp x)
(exp (neg x))
(exp (neg x))
(exp (neg x))
(exp (neg x))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(- (exp x) (exp (* -1 x)))
(- (exp x) (exp (* -1 x)))
(- (exp x) (exp (* -1 x)))
(- (exp x) (exp (* -1 x)))
(exp x)
(exp x)
(exp x)
(exp x)
(exp (* -1 x))
(exp (* -1 x))
(exp (* -1 x))
(exp (* -1 x))
(* -1 x)
(* -1 x)
(* -1 x)
(* -1 x)
Outputs
x
(* x (+ 1 (* -1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 #s(literal 2/15 binary64) (*.f64 x x) #s(literal -1/3 binary64)) x)
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (fma.f64 #s(literal -17/315 binary64) (*.f64 x x) #s(literal 2/15 binary64)) (*.f64 x x) #s(literal -1/3 binary64)) x)
(* 2 x)
(*.f64 #s(literal 2 binary64) x)
(* x (+ 2 (* 1/3 (pow x 2))))
(*.f64 (fma.f64 #s(literal 1/3 binary64) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 1/3 (* 1/60 (pow x 2))))))
(*.f64 (fma.f64 (fma.f64 #s(literal 1/60 binary64) (*.f64 x x) #s(literal 1/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
(* x (+ 2 (* (pow x 2) (+ 1/3 (* (pow x 2) (+ 1/60 (* 1/2520 (pow x 2))))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 1/2520 binary64) (*.f64 x x) #s(literal 1/60 binary64)) (*.f64 x x) #s(literal 1/3 binary64)) (*.f64 x x) #s(literal 2 binary64)) x)
1
#s(literal 1 binary64)
(+ 1 x)
(-.f64 x #s(literal -1 binary64))
(+ 1 (* x (+ 1 (* 1/2 x))))
(fma.f64 (fma.f64 #s(literal 1/2 binary64) x #s(literal 1 binary64)) x #s(literal 1 binary64))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
(fma.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) x #s(literal 1/2 binary64)) x #s(literal 1 binary64)) x #s(literal 1 binary64))
1
#s(literal 1 binary64)
(+ 1 (* -1 x))
(-.f64 #s(literal 1 binary64) x)
(+ 1 (* x (- (* 1/2 x) 1)))
(fma.f64 (fma.f64 #s(literal 1/2 binary64) x #s(literal -1 binary64)) x #s(literal 1 binary64))
(+ 1 (* x (- (* x (+ 1/2 (* -1/6 x))) 1)))
(fma.f64 (fma.f64 (fma.f64 #s(literal -1/6 binary64) x #s(literal 1/2 binary64)) x #s(literal -1 binary64)) x #s(literal 1 binary64))
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (neg x))) (+ (exp x) (exp (neg x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(- (exp x) (exp (neg x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (neg x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (neg x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (neg x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp (neg x))
(exp.f64 (neg.f64 x))
(exp (neg x))
(exp.f64 (neg.f64 x))
(exp (neg x))
(exp.f64 (neg.f64 x))
(exp (neg x))
(exp.f64 (neg.f64 x))
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (exp (* -1 x))) (+ (exp x) (exp (* -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(- (exp x) (exp (* -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (* -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (* -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(- (exp x) (exp (* -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp x)
(exp.f64 x)
(exp (* -1 x))
(exp.f64 (neg.f64 x))
(exp (* -1 x))
(exp.f64 (neg.f64 x))
(exp (* -1 x))
(exp.f64 (neg.f64 x))
(exp (* -1 x))
(exp.f64 (neg.f64 x))
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)
(* -1 x)
(neg.f64 x)

rewrite185.0ms (3.7%)

Memory
3.6MiB live, 282.9MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0726
01313
15513
242413
3708013
0806213
Stop Event
iter limit
node limit
iter limit
Counts
5 → 529
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(exp.f64 x)
(exp.f64 (neg.f64 x))
(neg.f64 x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval13.0ms (0.3%)

Memory
-7.3MiB live, 31.6MiB allocated
Compiler

Compiled 14 612 to 1 569 computations (89.3% saved)

prune1.0ms (0%)

Memory
2.7MiB live, 2.7MiB allocated
Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New6731674
Fresh000
Picked101
Done000
Total6741675
Accuracy
100.0%
Counts
675 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(tanh.f64 x)
Compiler

Compiled 2 to 2 computations (0% saved)

simplify140.0ms (2.8%)

Memory
8.0MiB live, 166.0MiB allocated
Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff0
(tanh.f64 x)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023
033
1223
2523
3773
41263
52183
64423
77933
814413
939313
1068873
080503
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(tanh.f64 x)
x
Outputs
(tanh.f64 x)
x

localize2.0ms (0%)

Memory
-36.5MiB live, 0.8MiB allocated
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy0
(tanh.f64 x)
Samples
2.0ms0valid
Compiler

Compiled 8 to 6 computations (25% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-true: 0.0ms (0% of total)
ival-tanh: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
7.7MiB live, 7.7MiB allocated
Counts
1 → 12
Calls
Call 1
Inputs
#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())
Outputs
#s(alt x (taylor 0 x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* -1/3 (pow x 2)))) (taylor 0 x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))) (taylor 0 x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3)))) (taylor 0 x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor -inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor -inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor -inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
#s(alt (/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x)))) (taylor -inf x) (#s(alt (tanh.f64 x) (patch (tanh.f64 x) #<representation binary64>) () ())) ())
Calls

3 calls:

TimeVariablePointExpression
2.0ms
x
@inf
((tanh x))
1.0ms
x
@-inf
((tanh x))
0.0ms
x
@0
((tanh x))

simplify509.0ms (10.1%)

Memory
27.9MiB live, 189.0MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
028150
174150
2165144
3460144
4948144
51536144
61900144
72634144
83715144
94807144
105959144
116900144
127007144
137028144
147028144
157099144
167108144
177108144
187108144
197606144
207822144
217822144
227822144
237822144
247822144
257822144
267848144
07848138
Stop Event
iter limit
saturated
Counts
12 → 11
Calls
Call 1
Inputs
x
(* x (+ 1 (* -1/3 (pow x 2))))
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
Outputs
x
(* x (+ 1 (* -1/3 (pow x 2))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/3 binary64) x)
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 2/15 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/3 binary64) x))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(fma.f64 (pow.f64 x #s(literal 7 binary64)) #s(literal -17/315 binary64) (fma.f64 (pow.f64 x #s(literal 5 binary64)) #s(literal 2/15 binary64) (fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/3 binary64) x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/ (- (exp x) (/ 1 (exp x))) (+ (exp x) (/ 1 (exp x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))

rewrite199.0ms (4%)

Memory
-14.7MiB live, 272.6MiB allocated
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022
032
1222
21222
39972
091282
Stop Event
iter limit
node limit
iter limit
Counts
1 → 450
Calls
Call 1
Inputs
(tanh.f64 x)
Outputs
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>
#<batchref>

eval22.0ms (0.4%)

Memory
-16.0MiB live, 22.7MiB allocated
Compiler

Compiled 12 878 to 1 076 computations (91.6% saved)

prune1.0ms (0%)

Memory
2.1MiB live, 2.1MiB allocated
Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New4610461
Fresh000
Picked011
Done000
Total4611462
Accuracy
100.0%
Counts
462 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(tanh.f64 x)
Compiler

Compiled 17 to 10 computations (41.2% saved)

regimes0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated
Compiler

Compiled 13 to 7 computations (46.2% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated
Calls

1 calls:

0.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))

Profiling

Loading profile data...