Logistic function from Lakshay Garg

Time bar (total: 1.8s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 12 to 12 computations (0% saved)

sample1.3s (72.2%)

Memory
33.2MiB live, 1 398.1MiB allocated
Samples
435.0ms1 532×2valid
334.0ms2 440×1valid
256.0ms4 284×0valid
Precisions
Click to see histograms. Total time spent on operations: 800.0ms
ival-exp: 365.0ms (45.7% of total)
ival-div: 102.0ms (12.8% of total)
adjust: 96.0ms (12% of total)
ival-mult: 78.0ms (9.8% of total)
ival-sub: 72.0ms (9% of total)
ival-add: 68.0ms (8.5% of total)
exact: 10.0ms (1.3% of total)
ival-true: 6.0ms (0.8% of total)
ival-assert: 3.0ms (0.4% of total)
Bogosity

explain141.0ms (7.7%)

Memory
24.2MiB live, 140.4MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1300-0-(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
01(-246.38853761680124 3.0122811816026786e+42)0-(exp.f64 (*.f64 #s(literal -2 binary64) x))
00-0-#s(literal 1 binary64)
00-0-(*.f64 #s(literal -2 binary64) x)
00-0-(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
00-0-#s(literal -2 binary64)
00-0-#s(literal 2 binary64)
00-0-(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))cancellation1300
exp.f64(exp.f64 (*.f64 #s(literal -2 binary64) x))sensitivity10
Confusion
Predicted +Predicted -
+1300
-1125
Precision
0.9923664122137404
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+13000
-10125
Precision?
0.9923664122137404
Recall?
1.0
Freqs
test
numberfreq
0125
1131
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
27.0ms92×2valid
24.0ms160×1valid
17.0ms260×0valid
Compiler

Compiled 119 to 44 computations (63% saved)

Precisions
Click to see histograms. Total time spent on operations: 48.0ms
ival-exp: 22.0ms (46% of total)
adjust: 6.0ms (12.6% of total)
ival-div: 6.0ms (12.6% of total)
ival-sub: 5.0ms (10.5% of total)
ival-add: 4.0ms (8.4% of total)
ival-mult: 4.0ms (8.4% of total)
exact: 1.0ms (2.1% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)

preprocess3.0ms (0.1%)

Memory
3.7MiB live, 3.7MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Outputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Compiler

Compiled 10 to 10 computations (0% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.4%
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Compiler

Compiled 10 to 10 computations (0% saved)

simplify0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
cost-diff0
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
cost-diff0
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
cost-diff0
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
Outputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x

localize44.0ms (2.4%)

Memory
-4.0MiB live, 37.3MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
accuracy0.00390625
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
accuracy0.0078125
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
accuracy29.804427348037752
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Samples
15.0ms80×1valid
13.0ms46×2valid
8.0ms130×0valid
Compiler

Compiled 72 to 22 computations (69.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-exp: 11.0ms (47.8% of total)
adjust: 3.0ms (13% of total)
ival-div: 3.0ms (13% of total)
ival-add: 2.0ms (8.7% of total)
ival-mult: 2.0ms (8.7% of total)
ival-sub: 2.0ms (8.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series4.0ms (0.2%)

Memory
3.7MiB live, 3.7MiB allocated
Counts
4 → 19
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
Outputs
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))))
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
1.0ms
x
@-inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
1.0ms
x
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
0.0ms
y
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
0.0ms
y
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))

simplify0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Algorithm
egg-herbie
Counts
19 → 4
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))))
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Outputs
x
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(* x (+ 1 (* -1/3 (pow x 2))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(exp.f64 (*.f64 #s(literal -2 binary64) x))

rewrite0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Counts
4 → 4
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
Outputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))

eval1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Compiler

Compiled 112 to 22 computations (80.4% saved)

prune2.0ms (0.1%)

Memory
2.3MiB live, 2.3MiB allocated
Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New538
Fresh000
Picked011
Done000
Total549
Accuracy
53.7%
Counts
9 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.4%
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
6.8%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
23.9%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
2.7%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Compiler

Compiled 61 to 58 computations (4.9% saved)

simplify1.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
cost-diff0
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
cost-diff0
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
cost-diff0
(*.f64 #s(literal -2 binary64) x)
cost-diff0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
cost-diff0
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
cost-diff0
(*.f64 #s(literal -2 binary64) x)
cost-diff0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(literal 1 binary64)
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x

localize50.0ms (2.7%)

Memory
8.5MiB live, 46.5MiB allocated
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
accuracy0.00390625
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
accuracy0.0078125
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
accuracy59.62644164895661
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
accuracy0.0
(*.f64 #s(literal -2 binary64) x)
accuracy0.0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
accuracy0.00390625
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
accuracy48.6846992066068
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
accuracy0.0
(*.f64 #s(literal -2 binary64) x)
accuracy0.0
(exp.f64 (*.f64 #s(literal -2 binary64) x))
accuracy62.24503617174509
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Samples
17.0ms46×2valid
14.0ms80×1valid
9.0ms130×0valid
Compiler

Compiled 183 to 32 computations (82.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-exp: 11.0ms (47.3% of total)
adjust: 3.0ms (12.9% of total)
ival-div: 3.0ms (12.9% of total)
ival-add: 2.0ms (8.6% of total)
ival-mult: 2.0ms (8.6% of total)
ival-sub: 2.0ms (8.6% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series5.0ms (0.3%)

Memory
-27.0MiB live, 11.3MiB allocated
Counts
7 → 20
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
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))))
1
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(* -2 x)
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(exp (* -2 x))
(+ 1 (exp (* -2 x)))
(/ 2 (+ 1 (exp (* -2 x))))
Calls

6 calls:

TimeVariablePointExpression
3.0ms
x
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp (* -2 x)) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+ 1 (exp (* -2 x))) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))))
1.0ms
x
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp (* -2 x)) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+ 1 (exp (* -2 x))) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))))
1.0ms
x
@-inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp (* -2 x)) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+ 1 (exp (* -2 x))) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))))
0.0ms
y
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp (* -2 x)) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+ 1 (exp (* -2 x))) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))))
0.0ms
y
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp (* -2 x)) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+ 1 (exp (* -2 x))) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))))

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
20 → 7
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))))
1
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(* -2 x)
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(exp (* -2 x))
(+ 1 (exp (* -2 x)))
(/ 2 (+ 1 (exp (* -2 x))))
Outputs
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(* x (+ 1 (* -1/3 (pow x 2))))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(*.f64 #s(literal -2 binary64) x)
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
1
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(+ 1 (* -2 x))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(+ 1 (* x (- (* 2 x) 2)))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

rewrite1.0ms (0%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
7 → 7
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

eval2.0ms (0.1%)

Memory
4.3MiB live, 4.3MiB allocated
Compiler

Compiled 537 to 41 computations (92.4% saved)

prune4.0ms (0.2%)

Memory
6.1MiB live, 6.1MiB allocated
Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New22224
Fresh000
Picked033
Done011
Total22628
Accuracy
53.7%
Counts
28 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.4%
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
6.8%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
24.6%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
23.9%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
2.4%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
2.7%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Compiler

Compiled 101 to 91 computations (9.9% saved)

simplify1.0ms (0%)

Memory
1.1MiB live, 1.1MiB allocated
Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
cost-diff0
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
cost-diff0
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
cost-diff0
(*.f64 #s(literal -2 binary64) x)
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(literal 1 binary64)
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(literal 1 binary64)
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x

localize68.0ms (3.7%)

Memory
-47.9MiB live, 58.9MiB allocated
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy0.00390625
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
accuracy0.0078125
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
accuracy39.96845236957731
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
accuracy59.62644164895661
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
accuracy0.0
(*.f64 #s(literal -2 binary64) x)
accuracy62.45285899220969
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
Samples
19.0ms46×2valid
13.0ms80×1valid
9.0ms130×0valid
Compiler

Compiled 163 to 33 computations (79.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-exp: 11.0ms (47.4% of total)
adjust: 3.0ms (12.9% of total)
ival-div: 3.0ms (12.9% of total)
ival-add: 2.0ms (8.6% of total)
ival-mult: 2.0ms (8.6% of total)
ival-sub: 2.0ms (8.6% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
4.1MiB live, 4.1MiB allocated
Counts
6 → 20
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
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)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
1.0ms
x
@-inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
0.0ms
x
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
0.0ms
y
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))
0.0ms
y
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (* -2 x) (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)))

simplify0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Algorithm
egg-herbie
Counts
20 → 6
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)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Outputs
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(* x (+ 1 (* -1/3 (pow x 2))))
(*.f64 #s(literal -2 binary64) x)
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(* -2 x)
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
1
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

rewrite0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

eval1.0ms (0.1%)

Memory
2.4MiB live, 2.4MiB allocated
Compiler

Compiled 319 to 33 computations (89.7% saved)

prune3.0ms (0.2%)

Memory
5.5MiB live, 5.5MiB allocated
Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New11112
Fresh000
Picked022
Done044
Total11718
Accuracy
53.7%
Counts
18 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.4%
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
6.8%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
24.6%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
6.4%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
23.9%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
2.4%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
2.7%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Compiler

Compiled 141 to 116 computations (17.7% saved)

simplify1.0ms (0%)

Memory
1.5MiB live, 1.5MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
cost-diff0
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
cost-diff0
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
cost-diff0
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
#s(literal 1 binary64)
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
(+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))
(exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
#s(literal 2 binary64)
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
#s(literal 1 binary64)
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
(+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))
(exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
(exp.f64 (*.f64 #s(literal -2 binary64) x))
(*.f64 #s(literal -2 binary64) x)
#s(literal -2 binary64)
x

localize59.0ms (3.2%)

Memory
-12.6MiB live, 62.3MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy39.96845236957731
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
accuracy39.96845236957731
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
accuracy59.62644164895661
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
accuracy61.42766687670527
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
Samples
20.0ms46×2valid
14.0ms80×1valid
9.0ms130×0valid
Compiler

Compiled 287 to 37 computations (87.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 29.0ms
ival-exp: 16.0ms (54.4% of total)
adjust: 3.0ms (10.2% of total)
ival-div: 3.0ms (10.2% of total)
ival-add: 2.0ms (6.8% of total)
ival-mult: 2.0ms (6.8% of total)
ival-sub: 2.0ms (6.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
4.0MiB live, 4.0MiB allocated
Counts
6 → 20
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
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))))
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(* -2 x)
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)) (* -2 x) (exp (* -2 x)))
1.0ms
x
@-inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)) (* -2 x) (exp (* -2 x)))
0.0ms
x
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)) (* -2 x) (exp (* -2 x)))
0.0ms
y
@0
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)) (* -2 x) (exp (* -2 x)))
0.0ms
y
@inf
((- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/ 2 (+ 1 (exp (* -2 x)))) (+ 1 (exp (* -2 x))) (exp (* -2 x)) (* -2 x) (exp (* -2 x)))

simplify0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Algorithm
egg-herbie
Counts
20 → 6
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))))
1
(+ 1 x)
(+ 1 (* x (+ 1 (* -1/3 (pow x 2)))))
(+ 1 (* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3)))))
2
(+ 2 (* -2 x))
(+ 2 (* x (- (* 2 x) 2)))
(+ 2 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(+ 1 (* -2 x))
(+ 1 (* x (- (* 2 x) 2)))
(+ 1 (* x (- (* x (+ 2 (* -4/3 x))) 2)))
(* -2 x)
(- (* 2 (/ 1 (+ 1 (exp (* -2 x))))) 1)
(/ 2 (+ 1 (exp (* -2 x))))
(+ 1 (exp (* -2 x)))
(exp (* -2 x))
Outputs
x
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(* x (+ 1 (* -1/3 (pow x 2))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
(* x (+ 1 (* (pow x 2) (- (* 2/15 (pow x 2)) 1/3))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
(* x (+ 1 (* (pow x 2) (- (* (pow x 2) (+ 2/15 (* -17/315 (pow x 2)))) 1/3))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
1
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
(+ 1 x)
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

rewrite1.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated
Counts
6 → 6
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))))
(+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))))
#s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))
#s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))

eval1.0ms (0.1%)

Memory
2.2MiB live, 2.2MiB allocated
Compiler

Compiled 433 to 32 computations (92.6% saved)

prune4.0ms (0.2%)

Memory
6.9MiB live, 6.9MiB allocated
Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New11011
Fresh000
Picked011
Done066
Total11718
Accuracy
53.7%
Counts
18 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
53.4%
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
6.8%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
24.6%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
6.4%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
23.9%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
2.4%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
2.7%
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Compiler

Compiled 282 to 149 computations (47.2% saved)

regimes22.0ms (1.2%)

Memory
-7.0MiB live, 31.0MiB allocated
Counts
7 → 1
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 #s(approx (* -2 x) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))))))))))
Outputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Calls

7 calls:

7.0ms
x
3.0ms
y
3.0ms
(*.f64 #s(literal -2 binary64) x)
2.0ms
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
2.0ms
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Results
AccuracySegmentsBranch
53.4%1x
53.4%1y
53.4%1(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
53.4%1(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
53.4%1(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
53.4%1(exp.f64 (*.f64 #s(literal -2 binary64) x))
53.4%1(*.f64 #s(literal -2 binary64) x)
Compiler

Compiled 33 to 39 computations (-18.2% saved)

regimes15.0ms (0.8%)

Memory
23.9MiB live, 23.9MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
Calls

7 calls:

2.0ms
y
2.0ms
(*.f64 #s(literal -2 binary64) x)
2.0ms
x
2.0ms
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
2.0ms
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Results
AccuracySegmentsBranch
24.6%1(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
24.6%1(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
24.6%1(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
24.6%1(exp.f64 (*.f64 #s(literal -2 binary64) x))
24.6%1x
24.6%1(*.f64 #s(literal -2 binary64) x)
24.6%1y
Compiler

Compiled 33 to 39 computations (-18.2% saved)

regimes16.0ms (0.9%)

Memory
-24.9MiB live, 20.9MiB allocated
Counts
4 → 1
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Calls

7 calls:

4.0ms
y
2.0ms
(*.f64 #s(literal -2 binary64) x)
2.0ms
x
2.0ms
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
2.0ms
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Results
AccuracySegmentsBranch
23.9%1(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
23.9%1(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
23.9%1x
23.9%1y
23.9%1(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
23.9%1(exp.f64 (*.f64 #s(literal -2 binary64) x))
23.9%1(*.f64 #s(literal -2 binary64) x)
Compiler

Compiled 33 to 39 computations (-18.2% saved)

regimes10.0ms (0.5%)

Memory
17.5MiB live, 17.5MiB allocated
Counts
2 → 1
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
Calls

7 calls:

1.0ms
y
1.0ms
(*.f64 #s(literal -2 binary64) x)
1.0ms
x
1.0ms
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
1.0ms
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
Results
AccuracySegmentsBranch
2.7%1(*.f64 #s(literal -2 binary64) x)
2.7%1(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
2.7%1(exp.f64 (*.f64 #s(literal -2 binary64) x))
2.7%1y
2.7%1x
2.7%1(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
2.7%1(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Compiler

Compiled 33 to 39 computations (-18.2% saved)

regimes9.0ms (0.5%)

Memory
-24.8MiB live, 14.7MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
Outputs
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
Calls

7 calls:

2.0ms
(*.f64 #s(literal -2 binary64) x)
1.0ms
x
1.0ms
y
1.0ms
(exp.f64 (*.f64 #s(literal -2 binary64) x))
1.0ms
(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Results
AccuracySegmentsBranch
2.4%1(*.f64 #s(literal -2 binary64) x)
2.4%1(+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
2.4%1(exp.f64 (*.f64 #s(literal -2 binary64) x))
2.4%1y
2.4%1x
2.4%1(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
2.4%1(/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
Compiler

Compiled 33 to 39 computations (-18.2% saved)

simplify5.0ms (0.3%)

Memory
8.5MiB live, 8.5MiB allocated
Algorithm
egg-herbie
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))
Outputs
(-.f64 (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))) #s(literal 1 binary64))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (/.f64 #s(literal 2 binary64) (+.f64 #s(literal 1 binary64) #s(approx (exp (* -2 x)) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x)))))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (+.f64 #s(literal 1 binary64) (exp.f64 (*.f64 #s(literal -2 binary64) x))))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (exp.f64 (*.f64 #s(literal -2 binary64) x)))
#s(approx (- (/ 2 (+ 1 (exp (* -2 x)))) 1) (*.f64 #s(literal -2 binary64) x))

soundness1.0ms (0.1%)

Memory
1.9MiB live, 1.9MiB allocated
Stop Event
done
Compiler

Compiled 82 to 25 computations (69.5% saved)

preprocess28.0ms (1.5%)

Memory
2.2MiB live, 40.3MiB allocated
Compiler

Compiled 184 to 70 computations (62% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...