Details

Time bar (total: 1.6s)

analyze25.0ms (1.5%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
50%50%50%0.1%0%0%0%3
50%50%50%0.1%0%0%0%4
62.5%62.4%37.5%0.1%0%0%0%5
66.7%62.4%31.2%0.1%6.2%0%0%6
75%65.6%21.9%0.1%12.5%0%0%7
79.6%67.1%17.2%0.1%15.6%0%0%8
86.5%70.2%10.9%0.1%18.7%0%0%9
89.2%71%8.6%0.1%20.3%0%0%10
93%72.6%5.5%0.1%21.9%0%0%11
94.4%73%4.3%0.1%22.6%0%0%12
Compiler

Compiled 9 to 6 computations (33.3% saved)

sample967.0ms (59.2%)

Results
935.0ms8256×body256valid
20.0ms260×body256infinite
Bogosity

preprocess83.0ms (5.1%)

Algorithm
egg-herbie
Rules
1158×pow-sqr
1112×sqr-pow
1020×exp-prod
968×associate-/r/
950×fma-def
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01134
12234
23934
36834
413834
531134
677734
7219334
8371234
9453034
10610034
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(exp.f64 (*.f64 (*.f64 x y) y))
(exp.f64 (*.f64 (*.f64 y x) x))
Outputs
(exp.f64 (*.f64 (*.f64 x y) y))
(pow.f64 (exp.f64 (*.f64 x y)) y)
(pow.f64 (pow.f64 (exp.f64 x) y) y)
(pow.f64 (exp.f64 x) (*.f64 y y))
(exp.f64 (*.f64 (*.f64 y x) x))
(pow.f64 (exp.f64 (*.f64 x y)) x)
(pow.f64 (exp.f64 x) (*.f64 x y))
(pow.f64 (pow.f64 (exp.f64 x) y) x)
Compiler

Compiled 10 to 7 computations (30% saved)

simplify91.0ms (5.5%)

Algorithm
egg-herbie
Rules
1206×sqr-pow
960×associate-*r/
748×distribute-lft-in
688×unswap-sqr
648×pow-sqr
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
22517
34317
48717
519917
649917
7138417
8374017
9424617
10523117
11711917
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(exp.f64 (*.f64 (*.f64 x y) y))
Outputs
(exp.f64 (*.f64 (*.f64 x y) y))
(pow.f64 (exp.f64 (*.f64 x y)) y)
(pow.f64 (exp.f64 x) (*.f64 y y))
(pow.f64 (pow.f64 (exp.f64 x) y) y)

eval1.0ms (0%)

Compiler

Compiled 26 to 12 computations (53.8% saved)

prune1.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New314
Fresh011
Picked000
Done000
Total325
Error
0.0b
Counts
5 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(exp.f64 (*.f64 (*.f64 x y) y))
Compiler

Compiled 8 to 5 computations (37.5% saved)

localize6.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 18 to 5 computations (72.2% saved)

series4.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite60.0ms (3.7%)

Algorithm
batch-egg-rewrite
Rules
1446×add-sqr-sqrt
1436×*-un-lft-identity
1322×add-cube-cbrt
1298×add-cbrt-cube
1282×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

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

simplify76.0ms (4.6%)

Algorithm
egg-herbie
Rules
832×associate-*r/
830×unswap-sqr
770×*-commutative
566×log-prod
532×+-commutative
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01051499
12551475
210611475
334771467
478941467
Stop Event
node limit
Counts
87 → 61
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)
1
(+.f64 1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x))))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
1
(+.f64 1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x)))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x))))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y)))) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))))
(+.f64 0 (*.f64 y (*.f64 x y)))
(-.f64 (+.f64 1 (*.f64 y (*.f64 x y))) 1)
(pow.f64 (*.f64 y (*.f64 x y)) 1)
(pow.f64 (*.f64 (sqrt.f64 x) y) 2)
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 x y))) 3)
(pow.f64 (pow.f64 (*.f64 y (*.f64 x y)) 3) 1/3)
(sqrt.f64 (pow.f64 (*.f64 y (*.f64 x y)) 2))
(log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 x y)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 x y))))
(exp.f64 (log.f64 (*.f64 y (*.f64 x y))))
(exp.f64 (*.f64 (log.f64 (*.f64 y (*.f64 x y))) 1))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 x y))))
(+.f64 1 (expm1.f64 (*.f64 y (*.f64 x y))))
(-.f64 (+.f64 1 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 1)
(*.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 1)
(*.f64 1 (pow.f64 (pow.f64 (exp.f64 y) x) y))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y))) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 1)
(pow.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 2)
(pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 3)
(pow.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 3) 1/3)
(pow.f64 (pow.f64 (exp.f64 y) x) y)
(pow.f64 (exp.f64 x) (*.f64 y y))
(pow.f64 (exp.f64 y) (*.f64 x y))
(pow.f64 (exp.f64 (*.f64 (sqrt.f64 x) y)) (*.f64 (sqrt.f64 x) y))
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 x y))) 2)) (cbrt.f64 (*.f64 y (*.f64 x y))))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (sqrt.f64 y)) (sqrt.f64 y))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
(sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y)))
(log.f64 (exp.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(cbrt.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 3))
(expm1.f64 (log1p.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(log1p.f64 (expm1.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
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))
1
(+.f64 1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 (*.f64 y y) x) 1)
(fma.f64 y (*.f64 y x) 1)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 x x)) (+.f64 (*.f64 (*.f64 y y) x) 1))
(fma.f64 (*.f64 1/2 (pow.f64 y 4)) (*.f64 x x) (fma.f64 y (*.f64 y x) 1))
(fma.f64 1/2 (pow.f64 (*.f64 y (*.f64 y x)) 2) (fma.f64 y (*.f64 y x) 1))
(fma.f64 1/2 (pow.f64 (*.f64 y (sqrt.f64 x)) 4) (fma.f64 y (*.f64 y x) 1))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x))))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 x x)) (+.f64 (*.f64 (*.f64 y y) x) 1)))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 (*.f64 1/2 (pow.f64 y 4)) (*.f64 x x) (fma.f64 y (*.f64 y x) 1)))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 1/2 (pow.f64 (*.f64 y (*.f64 y x)) 2) (fma.f64 y (*.f64 y x) 1)))
(fma.f64 1/2 (pow.f64 (*.f64 y (sqrt.f64 x)) 4) (fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 y (*.f64 y x) 1)))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
1
(+.f64 1 (*.f64 (pow.f64 y 2) x))
(+.f64 (*.f64 (*.f64 y y) x) 1)
(fma.f64 y (*.f64 y x) 1)
(+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 x x)) (+.f64 (*.f64 (*.f64 y y) x) 1))
(fma.f64 (*.f64 1/2 (pow.f64 y 4)) (*.f64 x x) (fma.f64 y (*.f64 y x) 1))
(fma.f64 1/2 (pow.f64 (*.f64 y (*.f64 y x)) 2) (fma.f64 y (*.f64 y x) 1))
(fma.f64 1/2 (pow.f64 (*.f64 y (sqrt.f64 x)) 4) (fma.f64 y (*.f64 y x) 1))
(+.f64 (*.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3))) (+.f64 (*.f64 1/2 (*.f64 (pow.f64 y 4) (pow.f64 x 2))) (+.f64 1 (*.f64 (pow.f64 y 2) x))))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 x x)) (+.f64 (*.f64 (*.f64 y y) x) 1)))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 (*.f64 1/2 (pow.f64 y 4)) (*.f64 x x) (fma.f64 y (*.f64 y x) 1)))
(fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 1/2 (pow.f64 (*.f64 y (*.f64 y x)) 2) (fma.f64 y (*.f64 y x) 1)))
(fma.f64 1/2 (pow.f64 (*.f64 y (sqrt.f64 x)) 4) (fma.f64 1/6 (*.f64 (pow.f64 y 6) (pow.f64 x 3)) (fma.f64 y (*.f64 y x) 1)))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(exp.f64 (*.f64 (pow.f64 y 2) x))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y)))) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(+.f64 0 (*.f64 y (*.f64 x y)))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(-.f64 (+.f64 1 (*.f64 y (*.f64 x y))) 1)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 y (*.f64 x y)) 1)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 (sqrt.f64 x) y) 2)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 x y))) 3)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(pow.f64 (pow.f64 (*.f64 y (*.f64 x y)) 3) 1/3)
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(sqrt.f64 (pow.f64 (*.f64 y (*.f64 x y)) 2))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(log.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 x y)) 3))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 x y))))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(exp.f64 (log.f64 (*.f64 y (*.f64 x y))))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(exp.f64 (*.f64 (log.f64 (*.f64 y (*.f64 x y))) 1))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 x y))))
(*.f64 (*.f64 y y) x)
(*.f64 y (*.f64 y x))
(+.f64 1 (expm1.f64 (*.f64 y (*.f64 x y))))
(+.f64 1 (expm1.f64 (*.f64 y (*.f64 y x))))
(-.f64 (+.f64 1 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 1)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(*.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 1)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(*.f64 1 (pow.f64 (pow.f64 (exp.f64 y) x) y))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y))))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y))) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 1)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 2)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)) 3)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 3) 1/3)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (pow.f64 (exp.f64 y) x) y)
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (exp.f64 x) (*.f64 y y))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (exp.f64 y) (*.f64 x y))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (exp.f64 (*.f64 (sqrt.f64 x) y)) (*.f64 (sqrt.f64 x) y))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 x y))) 2)) (cbrt.f64 (*.f64 y (*.f64 x y))))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (sqrt.f64 y)) (sqrt.f64 y))
(pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))
(sqrt.f64 (pow.f64 (pow.f64 (exp.f64 y) x) (*.f64 2 y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(log.f64 (exp.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(cbrt.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y) 3))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(expm1.f64 (log1p.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))
(log1p.f64 (expm1.f64 (pow.f64 (pow.f64 (exp.f64 y) x) y)))
(pow.f64 (exp.f64 (*.f64 y y)) x)
(pow.f64 (pow.f64 (exp.f64 y) y) x)
(pow.f64 (exp.f64 y) (*.f64 y x))

eval10.0ms (0.6%)

Compiler

Compiled 658 to 280 computations (57.4% saved)

prune11.0ms (0.6%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New58361
Fresh000
Picked011
Done000
Total58462
Error
0b
Counts
62 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
20.6b
(+.f64 (*.f64 (*.f64 y y) x) 1)
0.0b
(exp.f64 (*.f64 (*.f64 x y) y))
20.2b
1
Compiler

Compiled 30 to 21 computations (30% saved)

localize6.0ms (0.4%)

Local error

Found 1 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite53.0ms (3.2%)

Algorithm
batch-egg-rewrite
Rules
1120×add-sqr-sqrt
1108×*-un-lft-identity
1040×pow1
1024×add-cube-cbrt
1008×add-cbrt-cube
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
112013
2147113
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (*.f64 y 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 (*.f64 y (sqrt.f64 x)) 2)))) (#(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 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 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 exp.f64 (log.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))))))

simplify47.0ms (2.9%)

Algorithm
egg-herbie
Rules
1654×distribute-rgt-in
1626×distribute-lft-in
1326×log-prod
870×associate-*r*
812×associate-+r+
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038455
194455
2362455
32087455
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)
(-.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)
(pow.f64 (*.f64 y (*.f64 y x)) 1)
(pow.f64 (*.f64 y (sqrt.f64 x)) 2)
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)
(pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)
(sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))
(log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))
(exp.f64 (log.f64 (*.f64 y (*.f64 y x))))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))
Outputs
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(-.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 y (*.f64 y x)) 1)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 y (sqrt.f64 x)) 2)
(*.f64 y (*.f64 y x))
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)
(*.f64 y (*.f64 y x))
(pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)
(*.f64 y (*.f64 y x))
(sqrt.f64 (*.f64 (*.f64 x x) (pow.f64 y 4)))
(*.f64 y (*.f64 y x))
(log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))
(*.f64 y (*.f64 y x))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))
(*.f64 y (*.f64 y x))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))
(exp.f64 (log.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))

localize10.0ms (0.6%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 10 computations (56.5% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite50.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
1140×add-sqr-sqrt
1130×*-un-lft-identity
1062×pow1
1042×add-cube-cbrt
1022×add-cbrt-cube
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
111813
2142413
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 (sqrt.f64 (*.f64 y (*.f64 y x))) 2)))) (#(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 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)))) (#(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 exp.f64 (log.f64 (*.f64 y (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))))))

simplify55.0ms (3.4%)

Algorithm
egg-herbie
Rules
890×distribute-rgt-in
890×distribute-lft-in
832×log-prod
818×associate-*r*
774×*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034455
186455
2331455
32206455
46415455
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)
(-.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)
(pow.f64 (*.f64 y (*.f64 y x)) 1)
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y x))) 2)
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)
(pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)
(sqrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2))
(log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))
(exp.f64 (log.f64 (*.f64 y (*.f64 y x))))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))
Outputs
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(*.f64 (pow.f64 y 2) x)
(*.f64 y (*.f64 y x))
(-.f64 (+.f64 1 (*.f64 y (*.f64 y x))) 1)
(*.f64 y (*.f64 y x))
(pow.f64 (*.f64 y (*.f64 y x)) 1)
(*.f64 y (*.f64 y x))
(pow.f64 (sqrt.f64 (*.f64 y (*.f64 y x))) 2)
(*.f64 y (*.f64 y x))
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 y x))) 3)
(*.f64 y (*.f64 y x))
(pow.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) 1/3)
(*.f64 y (*.f64 y x))
(sqrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2))
(*.f64 y (*.f64 y x))
(log.f64 (pow.f64 (exp.f64 y) (*.f64 y x)))
(*.f64 y (*.f64 y x))
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))
(*.f64 y (*.f64 y x))
(expm1.f64 (log1p.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))
(exp.f64 (log.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))
(log1p.f64 (expm1.f64 (*.f64 y (*.f64 y x))))
(*.f64 y (*.f64 y x))

eval4.0ms (0.3%)

Compiler

Compiled 255 to 130 computations (49% saved)

prune4.0ms (0.3%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New26026
Fresh011
Picked011
Done022
Total26430
Error
0b
Counts
30 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
20.6b
(+.f64 (*.f64 (*.f64 y y) x) 1)
0.0b
(exp.f64 (*.f64 (*.f64 x y) y))
20.2b
1
Compiler

Compiled 30 to 21 computations (30% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Error
0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
20.6b
(+.f64 (*.f64 (*.f64 y y) x) 1)
0.0b
(exp.f64 (*.f64 (*.f64 x y) y))
20.2b
1
Compiler

Compiled 30 to 21 computations (30% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Error
0b
Counts
4 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
20.6b
(+.f64 (*.f64 (*.f64 y y) x) 1)
0.0b
(exp.f64 (*.f64 (*.f64 x y) y))
20.2b
1
Compiler

Compiled 30 to 21 computations (30% saved)

regimes16.0ms (1%)

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

4 calls:

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

Compiled 45 to 27 computations (40% saved)

regimes13.0ms (0.8%)

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

4 calls:

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

Compiled 37 to 23 computations (37.8% saved)

regimes7.0ms (0.4%)

Accuracy

Total -0.5b remaining (-2.4%)

Threshold costs -0.5b (-2.4%)

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

2 calls:

3.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
20.2b1x
20.2b1y
Compiler

Compiled 16 to 11 computations (31.3% saved)

simplify5.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative
exp-1-e
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01239
11839
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
(exp.f64 (*.f64 (*.f64 x y) y))
1
Outputs
(pow.f64 (exp.f64 1) (*.f64 y (*.f64 x y)))
(pow.f64 (E.f64) (*.f64 y (*.f64 y x)))
(exp.f64 (*.f64 (*.f64 x y) y))
(exp.f64 (*.f64 y (*.f64 y x)))
1
Compiler

Compiled 20 to 14 computations (30% saved)

soundness0.0ms (0%)

end24.0ms (1.5%)

Compiler

Compiled 16 to 8 computations (50% saved)

Profiling

Loading profile data...