expq2 (section 3.11)

Time bar (total: 3.6s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage

analyze1.0ms (0%)

Memory
3.2MiB live, 3.2MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%75.2%24.8%0%0%0%0
0%0%75.2%24.8%0%0%0%1
50%37.6%37.6%24.8%0%0%0%2
75%56.4%18.8%24.8%0%0%0%3
87.5%65.8%9.4%24.8%0%0%0%4
93.8%70.5%4.7%24.8%0%0%0%5
96.9%72.8%2.3%24.8%0%0%0%6
98.4%74%1.2%24.8%0%0%0%7
99.2%74.6%0.6%24.8%0%0%0%8
99.6%74.9%0.3%24.8%0%0%0%9
99.8%75%0.1%24.8%0%0%0%10
99.9%75.1%0.1%24.8%0%0%0%11
100%75.1%0%24.8%0%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample825.0ms (22.9%)

Memory
4.6MiB live, 943.4MiB allocated; 192ms collecting garbage
Samples
564.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 302.0ms
ival-exp: 85.0ms (28.2% of total)
ival-expm1: 84.0ms (27.8% of total)
ival->: 61.0ms (20.2% of total)
ival-div: 58.0ms (19.2% of total)
exact: 8.0ms (2.7% of total)
ival-assert: 4.0ms (1.3% of total)
adjust: 2.0ms (0.7% of total)
Bogosity

explain77.0ms (2.1%)

Memory
27.7MiB live, 72.7MiB allocated; 12ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1700-0-(-.f64 (exp.f64 x) #s(literal 1 binary64))
00-0-(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
00-0-#s(literal 1 binary64)
00-0-(exp.f64 x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 (exp.f64 x) #s(literal 1 binary64))cancellation1700
Confusion
Predicted +Predicted -
+1700
-086
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+17000
-0086
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
086
1170
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
24.0ms512×0valid
Compiler

Compiled 41 to 19 computations (53.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 12.0ms
ival-div: 4.0ms (32.1% of total)
ival-exp: 4.0ms (32.1% of total)
ival-expm1: 3.0ms (24.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess327.0ms (9.1%)

Memory
-25.6MiB live, 410.0MiB allocated; 162ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0719
12119
26719
321319
4105219
057
087
1137
2297
3677
42857
530497
083035
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
Outputs
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
(/.f64 (exp.f64 x) (expm1.f64 x))
Compiler

Compiled 7 to 5 computations (28.6% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 1 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
37.0%
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
Compiler

Compiled 7 to 5 computations (28.6% saved)

simplify249.0ms (6.9%)

Memory
14.6MiB live, 300.3MiB allocated; 51ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(exp.f64 x)
cost-diff0
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
cost-diff2
(-.f64 (exp.f64 x) #s(literal 1 binary64))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0515
0815
11315
22915
36715
428515
5304915
0830311
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
(exp.f64 x)
x
(-.f64 (exp.f64 x) #s(literal 1 binary64))
#s(literal 1 binary64)
Outputs
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
(/.f64 (exp.f64 x) (expm1.f64 x))
(exp.f64 x)
x
(-.f64 (exp.f64 x) #s(literal 1 binary64))
(expm1.f64 x)
#s(literal 1 binary64)

localize18.0ms (0.5%)

Memory
-18.4MiB live, 27.4MiB allocated; 3ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(exp.f64 x)
accuracy0.01171875
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
accuracy39.170589208707675
(-.f64 (exp.f64 x) #s(literal 1 binary64))
Samples
13.0ms256×0valid
Compiler

Compiled 17 to 7 computations (58.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-div: 2.0ms (32.6% of total)
ival-exp: 2.0ms (32.6% of total)
ival-expm1: 2.0ms (32.6% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
3.3MiB live, 3.3MiB allocated; 0ms collecting garbage
Counts
3 → 15
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) #s(literal 1 binary64))
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
(exp.f64 x)
Outputs
x
(* x (+ 1 (* 1/2 x)))
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* 1/2 x))))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
(- (exp x) 1)
(/ (exp x) (- (exp x) 1))
(exp x)
Calls

3 calls:

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

simplify261.0ms (7.2%)

Memory
0.3MiB live, 234.6MiB allocated; 83ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044111
1166111
2541105
32056105
0863187
Stop Event
iter limit
node limit
Counts
15 → 14
Calls
Call 1
Inputs
x
(* x (+ 1 (* 1/2 x)))
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* 1/2 x))))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
(- (exp x) 1)
(/ (exp x) (- (exp x) 1))
(exp x)
Outputs
x
(* x (+ 1 (* 1/2 x)))
(*.f64 (fma.f64 #s(literal 1/2 binary64) x #s(literal 1 binary64)) x)
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) x #s(literal 1/2 binary64)) x #s(literal 1 binary64)) x)
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 1/24 binary64) x #s(literal 1/6 binary64)) x #s(literal 1/2 binary64)) x #s(literal 1 binary64)) x)
(/ 1 x)
(/.f64 #s(literal 1 binary64) x)
(/ (+ 1 (* 1/2 x)) x)
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
(fma.f64 (fma.f64 (*.f64 x x) #s(literal -1/720 binary64) #s(literal 1/12 binary64)) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
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))
(- (exp x) 1)
(expm1.f64 x)
(/ (exp x) (- (exp x) 1))
(/.f64 (exp.f64 x) (expm1.f64 x))
(exp x)
(exp.f64 x)

rewrite54.0ms (1.5%)

Memory
-2.1MiB live, 52.9MiB allocated; 24ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0513
0813
13013
02129
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 29
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) #s(literal 1 binary64))
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
(exp.f64 x)
Outputs
(/.f64 (neg.f64 (expm1.f64 (+.f64 x x))) (neg.f64 (-.f64 (exp.f64 x) #s(literal -1 binary64))))
(/.f64 (neg.f64 (expm1.f64 (*.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 (exp.f64 x) (exp.f64 x) (-.f64 (exp.f64 x) #s(literal -1 binary64)))))
(/.f64 (expm1.f64 (+.f64 x x)) (-.f64 (exp.f64 x) #s(literal -1 binary64)))
(/.f64 (expm1.f64 (*.f64 x #s(literal 3 binary64))) (fma.f64 (exp.f64 x) (exp.f64 x) (-.f64 (exp.f64 x) #s(literal -1 binary64))))
(fma.f64 #s(literal 1 binary64) (exp.f64 x) #s(literal -1 binary64))
(fma.f64 (exp.f64 x) #s(literal 1 binary64) #s(literal -1 binary64))
(expm1.f64 (+.f64 x #s(literal 0 binary64)))
(expm1.f64 x)
(-.f64 (/.f64 (pow.f64 (exp.f64 x) #s(literal 2 binary64)) (-.f64 (exp.f64 x) #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (-.f64 (exp.f64 x) #s(literal -1 binary64))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) #s(literal 3 binary64)) (fma.f64 (exp.f64 x) (exp.f64 x) (-.f64 (exp.f64 x) #s(literal -1 binary64)))) (/.f64 #s(literal 1 binary64) (fma.f64 (exp.f64 x) (exp.f64 x) (-.f64 (exp.f64 x) #s(literal -1 binary64)))))
(-.f64 (exp.f64 x) #s(literal 1 binary64))
(+.f64 (cosh.f64 x) (-.f64 (sinh.f64 x) #s(literal 1 binary64)))
(+.f64 (exp.f64 x) #s(literal -1 binary64))
(*.f64 (/.f64 (exp.f64 x) (expm1.f64 (+.f64 x x))) (-.f64 (exp.f64 x) #s(literal -1 binary64)))
(*.f64 (/.f64 (exp.f64 x) (expm1.f64 (*.f64 x #s(literal 3 binary64)))) (fma.f64 (exp.f64 x) (exp.f64 x) (-.f64 (exp.f64 x) #s(literal -1 binary64))))
(/.f64 (neg.f64 (neg.f64 (exp.f64 x))) (neg.f64 (neg.f64 (expm1.f64 x))))
(/.f64 (neg.f64 (exp.f64 x)) (neg.f64 (expm1.f64 x)))
(/.f64 (exp.f64 x) (expm1.f64 x))
(neg.f64 (/.f64 (neg.f64 (exp.f64 x)) (expm1.f64 x)))
(neg.f64 (/.f64 (exp.f64 x) (neg.f64 (expm1.f64 x))))
(+.f64 (/.f64 (cosh.f64 x) (expm1.f64 x)) (/.f64 (sinh.f64 x) (expm1.f64 x)))
(*.f64 #s(literal 1 binary64) (exp.f64 x))
(*.f64 (exp.f64 x) #s(literal 1 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 x) (cosh.f64 x)) (*.f64 (sinh.f64 x) (sinh.f64 x))) (-.f64 (cosh.f64 x) (sinh.f64 x)))
(/.f64 (+.f64 (pow.f64 (cosh.f64 x) #s(literal 3 binary64)) (pow.f64 (sinh.f64 x) #s(literal 3 binary64))) (fma.f64 (cosh.f64 x) (cosh.f64 x) (-.f64 (*.f64 (sinh.f64 x) (sinh.f64 x)) (*.f64 (cosh.f64 x) (sinh.f64 x)))))
(+.f64 (sinh.f64 x) (cosh.f64 x))
(+.f64 (cosh.f64 x) (sinh.f64 x))
(exp.f64 (+.f64 x #s(literal 0 binary64)))
(exp.f64 x)

eval6.0ms (0.2%)

Memory
10.9MiB live, 10.9MiB allocated; 0ms collecting garbage
Compiler

Compiled 712 to 169 computations (76.3% saved)

prune3.0ms (0.1%)

Memory
5.5MiB live, 5.5MiB allocated; 0ms collecting garbage
Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New52456
Fresh000
Picked101
Done000
Total53457
Accuracy
100.0%
Counts
57 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
36.7%
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
67.3%
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
Compiler

Compiled 51 to 39 computations (23.5% saved)

simplify301.0ms (8.3%)

Memory
3.0MiB live, 321.4MiB allocated; 55ms collecting garbage
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
cost-diff0
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
cost-diff0
(exp.f64 x)
cost-diff0
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
cost-diff0
(/.f64 #s(literal 1 binary64) x)
cost-diff0
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
cost-diff0
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
cost-diff0
(/.f64 #s(literal 1 binary64) x)
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
cost-diff0
(/.f64 #s(literal 1 binary64) x)
cost-diff0
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
019109
028109
137109
265109
3123109
4424109
53438109
08395103
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
#s(literal -1/2 binary64)
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
#s(literal 1/12 binary64)
x
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
#s(literal -1/2 binary64)
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(exp.f64 x)
x
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
(-.f64 x #s(literal -1 binary64))
#s(literal -1 binary64)
#s(literal 1 binary64)
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
#s(literal -1/2 binary64)
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
x
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
#s(literal 1/12 binary64)
x
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(literal 1 binary64)
#s(literal -1/2 binary64)
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(exp.f64 x)
x
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
(-.f64 x #s(literal -1 binary64))
#s(literal -1 binary64)
#s(literal 1 binary64)

localize51.0ms (1.4%)

Memory
10.0MiB live, 105.8MiB allocated; 16ms collecting garbage
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(exp.f64 x)
accuracy0.01171875
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
accuracy21.221636697290425
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
accuracy39.170589208707675
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
accuracy0.0
(/.f64 #s(literal 1 binary64) x)
accuracy0.0
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
accuracy0.11328125
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
accuracy21.015851610314925
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
accuracy0.0
(/.f64 #s(literal 1 binary64) x)
accuracy20.950597796823246
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
accuracy0.0
(/.f64 #s(literal 1 binary64) x)
accuracy0.0
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
accuracy20.998809801875556
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
Samples
40.0ms256×0valid
Compiler

Compiled 81 to 15 computations (81.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 28.0ms
const: 10.0ms (35.9% of total)
ival-div: 7.0ms (25.1% of total)
ival-exp: 2.0ms (7.2% of total)
ival-mult: 2.0ms (7.2% of total)
ival-expm1: 2.0ms (7.2% of total)
ival-sub: 2.0ms (7.2% of total)
ival-add: 1.0ms (3.6% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
8.5MiB live, 8.5MiB allocated; 0ms collecting garbage
Counts
10 → 21
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(exp.f64 x)
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
Outputs
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* 1/2 x))))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
x
(* x (+ 1 (* 1/2 x)))
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(/ (exp x) (- (exp x) 1))
1/2
(+ 1/2 (/ 1 x))
(* 1/12 x)
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
(exp x)
(- (exp x) 1)
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
Calls

3 calls:

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

simplify241.0ms (6.7%)

Memory
-21.7MiB live, 228.8MiB allocated; 35ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058153
1214153
2690140
32466140
47179140
08133120
Stop Event
iter limit
node limit
Counts
21 → 20
Calls
Call 1
Inputs
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
1
(+ 1 x)
(+ 1 (* x (+ 1 (* 1/2 x))))
(+ 1 (* x (+ 1 (* x (+ 1/2 (* 1/6 x))))))
x
(* x (+ 1 (* 1/2 x)))
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(/ (exp x) (- (exp x) 1))
1/2
(+ 1/2 (/ 1 x))
(* 1/12 x)
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
(exp x)
(- (exp x) 1)
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
Outputs
(/ 1 x)
(/.f64 #s(literal 1 binary64) x)
(/ (+ 1 (* 1/2 x)) x)
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
(fma.f64 (pow.f64 x #s(literal 3 binary64)) #s(literal -1/720 binary64) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
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))
x
(* x (+ 1 (* 1/2 x)))
(*.f64 (fma.f64 #s(literal 1/2 binary64) x #s(literal 1 binary64)) x)
(* x (+ 1 (* x (+ 1/2 (* 1/6 x)))))
(*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) x #s(literal 1/2 binary64)) x #s(literal 1 binary64)) x)
(* x (+ 1 (* x (+ 1/2 (* x (+ 1/6 (* 1/24 x)))))))
(*.f64 (fma.f64 (fma.f64 (fma.f64 #s(literal 1/24 binary64) x #s(literal 1/6 binary64)) x #s(literal 1/2 binary64)) x #s(literal 1 binary64)) x)
(/ (exp x) (- (exp x) 1))
(/.f64 (exp.f64 x) (expm1.f64 x))
1/2
#s(literal 1/2 binary64)
(+ 1/2 (/ 1 x))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(* 1/12 x)
(*.f64 #s(literal 1/12 binary64) x)
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(fma.f64 #s(literal 1/12 binary64) x #s(literal 1/2 binary64))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(exp x)
(exp.f64 x)
(- (exp x) 1)
(expm1.f64 x)
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
(*.f64 (neg.f64 x) (-.f64 (/.f64 (-.f64 #s(literal -1/2 binary64) (/.f64 #s(literal 1 binary64) x)) x) #s(literal 1/12 binary64)))

rewrite55.0ms (1.5%)

Memory
18.8MiB live, 63.1MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01983
02883
110883
082377
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
10 → 71
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/.f64 #s(literal 1 binary64) x)
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(exp.f64 x)
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64))) (neg.f64 (+.f64 #s(literal -1/2 binary64) (pow.f64 x #s(literal -1 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal -3 binary64)) #s(literal -1/8 binary64))) (neg.f64 (+.f64 (+.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64)) (/.f64 #s(literal -1/2 binary64) x))))
(/.f64 (-.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64)) (+.f64 #s(literal -1/2 binary64) (pow.f64 x #s(literal -1 binary64))))
(/.f64 (-.f64 (pow.f64 x #s(literal -3 binary64)) #s(literal -1/8 binary64)) (+.f64 (+.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64)) (/.f64 #s(literal -1/2 binary64) x)))
(-.f64 (/.f64 (pow.f64 x #s(literal -2 binary64)) (+.f64 #s(literal -1/2 binary64) (pow.f64 x #s(literal -1 binary64)))) (/.f64 #s(literal 1/4 binary64) (+.f64 #s(literal -1/2 binary64) (pow.f64 x #s(literal -1 binary64)))))
(-.f64 (/.f64 (pow.f64 x #s(literal -3 binary64)) (+.f64 (+.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64)) (/.f64 #s(literal -1/2 binary64) x))) (/.f64 #s(literal -1/8 binary64) (+.f64 (+.f64 (pow.f64 x #s(literal -2 binary64)) #s(literal 1/4 binary64)) (/.f64 #s(literal -1/2 binary64) x))))
(-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64))
(*.f64 (pow.f64 x #s(literal -1/2 binary64)) (pow.f64 x #s(literal -1/2 binary64)))
(*.f64 #s(literal -1 binary64) (/.f64 #s(literal -1 binary64) x))
(*.f64 #s(literal 1 binary64) (pow.f64 x #s(literal -1 binary64)))
(pow.f64 x #s(literal -1 binary64))
(/.f64 #s(literal -1 binary64) (neg.f64 x))
(/.f64 #s(literal 1 binary64) (neg.f64 (neg.f64 x)))
(/.f64 #s(literal 1 binary64) (pow.f64 x #s(literal 1 binary64)))
(/.f64 #s(literal 1 binary64) x)
(neg.f64 (/.f64 #s(literal -1 binary64) x))
(neg.f64 (/.f64 #s(literal 1 binary64) (neg.f64 x)))
(exp.f64 (*.f64 (log.f64 x) #s(literal -1 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) (pow.f64 x #s(literal -1 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64))))
(/.f64 (-.f64 (*.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64)))) #s(literal 1/4 binary64)) (+.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) #s(literal -1/2 binary64)))
(/.f64 (-.f64 (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 2 binary64)) (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64))) (-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x)))
(/.f64 (-.f64 (pow.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) #s(literal 3 binary64)) #s(literal -1/8 binary64)) (fma.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) (+.f64 #s(literal 1/4 binary64) (*.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) #s(literal -1/2 binary64)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))))
(/.f64 (neg.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 3 binary64)))) (neg.f64 (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))))
(/.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 2 binary64))) (-.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64))))
(/.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 3 binary64))) (+.f64 (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 2 binary64)) (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64))))))
(/.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 3 binary64))) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x)))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))
(fma.f64 x #s(literal 1/12 binary64) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))
(-.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))) (/.f64 (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))))
(-.f64 (fma.f64 #s(literal 1/12 binary64) x (pow.f64 x #s(literal -1 binary64))) #s(literal -1/2 binary64))
(-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal -1/12 binary64) x))
(-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 (neg.f64 x) #s(literal 1/12 binary64)))
(-.f64 (pow.f64 x #s(literal -1 binary64)) (-.f64 #s(literal -1/2 binary64) (*.f64 #s(literal 1/12 binary64) x)))
(+.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 3 binary64)) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))) (/.f64 (pow.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) #s(literal 3 binary64)) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (-.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))))
(+.f64 (*.f64 #s(literal 1/12 binary64) x) (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)))
(+.f64 (-.f64 (pow.f64 x #s(literal -1 binary64)) #s(literal -1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 (/.f64 (exp.f64 x) (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64))) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)))
(*.f64 (/.f64 (exp.f64 x) (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 3 binary64)) #s(literal 1 binary64))) (+.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64))))
(/.f64 (neg.f64 (neg.f64 (exp.f64 x))) (neg.f64 (neg.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))))
(/.f64 (neg.f64 (exp.f64 x)) (neg.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))))
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(neg.f64 (/.f64 (neg.f64 (exp.f64 x)) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))))
(neg.f64 (/.f64 (exp.f64 x) (neg.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))))
(+.f64 (/.f64 (cosh.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))) (/.f64 (sinh.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))))
(*.f64 (*.f64 (exp.f64 x) #s(literal -1 binary64)) #s(literal -1 binary64))
(*.f64 #s(literal 1 binary64) (exp.f64 x))
(*.f64 (exp.f64 x) #s(literal 1 binary64))
(/.f64 (-.f64 (*.f64 (cosh.f64 x) (cosh.f64 x)) (*.f64 (sinh.f64 x) (sinh.f64 x))) (-.f64 (cosh.f64 x) (sinh.f64 x)))
(/.f64 (+.f64 (pow.f64 (cosh.f64 x) #s(literal 3 binary64)) (pow.f64 (sinh.f64 x) #s(literal 3 binary64))) (fma.f64 (cosh.f64 x) (cosh.f64 x) (-.f64 (*.f64 (sinh.f64 x) (sinh.f64 x)) (*.f64 (cosh.f64 x) (sinh.f64 x)))))
(+.f64 (sinh.f64 x) (cosh.f64 x))
(+.f64 (cosh.f64 x) (sinh.f64 x))
(exp.f64 (+.f64 x #s(literal 0 binary64)))
(exp.f64 x)
(/.f64 (neg.f64 (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64))) (neg.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 3 binary64)) #s(literal 1 binary64))) (neg.f64 (+.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64)) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)))
(/.f64 (-.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 3 binary64)) #s(literal 1 binary64)) (+.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64))))
(fma.f64 (*.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) #s(literal -1 binary64) #s(literal -1 binary64))
(fma.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64) #s(literal -1 binary64))
(fma.f64 #s(literal 1 binary64) #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64))
(-.f64 (/.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64))))
(-.f64 (/.f64 (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 3 binary64)) (+.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)))) (/.f64 #s(literal 1 binary64) (+.f64 (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) (pow.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 2 binary64)))))
(-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
(+.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64))
(*.f64 (*.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal -1 binary64)) #s(literal -1 binary64))
(*.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) #s(approx (exp x) (-.f64 x #s(literal -1 binary64))))
#s(approx (exp x) (-.f64 x #s(literal -1 binary64)))

eval50.0ms (1.4%)

Memory
-37.5MiB live, 22.6MiB allocated; 8ms collecting garbage
Compiler

Compiled 2 385 to 364 computations (84.7% saved)

prune5.0ms (0.1%)

Memory
8.9MiB live, 8.9MiB allocated; 0ms collecting garbage
Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New1183121
Fresh000
Picked044
Done000
Total1187125
Accuracy
100.0%
Counts
125 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
36.7%
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
2.8%
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
67.3%
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
3.1%
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
3.2%
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
Compiler

Compiled 105 to 78 computations (25.7% saved)

simplify277.0ms (7.7%)

Memory
17.9MiB live, 239.3MiB allocated; 62ms collecting garbage
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
cost-diff0
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
cost-diff0
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
cost-diff0
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
cost-diff0
(*.f64 #s(literal 1/12 binary64) x)
cost-diff0
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
cost-diff0
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
019100
021100
131100
258100
3112100
4389100
53130100
0843492
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 #s(literal 1/12 binary64) x)
#s(literal 1/12 binary64)
x
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(literal 1/12 binary64)
x
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 #s(literal 1/12 binary64) x)
#s(literal 1/12 binary64)
x
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(literal 1/12 binary64)
x
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(literal 1/2 binary64)

localize37.0ms (1%)

Memory
8.6MiB live, 52.4MiB allocated; 8ms collecting garbage
Localize:

Found 8 expressions of interest:

NewMetricScoreProgram
accuracy0.11328125
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
accuracy21.015851610314925
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
accuracy41.60404597953143
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
accuracy20.998809801875556
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
accuracy41.60404597953143
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
accuracy0.359375
(*.f64 #s(literal 1/12 binary64) x)
accuracy21.015851610314925
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
accuracy41.35208475030899
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
Samples
29.0ms256×0valid
Compiler

Compiled 60 to 14 computations (76.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
const: 7.0ms (34.8% of total)
ival-div: 4.0ms (19.9% of total)
ival-exp: 2.0ms (10% of total)
ival-mult: 2.0ms (10% of total)
ival-expm1: 2.0ms (10% of total)
ival-add: 1.0ms (5% of total)
ival-sub: 1.0ms (5% of total)
adjust: 0.0ms (0% 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
3.2MiB live, 3.2MiB allocated; 0ms collecting garbage
Counts
7 → 11
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 #s(literal 1/12 binary64) x)
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
Outputs
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
(* 1/12 x)
(/ (exp x) (- (exp x) 1))
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
1/2
(+ 1/2 (/ 1 x))
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
Calls

3 calls:

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

simplify208.0ms (5.8%)

Memory
-0.2MiB live, 193.9MiB allocated; 29ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
04087
113387
239980
3133074
4547974
0865367
Stop Event
iter limit
node limit
Counts
11 → 11
Calls
Call 1
Inputs
(/ 1 x)
(/ (+ 1 (* 1/2 x)) x)
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
(* 1/12 x)
(/ (exp x) (- (exp x) 1))
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
1/2
(+ 1/2 (/ 1 x))
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
Outputs
(/ 1 x)
(/.f64 #s(literal 1 binary64) x)
(/ (+ 1 (* 1/2 x)) x)
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(/ (+ 1 (* x (+ 1/2 (* 1/12 x)))) x)
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(/ (+ 1 (* x (+ 1/2 (* x (+ 1/12 (* -1/720 (pow x 2))))))) x)
(fma.f64 (fma.f64 (*.f64 x x) #s(literal -1/720 binary64) #s(literal 1/12 binary64)) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
(* 1/12 x)
(*.f64 #s(literal 1/12 binary64) x)
(/ (exp x) (- (exp x) 1))
(/.f64 (exp.f64 x) (expm1.f64 x))
(* x (+ 1/12 (* 1/2 (/ 1 x))))
(fma.f64 #s(literal 1/12 binary64) x #s(literal 1/2 binary64))
(* x (+ 1/12 (+ (* 1/2 (/ 1 x)) (/ 1 (pow x 2)))))
(fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
1/2
#s(literal 1/2 binary64)
(+ 1/2 (/ 1 x))
(-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))
(* -1 (* x (- (* -1 (/ (+ 1/2 (/ 1 x)) x)) 1/12)))
(*.f64 (neg.f64 x) (-.f64 (/.f64 (-.f64 #s(literal -1/2 binary64) (/.f64 #s(literal 1 binary64) x)) x) #s(literal 1/12 binary64)))

rewrite104.0ms (2.9%)

Memory
-28.1MiB live, 121.5MiB allocated; 24ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01987
02187
18987
068979
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
7 → 21
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 #s(literal 1/12 binary64) x)
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x))
(*.f64 #s(literal 1/12 binary64) x)
(*.f64 x #s(literal 1/12 binary64))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(/.f64 (-.f64 (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 2 binary64)) (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64))) (-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 2 binary64)))) (neg.f64 (-.f64 (*.f64 #s(literal 1/12 binary64) x) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))))
(/.f64 (neg.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 3 binary64)))) (neg.f64 (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))))
(/.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 2 binary64))) (-.f64 (*.f64 #s(literal 1/12 binary64) x) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
(/.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 3 binary64))) (fma.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (-.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (*.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x)))))
(/.f64 (fma.f64 #s(literal 1/1728 binary64) (pow.f64 x #s(literal 3 binary64)) (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 3 binary64))) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x)))))
(fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
(fma.f64 x #s(literal 1/12 binary64) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
(-.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/12 binary64) x) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))) (/.f64 (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/12 binary64) x) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))))
(-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal -1/12 binary64) x))
(-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 (neg.f64 x) #s(literal 1/12 binary64)))
(+.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/12 binary64) x) #s(literal 3 binary64)) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))) (/.f64 (pow.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) #s(literal 3 binary64)) (fma.f64 #s(literal 1/144 binary64) (*.f64 x x) (*.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (-.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))))))
(+.f64 #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)) (*.f64 #s(literal 1/12 binary64) x))
(+.f64 (*.f64 #s(literal 1/12 binary64) x) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))

eval4.0ms (0.1%)

Memory
12.6MiB live, 12.6MiB allocated; 0ms collecting garbage
Compiler

Compiled 859 to 115 computations (86.6% saved)

prune5.0ms (0.1%)

Memory
17.1MiB live, 17.1MiB allocated; 0ms collecting garbage
Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New33033
Fresh000
Picked033
Done044
Total33740
Accuracy
100.0%
Counts
40 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
36.7%
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
2.8%
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
67.3%
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
67.2%
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
3.1%
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
3.2%
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
Compiler

Compiled 217 to 114 computations (47.5% saved)

regimes11.0ms (0.3%)

Memory
-18.9MiB live, 27.2MiB allocated; 2ms collecting garbage
Counts
8 → 2
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
Outputs
(/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
Calls

3 calls:

5.0ms
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
3.0ms
x
2.0ms
(exp.f64 x)
Results
AccuracySegmentsBranch
100.0%2(exp.f64 x)
99.0%2(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
100.0%2x
Compiler

Compiled 10 to 8 computations (20% saved)

regimes6.0ms (0.2%)

Memory
18.0MiB live, 18.0MiB allocated; 0ms collecting garbage
Counts
6 → 1
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64))))
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
Calls

3 calls:

2.0ms
x
2.0ms
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
2.0ms
(exp.f64 x)
Results
AccuracySegmentsBranch
67.3%1(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
67.3%1(exp.f64 x)
67.3%1x
Compiler

Compiled 10 to 8 computations (20% saved)

regimes8.0ms (0.2%)

Memory
-27.1MiB live, 18.3MiB allocated; 3ms collecting garbage
Counts
3 → 1
Calls
Call 1
Inputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64))))
Outputs
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
Calls

3 calls:

2.0ms
x
1.0ms
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
1.0ms
(exp.f64 x)
Results
AccuracySegmentsBranch
3.2%1x
3.2%1(exp.f64 x)
3.2%1(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
Compiler

Compiled 10 to 8 computations (20% saved)

regimes3.0ms (0.1%)

Memory
12.6MiB live, 12.6MiB allocated; 0ms collecting garbage
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

3 calls:

1.0ms
x
1.0ms
(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
1.0ms
(exp.f64 x)
Results
AccuracySegmentsBranch
3.1%1(exp.f64 x)
3.1%1(/.f64 (exp.f64 x) (-.f64 (exp.f64 x) #s(literal 1 binary64)))
3.1%1x
Compiler

Compiled 10 to 8 computations (20% saved)

bsearch15.0ms (0.4%)

Memory
27.6MiB live, 27.6MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
13.0ms
-792.3619354745699
-0.00011622835844391975
Samples
7.0ms144×0valid
Compiler

Compiled 253 to 215 computations (15% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-exp: 2.0ms (46.7% of total)
ival-div: 1.0ms (23.4% of total)
ival-expm1: 1.0ms (23.4% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify58.0ms (1.6%)

Memory
-28.3MiB live, 74.0MiB allocated; 10ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03178
14678
27978
314678
444478
5299678
Stop Event
node limit
Calls
Call 1
Inputs
(if (<=.f64 x #s(literal -8782019273372467/2251799813685248 binary64)) (/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))) #s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))))
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))
Outputs
(if (<=.f64 x #s(literal -8782019273372467/2251799813685248 binary64)) (/.f64 (exp.f64 x) (-.f64 #s(approx (exp x) (-.f64 x #s(literal -1 binary64))) #s(literal 1 binary64))) #s(approx (/ (exp x) (- (exp x) 1)) (fma.f64 #s(literal 1/12 binary64) x (-.f64 (/.f64 #s(literal 1 binary64) x) #s(literal -1/2 binary64)))))
#s(approx (/ (exp x) (- (exp x) 1)) (/.f64 #s(literal 1 binary64) x))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (+ (* 1/12 x) (- (/ 1 x) -1/2)) (*.f64 #s(literal 1/12 binary64) x)))
#s(approx (/ (exp x) (- (exp x) 1)) #s(approx (- (/ 1 x) -1/2) #s(literal 1/2 binary64)))

derivations301.0ms (8.4%)

Memory
31.2MiB live, 263.2MiB allocated; 23ms collecting garbage
Stop Event
done
Compiler

Compiled 78 to 34 computations (56.4% saved)

preprocess41.0ms (1.1%)

Memory
-9.4MiB live, 33.7MiB allocated; 14ms collecting garbage
Compiler

Compiled 182 to 90 computations (50.5% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...