Details

Time bar (total: 4.5s)

analyze89.0ms (2%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
25%74.9%0.1%5
37.5%62.4%0.1%6
37.5%40.6%22%7
43.7%32.8%23.5%8
43.7%21.1%35.2%9
46.8%16.8%36.4%10
46.8%10.7%42.4%11
48.4%8.5%43.1%12
Compiler

Compiled 9 to 6 computations (33.3% saved)

sample1.5s (33.5%)

Results
1.3s8256×body256valid
199.0ms1123×body256invalid

preprocess106.0ms (2.4%)

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)

simplify88.0ms (1.9%)

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)

prune2.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)

localize12.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)

series8.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
y
@0
(exp.f64 (*.f64 y y))
1.0ms
x
@inf
(*.f64 x (exp.f64 (*.f64 y y)))
1.0ms
x
@-inf
(*.f64 x (exp.f64 (*.f64 y y)))

rewrite66.0ms (1.5%)

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)))))))

simplify90.0ms (2%)

Algorithm
egg-herbie
Rules
855×associate-/l/_binary64
510×fma-def_binary64
487×distribute-rgt-out_binary64
397×associate-*l*_binary64
377×*-commutative_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030330
177322
2198311
3612311
42342311
54439311
64937311
76006311
Stop Event
node limit
Counts
68 → 49
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)
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 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1)))
(fma.f64 y y (fma.f64 1/6 (pow.f64 y 6) (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 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
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 1 (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 (*.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 y y (fma.f64 1/2 (pow.f64 y 4) 1))))
(*.f64 (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))) x)
(*.f64 (fma.f64 y y (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) 1))) x)
(*.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 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)

localize8.0ms (0.2%)

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)

series44.0ms (1%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
40.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
x
@inf
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0ms
y
@-inf
(*.f64 x (pow.f64 (exp.f64 y) y))

rewrite57.0ms (1.3%)

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))))))

simplify81.0ms (1.8%)

Algorithm
egg-herbie
Rules
858×associate-/l/_binary64
510×fma-def_binary64
487×distribute-rgt-out_binary64
408×*-commutative_binary64
408×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030330
177322
2198311
3614311
42376311
54480311
64980311
76047311
Stop Event
node limit
Counts
62 → 44
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))
Outputs
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(fma.f64 y (*.f64 y x) x)
(+.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)))))
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(*.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)))
(fma.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) 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 x (pow.f64 y 4)) (fma.f64 (*.f64 y y) x (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) x)))
(+.f64 (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) 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/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))))
(fma.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (*.f64 1/6 (pow.f64 y 6)))) x)
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y 1))))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) 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 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 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 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 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 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)

eval19.0ms (0.4%)

Compiler

Compiled 900 to 415 computations (53.9% saved)

prune25.0ms (0.6%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New89493
Fresh000
Picked011
Done011
Total89695
Error
0b
Counts
95 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
0.5b
x
0.0b
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
0.2b
(fma.f64 y (*.f64 y x) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
Compiler

Compiled 52 to 30 computations (42.3% saved)

localize22.0ms (0.5%)

Local error

Found 3 expressions with local error:

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

Compiled 38 to 7 computations (81.6% saved)

series46.0ms (1%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
33.0ms
x
@0
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
3.0ms
y
@inf
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
1.0ms
y
@0
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
1.0ms
y
@-inf
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
1.0ms
x
@inf
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))

rewrite94.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
731×pow1_binary64
676×add-log-exp_binary64
675×log1p-expm1-u_binary64
675×expm1-log1p-u_binary64
656×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0820
116620
2207220
Stop Event
node limit
Counts
3 → 54
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
(sqrt.f64 (exp.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (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 (exp.f64 y) (*.f64 1/2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 y) (*.f64 (*.f64 y 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 y) (/.f64 (+.f64 y y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 y) (*.f64 2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (exp.f64 y)) (+.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 (+.f64 y y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)))) (#(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 (pow.f64 (pow.f64 (exp.f64 y) y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2))))) (#(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 (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 (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))))))
((#(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 cbrt.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (exp.f64 y) y) 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 (log.f64 x) (*.f64 y y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (exp.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (exp.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (exp.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (exp.f64 y)) (cbrt.f64 (sqrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (exp.f64 y))) (cbrt.f64 (exp.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 y) 1/4) (pow.f64 (exp.f64 y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2)) (sqrt.f64 (cbrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (exp.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2) 1/2) (pow.f64 (cbrt.f64 (exp.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (exp.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 y) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (exp.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 y) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (exp.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (exp.f64 y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (exp.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 y 1/2))))))

simplify101.0ms (2.2%)

Algorithm
egg-herbie
Rules
882×fma-def_binary64
565×associate-*r/_binary64
390×*-commutative_binary64
356×unswap-sqr_binary64
343×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
046513
1120503
2318489
31067482
42619482
53670482
65527482
76399482
Stop Event
node limit
Counts
94 → 77
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)))))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) 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 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
1
(+.f64 1 (*.f64 1/2 y))
(+.f64 1 (+.f64 (*.f64 1/2 y) (*.f64 1/8 (pow.f64 y 2))))
(+.f64 1 (+.f64 (*.f64 1/2 y) (+.f64 (*.f64 1/48 (pow.f64 y 3)) (*.f64 1/8 (pow.f64 y 2)))))
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 (fma.f64 y y 1) (*.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 y y (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) 1)))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
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 (fma.f64 y y 1) (*.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 (*.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 y y (fma.f64 1/2 (pow.f64 y 4) 1))))
(*.f64 (fma.f64 y y (fma.f64 1/6 (pow.f64 y 6) (fma.f64 1/2 (pow.f64 y 4) 1))) x)
(fma.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (*.f64 y y))) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 (pow.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) 2) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 2 y)) x)
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
1
(+.f64 1 (*.f64 1/2 y))
(+.f64 1 (*.f64 y 1/2))
(fma.f64 y 1/2 1)
(+.f64 1 (+.f64 (*.f64 1/2 y) (*.f64 1/8 (pow.f64 y 2))))
(+.f64 1 (fma.f64 1/2 y (*.f64 (*.f64 y y) 1/8)))
(+.f64 (fma.f64 y 1/2 1) (*.f64 y (*.f64 y 1/8)))
(fma.f64 y (*.f64 y 1/8) (fma.f64 y 1/2 1))
(fma.f64 y (fma.f64 y 1/8 1/2) 1)
(+.f64 1 (+.f64 (*.f64 1/2 y) (+.f64 (*.f64 1/48 (pow.f64 y 3)) (*.f64 1/8 (pow.f64 y 2)))))
(+.f64 1 (fma.f64 1/2 y (fma.f64 1/48 (pow.f64 y 3) (*.f64 (*.f64 y y) 1/8))))
(+.f64 (fma.f64 y 1/2 1) (fma.f64 1/48 (pow.f64 y 3) (*.f64 y (*.f64 y 1/8))))
(+.f64 1 (fma.f64 y 1/2 (*.f64 (*.f64 y y) (+.f64 1/8 (*.f64 y 1/48)))))
(fma.f64 y (fma.f64 y 1/8 1/2) (fma.f64 1/48 (pow.f64 y 3) 1))

localize23.0ms (0.5%)

Local error

Found 2 expressions with local error:

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

Compiled 24 to 13 computations (45.8% saved)

series51.0ms (1.1%)

Counts
2 → 36
Calls

9 calls:

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

rewrite55.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
636×pow1_binary64
586×add-log-exp_binary64
583×log1p-expm1-u_binary64
583×expm1-log1p-u_binary64
573×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
115215
2170315
Stop Event
node limit
Counts
2 → 27
Calls
Call 1
Inputs
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
(pow.f64 (exp.f64 1) (*.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 x) (pow.f64 (exp.f64 y) y)))))) (#(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 (*.f64 y y) (log.f64 x)))))))
((#(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 1 (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 y) y) 1)))) (#(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 (*.f64 y y)) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (exp.f64 2)) (*.f64 y y)) (pow.f64 (cbrt.f64 (E.f64)) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (E.f64)) (*.f64 y y)) (pow.f64 (sqrt.f64 (E.f64)) (*.f64 y 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 exp.f64 (*.f64 y y))))))

simplify83.0ms (1.8%)

Algorithm
egg-herbie
Rules
858×associate-/l/_binary64
510×fma-def_binary64
487×distribute-rgt-out_binary64
408×*-commutative_binary64
408×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030330
177322
2198311
3614311
42376311
54480311
64980311
76047311
Stop Event
node limit
Counts
63 → 45
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))
Outputs
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(fma.f64 y (*.f64 y x) x)
(+.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)))))
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(*.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)))
(fma.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) 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 x (pow.f64 y 4)) (fma.f64 (*.f64 y y) x (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) x)))
(+.f64 (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) 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/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))))
(fma.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (*.f64 1/6 (pow.f64 y 6)))) x)
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y 1))))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) 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 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 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 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 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 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)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 4 computations (69.2% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite49.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
484×pow1_binary64
460×add-sqr-sqrt_binary64
455×*-un-lft-identity_binary64
443×add-log-exp_binary64
443×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify110.0ms (2.4%)

Algorithm
egg-herbie
Rules
1065×fma-neg_binary64
808×fma-def_binary64
500×distribute-rgt-neg-in_binary64
464×unswap-sqr_binary64
441×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
015183
137183
287183
3229183
4619183
51186183
61736183
72612183
84290183
96146183
107624183
Stop Event
node limit
Counts
45 → 28
Calls
Call 1
Inputs
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 (+.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 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
Outputs
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 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (pow.f64 y 2) x)
(*.f64 x (*.f64 y y))
(*.f64 y (*.f64 x y))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (pow.f64 y 2) x)
(*.f64 x (*.f64 y y))
(*.f64 y (*.f64 x y))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(+.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 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 (+.f64 1 (pow.f64 y 2)) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (pow.f64 y 2)) 1) x))
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))

eval40.0ms (0.9%)

Compiler

Compiled 2103 to 869 computations (58.7% saved)

prune27.0ms (0.6%)

Pruning

8 alts after pruning (5 fresh and 3 done)

PrunedKeptTotal
New1715176
Fresh101
Picked101
Done134
Total1748182
Error
0b
Counts
182 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
60.9b
(*.f64 y (*.f64 x y))
0.0b
(*.f64 x (pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2)))
0.5b
x
0.2b
(+.f64 (*.f64 y (*.f64 y x)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
Compiler

Compiled 68 to 44 computations (35.3% saved)

localize15.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2))
0.0b
(*.f64 x (pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2)))
Compiler

Compiled 33 to 14 computations (57.6% saved)

series22.0ms (0.5%)

Counts
2 → 36
Calls

9 calls:

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

rewrite65.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
876×pow1_binary64
814×add-log-exp_binary64
813×log1p-expm1-u_binary64
813×expm1-log1p-u_binary64
793×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0927
119115
2248315
Stop Event
node limit
Counts
2 → 28
Calls
Call 1
Inputs
(*.f64 x (pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2)))
(pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2))
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 x) (pow.f64 (exp.f64 y) y)))))) (#(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 cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (exp.f64 y) y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) (pow.f64 x 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 (log.f64 (*.f64 x (pow.f64 (exp.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 (*.f64 y 1/2)) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 y) (*.f64 y 1/2)) (pow.f64 (exp.f64 y) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) 2)) 2) (*.f64 y 1/2)) (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 y) 2)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (exp.f64 (*.f64 (+.f64 y 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 (log.f64 (pow.f64 (exp.f64 y) y)))))))

simplify77.0ms (1.7%)

Algorithm
egg-herbie
Rules
858×associate-/l/_binary64
510×fma-def_binary64
487×distribute-rgt-out_binary64
408×*-commutative_binary64
408×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030330
177322
2198311
3614311
42376311
54480311
64980311
76047311
Stop Event
node limit
Counts
64 → 46
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))
Outputs
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
x
(+.f64 (*.f64 (pow.f64 y 2) x) x)
(fma.f64 (*.f64 y y) x x)
(*.f64 x (fma.f64 y y 1))
(fma.f64 y (*.f64 y x) x)
(+.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)))))
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(*.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) 1)))
(fma.f64 x (fma.f64 y y (*.f64 1/2 (pow.f64 y 4))) 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 x (pow.f64 y 4)) (fma.f64 (*.f64 y y) x (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) x)))
(+.f64 (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) 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/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))))
(fma.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (*.f64 1/6 (pow.f64 y 6)))) x)
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) (fma.f64 y y 1))))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 (exp.f64 (*.f64 y y)) x)
(*.f64 (pow.f64 (exp.f64 y) y) 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 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 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 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 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 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)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 12 to 4 computations (66.7% saved)

series6.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite48.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
468×pow1_binary64
444×add-sqr-sqrt_binary64
439×*-un-lft-identity_binary64
428×add-log-exp_binary64
428×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify206.0ms (4.6%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
551×fabs-mul_binary64
523×pow-sqr_binary64
445×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5332168
61258168
72133168
82297168
92481168
102689168
112985168
123378168
133859168
144425168
155113168
165948168
176336168
186624168
196900168
206970168
217006168
227947168
Stop Event
node limit
Counts
35 → 13
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)
Outputs
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))

localize27.0ms (0.6%)

Local error

Found 3 expressions with local error:

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

Compiled 29 to 14 computations (51.7% saved)

series8.0ms (0.2%)

Counts
2 → 36
Calls

9 calls:

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

rewrite72.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
806×pow1_binary64
743×add-log-exp_binary64
743×log1p-expm1-u_binary64
743×expm1-log1p-u_binary64
721×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0925
118215
2213115
Stop Event
node limit
Counts
2 → 30
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
Outputs
((#(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 cbrt.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (exp.f64 y) y) 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 (log.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))))))
((#(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)) (cbrt.f64 (pow.f64 (exp.f64 y) (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (exp.f64 y) (+.f64 y y))) (cbrt.f64 (pow.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 *.f64 (pow.f64 1 (/.f64 y 1)) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) 2) (/.f64 y 1)) (pow.f64 (cbrt.f64 (exp.f64 y)) (/.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 (+.f64 y y)) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) (+.f64 y y)) (pow.f64 (cbrt.f64 (sqrt.f64 (exp.f64 y))) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (exp.f64 y) 1/4) (+.f64 y y)) (pow.f64 (pow.f64 (exp.f64 y) 1/4) (+.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 (/.f64 y 1)))))))

simplify92.0ms (2%)

Algorithm
egg-herbie
Rules
573×distribute-rgt-out_binary64
532×associate-/r*_binary64
514×fma-def_binary64
410×associate-*l*_binary64
330×distribute-lft-out_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
035582
188574
2222451
3689451
42531311
54585311
66518311
Stop Event
node limit
Counts
66 → 48
Calls
Call 1
Inputs
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 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) 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 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
Outputs
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)))))
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(*.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))))
(fma.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (*.f64 1/6 (pow.f64 y 6)))) x)
(*.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))) x)
(*.f64 x (pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(*.f64 x (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 y) y))
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 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 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 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 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1)))
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)
(exp.f64 (*.f64 2 (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y))))))
(pow.f64 (exp.f64 2) (*.f64 y (log.f64 (sqrt.f64 (exp.f64 y)))))
(pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2))
(pow.f64 (exp.f64 y) y)

localize12.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 5 computations (73.7% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite59.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
471×pow1_binary64
447×add-sqr-sqrt_binary64
442×*-un-lft-identity_binary64
431×add-log-exp_binary64
431×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
1997
211947
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 y (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 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 (pow.f64 (*.f64 y (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 y x))))))))

simplify207.0ms (4.6%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
551×fabs-mul_binary64
523×pow-sqr_binary64
445×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5332168
61258168
72133168
82297168
92481168
102689168
112985168
123378168
133859168
144425168
155113168
165948168
176336168
186624168
196900168
206970168
217006168
227947168
Stop Event
node limit
Counts
35 → 13
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)
Outputs
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))

eval59.0ms (1.3%)

Compiler

Compiled 1526 to 734 computations (51.9% saved)

prune21.0ms (0.5%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New1442146
Fresh101
Picked011
Done246
Total1477154
Error
0b
Counts
154 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
x
0.0b
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
0.0b
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
60.9b
(*.f64 y (*.f64 x y))
0.2b
(+.f64 (*.f64 y (*.f64 y x)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
Compiler

Compiled 57 to 37 computations (35.1% saved)

localize19.0ms (0.4%)

Local error

Found 2 expressions with local error:

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

Compiled 34 to 24 computations (29.4% saved)

series25.0ms (0.6%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
22.0ms
x
@0
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
1.0ms
y
@0
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
1.0ms
x
@inf
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
0.0ms
y
@-inf
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
0.0ms
y
@inf
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)

rewrite60.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
901×pow1_binary64
830×add-log-exp_binary64
830×log1p-expm1-u_binary64
830×expm1-log1p-u_binary64
809×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01027
120315
2234315
Stop Event
node limit
Counts
2 → 28
Calls
Call 1
Inputs
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
(pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2))
Outputs
((#(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 cbrt.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 y) y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (exp.f64 y) y) 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 (log.f64 (*.f64 (pow.f64 (exp.f64 y) y) x)))))))
((#(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 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 (*.f64 y 2)) (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (exp.f64 y)) (*.f64 y 2)) (pow.f64 (cbrt.f64 (sqrt.f64 (exp.f64 y))) (*.f64 y 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (exp.f64 y) 1/4) (*.f64 y 2)) (pow.f64 (pow.f64 (exp.f64 y) 1/4) (*.f64 y 2)))))) (#(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 exp.f64 (log.f64 (pow.f64 (exp.f64 y) y)))))))

simplify81.0ms (1.8%)

Algorithm
egg-herbie
Rules
860×associate-/l/_binary64
510×fma-def_binary64
487×distribute-rgt-out_binary64
392×associate-*l*_binary64
388×*-commutative_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
030330
177322
2198311
3617311
42324311
54415311
64913311
75989311
Stop Event
node limit
Counts
64 → 46
Calls
Call 1
Inputs
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 (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)
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))
Outputs
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 1 (fma.f64 y y (*.f64 1/2 (pow.f64 y 4)))))
(*.f64 x (fma.f64 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(*.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 (fma.f64 1/6 (*.f64 x (pow.f64 y 6)) 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/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 1))))
(fma.f64 x (fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (*.f64 1/6 (pow.f64 y 6)))) x)
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 (exp.f64 (pow.f64 y 2)) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
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 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 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 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 1/2 (pow.f64 y 4) (fma.f64 y y 1)))
(fma.f64 y y (fma.f64 1/2 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 6) 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)

eval12.0ms (0.3%)

Compiler

Compiled 466 to 232 computations (50.2% saved)

prune9.0ms (0.2%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New46046
Fresh011
Picked011
Done055
Total46753
Error
0b
Counts
53 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
x
0.0b
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
0.0b
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
0.0b
(*.f64 x (exp.f64 (*.f64 y y)))
60.9b
(*.f64 y (*.f64 x y))
0.2b
(+.f64 (*.f64 y (*.f64 y x)) x)
0.0b
(*.f64 x (pow.f64 (exp.f64 y) y))
Compiler

Compiled 57 to 37 computations (35.1% saved)

regimes40.0ms (0.9%)

Counts
13 → 1
Calls
Call 1
Inputs
x
x
x
(*.f64 y (*.f64 x y))
(+.f64 (*.f64 y (*.f64 y x)) x)
(fma.f64 y (*.f64 y x) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
(*.f64 x (pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2)))
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
Outputs
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
Calls

7 calls:

9.0ms
y
9.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
8.0ms
x
4.0ms
(*.f64 y y)
3.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 121 to 62 computations (48.8% saved)

regimes41.0ms (0.9%)

Counts
12 → 1
Calls
Call 1
Inputs
x
x
x
(*.f64 y (*.f64 x y))
(+.f64 (*.f64 y (*.f64 y x)) x)
(fma.f64 y (*.f64 y x) x)
(*.f64 x (exp.f64 (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
(*.f64 x (pow.f64 (exp.f64 (+.f64 y y)) (*.f64 y 1/2)))
(*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) (*.f64 y 2)) x)
Outputs
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
Calls

7 calls:

8.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
8.0ms
y
7.0ms
x
4.0ms
(*.f64 y y)
3.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 108 to 59 computations (45.4% saved)

regimes28.0ms (0.6%)

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

6 calls:

7.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
6.0ms
x
6.0ms
y
3.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(exp.f64 (*.f64 y y))
0.0b1(*.f64 y y)
Compiler

Compiled 74 to 38 computations (48.6% saved)

regimes29.0ms (0.6%)

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

7 calls:

6.0ms
y
6.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
5.0ms
x
3.0ms
(exp.f64 (*.f64 y y))
3.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 71 to 37 computations (47.9% saved)

regimes22.0ms (0.5%)

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

5 calls:

6.0ms
x
5.0ms
(*.f64 x (exp.f64 (*.f64 y y)))
5.0ms
y
3.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 54 to 27 computations (50% saved)

regimes11.0ms (0.2%)

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

2 calls:

5.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
Compiler

Compiled 29 to 12 computations (58.6% saved)

regimes9.0ms (0.2%)

Accuracy

Total -60.4b remaining (-11674.3%)

Threshold costs -60.4b (-11674.3%)

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

2 calls:

4.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
0.5b1x
0.5b1y
Compiler

Compiled 16 to 8 computations (50% saved)

simplify7.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02776
14076
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (exp.f64 (*.f64 y y)))
(+.f64 (*.f64 y (*.f64 y x)) x)
x
Outputs
(*.f64 x (*.f64 (pow.f64 (sqrt.f64 (exp.f64 y)) y) (pow.f64 (sqrt.f64 (exp.f64 y)) y)))
(*.f64 (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)) x)
(*.f64 x (pow.f64 (exp.f64 (*.f64 y 1/2)) (*.f64 y 2)))
(*.f64 x (pow.f64 (exp.f64 1) (*.f64 y y)))
(*.f64 x (pow.f64 (E.f64) (*.f64 y y)))
(*.f64 x (pow.f64 (exp.f64 y) y))
(*.f64 x (exp.f64 (*.f64 y y)))
(+.f64 (*.f64 y (*.f64 y x)) x)
(+.f64 x (*.f64 y (*.f64 x y)))
x
Compiler

Compiled 64 to 39 computations (39.1% saved)

soundness148.0ms (3.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)

end51.0ms (1.1%)

Compiler

Compiled 52 to 25 computations (51.9% saved)

Profiling

Loading profile data...