Details

Time bar (total: 2.0s)

analyze51.0ms (2.5%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
37.5%37.5%62.4%0.1%0%0%0%6
48%37.5%40.6%0.1%21.9%0%0%7
57.1%43.7%32.8%0.1%23.4%0%0%8
67.5%43.7%21.1%0.1%35.1%0%0%9
73.6%46.8%16.8%0.1%36.3%0%0%10
81.4%46.8%10.7%0.1%42.3%0%0%11
85.1%48.4%8.5%0.1%43%0%0%12
Compiler

Compiled 9 to 6 computations (33.3% saved)

sample967.0ms (47.4%)

Results
856.0ms8256×body256valid
98.0ms1089×body256infinite
Bogosity

preprocess79.0ms (3.9%)

Algorithm
egg-herbie
Rules
496×sqr-pow_binary64
428×unswap-sqr_binary64
350×distribute-rgt-in_binary64
332×associate-/l/_binary64
306×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
11518
22218
34018
49418
526618
686218
7143318
8377418
9404418
10448318
11526718
12792118
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 y (exp.f64 (*.f64 x x)))
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 y (exp.f64 (*.f64 x x)))
(*.f64 y (pow.f64 (exp.f64 x) x))
Compiler

Compiled 10 to 7 computations (30% saved)

simplify63.0ms (3.1%)

Algorithm
egg-herbie
Rules
611×sqr-pow_binary64
450×associate-*l*_binary64
424×pow-sqr_binary64
390×associate-*l/_binary64
368×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
199
2139
3229
4509
51399
64509
714759
827179
940609
1044449
1150199
1266719
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 x (exp.f64 (*.f64 y y)))
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))

eval1.0ms (0%)

Compiler

Compiled 14 to 8 computations (42.9% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
Compiler

Compiled 16 to 10 computations (37.5% saved)

localize6.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.0b
(exp.f64 (*.f64 y y))
Compiler

Compiled 17 to 5 computations (70.6% saved)

series4.0ms (0.2%)

Counts
2 → 36
Calls

9 calls:

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

rewrite56.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
511×pow1_binary64
486×add-sqr-sqrt_binary64
468×add-log-exp_binary64
468×log1p-expm1-u_binary64
468×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0615
111515
2134615
Stop Event
node limit
Counts
2 → 32
Calls
Call 1
Inputs
(exp.f64 (*.f64 y y))
(*.f64 x (exp.f64 (*.f64 y y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (expm1.f64 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 y) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 y) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 y) y)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (pow.f64 y 4))) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 y) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 y) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (pow.f64 (exp.f64 y) y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 y y) (log.f64 x)))))))

simplify59.0ms (2.9%)

Algorithm
egg-herbie
Rules
494×associate-/l/_binary64
453×fma-def_binary64
445×unswap-sqr_binary64
333×fma-neg_binary64
271×sqr-pow_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
096584
1232576
2796565
32825565
45824565
Stop Event
node limit
Counts
68 → 64
Calls
Call 1
Inputs
1
(+.f64 1 (pow.f64 y 2))
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 (*.f64 1/6 (pow.f64 y 6)) (+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4)))))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) x))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) x)) x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(+.f64 1 (expm1.f64 (*.f64 y y)))
(-.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)
(*.f64 (pow.f64 (exp.f64 y) y) 1)
(*.f64 1 (pow.f64 (exp.f64 y) y))
(*.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))
(*.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))
(pow.f64 (pow.f64 (exp.f64 y) y) 1)
(pow.f64 (exp.f64 y) y)
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) 1/3)
(pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 3)
(pow.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) 2)
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 y 4))) (pow.f64 (cbrt.f64 y) 2))
(pow.f64 (exp.f64 1) (*.f64 y y))
(pow.f64 (pow.f64 (exp.f64 y) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
(pow.f64 (pow.f64 (exp.f64 y) (sqrt.f64 y)) (sqrt.f64 y))
(sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 2))
(log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))
(cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))
(expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))
(log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))
(-.f64 (+.f64 1 (*.f64 (pow.f64 (exp.f64 y) y) x)) 1)
(pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 1)
(pow.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 3)
(pow.f64 (sqrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 2)
(sqrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 2))
(log.f64 (pow.f64 (exp.f64 x) (pow.f64 (exp.f64 y) y)))
(cbrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3))
(expm1.f64 (log1p.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))
(log1p.f64 (expm1.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))
(exp.f64 (+.f64 (*.f64 y y) (log.f64 x)))
Outputs
1
(+.f64 1 (pow.f64 y 2))
(+.f64 1 (*.f64 y y))
(fma.f64 y y 1)
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 1 (+.f64 (*.f64 y y) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 1 (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1))
(+.f64 (*.f64 1/6 (pow.f64 y 6)) (+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4)))))
(fma.f64 1/6 (pow.f64 y 6) (+.f64 1 (+.f64 (*.f64 y y) (*.f64 1/2 (pow.f64 y 4)))))
(+.f64 (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) (fma.f64 1/6 (pow.f64 y 6) 1))
(fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)))
(fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y 1)))
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 (fma.f64 y y 1) x)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) x))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) x) (fma.f64 (*.f64 y y) x x))
(+.f64 x (*.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4)))))
(*.f64 (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)) x)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) x)) x)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) x) (fma.f64 (*.f64 y y) x (fma.f64 1/6 (*.f64 (pow.f64 y 6) x) x)))
(+.f64 (fma.f64 1/6 (*.f64 (pow.f64 y 6) x) x) (*.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4)))))
(*.f64 x (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1))))
(*.f64 (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y 1))) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(+.f64 1 (expm1.f64 (*.f64 y y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(-.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 (exp.f64 y) y) 1)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 1 (pow.f64 (exp.f64 y) y))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(pow.f64 (pow.f64 (exp.f64 y) y) 1)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 y y))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) 1/3)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 3)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(pow.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) 2)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 y 4))) (pow.f64 (cbrt.f64 y) 2))
(pow.f64 (exp.f64 1) (*.f64 y y))
(pow.f64 (E.f64) (*.f64 y y))
(pow.f64 (pow.f64 (exp.f64 y) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
(pow.f64 (pow.f64 (exp.f64 y) (sqrt.f64 y)) (sqrt.f64 y))
(sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(-.f64 (+.f64 1 (*.f64 (pow.f64 (exp.f64 y) y) x)) 1)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 1)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(pow.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3) 1/3)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(pow.f64 (cbrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 3)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(pow.f64 (sqrt.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)) 2)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(sqrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 2))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(log.f64 (pow.f64 (exp.f64 x) (pow.f64 (exp.f64 y) y)))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(cbrt.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 y) y) x) 3))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(expm1.f64 (log1p.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(log1p.f64 (expm1.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (+.f64 (*.f64 y y) (log.f64 x)))
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 x (pow.f64 (exp.f64 y) y))

localize6.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 (exp.f64 y) y)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
Compiler

Compiled 16 to 5 computations (68.8% saved)

series40.0ms (2%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
37.0ms
x
@0
(*.f64 x (pow.f64 (exp.f64 y) y))
1.0ms
y
@0
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0ms
y
@-inf
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0ms
y
@inf
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0ms
x
@inf
(*.f64 x (pow.f64 (exp.f64 y) y))

rewrite79.0ms (3.9%)

Algorithm
batch-egg-rewrite
Rules
550×pow1_binary64
524×add-sqr-sqrt_binary64
505×add-log-exp_binary64
505×log1p-expm1-u_binary64
505×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0615
111815
2140715
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(*.f64 x (pow.f64 (exp.f64 y) y))
(pow.f64 (exp.f64 y) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (pow.f64 (exp.f64 y) y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 (exp.f64 y) y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 x) (*.f64 y y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 y) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 y) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2) y) (pow.f64 (cbrt.f64 (exp.f64 y)) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (exp.f64 y) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 y y))))))

simplify50.0ms (2.5%)

Algorithm
egg-herbie
Rules
685×fma-def_binary64
535×distribute-rgt-in_binary64
525×distribute-lft-in_binary64
473×associate-*l*_binary64
445×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
089539
1210531
2634520
33371520
47271520
Stop Event
node limit
Counts
62 → 61
Calls
Call 1
Inputs
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) x))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) x)) x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
1
(+.f64 1 (pow.f64 y 2))
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 (*.f64 1/6 (pow.f64 y 6)) (+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4)))))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(exp.f64 (pow.f64 y 2))
(-.f64 (+.f64 1 (*.f64 x (pow.f64 (exp.f64 y) y))) 1)
(pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 1)
(pow.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 3)
(pow.f64 (sqrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 2)
(sqrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 2))
(log.f64 (pow.f64 (exp.f64 (pow.f64 (exp.f64 y) y)) x))
(cbrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))
(log1p.f64 (expm1.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))
(exp.f64 (+.f64 (log.f64 x) (*.f64 y y)))
(-.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)
(*.f64 (pow.f64 (exp.f64 y) y) 1)
(*.f64 1 (pow.f64 (exp.f64 y) y))
(*.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))
(*.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))
(*.f64 (pow.f64 1 y) (pow.f64 (exp.f64 y) y))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2) y) (pow.f64 (cbrt.f64 (exp.f64 y)) y))
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
(sqrt.f64 (pow.f64 (exp.f64 y) (+.f64 y y)))
(log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))
(cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))
(expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))
(log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
Outputs
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) x))
(fma.f64 1/2 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 y y) x x))
(+.f64 x (*.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4)))))
(fma.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) x)
(*.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 (pow.f64 y 2) x) (+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) x)) x)))
(fma.f64 1/2 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 y y) x (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) x)))
(+.f64 (*.f64 (fma.f64 1/6 (pow.f64 y 6) 1) x) (*.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4)))))
(*.f64 x (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1))))
(*.f64 x (fma.f64 y y (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) 1))))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
1
(+.f64 1 (pow.f64 y 2))
(+.f64 (*.f64 y y) 1)
(fma.f64 y y 1)
(+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 (+.f64 (*.f64 y y) 1) (*.f64 1/2 (pow.f64 y 4)))
(+.f64 1 (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))))
(fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1))
(+.f64 (*.f64 1/6 (pow.f64 y 6)) (+.f64 1 (+.f64 (pow.f64 y 2) (*.f64 1/2 (pow.f64 y 4)))))
(fma.f64 1/6 (pow.f64 y 6) (+.f64 (+.f64 (*.f64 y y) 1) (*.f64 1/2 (pow.f64 y 4))))
(+.f64 (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) (fma.f64 1/6 (pow.f64 y 6) 1))
(fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) 1)))
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (pow.f64 y 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(-.f64 (+.f64 1 (*.f64 x (pow.f64 (exp.f64 y) y))) 1)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 1)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(pow.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3) 1/3)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(pow.f64 (cbrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 3)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(pow.f64 (sqrt.f64 (*.f64 x (pow.f64 (exp.f64 y) y))) 2)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(sqrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 2))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(log.f64 (pow.f64 (exp.f64 (pow.f64 (exp.f64 y) y)) x))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(cbrt.f64 (pow.f64 (*.f64 x (pow.f64 (exp.f64 y) y)) 3))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(expm1.f64 (log1p.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(log1p.f64 (expm1.f64 (*.f64 x (pow.f64 (exp.f64 y) y))))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(exp.f64 (+.f64 (log.f64 x) (*.f64 y y)))
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(exp.f64 (fma.f64 y y (log.f64 x)))
(-.f64 (+.f64 1 (pow.f64 (exp.f64 y) y)) 1)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 (exp.f64 y) y) 1)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 1 (pow.f64 (exp.f64 y) y))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) y)) 2) (cbrt.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (sqrt.f64 (pow.f64 (exp.f64 y) y)) (sqrt.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 1 y) (pow.f64 (exp.f64 y) y))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2) y) (pow.f64 (cbrt.f64 (exp.f64 y)) y))
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (+.f64 y y))
(sqrt.f64 (pow.f64 (exp.f64 y) (+.f64 y y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(log.f64 (exp.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(expm1.f64 (log1p.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(log1p.f64 (expm1.f64 (pow.f64 (exp.f64 y) y)))
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 y y))
(pow.f64 (exp.f64 y) y)

eval28.0ms (1.3%)

Compiler

Compiled 1300 to 640 computations (50.8% saved)

prune13.0ms (0.6%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1223125
Fresh000
Picked011
Done011
Total1225127
Error
0b
Counts
127 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(fma.f64 (*.f64 y y) x x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.5b
(*.f64 x (+.f64 (*.f64 y y) 1))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.9b
x
Compiler

Compiled 36 to 22 computations (38.9% saved)

localize6.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (+.f64 (*.f64 y y) 1))
Compiler

Compiled 20 to 9 computations (55% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
y
@inf
(*.f64 x (+.f64 (*.f64 y y) 1))
0.0ms
x
@0
(*.f64 x (+.f64 (*.f64 y y) 1))
0.0ms
x
@inf
(*.f64 x (+.f64 (*.f64 y y) 1))
0.0ms
x
@-inf
(*.f64 x (+.f64 (*.f64 y y) 1))
0.0ms
y
@0
(*.f64 x (+.f64 (*.f64 y y) 1))

rewrite51.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
701×pow1_binary64
653×add-log-exp_binary64
653×log1p-expm1-u_binary64
653×expm1-log1p-u_binary64
637×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
11488
219038
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(*.f64 x (+.f64 (*.f64 y y) 1))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 y y)) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 y y 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (-.f64 (*.f64 x x) (*.f64 (*.f64 x (*.f64 y y)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (*.f64 x x)) (-.f64 (*.f64 x (*.f64 y y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 y 6)) x) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 4) -1) x) (fma.f64 y y -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 1 (pow.f64 y 6))) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (pow.f64 y 4) -1)) (fma.f64 y y -1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 y y 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 y y 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (hypot.f64 1 y) (sqrt.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 y y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 y y 1) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 y y 1) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 y y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 y y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 y y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 y y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y y) x x)))))

simplify40.0ms (1.9%)

Algorithm
egg-herbie
Rules
610×associate-*l*_binary64
589×log-prod_binary64
515×associate-*r*_binary64
391×associate-/l*_binary64
314×associate-/r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
080448
1220443
2739436
34202435
Stop Event
node limit
Counts
48 → 38
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(*.f64 (pow.f64 y 2) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(*.f64 (pow.f64 y 2) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(+.f64 x (*.f64 x (*.f64 y y)))
(+.f64 (*.f64 x (*.f64 y y)) x)
(+.f64 (*.f64 (*.f64 x (*.f64 y y)) 1) x)
(-.f64 (+.f64 1 (*.f64 x (fma.f64 y y 1))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (-.f64 (*.f64 x x) (*.f64 (*.f64 x (*.f64 y y)) x))))
(/.f64 (-.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (*.f64 x x)) (-.f64 (*.f64 x (*.f64 y y)) x))
(/.f64 (*.f64 (+.f64 1 (pow.f64 y 6)) x) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 (*.f64 (+.f64 (pow.f64 y 4) -1) x) (fma.f64 y y -1))
(/.f64 (*.f64 x (+.f64 1 (pow.f64 y 6))) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 (*.f64 x (+.f64 (pow.f64 y 4) -1)) (fma.f64 y y -1))
(pow.f64 (*.f64 x (fma.f64 y y 1)) 1)
(pow.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 y y 1))) 3)
(pow.f64 (*.f64 (hypot.f64 1 y) (sqrt.f64 x)) 2)
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 2))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 y y 1)))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3))
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 y y 1) 3)))
(cbrt.f64 (*.f64 (pow.f64 (fma.f64 y y 1) 3) (pow.f64 x 3)))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 y y 1))))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 y y 1))))
(exp.f64 (log.f64 (*.f64 x (fma.f64 y y 1))))
(fma.f64 x (*.f64 y y) x)
(fma.f64 (*.f64 y y) x x)
Outputs
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (pow.f64 y 2) x)
(*.f64 x (*.f64 y y))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (pow.f64 y 2) x)
(*.f64 x (*.f64 y y))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 x (*.f64 x (*.f64 y y)))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 x (*.f64 y y)) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (*.f64 x (*.f64 y y)) 1) x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(-.f64 (+.f64 1 (*.f64 x (fma.f64 y y 1))) 1)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(/.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (-.f64 (*.f64 x x) (*.f64 (*.f64 x (*.f64 y y)) x))))
(/.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)) (*.f64 x (-.f64 x (*.f64 x (*.f64 y y))))))
(/.f64 (fma.f64 (pow.f64 x 3) (pow.f64 y 6) (pow.f64 x 3)) (*.f64 x (+.f64 (*.f64 x (pow.f64 y 4)) (-.f64 x (*.f64 x (*.f64 y y))))))
(/.f64 (*.f64 (+.f64 1 (pow.f64 y 6)) (pow.f64 x 3)) (*.f64 x (-.f64 (fma.f64 x (pow.f64 y 4) x) (*.f64 x (*.f64 y y)))))
(/.f64 (*.f64 (pow.f64 x 3) (+.f64 1 (pow.f64 y 6))) (*.f64 x (*.f64 x (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))))
(/.f64 (-.f64 (*.f64 (*.f64 x (*.f64 y y)) (*.f64 x (*.f64 y y))) (*.f64 x x)) (-.f64 (*.f64 x (*.f64 y y)) x))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(/.f64 (*.f64 (+.f64 1 (pow.f64 y 6)) x) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))) (+.f64 1 (pow.f64 y 6))))
(*.f64 (/.f64 x (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y)))) (+.f64 1 (pow.f64 y 6)))
(/.f64 (fma.f64 x (pow.f64 y 6) x) (+.f64 1 (-.f64 (pow.f64 y 4) (*.f64 y y))))
(/.f64 (fma.f64 x (pow.f64 y 6) x) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 (*.f64 (+.f64 (pow.f64 y 4) -1) x) (fma.f64 y y -1))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(/.f64 (*.f64 x (+.f64 1 (pow.f64 y 6))) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 x (/.f64 (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))) (+.f64 1 (pow.f64 y 6))))
(*.f64 (/.f64 x (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y)))) (+.f64 1 (pow.f64 y 6)))
(/.f64 (fma.f64 x (pow.f64 y 6) x) (+.f64 1 (-.f64 (pow.f64 y 4) (*.f64 y y))))
(/.f64 (fma.f64 x (pow.f64 y 6) x) (+.f64 (pow.f64 y 4) (-.f64 1 (*.f64 y y))))
(/.f64 (*.f64 x (+.f64 (pow.f64 y 4) -1)) (fma.f64 y y -1))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(pow.f64 (*.f64 x (fma.f64 y y 1)) 1)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(pow.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3) 1/3)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 y y 1))) 3)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(pow.f64 (*.f64 (hypot.f64 1 y) (sqrt.f64 x)) 2)
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 2))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 y y 1)))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 y y 1)) 3))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 y y 1) 3)))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(cbrt.f64 (*.f64 (pow.f64 (fma.f64 y y 1) 3) (pow.f64 x 3)))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 y y 1))))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 y y 1))))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(exp.f64 (log.f64 (*.f64 x (fma.f64 y y 1))))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))
(fma.f64 (*.f64 y y) x x)
(fma.f64 x (*.f64 y y) x)
(*.f64 x (fma.f64 y y 1))

localize5.0ms (0.2%)

Compiler

Compiled 13 to 4 computations (69.2% saved)

eval8.0ms (0.4%)

Compiler

Compiled 469 to 250 computations (46.7% saved)

prune32.0ms (1.6%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New36238
Fresh011
Picked101
Done033
Total37643
Error
0b
Counts
43 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 x (*.f64 y y)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.5b
(*.f64 x (+.f64 (*.f64 y y) 1))
61.0b
(*.f64 x (*.f64 y y))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.9b
x
Compiler

Compiled 44 to 27 computations (38.6% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
8.0b
(*.f64 x (*.f64 y y))
Compiler

Compiled 12 to 4 computations (66.7% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(*.f64 x (*.f64 y y))
0.0ms
y
@inf
(*.f64 x (*.f64 y y))
0.0ms
x
@0
(*.f64 x (*.f64 y y))
0.0ms
x
@-inf
(*.f64 x (*.f64 y y))
0.0ms
y
@0
(*.f64 x (*.f64 y y))

rewrite35.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
458×pow1_binary64
435×add-sqr-sqrt_binary64
429×*-un-lft-identity_binary64
421×add-log-exp_binary64
421×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11007
212077
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 x (*.f64 y y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 y y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 y y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 y y))))))))

simplify41.0ms (2%)

Algorithm
egg-herbie
Rules
1080×log-prod_binary64
553×distribute-rgt-in_binary64
542×distribute-lft-in_binary64
392×associate-*l*_binary64
355×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036245
190245
2324245
32157245
47026245
Stop Event
node limit
Counts
35 → 14
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(*.f64 (pow.f64 y 2) x)
(-.f64 (+.f64 1 (*.f64 x (*.f64 y y))) 1)
(pow.f64 (*.f64 x (*.f64 y y)) 1)
(pow.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) 1/3)
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 y y))) 3)
(pow.f64 (*.f64 y (sqrt.f64 x)) 2)
(sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))
(log.f64 (pow.f64 (exp.f64 x) (*.f64 y y)))
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (*.f64 y y))))
(log1p.f64 (expm1.f64 (*.f64 x (*.f64 y y))))
(exp.f64 (log.f64 (*.f64 x (*.f64 y y))))
Outputs
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(-.f64 (+.f64 1 (*.f64 x (*.f64 y y))) 1)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 x (*.f64 y y)) 1)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(pow.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3) 1/3)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(pow.f64 (cbrt.f64 (*.f64 x (*.f64 y y))) 3)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 y (sqrt.f64 x)) 2)
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(log.f64 (pow.f64 (exp.f64 x) (*.f64 y y)))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(cbrt.f64 (pow.f64 (*.f64 x (*.f64 y y)) 3))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(expm1.f64 (log1p.f64 (*.f64 x (*.f64 y y))))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(log1p.f64 (expm1.f64 (*.f64 x (*.f64 y y))))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))
(exp.f64 (log.f64 (*.f64 x (*.f64 y y))))
(*.f64 (*.f64 x y) y)
(*.f64 y (*.f64 y x))

localize6.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
8.0b
(*.f64 x (*.f64 y y))
Compiler

Compiled 19 to 5 computations (73.7% saved)

eval4.0ms (0.2%)

Compiler

Compiled 226 to 83 computations (63.3% saved)

prune7.0ms (0.3%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New28028
Fresh011
Picked011
Done044
Total28634
Error
0b
Counts
34 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 x (*.f64 y y)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.5b
(*.f64 x (+.f64 (*.f64 y y) 1))
61.0b
(*.f64 x (*.f64 y y))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.9b
x
Compiler

Compiled 44 to 27 computations (38.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done055
Total066
Error
0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 x (*.f64 y y)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.5b
(*.f64 x (+.f64 (*.f64 y y) 1))
61.0b
(*.f64 x (*.f64 y y))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.9b
x
Compiler

Compiled 44 to 27 computations (38.6% saved)

regimes53.0ms (2.6%)

Counts
7 → 1
Calls
Call 1
Inputs
x
(*.f64 x (*.f64 y y))
(*.f64 x (+.f64 (*.f64 y y) 1))
(+.f64 (*.f64 x (*.f64 y y)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(fma.f64 (*.f64 y y) x x)
(*.f64 x (pow.f64 (exp.f64 y) y))
Outputs
(*.f64 x (pow.f64 (exp.f64 y) y))
Calls

7 calls:

27.0ms
x
7.0ms
(exp.f64 (*.f64 y y))
5.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
5.0ms
y
2.0ms
(*.f64 y y)
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 x (exp.f64 (*.f64 y y)))
0.0b1(exp.f64 (*.f64 y y))
0.0b1(exp.f64 (*.f64 y y))
0.0b1(*.f64 y y)
0.0b1(*.f64 y y)
Compiler

Compiled 76 to 37 computations (51.3% saved)

regimes45.0ms (2.2%)

Counts
6 → 1
Calls
Call 1
Inputs
x
(*.f64 x (*.f64 y y))
(*.f64 x (+.f64 (*.f64 y y) 1))
(+.f64 (*.f64 x (*.f64 y y)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(fma.f64 (*.f64 y y) x x)
Outputs
(*.f64 x (exp.f64 (*.f64 y y)))
Calls

5 calls:

30.0ms
y
5.0ms
x
4.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
2.0ms
(*.f64 y y)
2.0ms
(exp.f64 (*.f64 y y))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1(*.f64 x (exp.f64 (*.f64 y y)))
0.0b1(exp.f64 (*.f64 y y))
0.0b1(*.f64 y y)
Compiler

Compiled 59 to 27 computations (54.2% saved)

regimes11.0ms (0.6%)

Counts
4 → 1
Calls
Call 1
Inputs
x
(*.f64 x (*.f64 y y))
(*.f64 x (+.f64 (*.f64 y y) 1))
(+.f64 (*.f64 x (*.f64 y y)) x)
Outputs
(+.f64 (*.f64 x (*.f64 y y)) x)
Calls

3 calls:

5.0ms
y
4.0ms
x
2.0ms
(*.f64 y y)
Results
ErrorSegmentsBranch
0.5b1x
0.5b1y
0.5b1(*.f64 y y)
Compiler

Compiled 33 to 15 computations (54.5% saved)

regimes12.0ms (0.6%)

Counts
3 → 1
Calls
Call 1
Inputs
x
(*.f64 x (*.f64 y y))
(*.f64 x (+.f64 (*.f64 y y) 1))
Outputs
(*.f64 x (+.f64 (*.f64 y y) 1))
Calls

3 calls:

6.0ms
x
3.0ms
y
2.0ms
(*.f64 y y)
Results
ErrorSegmentsBranch
0.5b1x
0.5b1y
0.5b1(*.f64 y y)
Compiler

Compiled 26 to 14 computations (46.2% saved)

regimes8.0ms (0.4%)

Accuracy

Total -60.1b remaining (-6970.7%)

Threshold costs -60.1b (-6970.7%)

Counts
2 → 1
Calls
Call 1
Inputs
x
(*.f64 x (*.f64 y y))
Outputs
x
Calls

3 calls:

3.0ms
x
3.0ms
y
2.0ms
(*.f64 y y)
Results
ErrorSegmentsBranch
0.9b1x
0.9b1y
0.9b1(*.f64 y y)
Compiler

Compiled 19 to 11 computations (42.1% saved)

simplify3.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01439
12239
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (exp.f64 (*.f64 y y)))
(+.f64 (*.f64 x (*.f64 y y)) x)
(*.f64 x (+.f64 (*.f64 y y) 1))
x
Outputs
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (exp.f64 (*.f64 y y)))
(+.f64 (*.f64 x (*.f64 y y)) x)
(+.f64 x (*.f64 x (*.f64 y y)))
(*.f64 x (+.f64 (*.f64 y y) 1))
x
Compiler

Compiled 37 to 23 computations (37.8% saved)

soundness128.0ms (6.3%)

Algorithm
egg-herbie
Rules
611×sqr-pow_binary64
450×associate-*l*_binary64
424×pow-sqr_binary64
390×associate-*l/_binary64
368×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069
199
2139
3229
4509
51399
64509
714759
827179
940609
1044449
1150199
1266719
Stop Event
node limit
Compiler

Compiled 16 to 10 computations (37.5% saved)

end29.0ms (1.4%)

Compiler

Compiled 29 to 13 computations (55.2% saved)

Profiling

Loading profile data...