Data.Number.Erf:$dmerfcx from erf-2.0.0.0

Time bar (total: 4.8s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated; 0ms collecting garbage
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 8 to 7 computations (12.5% saved)

sample1.1s (22%)

Memory
-2.4MiB live, 1 137.9MiB allocated; 283ms collecting garbage
Samples
727.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 406.0ms
ival-exp: 199.0ms (49% of total)
ival-mult: 196.0ms (48.3% of total)
ival-true: 5.0ms (1.2% of total)
adjust: 3.0ms (0.7% of total)
ival-assert: 3.0ms (0.7% of total)
Bogosity

explain107.0ms (2.2%)

Memory
15.7MiB live, 85.7MiB allocated; 15ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-y
00-0-(exp.f64 (*.f64 y y))
00-0-(*.f64 y y)
00-0-(*.f64 x (exp.f64 (*.f64 y y)))
00-0-x
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
75.0ms512×0valid
Compiler

Compiled 40 to 19 computations (52.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 63.0ms
ival-mult: 58.0ms (91.9% of total)
ival-exp: 4.0ms (6.3% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess184.0ms (3.8%)

Memory
6.0MiB live, 237.9MiB allocated; 44ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01532
15832
217132
340932
4126532
056
086
1186
2526
31516
44296
526566
089186
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
Symmetry

(abs y)

(negabs x)

Compiler

Compiled 6 to 5 computations (16.7% saved)

eval0.0ms (0%)

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

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (exp.f64 (*.f64 y y)))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify137.0ms (2.9%)

Memory
-22.4MiB live, 168.9MiB allocated; 25ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y y)
cost-diff0
(exp.f64 (*.f64 y y))
cost-diff0
(*.f64 x (exp.f64 (*.f64 y y)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0515
0815
11815
25215
315115
442915
5265615
0891815
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
x
(exp.f64 (*.f64 y y))
(*.f64 y y)
y
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 y y)
y

localize16.0ms (0.3%)

Memory
18.5MiB live, 18.4MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x (exp.f64 (*.f64 y y)))
accuracy0.0
(exp.f64 (*.f64 y y))
Samples
11.0ms256×0valid
Compiler

Compiled 17 to 7 computations (58.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 3.0ms (55.1% of total)
ival-exp: 2.0ms (36.7% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
3.0MiB live, 3.0MiB allocated; 0ms collecting garbage
Counts
3 → 11
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
(exp.f64 (*.f64 y y))
(*.f64 y y)
Outputs
(* x (exp (pow y 2)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
1
(+ 1 (pow y 2))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(pow y 2)
(exp (pow y 2))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
y
@0
((* x (exp (* y y))) (exp (* y y)) (* y y))
1.0ms
x
@0
((* x (exp (* y y))) (exp (* y y)) (* y y))
1.0ms
y
@inf
((* x (exp (* y y))) (exp (* y y)) (* y y))
1.0ms
x
@inf
((* x (exp (* y y))) (exp (* y y)) (* y y))
1.0ms
x
@-inf
((* x (exp (* y y))) (exp (* y y)) (* y y))

simplify196.0ms (4.1%)

Memory
10.6MiB live, 95.8MiB allocated; 24ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03397
112797
250191
3227589
4595189
0809277
Stop Event
iter limit
node limit
Counts
11 → 10
Calls
Call 1
Inputs
(* x (exp (pow y 2)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
1
(+ 1 (pow y 2))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(pow y 2)
(exp (pow y 2))
Outputs
(* x (exp (pow y 2)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+ x (* x (pow y 2)))
(*.f64 (fma.f64 y y #s(literal 1 binary64)) x)
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(*.f64 x (fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(fma.f64 (*.f64 y x) y (fma.f64 (*.f64 (pow.f64 y #s(literal 4 binary64)) x) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) x))
1
#s(literal 1 binary64)
(+ 1 (pow y 2))
(fma.f64 y y #s(literal 1 binary64))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64)))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64)))
(pow y 2)
(*.f64 y y)
(exp (pow y 2))
(pow.f64 (exp.f64 y) y)

rewrite139.0ms (2.9%)

Memory
-43.6MiB live, 61.7MiB allocated; 18ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0513
0813
12013
28313
054913
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
3 → 64
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
(exp.f64 (*.f64 y y))
(*.f64 y y)
Outputs
(*.f64 (*.f64 x (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64)))) (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))))
(*.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))) (*.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))) x))
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(/.f64 (*.f64 #s(literal 1 binary64) x) (pow.f64 (exp.f64 y) y))
(/.f64 (*.f64 (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64))) x) (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y)))))
(/.f64 (*.f64 x #s(literal 1 binary64)) (pow.f64 (exp.f64 y) y))
(/.f64 (*.f64 x (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64)))) (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y)))))
(/.f64 (-.f64 (*.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (cosh.f64 (*.f64 y y)) x)) (*.f64 (*.f64 (sinh.f64 (*.f64 y y)) x) (*.f64 (sinh.f64 (*.f64 y y)) x))) (*.f64 (pow.f64 (exp.f64 y) y) x))
(/.f64 (+.f64 (pow.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) #s(literal 3 binary64)) (pow.f64 (*.f64 (sinh.f64 (*.f64 y y)) x) #s(literal 3 binary64))) (fma.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (cosh.f64 (*.f64 y y)) x) (-.f64 (*.f64 (*.f64 (sinh.f64 (*.f64 y y)) x) (*.f64 (sinh.f64 (*.f64 y y)) x)) (*.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (sinh.f64 (*.f64 y y)) x)))))
(fma.f64 (sinh.f64 (*.f64 y y)) x (*.f64 (cosh.f64 (*.f64 y y)) x))
(fma.f64 (cosh.f64 (*.f64 y y)) x (*.f64 (sinh.f64 (*.f64 y y)) x))
(fma.f64 x (sinh.f64 (*.f64 y y)) (*.f64 (cosh.f64 (*.f64 y y)) x))
(fma.f64 x (cosh.f64 (*.f64 y y)) (*.f64 (sinh.f64 (*.f64 y y)) x))
(-.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (neg.f64 x) (sinh.f64 (*.f64 y y))))
(-.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (sinh.f64 (*.f64 y y)) x))
(+.f64 (*.f64 (sinh.f64 (*.f64 y y)) x) (*.f64 (cosh.f64 (*.f64 y y)) x))
(+.f64 (*.f64 (cosh.f64 (*.f64 y y)) x) (*.f64 (sinh.f64 (*.f64 y y)) x))
(*.f64 (pow.f64 (exp.f64 (neg.f64 y)) (/.f64 (neg.f64 y) #s(literal 2 binary64))) (pow.f64 (exp.f64 (neg.f64 y)) (/.f64 (neg.f64 y) #s(literal 2 binary64))))
(*.f64 (neg.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64)))) (neg.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64)))))
(*.f64 (fabs.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64)))) (fabs.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64)))))
(*.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))) (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))))
(pow.f64 (*.f64 (exp.f64 y) (exp.f64 y)) (/.f64 y #s(literal 2 binary64)))
(pow.f64 (pow.f64 (exp.f64 y) (/.f64 y #s(literal 2 binary64))) #s(literal 2 binary64))
(pow.f64 (exp.f64 (neg.f64 y)) (neg.f64 y))
(pow.f64 (exp.f64 y) (*.f64 #s(literal 2 binary64) (/.f64 y #s(literal 2 binary64))))
(pow.f64 (exp.f64 y) (+.f64 (/.f64 y #s(literal 2 binary64)) (/.f64 y #s(literal 2 binary64))))
(pow.f64 (exp.f64 y) y)
(/.f64 (-.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 2 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 2 binary64))) (-.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64))) (+.f64 (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 2 binary64)) (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 2 binary64)) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))))
(/.f64 (fma.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y)) (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y)))) #s(literal 2 binary64))
(/.f64 (fma.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y)) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y)))) #s(literal 2 binary64))
(/.f64 #s(literal -1 binary64) (neg.f64 (pow.f64 (exp.f64 y) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64)))) (neg.f64 (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))))
(/.f64 (-.f64 (*.f64 (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y))) #s(literal 2 binary64)) (*.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y))))) #s(literal 4 binary64))
(/.f64 (fma.f64 (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y))) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y))))) #s(literal 4 binary64))
(/.f64 (fma.f64 (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y))) #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y))))) #s(literal 4 binary64))
(/.f64 (-.f64 (*.f64 #s(literal 2 binary64) (cosh.f64 (*.f64 y y))) (*.f64 #s(literal 2 binary64) (sinh.f64 (*.f64 y y)))) #s(literal 2 binary64))
(/.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 (neg.f64 y)) y))
(/.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 y) y))
(/.f64 (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64))) (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 2 binary64)) (-.f64 (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 2 binary64)) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))))
(/.f64 (+.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y)))))
(-.f64 (/.f64 (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 2 binary64)) (pow.f64 (exp.f64 y) y)) (/.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 2 binary64)) (pow.f64 (exp.f64 y) y)))
(-.f64 (cosh.f64 (*.f64 y y)) (sinh.f64 (*.f64 y y)))
(exp.f64 (*.f64 (log.f64 (exp.f64 (neg.f64 y))) (neg.f64 y)))
(exp.f64 (*.f64 y y))
(+.f64 (/.f64 (pow.f64 (cosh.f64 (*.f64 y y)) #s(literal 3 binary64)) (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))) (/.f64 (pow.f64 (sinh.f64 (*.f64 y y)) #s(literal 3 binary64)) (-.f64 #s(literal 1 binary64) (*.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y))))))
(+.f64 (sinh.f64 (*.f64 y y)) (cosh.f64 (*.f64 y y)))
(+.f64 (cosh.f64 (*.f64 y y)) (sinh.f64 (*.f64 y y)))
(*.f64 (exp.f64 (log.f64 y)) (exp.f64 (log.f64 y)))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (neg.f64 y) y)
(*.f64 y (neg.f64 y))
(*.f64 y y)
(pow.f64 (exp.f64 (log.f64 y)) #s(literal 2 binary64))
(pow.f64 (*.f64 y y) #s(literal 1 binary64))
(pow.f64 (neg.f64 y) #s(literal 2 binary64))
(pow.f64 y #s(literal 2 binary64))
(neg.f64 (*.f64 y y))
(sqrt.f64 (*.f64 (*.f64 y y) (*.f64 y y)))
(fabs.f64 (*.f64 y y))
(exp.f64 (*.f64 (log.f64 (neg.f64 y)) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 y) #s(literal 2 binary64))))

eval8.0ms (0.2%)

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

Compiled 1 107 to 238 computations (78.5% saved)

prune2.0ms (0%)

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

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New72274
Fresh000
Picked011
Done000
Total72375
Accuracy
100.0%
Counts
75 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (exp.f64 (*.f64 y y)))
80.3%
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
52.5%
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Compiler

Compiled 25 to 20 computations (20% saved)

simplify293.0ms (6.1%)

Memory
-21.3MiB live, 266.6MiB allocated; 27ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
cost-diff0
(fma.f64 y y #s(literal 1 binary64))
cost-diff0
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
cost-diff0
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
cost-diff0
#s(approx (exp (* y y)) #s(literal 1 binary64))
cost-diff0
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01043
01343
12743
26443
316343
442043
5318343
0830243
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
x
#s(approx (exp (* y y)) #s(literal 1 binary64))
#s(literal 1 binary64)
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
x
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
(fma.f64 y y #s(literal 1 binary64))
y
#s(literal 1 binary64)
Outputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
(*.f64 #s(approx (exp (* y y)) #s(literal 1 binary64)) x)
x
#s(approx (exp (* y y)) #s(literal 1 binary64))
#s(literal 1 binary64)
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
(*.f64 #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))) x)
x
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
(fma.f64 y y #s(literal 1 binary64))
y
#s(literal 1 binary64)

localize36.0ms (0.8%)

Memory
-17.4MiB live, 38.4MiB allocated; 6ms collecting garbage
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(fma.f64 y y #s(literal 1 binary64))
accuracy0.0
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
accuracy16.03070851434563
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
accuracy0.0
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
accuracy30.684923979567408
#s(approx (exp (* y y)) #s(literal 1 binary64))
Samples
14.0ms256×0valid
Compiler

Compiled 32 to 9 computations (71.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-mult: 3.0ms (43.3% of total)
ival-exp: 2.0ms (28.8% of total)
ival-add: 1.0ms (14.4% 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)

series3.0ms (0.1%)

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

6 calls:

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

simplify241.0ms (5%)

Memory
14.0MiB live, 247.5MiB allocated; 47ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036102
1136102
253196
3276094
0847081
Stop Event
iter limit
node limit
Counts
12 → 11
Calls
Call 1
Inputs
(* x (exp (pow y 2)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
1
(+ 1 (pow y 2))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(exp (pow y 2))
(pow y 2)
(* (pow y 2) (+ 1 (/ 1 (pow y 2))))
Outputs
(* x (exp (pow y 2)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+ x (* x (pow y 2)))
(*.f64 (fma.f64 y y #s(literal 1 binary64)) x)
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(*.f64 x (fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(fma.f64 (*.f64 y x) y (fma.f64 (*.f64 (pow.f64 y #s(literal 4 binary64)) x) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) x))
1
#s(literal 1 binary64)
(+ 1 (pow y 2))
(fma.f64 y y #s(literal 1 binary64))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64)))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64)))
(exp (pow y 2))
(pow.f64 (exp.f64 y) y)
(pow y 2)
(*.f64 y y)
(* (pow y 2) (+ 1 (/ 1 (pow y 2))))
(fma.f64 y y #s(literal 1 binary64))

rewrite47.0ms (1%)

Memory
28.8MiB live, 119.0MiB allocated; 7ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
01338
14338
027538
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
5 → 36
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
#s(approx (exp (* y y)) #s(literal 1 binary64))
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
(fma.f64 y y #s(literal 1 binary64))
Outputs
(*.f64 #s(approx (exp (* y y)) #s(literal 1 binary64)) x)
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
#s(approx (exp (* y y)) #s(literal 1 binary64))
(*.f64 #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))) x)
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
#s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64)))
(/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 4 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 y y)))
(/.f64 (neg.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64))) (neg.f64 (fma.f64 y y #s(literal -1 binary64))))
(/.f64 (neg.f64 (-.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1 binary64))) (neg.f64 (-.f64 (+.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64)) (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64)) (fma.f64 y y #s(literal -1 binary64)))
(/.f64 (-.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1 binary64)) (+.f64 #s(literal 1 binary64) (-.f64 (pow.f64 y #s(literal 4 binary64)) (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 y #s(literal 6 binary64)) #s(literal -1 binary64)) (-.f64 (+.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64)) (*.f64 y y)))
(fma.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (*.f64 (fabs.f64 y) #s(literal 1 binary64)) (*.f64 (fabs.f64 y) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (*.f64 y #s(literal 1 binary64)) (*.f64 y #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (pow.f64 y #s(literal 1 binary64)) (pow.f64 y #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)) #s(literal 1 binary64))
(fma.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)) #s(literal 1 binary64))
(fma.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)) #s(literal 1 binary64))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 y) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (neg.f64 y) (neg.f64 y) #s(literal 1 binary64))
(fma.f64 (fabs.f64 y) (*.f64 (fabs.f64 y) #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 (fabs.f64 y) (fabs.f64 y) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 y y) #s(literal 1 binary64))
(fma.f64 (*.f64 y y) #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 y (*.f64 y #s(literal 1 binary64)) #s(literal 1 binary64))
(fma.f64 y y #s(literal 1 binary64))
(-.f64 (/.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 y y #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (fma.f64 y y #s(literal -1 binary64))))
(-.f64 #s(literal 1 binary64) (*.f64 (neg.f64 (neg.f64 y)) (neg.f64 y)))
(-.f64 #s(literal 1 binary64) (*.f64 (neg.f64 (fabs.f64 y)) (fabs.f64 y)))
(-.f64 #s(literal 1 binary64) (*.f64 (neg.f64 y) y))
(-.f64 #s(literal 1 binary64) (*.f64 y (neg.f64 y)))
(-.f64 (*.f64 y y) #s(literal -1 binary64))
(+.f64 (/.f64 (pow.f64 y #s(literal 6 binary64)) (-.f64 (+.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64)) (*.f64 y y))) (/.f64 #s(literal 1 binary64) (-.f64 (+.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1 binary64)) (*.f64 y y))))
(+.f64 #s(literal 1 binary64) (*.f64 y y))
(+.f64 (*.f64 y y) #s(literal 1 binary64))

eval45.0ms (0.9%)

Memory
-18.1MiB live, 34.8MiB allocated; 7ms collecting garbage
Compiler

Compiled 690 to 168 computations (75.7% saved)

prune2.0ms (0%)

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

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New44145
Fresh000
Picked022
Done011
Total44448
Accuracy
100.0%
Counts
48 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (exp.f64 (*.f64 y y)))
80.3%
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
31.8%
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
52.5%
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Compiler

Compiled 41 to 30 computations (26.8% saved)

simplify262.0ms (5.5%)

Memory
8.3MiB live, 241.9MiB allocated; 44ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 y y)
cost-diff0
#s(approx (+ (* y y) 1) (*.f64 y y))
cost-diff0
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
cost-diff0
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01044
01244
12544
26244
316144
441844
5319144
0830441
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
x
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
#s(approx (+ (* y y) 1) (*.f64 y y))
(*.f64 y y)
y
Outputs
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
(*.f64 #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))) x)
x
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
#s(approx (+ (* y y) 1) (*.f64 y y))
(*.f64 y y)
y

localize28.0ms (0.6%)

Memory
0.2MiB live, 47.0MiB allocated; 2ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 y y)
accuracy0.0
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
accuracy16.03070851434563
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
accuracy31.685101403218763
#s(approx (+ (* y y) 1) (*.f64 y y))
Samples
23.0ms256×0valid
Compiler

Compiled 22 to 9 computations (59.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-mult: 3.0ms (42.4% of total)
ival-exp: 2.0ms (28.3% of total)
ival-add: 1.0ms (14.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)

series3.0ms (0.1%)

Memory
7.3MiB live, 7.3MiB allocated; 0ms collecting garbage
Counts
4 → 12
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
#s(approx (+ (* y y) 1) (*.f64 y y))
(*.f64 y y)
Outputs
(* x (exp (pow y 2)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
1
(+ 1 (pow y 2))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(pow y 2)
(exp (pow y 2))
(* (pow y 2) (+ 1 (/ 1 (pow y 2))))
Calls

6 calls:

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

simplify136.0ms (2.8%)

Memory
-24.7MiB live, 304.7MiB allocated; 27ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036102
1136102
253196
3275894
0844581
Stop Event
iter limit
node limit
Counts
12 → 11
Calls
Call 1
Inputs
(* x (exp (pow y 2)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
1
(+ 1 (pow y 2))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(pow y 2)
(exp (pow y 2))
(* (pow y 2) (+ 1 (/ 1 (pow y 2))))
Outputs
(* x (exp (pow y 2)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+ x (* x (pow y 2)))
(*.f64 (fma.f64 y y #s(literal 1 binary64)) x)
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(*.f64 x (fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
1
#s(literal 1 binary64)
(+ 1 (pow y 2))
(fma.f64 y y #s(literal 1 binary64))
(+ 1 (* (pow y 2) (+ 1 (* 1/2 (pow y 2)))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64)))
(+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2)))))))
(fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64)))
(pow y 2)
(*.f64 y y)
(exp (pow y 2))
(pow.f64 (exp.f64 y) y)
(* (pow y 2) (+ 1 (/ 1 (pow y 2))))
(fma.f64 y y #s(literal 1 binary64))

rewrite50.0ms (1%)

Memory
23.9MiB live, 109.7MiB allocated; 11ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01042
01242
14142
027339
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
4 → 26
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
#s(approx (+ (* y y) 1) (*.f64 y y))
(*.f64 y y)
Outputs
(*.f64 #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))) x)
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
#s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))
#s(approx (+ (* y y) 1) (*.f64 y y))
(*.f64 (*.f64 (neg.f64 y) #s(literal 1 binary64)) (*.f64 (neg.f64 y) #s(literal 1 binary64)))
(*.f64 (*.f64 (fabs.f64 y) #s(literal 1 binary64)) (*.f64 (fabs.f64 y) #s(literal 1 binary64)))
(*.f64 (*.f64 y #s(literal 1 binary64)) (*.f64 y #s(literal 1 binary64)))
(*.f64 (pow.f64 y #s(literal 1 binary64)) (pow.f64 y #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)))
(*.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)))
(*.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)))
(*.f64 (neg.f64 y) (*.f64 (neg.f64 y) #s(literal 1 binary64)))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (fabs.f64 y) (*.f64 (fabs.f64 y) #s(literal 1 binary64)))
(*.f64 (fabs.f64 y) (fabs.f64 y))
(*.f64 #s(literal 1 binary64) (*.f64 y y))
(*.f64 (*.f64 y y) #s(literal 1 binary64))
(*.f64 y (*.f64 y #s(literal 1 binary64)))
(*.f64 y y)
(pow.f64 (neg.f64 y) #s(literal 2 binary64))
(pow.f64 (fabs.f64 y) #s(literal 2 binary64))
(pow.f64 y #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 y) y))
(neg.f64 (*.f64 y (neg.f64 y)))
(fabs.f64 (*.f64 y y))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))

eval4.0ms (0.1%)

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

Compiled 648 to 148 computations (77.2% saved)

prune3.0ms (0.1%)

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

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New36137
Fresh000
Picked011
Done033
Total36541
Accuracy
100.0%
Counts
41 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (exp.f64 (*.f64 y y)))
80.3%
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
31.8%
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
52.5%
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
89.8%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
Compiler

Compiled 66 to 44 computations (33.3% saved)

simplify326.0ms (6.8%)

Memory
-41.6MiB live, 290.5MiB allocated; 204ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01473
02273
15573
223973
3154073
4774773
0800769
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
(*.f64 (*.f64 y y) x)
(*.f64 y y)
y
x
(fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
#s(literal 1/6 binary64)
#s(literal 1/2 binary64)
#s(literal 1 binary64)
Outputs
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
#s(approx (* x (exp (* y y))) (*.f64 (fma.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y #s(literal 1 binary64)) x))
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
(*.f64 (fma.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y #s(literal 1 binary64)) x)
(*.f64 (*.f64 y y) x)
(*.f64 y y)
y
x
(fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
#s(literal 1/6 binary64)
#s(literal 1/2 binary64)
#s(literal 1 binary64)

localize37.0ms (0.8%)

Memory
29.3MiB live, 76.4MiB allocated; 3ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.08984375
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
accuracy0.51315508041112
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
accuracy6.810918807143414
(*.f64 (*.f64 y y) x)
accuracy6.9758057695096545
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
Samples
28.0ms256×0valid
Compiler

Compiled 62 to 17 computations (72.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
ival-mult: 10.0ms (51.2% of total)
const: 4.0ms (20.5% of total)
ival-add: 3.0ms (15.4% of total)
ival-exp: 2.0ms (10.2% 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)

series25.0ms (0.5%)

Memory
-34.9MiB live, 20.0MiB allocated; 20ms collecting garbage
Counts
5 → 17
Calls
Call 1
Inputs
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
(*.f64 (*.f64 y y) x)
(*.f64 y y)
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
Outputs
(* x (+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))))
(* x (exp (pow y 2)))
(* x (pow y 2))
(* -1 (* x (- (* -1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))) 1)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(pow y 2)
1/2
(+ 1/2 (* 1/6 (pow y 2)))
(* 1/6 (* x (pow y 6)))
(* (pow y 6) (+ (* 1/6 x) (* 1/2 (/ x (pow y 2)))))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (/ x (pow y 4)))))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (+ (/ x (pow y 4)) (/ x (pow y 6))))))
(* 1/6 (pow y 2))
(* (pow y 2) (+ 1/6 (* 1/2 (/ 1 (pow y 2)))))
Calls

6 calls:

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

simplify163.0ms (3.4%)

Memory
22.0MiB live, 251.2MiB allocated; 44ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058190
1200190
2809178
33875176
08090160
Stop Event
iter limit
node limit
Counts
17 → 16
Calls
Call 1
Inputs
(* x (+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))))
(* x (exp (pow y 2)))
(* x (pow y 2))
(* -1 (* x (- (* -1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))) 1)))
x
(+ x (* x (pow y 2)))
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(pow y 2)
1/2
(+ 1/2 (* 1/6 (pow y 2)))
(* 1/6 (* x (pow y 6)))
(* (pow y 6) (+ (* 1/6 x) (* 1/2 (/ x (pow y 2)))))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (/ x (pow y 4)))))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (+ (/ x (pow y 4)) (/ x (pow y 6))))))
(* 1/6 (pow y 2))
(* (pow y 2) (+ 1/6 (* 1/2 (/ 1 (pow y 2)))))
Outputs
(* x (+ 1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))))
(*.f64 (fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64))) x)
(* x (exp (pow y 2)))
(*.f64 (pow.f64 (exp.f64 y) y) x)
(* x (pow y 2))
(*.f64 (*.f64 y y) x)
(* -1 (* x (- (* -1 (* (pow y 2) (+ 1 (* (pow y 2) (+ 1/2 (* 1/6 (pow y 2))))))) 1)))
(*.f64 (fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64))) x)
x
(+ x (* x (pow y 2)))
(fma.f64 (*.f64 y y) x x)
(+ x (* (pow y 2) (+ x (* 1/2 (* x (pow y 2))))))
(*.f64 x (fma.f64 (pow.f64 y #s(literal 4 binary64)) #s(literal 1/2 binary64) (fma.f64 y y #s(literal 1 binary64))))
(+ x (* (pow y 2) (+ x (* (pow y 2) (+ (* 1/6 (* x (pow y 2))) (* 1/2 x))))))
(*.f64 (fma.f64 (pow.f64 y #s(literal 4 binary64)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 y y #s(literal 1 binary64))) x)
(pow y 2)
(*.f64 y y)
1/2
#s(literal 1/2 binary64)
(+ 1/2 (* 1/6 (pow y 2)))
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
(* 1/6 (* x (pow y 6)))
(*.f64 (*.f64 (pow.f64 y #s(literal 6 binary64)) x) #s(literal 1/6 binary64))
(* (pow y 6) (+ (* 1/6 x) (* 1/2 (/ x (pow y 2)))))
(*.f64 (*.f64 x (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 y y)) #s(literal -1/6 binary64))) (pow.f64 y #s(literal 6 binary64)))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (/ x (pow y 4)))))
(*.f64 (fma.f64 x (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 y y)) #s(literal -1/6 binary64)) (/.f64 x (pow.f64 y #s(literal 4 binary64)))) (pow.f64 y #s(literal 6 binary64)))
(* (pow y 6) (+ (* 1/6 x) (+ (* 1/2 (/ x (pow y 2))) (+ (/ x (pow y 4)) (/ x (pow y 6))))))
(*.f64 (fma.f64 x (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 y y)) #s(literal -1/6 binary64)) (+.f64 (/.f64 x (pow.f64 y #s(literal 6 binary64))) (/.f64 x (pow.f64 y #s(literal 4 binary64))))) (pow.f64 y #s(literal 6 binary64)))
(* 1/6 (pow y 2))
(*.f64 #s(literal 1/6 binary64) (*.f64 y y))
(* (pow y 2) (+ 1/6 (* 1/2 (/ 1 (pow y 2)))))
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))

rewrite53.0ms (1.1%)

Memory
23.4MiB live, 68.6MiB allocated; 5ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01457
02257
19757
080157
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
5 → 92
Calls
Call 1
Inputs
(fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
(*.f64 (*.f64 y y) x)
(*.f64 y y)
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
Outputs
(/.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64))) (-.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)) (*.f64 x x))) (neg.f64 (-.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) x)))
(/.f64 (neg.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 3 binary64)))) (neg.f64 (fma.f64 x (-.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y))) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)) (*.f64 x x)) (-.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 3 binary64))) (fma.f64 x x (-.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)) (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 (*.f64 x (*.f64 y y)) x)))))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 3 binary64))) (fma.f64 x (-.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y))) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64))))
(fma.f64 (*.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) y) (*.f64 x y) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y)) y (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (*.f64 x (*.f64 y y)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))) (*.f64 y y) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 y y)) (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 y y)) x x)
(fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y) x)
(fma.f64 (*.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) (*.f64 y y)) x (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) x) (*.f64 y y) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x) (*.f64 y y) x)
(fma.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) (*.f64 y (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 x y) y x))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 y) (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x)
(fma.f64 (fabs.f64 y) (*.f64 (fabs.f64 y) (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x)
(fma.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) (*.f64 x (*.f64 y y)) (fma.f64 (*.f64 x y) y x))
(fma.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 x (*.f64 y y)) x)
(fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 (*.f64 y y) (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 x (*.f64 y y)) (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 x (*.f64 y y)) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)
(fma.f64 x (*.f64 (*.f64 y y) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))) x)
(fma.f64 x (*.f64 (*.f64 y y) (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y)) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 y y) (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 y y) (*.f64 x (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y)) (fma.f64 (*.f64 x y) y x))
(fma.f64 (*.f64 y y) (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x) x)
(fma.f64 y (*.f64 (*.f64 x y) (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y)) (fma.f64 (*.f64 x y) y x))
(fma.f64 y (*.f64 (*.f64 x y) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))) x)
(fma.f64 y (*.f64 y (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x)
(-.f64 (/.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)) (-.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) x)) (/.f64 (*.f64 x x) (-.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) x)))
(-.f64 x (*.f64 (neg.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))) (*.f64 x (*.f64 y y))))
(-.f64 x (*.f64 (neg.f64 (*.f64 x (*.f64 y y))) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))))
(-.f64 x (*.f64 (neg.f64 (*.f64 y y)) (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)))
(+.f64 (+.f64 x (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) (*.f64 y (*.f64 x (*.f64 y y))))) (*.f64 x (*.f64 y y)))
(+.f64 (/.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 3 binary64)) (fma.f64 x (-.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y))) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x (-.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y))) (pow.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) #s(literal 2 binary64)))))
(+.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) (*.f64 y (*.f64 x (*.f64 y y)))) (fma.f64 (*.f64 x y) y x))
(+.f64 (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)) x)
(+.f64 x (*.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) y) (*.f64 x y)))
#s(approx (* x (exp (* y y))) (fma.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 x (*.f64 y y)) x))
(*.f64 (*.f64 x (neg.f64 y)) (neg.f64 y))
(*.f64 (*.f64 x (fabs.f64 y)) (fabs.f64 y))
(*.f64 (*.f64 #s(literal 1 binary64) (*.f64 y y)) x)
(*.f64 (*.f64 #s(literal 1 binary64) y) (*.f64 x y))
(*.f64 (*.f64 #s(literal 1 binary64) x) (*.f64 y y))
(*.f64 (*.f64 x y) y)
(*.f64 (neg.f64 y) (*.f64 (neg.f64 y) x))
(*.f64 (fabs.f64 y) (*.f64 (fabs.f64 y) x))
(*.f64 #s(literal 1 binary64) (*.f64 x (*.f64 y y)))
(*.f64 (*.f64 x (*.f64 y y)) #s(literal 1 binary64))
(*.f64 x (*.f64 (*.f64 y y) #s(literal 1 binary64)))
(*.f64 x (*.f64 y y))
(*.f64 (*.f64 y y) (*.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 (*.f64 x y) #s(literal 1 binary64)))
(*.f64 y (*.f64 x y))
(*.f64 (pow.f64 y #s(literal 1 binary64)) (pow.f64 y #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)))
(*.f64 (neg.f64 (fabs.f64 y)) (neg.f64 (fabs.f64 y)))
(*.f64 (fabs.f64 (fabs.f64 y)) (fabs.f64 (fabs.f64 y)))
(*.f64 (neg.f64 y) (neg.f64 y))
(*.f64 (fabs.f64 y) (fabs.f64 y))
(*.f64 y y)
(pow.f64 (neg.f64 y) #s(literal 2 binary64))
(pow.f64 (fabs.f64 y) #s(literal 2 binary64))
(pow.f64 y #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 y) y))
(neg.f64 (*.f64 y (neg.f64 y)))
(fabs.f64 (*.f64 y y))
(exp.f64 (*.f64 (log.f64 y) #s(literal 2 binary64)))
(/.f64 (-.f64 #s(literal 1/4 binary64) (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64))) (-.f64 #s(literal 1/2 binary64) (*.f64 #s(literal 1/6 binary64) (*.f64 y y))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64))) (neg.f64 (-.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 1/2 binary64))))
(/.f64 (neg.f64 (fma.f64 #s(literal 1/216 binary64) (pow.f64 (*.f64 y y) #s(literal 3 binary64)) #s(literal 1/8 binary64))) (neg.f64 (-.f64 (+.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (*.f64 (*.f64 y y) #s(literal 1/12 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 1/2 binary64)))
(/.f64 (fma.f64 #s(literal 1/216 binary64) (pow.f64 (*.f64 y y) #s(literal 3 binary64)) #s(literal 1/8 binary64)) (+.f64 #s(literal 1/4 binary64) (-.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) (*.f64 (*.f64 y y) #s(literal 1/12 binary64)))))
(/.f64 (fma.f64 #s(literal 1/216 binary64) (pow.f64 (*.f64 y y) #s(literal 3 binary64)) #s(literal 1/8 binary64)) (-.f64 (+.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (*.f64 (*.f64 y y) #s(literal 1/12 binary64))))
(fma.f64 (*.f64 #s(literal 1/6 binary64) (neg.f64 y)) (neg.f64 y) #s(literal 1/2 binary64))
(fma.f64 (*.f64 #s(literal 1/6 binary64) (fabs.f64 y)) (fabs.f64 y) #s(literal 1/2 binary64))
(fma.f64 (*.f64 #s(literal 1/6 binary64) y) y #s(literal 1/2 binary64))
(fma.f64 (neg.f64 y) (*.f64 (neg.f64 y) #s(literal 1/6 binary64)) #s(literal 1/2 binary64))
(fma.f64 (fabs.f64 y) (*.f64 (fabs.f64 y) #s(literal 1/6 binary64)) #s(literal 1/2 binary64))
(fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64))
(fma.f64 (*.f64 y y) #s(literal 1/6 binary64) #s(literal 1/2 binary64))
(fma.f64 y (*.f64 #s(literal 1/6 binary64) y) #s(literal 1/2 binary64))
(-.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) (-.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 1/2 binary64))) (/.f64 #s(literal 1/4 binary64) (-.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 1/2 binary64))))
(-.f64 #s(literal 1/2 binary64) (*.f64 (neg.f64 (*.f64 #s(literal 1/6 binary64) y)) y))
(-.f64 #s(literal 1/2 binary64) (*.f64 #s(literal -1/6 binary64) (*.f64 y y)))
(-.f64 #s(literal 1/2 binary64) (*.f64 (neg.f64 (*.f64 y y)) #s(literal 1/6 binary64)))
(+.f64 (/.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 3 binary64)) (-.f64 (+.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (*.f64 (*.f64 y y) #s(literal 1/12 binary64)))) (/.f64 #s(literal 1/8 binary64) (-.f64 (+.f64 (pow.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 2 binary64)) #s(literal 1/4 binary64)) (*.f64 (*.f64 y y) #s(literal 1/12 binary64)))))
(+.f64 (*.f64 #s(literal 1/6 binary64) (*.f64 y y)) #s(literal 1/2 binary64))
(+.f64 #s(literal 1/2 binary64) (*.f64 #s(literal 1/6 binary64) (*.f64 y y)))

eval22.0ms (0.5%)

Memory
-3.6MiB live, 41.5MiB allocated; 5ms collecting garbage
Compiler

Compiled 4 223 to 550 computations (87% saved)

prune15.0ms (0.3%)

Memory
-27.8MiB live, 25.2MiB allocated; 9ms collecting garbage
Pruning

12 alts after pruning (7 fresh and 5 done)

PrunedKeptTotal
New1287135
Fresh000
Picked011
Done044
Total12812140
Accuracy
100.0%
Counts
140 → 12
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (exp.f64 (*.f64 y y)))
80.3%
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
31.8%
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
52.5%
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
91.3%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 y y)) x x))
89.1%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) (*.f64 y (*.f64 x (*.f64 y y))) (fma.f64 (*.f64 x y) y x)))
89.8%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 (*.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) y) y) x) (*.f64 y y) (fma.f64 (*.f64 x y) y x)))
89.8%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
89.6%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) (*.f64 #s(literal 1/6 binary64) (*.f64 y y))) (*.f64 y y) #s(literal 1 binary64)) x))
87.1%
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
89.8%
#s(approx (* x (exp (* y y))) (fma.f64 y (*.f64 (*.f64 x y) (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64))) x))
89.8%
#s(approx (* x (exp (* y y))) (fma.f64 y (*.f64 y (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x))
Compiler

Compiled 518 to 215 computations (58.5% saved)

regimes17.0ms (0.4%)

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

5 calls:

4.0ms
x
4.0ms
y
3.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
3.0ms
(*.f64 y y)
2.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
100.0%1(*.f64 y y)
100.0%1(exp.f64 (*.f64 y y))
100.0%1(*.f64 x (exp.f64 (*.f64 y y)))
100.0%1x
100.0%1y
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes21.0ms (0.4%)

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

5 calls:

8.0ms
x
3.0ms
y
3.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
3.0ms
(*.f64 y y)
2.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
91.3%1(*.f64 y y)
91.3%1(exp.f64 (*.f64 y y))
91.3%1(*.f64 x (exp.f64 (*.f64 y y)))
91.3%1x
91.3%1y
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes13.0ms (0.3%)

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

5 calls:

3.0ms
y
3.0ms
x
3.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
2.0ms
(*.f64 y y)
2.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
89.8%1(exp.f64 (*.f64 y y))
89.8%1(*.f64 x (exp.f64 (*.f64 y y)))
89.8%1x
89.8%1(*.f64 y y)
89.8%1y
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes70.0ms (1.5%)

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

5 calls:

62.0ms
x
2.0ms
y
2.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
2.0ms
(*.f64 y y)
1.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
89.6%1(*.f64 y y)
89.6%1(exp.f64 (*.f64 y y))
89.6%1(*.f64 x (exp.f64 (*.f64 y y)))
89.6%1y
89.6%1x
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes9.0ms (0.2%)

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

5 calls:

2.0ms
x
2.0ms
y
2.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
2.0ms
(*.f64 y y)
1.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
87.1%1(*.f64 y y)
87.1%1(exp.f64 (*.f64 y y))
87.1%1(*.f64 x (exp.f64 (*.f64 y y)))
87.1%1y
87.1%1x
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes62.0ms (1.3%)

Memory
-30.6MiB live, 14.8MiB allocated; 5ms collecting garbage
Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
Outputs
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
Calls

5 calls:

55.0ms
(exp.f64 (*.f64 y y))
2.0ms
x
1.0ms
y
1.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
1.0ms
(*.f64 y y)
Results
AccuracySegmentsBranch
80.3%1(exp.f64 (*.f64 y y))
80.3%1(*.f64 x (exp.f64 (*.f64 y y)))
80.3%1(*.f64 y y)
80.3%1x
80.3%1y
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes6.0ms (0.1%)

Memory
13.6MiB live, 13.6MiB allocated; 0ms collecting garbage
Counts
2 → 2
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
Outputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
(*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y))))
Calls

5 calls:

1.0ms
y
1.0ms
x
1.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
1.0ms
(*.f64 y y)
1.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
52.5%1x
79.9%2(exp.f64 (*.f64 y y))
79.9%2(*.f64 x (exp.f64 (*.f64 y y)))
79.9%2(*.f64 y y)
79.9%2y
Compiler

Compiled 15 to 16 computations (-6.7% saved)

regimes4.0ms (0.1%)

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

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Outputs
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Calls

4 calls:

1.0ms
y
1.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
1.0ms
(*.f64 y y)
1.0ms
(exp.f64 (*.f64 y y))
Results
AccuracySegmentsBranch
52.5%1(exp.f64 (*.f64 y y))
52.5%1(*.f64 x (exp.f64 (*.f64 y y)))
52.5%1(*.f64 y y)
52.5%1y
Compiler

Compiled 14 to 14 computations (0% saved)

bsearch13.0ms (0.3%)

Memory
16.4MiB live, 16.4MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
12.0ms
0.0672391358542806
6983.981251520031
Samples
7.0ms144×0valid
Compiler

Compiled 225 to 181 computations (19.6% saved)

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

simplify105.0ms (2.2%)

Memory
-22.3MiB live, 79.0MiB allocated; 54ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
043163
160163
2122163
3298163
4692163
53700163
Stop Event
node limit
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 y y)) x x))
#s(approx (* x (exp (* y y))) (fma.f64 y (*.f64 y (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) (*.f64 #s(literal 1/6 binary64) (*.f64 y y))) (*.f64 y y) #s(literal 1 binary64)) x))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
(if (<=.f64 y #s(literal 1 binary64)) (*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64))) (*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))))
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) (*.f64 y y)) x x))
#s(approx (* x (exp (* y y))) (fma.f64 y (*.f64 y (*.f64 (fma.f64 (fma.f64 #s(literal 1/6 binary64) (*.f64 y y) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x)) x))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) (*.f64 #s(literal 1/6 binary64) (*.f64 y y))) (*.f64 y y) #s(literal 1 binary64)) x))
#s(approx (* x (exp (* y y))) (fma.f64 (*.f64 (*.f64 y y) x) (fma.f64 #s(approx (+ (* 1/6 (* y y)) 1/2) #s(literal 1/2 binary64)) (*.f64 y y) #s(literal 1 binary64)) x))
(*.f64 x #s(approx (exp (* y y)) (fma.f64 y y #s(literal 1 binary64))))
(if (<=.f64 y #s(literal 1 binary64)) (*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64))) (*.f64 x #s(approx (exp (* y y)) #s(approx (+ (* y y) 1) (*.f64 y y)))))
(*.f64 x #s(approx (exp (* y y)) #s(literal 1 binary64)))

derivations725.0ms (15.1%)

Memory
-1.4MiB live, 659.9MiB allocated; 79ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036102
1136102
253196
3276094
0847081
058190
1200190
2809178
33875176
08090160
01457
02257
19757
080157
03397
112797
250191
3227589
4595189
0809277
036102
1136102
253196
3275894
0844581
Stop Event
fuel
iter limit
node limit
iter limit
node limit
iter limit
iter limit
node limit
iter limit
iter limit
node limit
iter limit
node limit
Compiler

Compiled 163 to 46 computations (71.8% saved)

preprocess106.0ms (2.2%)

Memory
30.2MiB live, 132.5MiB allocated; 25ms collecting garbage
Remove

(negabs x)

(abs y)

Compiler

Compiled 398 to 152 computations (61.8% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...