Details

Time bar (total: 12.9s)

analyze532.0ms (4.1%)

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
0%99.9%0.1%5
0%99.9%0.1%6
25%74.9%0.1%7
37.4%62.4%0.1%8
37.4%62.4%0.1%9
56.2%43.7%0.1%10
65.5%34.3%0.1%11
65.5%34.3%0.1%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample2.6s (20%)

Results
1.1s5189×body256valid
1.1s2050×body1024valid
367.0ms1013×body512valid
5.0msbody2048valid

preprocess22.0ms (0.2%)

Algorithm
egg-herbie
Rules
16×fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02248
13848
25048
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 y (cos.f64 x)) (*.f64 z (sin.f64 x)))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 z)) (*.f64 y (sin.f64 z)))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(fma.f64 x (cos.f64 y) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 y (cos.f64 x)) (*.f64 z (sin.f64 x)))
(fma.f64 y (cos.f64 x) (*.f64 z (sin.f64 x)))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 (cos.f64 y) z))
(+.f64 (*.f64 x (cos.f64 z)) (*.f64 y (sin.f64 z)))
(fma.f64 x (cos.f64 z) (*.f64 y (sin.f64 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0912
11312
21612
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(fma.f64 x (cos.f64 y) (*.f64 z (sin.f64 y)))

eval1.0ms (0%)

Compiler

Compiled 20 to 9 computations (55% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
0.1b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (sin.f64 y))
0.1b
(*.f64 x (cos.f64 y))
Compiler

Compiled 27 to 8 computations (70.4% saved)

series8.0ms (0.1%)

Counts
2 → 28
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (cos.f64 y))
1.0ms
y
@0
(*.f64 x (cos.f64 y))
1.0ms
z
@0
(*.f64 z (sin.f64 y))
1.0ms
z
@-inf
(*.f64 z (sin.f64 y))
1.0ms
y
@0
(*.f64 z (sin.f64 y))

rewrite56.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
740×pow1_binary64
673×add-log-exp_binary64
673×log1p-expm1-u_binary64
673×expm1-log1p-u_binary64
657×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify189.0ms (1.5%)

Algorithm
egg-herbie
Rules
722×cube-prod_binary64
682×sqr-pow_binary64
506×fabs-mul_binary64
443×pow-sqr_binary64
427×unpow3_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
046260
1122257
2344240
31172239
41870239
52752239
62938239
73172239
83439239
93798239
104213239
114705239
125277239
135965239
146473239
156865239
167255239
177699239
Stop Event
node limit
Counts
54 → 41
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
Outputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 x (fma.f64 (*.f64 y -1/2) y 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2))) x)
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 x (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4))) (*.f64 x (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 x (+.f64 (fma.f64 (*.f64 y -1/2) y 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 x (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (*.f64 y z))
(*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 z (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (*.f64 1/120 (*.f64 z (pow.f64 y 5)))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(*.f64 z (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (fma.f64 -1/5040 (*.f64 z (pow.f64 y 7)) (*.f64 1/120 (*.f64 z (pow.f64 y 5))))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (*.f64 z (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 z (+.f64 (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 1/120 (pow.f64 y 5))) (fma.f64 -1/6 (pow.f64 y 3) y)))
(*.f64 z (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/5040 (pow.f64 y 7)))))

eval10.0ms (0.1%)

Compiler

Compiled 589 to 264 computations (55.2% saved)

prune17.0ms (0.1%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New34741
Fresh000
Picked011
Done000
Total34842
Error
0.1b
Counts
42 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
30.2b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3)) (*.f64 z (sin.f64 y)))
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
18.3b
(+.f64 (*.f64 x (cos.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
30.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (cos.f64 y))) 2) (*.f64 z (sin.f64 y)))
20.3b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))
24.8b
(+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x) (*.f64 z (sin.f64 y)))
13.8b
(+.f64 x (*.f64 z (sin.f64 y)))
0.5b
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
Compiler

Compiled 206 to 146 computations (29.1% saved)

localize23.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (sin.f64 y))
0.1b
(*.f64 x (cos.f64 y))
0.6b
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)
6.1b
(cbrt.f64 (*.f64 z (sin.f64 y)))
Compiler

Compiled 43 to 14 computations (67.4% saved)

series14.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

TimeVariablePointExpression
3.0ms
z
@-inf
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)
2.0ms
y
@inf
(cbrt.f64 (*.f64 z (sin.f64 y)))
2.0ms
y
@-inf
(cbrt.f64 (*.f64 z (sin.f64 y)))
1.0ms
y
@0
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)
1.0ms
y
@-inf
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)

rewrite67.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
638×pow1_binary64
596×add-log-exp_binary64
596×log1p-expm1-u_binary64
596×expm1-log1p-u_binary64
581×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
116614
2166914
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 z (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 2) (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) (pow.f64 (*.f64 z (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) 1/3) (pow.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (sin.f64 y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sin.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) (sqrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) (*.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 2) 3) (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) 3) (pow.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) 1) (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (pow.f64 (*.f64 z (sin.f64 y)) 1/6)) (pow.f64 (*.f64 z (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (sin.f64 y))))))))

simplify183.0ms (1.4%)

Algorithm
egg-herbie
Rules
1290×sqr-pow_binary64
676×cube-prod_binary64
666×pow-sqr_binary64
556×fabs-mul_binary64
373×unpow3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
010136
126112
240112
351112
475112
5161112
6525112
71190112
81282112
91420112
101583112
111822112
122149112
132576112
143081112
153688112
164411112
174734112
185018112
195242112
205418112
215498112
226441112
237418112
247884112
Stop Event
node limit
Counts
68 → 54
Calls
Call 1
Inputs
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
Outputs
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (*.f64 z (sin.f64 y)) 1)
(*.f64 z (sin.f64 y))

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (*.f64 z (sin.f64 y)))
0.1b
(*.f64 z (sin.f64 y))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 27
Calls

9 calls:

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

rewrite57.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
808×pow1_binary64
747×add-log-exp_binary64
747×log1p-expm1-u_binary64
747×expm1-log1p-u_binary64
730×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
079
11477
220037
Stop Event
node limit
Counts
1 → 35
Calls
Call 1
Inputs
(+.f64 x (*.f64 z (sin.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 z (sin.f64 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 x x) (-.f64 x (*.f64 z (sin.f64 y)))) (/.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) (pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 2) (cbrt.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (sin.f64 y) x)) (sqrt.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 z (sin.f64 y)) 3)) (/.f64 1 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2)) (/.f64 1 (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x))) (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 z (sin.f64 y)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 x (*.f64 z (sin.f64 y))) (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 z (sin.f64 y)) 3)) (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 z (sin.f64 y)) 3)) (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (-.f64 (*.f64 x x) (*.f64 (*.f64 x z) (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2)) (-.f64 x (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 z (sin.f64 y)) 3))) (neg.f64 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2))) (neg.f64 (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (*.f64 x x)) (-.f64 (*.f64 z (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (sin.f64 y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 y) z x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 (*.f64 z (sin.f64 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) (sqrt.f64 (*.f64 z (sin.f64 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 z (sin.f64 y)))))))

simplify154.0ms (1.2%)

Algorithm
egg-herbie
Rules
1295×fma-def_binary64
788×sqr-pow_binary64
544×associate-*l*_binary64
487×*-commutative_binary64
448×cube-prod_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
024186
165186
2152182
3380179
4995177
52360177
62811177
73453177
83569177
93741177
103960177
114946177
125406177
136006177
146759177
157693177
Stop Event
node limit
Counts
62 → 44
Calls
Call 1
Inputs
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) x)))
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
Outputs
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
x
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
x
(+.f64 (*.f64 y z) x)
(fma.f64 y z x)
(fma.f64 z y x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) x))
(fma.f64 y z (fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) x))
(fma.f64 z y (fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) x))
(fma.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))) x)
(fma.f64 z (fma.f64 -1/6 (pow.f64 y 3) y) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) z)) x)))
(fma.f64 y z (fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 1/120 (*.f64 z (pow.f64 y 5)) x)))
(fma.f64 z y (fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 1/120 (*.f64 z (pow.f64 y 5)) x)))
(fma.f64 z (fma.f64 -1/6 (pow.f64 y 3) (*.f64 1/120 (pow.f64 y 5))) (fma.f64 z y x))
(fma.f64 z (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/6 (pow.f64 y 3) y)) x)
(fma.f64 z (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))
0.1b
(*.f64 x (cos.f64 y))
Compiler

Compiled 23 to 7 computations (69.6% saved)

series4.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite75.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
911×pow1_binary64
841×add-log-exp_binary64
841×log1p-expm1-u_binary64
841×expm1-log1p-u_binary64
822×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0810
116810
2228010
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x (cos.f64 y) (*.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))) (/.f64 (pow.f64 (*.f64 y z) 2) (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (cos.f64 y) (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (cos.f64 y) (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) (pow.f64 (cbrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) 2) (cbrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) (sqrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) (pow.f64 (*.f64 y z) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (*.f64 (*.f64 y z) (-.f64 (*.f64 y z) (*.f64 x (cos.f64 y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (pow.f64 (*.f64 y z) 2)) (/.f64 1 (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (*.f64 (*.f64 y z) (-.f64 (*.f64 y z) (*.f64 x (cos.f64 y))))) (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) (pow.f64 (*.f64 y z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)) (-.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (pow.f64 (*.f64 y z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (*.f64 (*.f64 y z) (-.f64 (*.f64 y z) (*.f64 x (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (-.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (*.f64 x (*.f64 (cos.f64 y) (*.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (pow.f64 (*.f64 y z) 2)) (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) (pow.f64 (*.f64 y z) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (*.f64 (*.f64 y z) (-.f64 (*.f64 y z) (*.f64 x (cos.f64 y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2) (pow.f64 (*.f64 y z) 2))) (neg.f64 (-.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y z) 2) (pow.f64 (*.f64 x (cos.f64 y)) 2)) (-.f64 (*.f64 y z) (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (cos.f64 y) (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (cos.f64 y) (*.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (cos.f64 y) (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (cos.f64 y) (*.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (cos.f64 y) (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (cos.f64 y) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y z (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cos.f64 y) x (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z y (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (cos.f64 y)) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y z) (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (cos.f64 y))) 2) (cbrt.f64 (*.f64 x (cos.f64 y))) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (cbrt.f64 (*.f64 y z)) (*.f64 x (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (cos.f64 y))) (sqrt.f64 (*.f64 x (cos.f64 y))) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (sqrt.f64 (*.f64 y z)) (*.f64 x (cos.f64 y)))))))

simplify193.0ms (1.5%)

Algorithm
egg-herbie
Rules
909×fma-def_binary64
671×sqr-pow_binary64
476×distribute-lft-out_binary64
444×cube-prod_binary64
426×*-commutative_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
023324
158324
2139321
3375321
41285318
52767318
63925318
74006318
84129318
94284318
104546318
114805318
125158318
135535318
146026318
156613318
167331318
177661318
187923318
Stop Event
node limit
Counts
73 → 48
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
x
(+.f64 (*.f64 y z) x)
(fma.f64 y z x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 y z (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 y z (fma.f64 -1/2 (*.f64 y (*.f64 y x)) x))
(fma.f64 y z (*.f64 x (fma.f64 -1/2 (*.f64 y y) 1)))
(fma.f64 y (*.f64 y (*.f64 x -1/2)) (fma.f64 y z x))
(fma.f64 y (fma.f64 y (*.f64 x -1/2) z) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 y z (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 y z (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) x)))
(fma.f64 y z (fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2))) x))
(fma.f64 x (fma.f64 y (*.f64 y -1/2) (*.f64 1/24 (pow.f64 y 4))) (fma.f64 y z x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) 1) (*.f64 y (fma.f64 y (*.f64 x -1/2) z)))
(fma.f64 y z (*.f64 x (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1))))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 (cos.f64 y) x)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))
(+.f64 (*.f64 y z) (*.f64 (cos.f64 y) x))
(fma.f64 y z (*.f64 (cos.f64 y) x))

localize23.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
0.0b
(pow.f64 y 2)
0.1b
(*.f64 z (sin.f64 y))
7.6b
(*.f64 (pow.f64 y 2) x)
Compiler

Compiled 52 to 30 computations (42.3% saved)

series8.0ms (0.1%)

Counts
3 → 15
Calls

15 calls:

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

rewrite71.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
944×pow1_binary64
879×add-log-exp_binary64
878×log1p-expm1-u_binary64
878×expm1-log1p-u_binary64
861×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0922
119722
2245222
Stop Event
node limit
Counts
3 → 68
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) x)
(pow.f64 y 2)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) 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 x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 y y) 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))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (cbrt.f64 (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 y 4)) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 y 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x)) (/.f64 (*.f64 x x) (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 (*.f64 (*.f64 y y) -1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (*.f64 (*.f64 y y) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) 2) (cbrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) (sqrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) -1/8) (pow.f64 x 3)) (/.f64 1 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x (-.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x x)) (/.f64 1 (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (*.f64 y y) -1/2) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x (-.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2)))) (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) -1/8) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x) (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) -1/8) (pow.f64 x 3)) (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x (-.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) -1/8) (pow.f64 x 3)) (+.f64 (*.f64 x x) (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x x)) (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 3) -1/8) (pow.f64 x 3))) (neg.f64 (+.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x (-.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4) (*.f64 x x))) (neg.f64 (-.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4)) (-.f64 x (*.f64 (*.f64 y (*.f64 y x)) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/2 (*.f64 y (*.f64 y x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 (*.f64 y (*.f64 y x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 y (*.f64 y x)) -1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 y (*.f64 y x)) 2) 1/4)) (cbrt.f64 (*.f64 (*.f64 y (*.f64 y x)) -1/2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 (*.f64 y (*.f64 y x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 -1/2)) (*.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 -1/2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 (*.f64 y (*.f64 y x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) -1/2) x x)))))

simplify114.0ms (0.9%)

Algorithm
egg-herbie
Rules
1107×fma-neg_binary64
615×fma-def_binary64
502×distribute-rgt-neg-in_binary64
383×unswap-sqr_binary64
345×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
018177
139153
294153
3273153
4836153
51537153
62678153
73861153
85388153
96361153
107072153
117507153
Stop Event
node limit
Counts
83 → 74
Calls
Call 1
Inputs
x
(*.f64 -1/2 (*.f64 (pow.f64 y 2) x))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) x))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
Outputs
x
(*.f64 -1/2 (*.f64 (pow.f64 y 2) x))
(*.f64 -1/2 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 -1/2 (*.f64 y y)))
(*.f64 (*.f64 y y) (*.f64 x -1/2))
(*.f64 x (*.f64 y (*.f64 -1/2 y)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) x))
(*.f64 -1/2 (*.f64 x (*.f64 y y)))
(*.f64 x (*.f64 -1/2 (*.f64 y y)))
(*.f64 (*.f64 y y) (*.f64 x -1/2))
(*.f64 x (*.f64 y (*.f64 -1/2 y)))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) x)
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) x))
(*.f64 x (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 -1/2 (*.f64 y y)) x)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (sin.f64 y))
0.1b
(pow.f64 (*.f64 x (cos.f64 y)) 3)
0.1b
(*.f64 x (cos.f64 y))
42.2b
(cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3))
Compiler

Compiled 44 to 17 computations (61.4% saved)

series14.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
5.0ms
x
@-inf
(cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3))
2.0ms
y
@0
(cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3))
1.0ms
y
@0
(pow.f64 (*.f64 x (cos.f64 y)) 3)
1.0ms
y
@-inf
(pow.f64 (*.f64 x (cos.f64 y)) 3)
1.0ms
y
@inf
(pow.f64 (*.f64 x (cos.f64 y)) 3)

rewrite64.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
645×pow1_binary64
603×add-log-exp_binary64
603×log1p-expm1-u_binary64
603×expm1-log1p-u_binary64
586×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify71.0ms (0.6%)

Algorithm
egg-herbie
Rules
649×distribute-rgt-out_binary64
558×distribute-rgt-in_binary64
552×fma-def_binary64
549×distribute-lft-in_binary64
452×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
066596
1208584
2787556
34122546
47923546
Stop Event
node limit
Counts
102 → 70
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3)))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 -1/24 (pow.f64 x 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2))) x)) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 2))) x) (*.f64 -1/720 (pow.f64 x 3)))))) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
Outputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(fma.f64 (*.f64 (*.f64 -1/2 y) y) x x)
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 x (*.f64 y (*.f64 y -1/2)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 (*.f64 -1/2 y) y) x x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2))) x)
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 (*.f64 -1/2 y) y) x x)))
(fma.f64 x (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4))) (*.f64 x (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 x (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))
(fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))
(fma.f64 y (*.f64 y (*.f64 (pow.f64 x 3) -3/2)) (pow.f64 x 3))
(*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3)))
(fma.f64 (fma.f64 x (*.f64 (*.f64 x x) 1/3) (*.f64 (pow.f64 x 3) 13/24)) (pow.f64 y 4) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 4) (fma.f64 (pow.f64 x 3) 13/24 (*.f64 (pow.f64 x 3) 1/3)) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3)))
(fma.f64 y (*.f64 y (*.f64 (pow.f64 x 3) -3/2)) (fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3)))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 -1/24 (pow.f64 x 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2))) x)) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 2))) x) (*.f64 -1/720 (pow.f64 x 3)))))) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))))
(fma.f64 (fma.f64 x (*.f64 (*.f64 x x) 1/3) (*.f64 (pow.f64 x 3) 13/24)) (pow.f64 y 4) (fma.f64 (pow.f64 y 6) (fma.f64 -1/24 (pow.f64 x 3) (fma.f64 -1/2 (*.f64 x (*.f64 (*.f64 x x) 1/3)) (fma.f64 (*.f64 (*.f64 x x) -2/45) x (*.f64 -1/720 (pow.f64 x 3))))) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (fma.f64 (pow.f64 x 3) 13/24 (*.f64 (pow.f64 x 3) 1/3)) (fma.f64 (pow.f64 y 6) (fma.f64 (pow.f64 x 3) -1/24 (fma.f64 -1/2 (*.f64 (pow.f64 x 3) 1/3) (fma.f64 -1/720 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -2/45)))) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (fma.f64 (pow.f64 y 6) (+.f64 (*.f64 (pow.f64 x 3) -1/6) (fma.f64 (pow.f64 x 3) -1/24 (*.f64 (pow.f64 x 3) -11/240))) (fma.f64 y (*.f64 y (*.f64 (pow.f64 x 3) -3/2)) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (fma.f64 (pow.f64 y 6) (fma.f64 x (*.f64 (*.f64 x x) -19/90) (*.f64 (pow.f64 x 3) -31/720)) (*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3))))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))

eval129.0ms (1%)

Compiler

Compiled 7107 to 2958 computations (58.4% saved)

prune155.0ms (1.2%)

Pruning

19 alts after pruning (16 fresh and 3 done)

PrunedKeptTotal
New41815433
Fresh112
Picked011
Done325
Total42219441
Error
0.0b
Counts
441 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
30.2b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3)) (*.f64 z (sin.f64 y)))
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
14.3b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
14.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
38.2b
x
28.8b
(+.f64 (*.f64 y z) x)
30.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (cos.f64 y))) 2) (*.f64 z (sin.f64 y)))
25.0b
(*.f64 (cos.f64 y) x)
52.8b
(*.f64 y z)
38.3b
(*.f64 z (sin.f64 y))
0.7b
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3))
20.9b
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (cos.f64 y))) 2) (cbrt.f64 (*.f64 x (cos.f64 y))) (*.f64 y z))
0.8b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y))) (*.f64 z (sin.f64 y)))
30.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
33.9b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))))
30.0b
(+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x) (*.f64 y z))
30.5b
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
0.5b
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
0.5b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y))))
Compiler

Compiled 462 to 309 computations (33.1% saved)

localize57.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)
0.6b
(cbrt.f64 (sin.f64 y))
0.6b
(cbrt.f64 z)
6.1b
(cbrt.f64 (*.f64 z (sin.f64 y)))
Compiler

Compiled 79 to 25 computations (68.4% saved)

series17.0ms (0.1%)

Counts
3 → 16
Calls

12 calls:

TimeVariablePointExpression
3.0ms
y
@inf
(cbrt.f64 (sin.f64 y))
3.0ms
y
@-inf
(cbrt.f64 (sin.f64 y))
3.0ms
z
@inf
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)
1.0ms
z
@-inf
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)
1.0ms
y
@0
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)

rewrite101.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
790×pow1_binary64
726×add-log-exp_binary64
726×log1p-expm1-u_binary64
726×expm1-log1p-u_binary64
705×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
119419
2208019
Stop Event
node limit
Counts
3 → 55
Calls
Call 1
Inputs
(cbrt.f64 z)
(cbrt.f64 (sin.f64 y))
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2) (cbrt.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 z 1/6) (pow.f64 z 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 z) 2) 1/3) (cbrt.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 z) 1/3) (pow.f64 (sqrt.f64 z) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 z 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 z)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (sin.f64 y))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 y))) 2) (cbrt.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 y) 1/6) (pow.f64 (sin.f64 y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (sin.f64 y)) 1/3) (pow.f64 (sqrt.f64 (sin.f64 y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 y) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 y) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (sin.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) (cbrt.f64 (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) (pow.f64 (cbrt.f64 (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))) (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 4)) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) (*.f64 (pow.f64 (*.f64 z (sin.f64 y)) 1/6) (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) (pow.f64 (*.f64 z (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2))) (cbrt.f64 (cbrt.f64 (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (*.f64 z (sin.f64 y))))))))))

simplify148.0ms (1.1%)

Algorithm
egg-herbie
Rules
2214×associate-*l*_binary64
1903×associate-*r*_binary64
711×sqr-pow_binary64
283×pow-sqr_binary64
276×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011152
128152
256152
3137152
4511152
51058152
61149152
71288152
81461152
91650152
101886152
112163152
122483152
132853152
143262152
153695152
163891152
173995152
184067152
194121152
Stop Event
node limit
Counts
71 → 58
Calls
Call 1
Inputs
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
Outputs
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))
(pow.f64 (*.f64 (pow.f64 z 2) (pow.f64 (sin.f64 y) 2)) 1/3)
(cbrt.f64 (*.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)))
(cbrt.f64 (*.f64 z (*.f64 z (pow.f64 (sin.f64 y) 2))))

localize8.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize15.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series3.0ms (0%)

Counts
1 → 4
Calls

6 calls:

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

rewrite65.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
462×pow1_binary64
440×add-sqr-sqrt_binary64
435×*-un-lft-identity_binary64
422×add-log-exp_binary64
422×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify130.0ms (1%)

Algorithm
egg-herbie
Rules
629×distribute-lft-out_binary64
610×distribute-rgt-out_binary64
428×*-commutative_binary64
420×associate-+l+_binary64
420×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02164
15464
214858
348155
4209655
5426255
6453555
7486655
8537955
9612855
10694155
Stop Event
node limit
Counts
15 → 18
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
Outputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 x (fma.f64 y (*.f64 -1/2 y) 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) x)
(fma.f64 x (*.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2)) x)
(*.f64 x (fma.f64 1/24 (pow.f64 y 4) (fma.f64 y (*.f64 -1/2 y) 1)))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 x (*.f64 -1/720 (pow.f64 y 6)) (fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) x))
(fma.f64 x (fma.f64 -1/720 (pow.f64 y 6) (*.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2))) x)

localize28.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
0.1b
(*.f64 z (sin.f64 y))
0.6b
(pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3)
6.1b
(cbrt.f64 (*.f64 z (sin.f64 y)))
Compiler

Compiled 34 to 12 computations (64.7% saved)

series8.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

TimeVariablePointExpression
3.0ms
x
@0
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
1.0ms
z
@inf
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
1.0ms
z
@-inf
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
1.0ms
z
@0
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
1.0ms
y
@0
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))

rewrite95.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
979×pow1_binary64
914×add-log-exp_binary64
914×log1p-expm1-u_binary64
914×expm1-log1p-u_binary64
99×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0109
12167
225217
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 z (sin.f64 y) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 x x) (-.f64 x (*.f64 z (sin.f64 y)))) (/.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (sin.f64 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) (pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 2) (cbrt.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (sin.f64 y) x)) (sqrt.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3) (pow.f64 x 3)) (/.f64 1 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2)) (/.f64 1 (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x))) (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 x (*.f64 z (sin.f64 y))) (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3) (pow.f64 x 3)) (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (-.f64 (*.f64 x x) (*.f64 (*.f64 x z) (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2)) (-.f64 x (*.f64 z (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3) (pow.f64 x 3))) (neg.f64 (fma.f64 x x (*.f64 (*.f64 z (sin.f64 y)) (-.f64 (*.f64 z (sin.f64 y)) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (sin.f64 y)) 2))) (neg.f64 (-.f64 x (*.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (sin.f64 y)) 2) (*.f64 x x)) (-.f64 (*.f64 z (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (sin.f64 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (sin.f64 y) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (sin.f64 y) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 z (sin.f64 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (sin.f64 y) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (sin.f64 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (sin.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sin.f64 y) z x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 (*.f64 z (sin.f64 y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 x) (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 z (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z (sin.f64 y))) (sqrt.f64 (*.f64 z (sin.f64 y))) x)))))

simplify3.2s (25.2%)

Algorithm
egg-herbie
Rules
1991×sqr-pow_binary64
1991×pow-base-1_binary64
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
011185
127131
243131
350131
454131
558131
662131
766131
870131
974131
1078131
1182131
1286131
1390131
1494131
1598131
16102131
17106131
18110131
19114131
20118131
21122131
22126131
23130131
24134131
25138131
26142131
27146131
28150131
29154131
30158131
31162131
32166131
33170131
34174131
35178131
36182131
37186131
38190131
39194131
40198131
41202131
42206131
43210131
44214131
45218131
46222131
47226131
48230131
49234131
50238131
51242131
52246131
53250131
54254131
55258131
56262131
57266131
58270131
59274131
60278131
61282131
62286131
63290131
64294131
65298131
66302131
67306131
68310131
69314131
70318131
71322131
72326131
73330131
74334131
75338131
76342131
77346131
78350131
79354131
80358131
81362131
82366131
83370131
84374131
85378131
86382131
87386131
88390131
89394131
90398131
91402131
92406131
93410131
94414131
95418131
96422131
97426131
98430131
99434131
100438131
101442131
102446131
103450131
104454131
105458131
106462131
107466131
108470131
109474131
110478131
111482131
112486131
113490131
114494131
115498131
116502131
117506131
118510131
119514131
120518131
121522131
122526131
123530131
124534131
125538131
126542131
127546131
128550131
129554131
130558131
131562131
132566131
133570131
134574131
135578131
136582131
137586131
138590131
139594131
140598131
141602131
142606131
143610131
144614131
145618131
146622131
147626131
148630131
149634131
150638131
151642131
152646131
153650131
154654131
155658131
156662131
157666131
158670131
159674131
160678131
161682131
162686131
163690131
164694131
165698131
166702131
167706131
168710131
169714131
170718131
171722131
172726131
173730131
174734131
175738131
176742131
177746131
178750131
179754131
180758131
181762131
182766131
183770131
184774131
185778131
186782131
187786131
188790131
189794131
190798131
191802131
192806131
193810131
194814131
195818131
196822131
197826131
198830131
199834131
200838131
201842131
202846131
203850131
204854131
205858131
206862131
207866131
208870131
209874131
210878131
211882131
212886131
213890131
214894131
215898131
216902131
217906131
218910131
219914131
220918131
221922131
222926131
223930131
224934131
225938131
226942131
227946131
228950131
229954131
230958131
231962131
232966131
233970131
234974131
235978131
236982131
237986131
238990131
239994131
240998131
2411002131
2421006131
2431010131
2441014131
2451018131
2461022131
2471026131
2481030131
2491034131
2501038131
2511042131
2521046131
2531050131
2541054131
2551058131
2561062131
2571066131
2581070131
2591074131
2601078131
2611082131
2621086131
2631090131
2641094131
2651098131
2661102131
2671106131
2681110131
2691114131
2701118131
2711122131
2721126131
2731130131
2741134131
2751138131
2761142131
2771146131
2781150131
2791154131
2801158131
2811162131
2821166131
2831170131
2841174131
2851178131
2861182131
2871186131
2881190131
2891194131
2901198131
2911202131
2921206131
2931210131
2941214131
2951218131
2961222131
2971226131
2981230131
2991234131
3001238131
3011242131
3021246131
3031250131
3041254131
3051258131
3061262131
3071266131
3081270131
3091274131
3101278131
3111282131
3121286131
3131290131
3141294131
3151298131
3161302131
3171306131
3181310131
3191314131
3201318131
3211322131
3221326131
3231330131
3241334131
3251338131
3261342131
3271346131
3281350131
3291354131
3301358131
3311362131
3321366131
3331370131
3341374131
3351378131
3361382131
3371386131
3381390131
3391394131
3401398131
3411402131
3421406131
3431410131
3441414131
3451418131
3461422131
3471426131
3481430131
3491434131
3501438131
3511442131
3521446131
3531450131
3541454131
3551458131
3561462131
3571466131
3581470131
3591474131
3601478131
3611482131
3621486131
3631490131
3641494131
3651498131
3661502131
3671506131
3681510131
3691514131
3701518131
3711522131
3721526131
3731530131
3741534131
3751538131
3761542131
3771546131
3781550131
3791554131
3801558131
3811562131
3821566131
3831570131
3841574131
3851578131
3861582131
3871586131
3881590131
3891594131
3901598131
3911602131
3921606131
3931610131
3941614131
3951618131
3961622131
3971626131
3981630131
3991634131
4001638131
4011642131
4021646131
4031650131
4041654131
4051658131
4061662131
4071666131
4081670131
4091674131
4101678131
4111682131
4121686131
4131690131
4141694131
4151698131
4161702131
4171706131
4181710131
4191714131
4201718131
4211722131
4221726131
4231730131
4241734131
4251738131
4261742131
4271746131
4281750131
4291754131
4301758131
4311762131
4321766131
4331770131
4341774131
4351778131
4361782131
4371786131
4381790131
4391794131
4401798131
4411802131
4421806131
4431810131
4441814131
4451818131
4461822131
4471826131
4481830131
4491834131
4501838131
4511842131
4521846131
4531850131
4541854131
4551858131
4561862131
4571866131
4581870131
4591874131
4601878131
4611882131
4621886131
4631890131
4641894131
4651898131
4661902131
4671906131
4681910131
4691914131
4701918131
4711922131
4721926131
4731930131
4741934131
4751938131
4761942131
4771946131
4781950131
4791954131
4801958131
4811962131
4821966131
4831970131
4841974131
4851978131
4861982131
4871986131
4881990131
4891994131
4901998131
4912002131
4922006131
4932010131
4942014131
4952018131
4962022131
4972026131
4982030131
4992034131
5002038131
5012042131
5022046131
5032050131
5042054131
5052058131
5062062131
5072066131
5082070131
5092074131
5102078131
5112082131
5122086131
5132090131
5142094131
5152098131
5162102131
5172106131
5182110131
5192114131
5202118131
5212122131
5222126131
5232130131
5242134131
5252138131
5262142131
5272146131
5282150131
5292154131
5302158131
5312162131
5322166131
5332170131
5342174131
5352178131
5362182131
5372186131
5382190131
5392194131
5402198131
5412202131
5422206131
5432210131
5442214131
5452218131
5462222131
5472226131
5482230131
5492234131
5502238131
5512242131
5522246131
5532250131
5542254131
5552258131
5562262131
5572266131
5582270131
5592274131
5602278131
5612282131
5622286131
5632290131
5642294131
5652298131
5662302131
5672306131
5682310131
5692314131
5702318131
5712322131
5722326131
5732330131
5742334131
5752338131
5762342131
5772346131
5782350131
5792354131
5802358131
5812362131
5822366131
5832370131
5842374131
5852378131
5862382131
5872386131
5882390131
5892394131
5902398131
5912402131
5922406131
5932410131
5942414131
5952418131
5962422131
5972426131
5982430131
5992434131
6002438131
6012442131
6022446131
6032450131
6042454131
6052458131
6062462131
6072466131
6082470131
6092474131
6102478131
6112482131
6122486131
6132490131
6142494131
6152498131
6162502131
6172506131
6182510131
6192514131
6202518131
6212522131
6222526131
6232530131
6242534131
6252538131
6262542131
6272546131
6282550131
6292554131
6302558131
6312562131
6322566131
6332570131
6342574131
6352578131
6362582131
6372586131
6382590131
6392594131
6402598131
6412602131
6422606131
6432610131
6442614131
6452618131
6462622131
6472626131
6482630131
6492634131
6502638131
6512642131
6522646131
6532650131
6542654131
6552658131
6562662131
6572666131
6582670131
6592674131
6602678131
6612682131
6622686131
6632690131
6642694131
6652698131
6662702131
6672706131
6682710131
6692714131
6702718131
6712722131
6722726131
6732730131
6742734131
6752738131
6762742131
6772746131
6782750131
6792754131
6802758131
6812762131
6822766131
6832770131
6842774131
6852778131
6862782131
6872786131
6882790131
6892794131
6902798131
6912802131
6922806131
6932810131
6942814131
6952818131
6962822131
6972826131
6982830131
6992834131
7002838131
7012842131
7022846131
7032850131
7042854131
7052858131
7062862131
7072866131
7082870131
7092874131
7102878131
7112882131
7122886131
7132890131
7142894131
7152898131
7162902131
7172906131
7182910131
7192914131
7202918131
7212922131
7222926131
7232930131
7242934131
7252938131
7262942131
7272946131
7282950131
7292954131
7302958131
7312962131
7322966131
7332970131
7342974131
7352978131
7362982131
7372986131
7382990131
7392994131
7402998131
7413002131
7423006131
7433010131
7443014131
7453018131
7463022131
7473026131
7483030131
7493034131
7503038131
7513042131
7523046131
7533050131
7543054131
7553058131
7563062131
7573066131
7583070131
7593074131
7603078131
7613082131
7623086131
7633090131
7643094131
7653098131
7663102131
7673106131
7683110131
7693114131
7703118131
7713122131
7723126131
7733130131
7743134131
7753138131
7763142131
7773146131
7783150131
7793154131
7803158131
7813162131
7823166131
7833170131
7843174131
7853178131
7863182131
7873186131
7883190131
7893194131
7903198131
7913202131
7923206131
7933210131
7943214131
7953218131
7963222131
7973226131
7983230131
7993234131
8003238131
8013242131
8023246131
8033250131
8043254131
8053258131
8063262131
8073266131
8083270131
8093274131
8103278131
8113282131
8123286131
8133290131
8143294131
8153298131
8163302131
8173306131
8183310131
8193314131
8203318131
8213322131
8223326131
8233330131
8243334131
8253338131
8263342131
8273346131
8283350131
8293354131
8303358131
8313362131
8323366131
8333370131
8343374131
8353378131
8363382131
8373386131
8383390131
8393394131
8403398131
8413402131
8423406131
8433410131
8443414131
8453418131
8463422131
8473426131
8483430131
8493434131
8503438131
8513442131
8523446131
8533450131
8543454131
8553458131
8563462131
8573466131
8583470131
8593474131
8603478131
8613482131
8623486131
8633490131
8643494131
8653498131
8663502131
8673506131
8683510131
8693514131
8703518131
8713522131
8723526131
8733530131
8743534131
8753538131
8763542131
8773546131
8783550131
8793554131
8803558131
8813562131
8823566131
8833570131
8843574131
8853578131
8863582131
8873586131
8883590131
8893594131
8903598131
8913602131
8923606131
8933610131
8943614131
8953618131
8963622131
8973626131
8983630131
8993634131
9003638131
9013642131
9023646131
9033650131
9043654131
9053658131
9063662131
9073666131
9083670131
9093674131
9103678131
9113682131
9123686131
9133690131
9143694131
9153698131
9163702131
9173706131
9183710131
9193714131
9203718131
9213722131
9223726131
9233730131
9243734131
9253738131
9263742131
9273746131
9283750131
9293754131
9303758131
9313762131
9323766131
9333770131
9343774131
9353778131
9363782131
9373786131
9383790131
9393794131
9403798131
9413802131
9423806131
9433810131
9443814131
9453818131
9463822131
9473826131
9483830131
9493834131
9503838131
9513842131
9523846131
9533850131
9543854131
9553858131
9563862131
9573866131
9583870131
9593874131
9603878131
9613882131
9623886131
9633890131
9643894131
9653898131
9663902131
9673906131
9683910131
9693914131
9703918131
9713922131
9723926131
9733930131
9743934131
9753938131
9763942131
9773946131
9783950131
9793954131
9803958131
9813962131
9823966131
9833970131
9843974131
9853978131
9863982131
9873986131
9883990131
9893994131
9903998131
9914002131
9924006131
9934010131
9944014131
9954018131
9964022131
9974026131
9984030131
9994034131
10004038131
10014042131
10024046131
10034050131
10044054131
10054058131
10064062131
10074066131
10084070131
10094074131
10104078131
10114082131
10124086131
10134090131
10144094131
10154098131
10164102131
10174106131
10184110131
10194114131
10204118131
10214122131
10224126131
10234130131
10244134131
10254138131
10264142131
10274146131
10284150131
10294154131
10304158131
10314162131
10324166131
10334170131
10344174131
10354178131
10364182131
10374186131
10384190131
10394194131
10404198131
10414202131
10424206131
10434210131
10444214131
10454218131
10464222131
10474226131
10484230131
10494234131
10504238131
10514242131
10524246131
10534250131
10544254131
10554258131
10564262131
10574266131
10584270131
10594274131
10604278131
10614282131
10624286131
10634290131
10644294131
10654298131
10664302131
10674306131
10684310131
10694314131
10704318131
10714322131
10724326131
10734330131
10744334131
10754338131
10764342131
10774346131
10784350131
10794354131
10804358131
10814362131
10824366131
10834370131
10844374131
10854378131
10864382131
10874386131
10884390131
10894394131
10904398131
10914402131
10924406131
10934410131
10944414131
10954418131
10964422131
10974426131
10984430131
10994434131
11004438131
11014442131
11024446131
11034450131
11044454131
11054458131
11064462131
11074466131
11084470131
11094474131
11104478131
11114482131
11124486131
11134490131
11144494131
11154498131
11164502131
11174506131
11184510131
11194514131
11204518131
11214522131
11224526131
11234530131
11244534131
11254538131
11264542131
11274546131
11284550131
11294554131
11304558131
11314562131
11324566131
11334570131
11344574131
11354578131
11364582131
11374586131
11384590131
11394594131
11404598131
11414602131
11424606131
11434610131
11444614131
11454618131
11464622131
11474626131
11484630131
11494634131
11504638131
11514642131
11524646131
11534650131
11544654131
11554658131
11564662131
11574666131
11584670131
11594674131
11604678131
11614682131
11624686131
11634690131
11644694131
11654698131
11664702131
11674706131
11684710131
11694714131
11704718131
11714722131
11724726131
11734730131
11744734131
11754738131
11764742131
11774746131
11784750131
11794754131
11804758131
11814762131
11824766131
11834770131
11844774131
11854778131
11864782131
11874786131
11884790131
11894794131
11904798131
11914802131
11924806131
11934810131
11944814131
11954818131
11964822131
11974826131
11984830131
11994834131
12004838131
12014842131
12024846131
12034850131
12044854131
12054858131
12064862131
12074866131
12084870131
12094874131
12104878131
12114882131
12124886131
12134890131
12144894131
12154898131
12164902131
12174906131
12184910131
12194914131
12204918131
12214922131
12224926131
12234930131
12244934131
12254938131
12264942131
12274946131
12284950131
12294954131
12304958131
12314962131
12324966131
12334970131
12344974131
12354978131
12364982131
12374986131
12384990131
12394994131
12404998131
12415002131
12425006131
12435010131
12445014131
12455018131
12465022131
12475026131
12485030131
12495034131
12505038131
12515042131
12525046131
12535050131
12545054131
12555058131
12565062131
12575066131
12585070131
12595074131
12605078131
12615082131
12625086131
12635090131
12645094131
12655098131
12665102131
12675106131
12685110131
12695114131
12705118131
12715122131
12725126131
12735130131
12745134131
12755138131
12765142131
12775146131
12785150131
12795154131
12805158131
12815162131
12825166131
12835170131
12845174131
12855178131
12865182131
12875186131
12885190131
12895194131
12905198131
12915202131
12925206131
12935210131
12945214131
12955218131
12965222131
12975226131
12985230131
12995234131
13005238131
13015242131
13025246131
13035250131
13045254131
13055258131
13065262131
13075266131
13085270131
13095274131
13105278131
13115282131
13125286131
13135290131
13145294131
13155298131
13165302131
13175306131
13185310131
13195314131
13205318131
13215322131
13225326131
13235330131
13245334131
13255338131
13265342131
13275346131
13285350131
13295354131
13305358131
13315362131
13325366131
13335370131
13345374131
13355378131
13365382131
13375386131
13385390131
13395394131
13405398131
13415402131
13425406131
13435410131
13445414131
13455418131
13465422131
13475426131
13485430131
13495434131
13505438131
13515442131
13525446131
13535450131
13545454131
13555458131
13565462131
13575466131
13585470131
13595474131
13605478131
13615482131
13625486131
13635490131
13645494131
13655498131
13665502131
13675506131
13685510131
13695514131
13705518131
13715522131
13725526131
13735530131
13745534131
13755538131
13765542131
13775546131
13785550131
13795554131
13805558131
13815562131
13825566131
13835570131
13845574131
13855578131
13865582131
13875586131
13885590131
13895594131
13905598131
13915602131
13925606131
13935610131
13945614131
13955618131
13965622131
13975626131
13985630131
13995634131
14005638131
14015642131
14025646131
14035650131
14045654131
14055658131
14065662131
14075666131
14085670131
14095674131
14105678131
14115682131
14125686131
14135690131
14145694131
14155698131
14165702131
14175706131
14185710131
14195714131
14205718131
14215722131
14225726131
14235730131
14245734131
14255738131
14265742131
14275746131
14285750131
14295754131
14305758131
14315762131
14325766131
14335770131
14345774131
14355778131
14365782131
14375786131
14385790131
14395794131
14405798131
14415802131
14425806131
14435810131
14445814131
14455818131
14465822131
14475826131
14485830131
14495834131
14505838131
14515842131
14525846131
14535850131
14545854131
14555858131
14565862131
14575866131
14585870131
14595874131
14605878131
14615882131
14625886131
14635890131
14645894131
14655898131
14665902131
14675906131
14685910131
14695914131
14705918131
14715922131
14725926131
14735930131
14745934131
14755938131
14765942131
14775946131
14785950131
14795954131
14805958131
14815962131
14825966131
14835970131
14845974131
14855978131
14865982131
14875986131
14885990131
14895994131
14905998131
14916002131
14926006131
14936010131
14946014131
14956018131
14966022131
14976026131
14986030131
14996034131
15006038131
15016042131
15026046131
15036050131
15046054131
15056058131
15066062131
15076066131
15086070131
15096074131
15106078131
15116082131
15126086131
15136090131
15146094131
15156098131
15166102131
15176106131
15186110131
15196114131
15206118131
15216122131
15226126131
15236130131
15246134131
15256138131
15266142131
15276146131
15286150131
15296154131
15306158131
15316162131
15326166131
15336170131
15346174131
15356178131
15366182131
15376186131
15386190131
15396194131
15406198131
15416202131
15426206131
15436210131
15446214131
15456218131
15466222131
15476226131
15486230131
15496234131
15506238131
15516242131
15526246131
15536250131
15546254131
15556258131
15566262131
15576266131
15586270131
15596274131
15606278131
15616282131
15626286131
15636290131
15646294131
15656298131
15666302131
15676306131
15686310131
15696314131
15706318131
15716322131
15726326131
15736330131
15746334131
15756338131
15766342131
15776346131
15786350131
15796354131
15806358131
15816362131
15826366131
15836370131
15846374131
15856378131
15866382131
15876386131
15886390131
15896394131
15906398131
15916402131
15926406131
15936410131
15946414131
15956418131
15966422131
15976426131
15986430131
15996434131
16006438131
16016442131
16026446131
16036450131
16046454131
16056458131
16066462131
16076466131
16086470131
16096474131
16106478131
16116482131
16126486131
16136490131
16146494131
16156498131
16166502131
16176506131
16186510131
16196514131
16206518131
16216522131
16226526131
16236530131
16246534131
16256538131
16266542131
16276546131
16286550131
16296554131
16306558131
16316562131
16326566131
16336570131
16346574131
16356578131
16366582131
16376586131
16386590131
16396594131
16406598131
16416602131
16426606131
16436610131
16446614131
16456618131
16466622131
16476626131
16486630131
16496634131
16506638131
16516642131
16526646131
16536650131
16546654131
16556658131
16566662131
16576666131
16586670131
16596674131
16606678131
16616682131
16626686131
16636690131
16646694131
16656698131
16666702131
16676706131
16686710131
16696714131
16706718131
16716722131
16726726131
16736730131
16746734131
16756738131
16766742131
16776746131
16786750131
16796754131
16806758131
16816762131
16826766131
16836770131
16846774131
16856778131
16866782131
16876786131
16886790131
16896794131
16906798131
16916802131
16926806131
16936810131
16946814131
16956818131
16966822131
16976826131
16986830131
16996834131
17006838131
17016842131
17026846131
17036850131
17046854131
17056858131
17066862131
17076866131
17086870131
17096874131
17106878131
17116882131
17126886131
17136890131
17146894131
17156898131
17166902131
17176906131
17186910131
17196914131
17206918131
17216922131
17226926131
17236930131
17246934131
17256938131
17266942131
17276946131
17286950131
17296954131
17306958131
17316962131
17326966131
17336970131
17346974131
17356978131
17366982131
17376986131
17386990131
17396994131
17406998131
17417002131
17427006131
17437010131
17447014131
17457018131
17467022131
17477026131
17487030131
17497034131
17507038131
17517042131
17527046131
17537050131
17547054131
17557058131
17567062131
17577066131
17587070131
17597074131
17607078131
17617082131
17627086131
17637090131
17647094131
17657098131
17667102131
17677106131
17687110131
17697114131
17707118131
17717122131
17727126131
17737130131
17747134131
17757138131
17767142131
17777146131
17787150131
17797154131
17807158131
17817162131
17827166131
17837170131
17847174131
17857178131
17867182131
17877186131
17887190131
17897194131
17907198131
17917202131
17927206131
17937210131
17947214131
17957218131
17967222131
17977226131
17987230131
17997234131
18007238131
18017242131
18027246131
18037250131
18047254131
18057258131
18067262131
18077266131
18087270131
18097274131
18107278131
18117282131
18127286131
18137290131
18147294131
18157298131
18167302131
18177306131
18187310131
18197314131
18207318131
18217322131
18227326131
18237330131
18247334131
18257338131
18267342131
18277346131
18287350131
18297354131
18307358131
18317362131
18327366131
18337370131
18347374131
18357378131
18367382131
18377386131
18387390131
18397394131
18407398131
18417402131
18427406131
18437410131
18447414131
18457418131
18467422131
18477426131
18487430131
18497434131
18507438131
18517442131
18527446131
18537450131
18547454131
18557458131
18567462131
18577466131
18587470131
18597474131
18607478131
18617482131
18627486131
18637490131
18647494131
18657498131
18667502131
18677506131
18687510131
18697514131
18707518131
18717522131
18727526131
18737530131
18747534131
18757538131
18767542131
18777546131
18787550131
18797554131
18807558131
18817562131
18827566131
18837570131
18847574131
18857578131
18867582131
18877586131
18887590131
18897594131
18907598131
18917602131
18927606131
18937610131
18947614131
18957618131
18967622131
18977626131
18987630131
18997634131
19007638131
19017642131
19027646131
19037650131
19047654131
19057658131
19067662131
19077666131
19087670131
19097674131
19107678131
19117682131
19127686131
19137690131
19147694131
19157698131
19167702131
19177706131
19187710131
19197714131
19207718131
19217722131
19227726131
19237730131
19247734131
19257738131
19267742131
19277746131
19287750131
19297754131
19307758131
19317762131
19327766131
19337770131
19347774131
19357778131
19367782131
19377786131
19387790131
19397794131
19407798131
19417802131
19427806131
19437810131
19447814131
19457818131
19467822131
19477826131
19487830131
19497834131
19507838131
19517842131
19527846131
19537850131
19547854131
19557858131
19567862131
19577866131
19587870131
19597874131
19607878131
19617882131
19627886131
19637890131
19647894131
19657898131
19667902131
19677906131
19687910131
19697914131
19707918131
19717922131
19727926131
19737930131
19747934131
19757938131
19767942131
19777946131
19787950131
19797954131
19807958131
19817962131
19827966131
19837970131
19847974131
19857978131
19867982131
19877986131
19887990131
19897994131
19907998131
Stop Event
node limit
Counts
61 → 41
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
x
x
x
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
Outputs
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
x
x
x
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y))) x)
(fma.f64 1 (*.f64 z (sin.f64 y)) x)
(fma.f64 z (sin.f64 y) x)

localize45.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z))
0.6b
(cbrt.f64 (sin.f64 y))
0.6b
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)
0.6b
(cbrt.f64 z)
Compiler

Compiled 47 to 15 computations (68.1% saved)

series9.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

TimeVariablePointExpression
2.0ms
y
@inf
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)
2.0ms
y
@-inf
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)
1.0ms
y
@0
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)
1.0ms
z
@-inf
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)
1.0ms
z
@inf
(pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3)

rewrite70.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
771×pow1_binary64
717×add-log-exp_binary64
717×log1p-expm1-u_binary64
717×expm1-log1p-u_binary64
695×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify176.0ms (1.4%)

Algorithm
egg-herbie
Rules
1290×sqr-pow_binary64
666×pow-sqr_binary64
625×cube-prod_binary64
557×fabs-mul_binary64
373×unpow3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
010136
126112
240112
351112
475112
5162112
6543112
71206112
81298112
91436112
101599112
111838112
122165112
132594112
143099112
153703112
164426112
174749112
185035112
195257112
205435112
215517112
226460112
237437112
247903112
Stop Event
node limit
Counts
57 → 44
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
Outputs
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (sin.f64 y)))
(*.f64 1 (*.f64 z (sin.f64 y)))
(*.f64 z (sin.f64 y))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))
(pow.f64 (*.f64 z (sin.f64 y)) 1/3)
(cbrt.f64 (*.f64 z (sin.f64 y)))

eval92.0ms (0.7%)

Compiler

Compiled 4834 to 1753 computations (63.7% saved)

prune151.0ms (1.2%)

Pruning

19 alts after pruning (14 fresh and 5 done)

PrunedKeptTotal
New28410294
Fresh7411
Picked101
Done257
Total29419313
Error
0.0b
Counts
313 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
41.0b
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) x)) 2)
37.1b
(+.f64 x (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
14.3b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
14.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
14.2b
(+.f64 x (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y))))
25.0b
(*.f64 (cos.f64 y) x)
14.4b
(+.f64 x (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3))
52.8b
(*.f64 y z)
30.5b
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
38.3b
(*.f64 z (sin.f64 y))
0.5b
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
38.2b
x
20.9b
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (cos.f64 y))) 2) (cbrt.f64 (*.f64 x (cos.f64 y))) (*.f64 y z))
0.8b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y))) (*.f64 z (sin.f64 y)))
51.8b
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
39.5b
(+.f64 x (*.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))))
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
28.8b
(+.f64 (*.f64 y z) x)
40.0b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
Compiler

Compiled 400 to 270 computations (32.5% saved)

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cbrt.f64 x) (cos.f64 y))
0.3b
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y)))
0.4b
(pow.f64 (cbrt.f64 x) 2)
0.5b
(cbrt.f64 x)
Compiler

Compiled 51 to 18 computations (64.7% saved)

series49.0ms (0.4%)

Counts
4 → 36
Calls

18 calls:

TimeVariablePointExpression
35.0ms
x
@-inf
(cbrt.f64 x)
2.0ms
y
@inf
(*.f64 (cbrt.f64 x) (cos.f64 y))
1.0ms
x
@-inf
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y)))
1.0ms
x
@0
(pow.f64 (cbrt.f64 x) 2)
1.0ms
y
@0
(*.f64 (cbrt.f64 x) (cos.f64 y))

rewrite72.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
769×pow1_binary64
708×add-log-exp_binary64
708×log1p-expm1-u_binary64
708×expm1-log1p-u_binary64
691×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
118123
2201323
Stop Event
node limit
Counts
4 → 63
Calls
Call 1
Inputs
(cbrt.f64 x)
(pow.f64 (cbrt.f64 x) 2)
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y)))
(*.f64 (cbrt.f64 x) (cos.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/6) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 x (cbrt.f64 x)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 x) 1/3) (pow.f64 (sqrt.f64 x) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 x) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (cbrt.f64 (*.f64 x (cbrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (*.f64 (cbrt.f64 (cbrt.f64 x)) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (cbrt.f64 x))) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/6) (*.f64 (pow.f64 x 1/6) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2)) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 x x) (pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 3) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (cos.f64 y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (cbrt.f64 x) (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 x) (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cbrt.f64 x) (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cbrt.f64 x)) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 x (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (cos.f64 y) 3) x))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cbrt.f64 x) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cbrt.f64 x) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cbrt.f64 x) (cos.f64 y))))))))

simplify257.0ms (2%)

Algorithm
egg-herbie
Rules
840×unswap-sqr_binary64
754×distribute-rgt-out_binary64
643×associate-+l+_binary64
534×sqr-pow_binary64
454×*-commutative_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
041338
1115336
2361315
31303312
42292308
53898308
65040308
75479308
85642308
95857308
106162308
116523308
126960308
137710308
Stop Event
node limit
Counts
99 → 80
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(pow.f64 x 1/3)
(+.f64 (pow.f64 x 1/3) (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))))
(+.f64 (pow.f64 x 1/3) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))) (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 4)))))
(+.f64 (pow.f64 x 1/3) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 6))) (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 4))))))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
Outputs
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(fma.f64 -1/2 (*.f64 y (*.f64 y x)) x)
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2))) x)
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y (*.f64 y x)) x)))
(*.f64 x (+.f64 (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4))) (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 x (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(pow.f64 x 1/3)
(cbrt.f64 x)
(+.f64 (pow.f64 x 1/3) (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))))
(+.f64 (cbrt.f64 x) (*.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 x))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 x)) (cbrt.f64 x))
(*.f64 (fma.f64 -1/2 (*.f64 y y) 1) (cbrt.f64 x))
(*.f64 (cbrt.f64 x) (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (pow.f64 x 1/3) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))) (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 4)))))
(+.f64 (cbrt.f64 x) (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 x)) (*.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 x)))))
(+.f64 (cbrt.f64 x) (fma.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 x)) (*.f64 (cbrt.f64 x) (*.f64 -1/2 (*.f64 y y)))))
(+.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 x) (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2)))))
(*.f64 (cbrt.f64 x) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 (cbrt.f64 x) (+.f64 1 (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2)))))
(+.f64 (pow.f64 x 1/3) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 2))) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 6))) (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 x) 1/3) (pow.f64 y 4))))))
(+.f64 (cbrt.f64 x) (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 x)) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) (cbrt.f64 x)) (*.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 x))))))
(+.f64 (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 x)) (cbrt.f64 x)) (fma.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 x)) (*.f64 (pow.f64 y 6) (*.f64 -1/720 (cbrt.f64 x)))))
(+.f64 (*.f64 (fma.f64 -1/2 (*.f64 y y) 1) (cbrt.f64 x)) (*.f64 (cbrt.f64 x) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 x) (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (fma.f64 1/24 (pow.f64 y 4) (*.f64 y (*.f64 y -1/2))))))
(*.f64 (cbrt.f64 x) (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))
(*.f64 (pow.f64 (*.f64 1 x) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 x))

localize27.0ms (0.2%)

Compiler

Compiled 14 to 5 computations (64.3% saved)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(pow.f64 (*.f64 (cos.f64 y) x) 3)
0.1b
(*.f64 (cos.f64 y) x)
42.2b
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
Compiler

Compiled 25 to 11 computations (56% saved)

series3.0ms (0%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
y
@0
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
0.0ms
y
@0
(pow.f64 (*.f64 (cos.f64 y) x) 3)
0.0ms
x
@-inf
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
0.0ms
y
@inf
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
0.0ms
y
@-inf
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))

rewrite67.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
645×pow1_binary64
603×add-log-exp_binary64
603×log1p-expm1-u_binary64
603×expm1-log1p-u_binary64
586×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify116.0ms (0.9%)

Algorithm
egg-herbie
Rules
654×distribute-rgt-out_binary64
558×distribute-rgt-in_binary64
552×fma-def_binary64
549×distribute-lft-in_binary64
448×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
066596
1208584
2783556
34107546
47914546
Stop Event
node limit
Counts
102 → 70
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3)))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 -1/24 (pow.f64 x 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2))) x)) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 2))) x) (*.f64 -1/720 (pow.f64 x 3)))))) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
Outputs
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(fma.f64 (*.f64 (*.f64 -1/2 y) y) x x)
(*.f64 x (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 (*.f64 -1/2 y) y) x x))
(fma.f64 x (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) x)
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 (*.f64 (*.f64 -1/2 y) y) x x)))
(fma.f64 x (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4))) (*.f64 x (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 x (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 x (cos.f64 y))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -1) (cos.f64 y)) x))
(*.f64 (*.f64 x (cos.f64 y)) (neg.f64 (cbrt.f64 -1)))
(*.f64 x (*.f64 (cos.f64 y) (neg.f64 (cbrt.f64 -1))))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -1) (cos.f64 y)) x))
(*.f64 (*.f64 x (cos.f64 y)) (neg.f64 (cbrt.f64 -1)))
(*.f64 x (*.f64 (cos.f64 y) (neg.f64 (cbrt.f64 -1))))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -1) (cos.f64 y)) x))
(*.f64 (*.f64 x (cos.f64 y)) (neg.f64 (cbrt.f64 -1)))
(*.f64 x (*.f64 (cos.f64 y) (neg.f64 (cbrt.f64 -1))))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 -1) (cos.f64 y)) x))
(*.f64 (*.f64 x (cos.f64 y)) (neg.f64 (cbrt.f64 -1)))
(*.f64 x (*.f64 (cos.f64 y) (neg.f64 (cbrt.f64 -1))))
(*.f64 (cos.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(pow.f64 x 3)
(+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))
(fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))
(fma.f64 y (*.f64 (pow.f64 x 3) (*.f64 -3/2 y)) (pow.f64 x 3))
(*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3)))
(fma.f64 (fma.f64 x (*.f64 (*.f64 x x) 1/3) (*.f64 (pow.f64 x 3) 13/24)) (pow.f64 y 4) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 4) (fma.f64 (pow.f64 x 3) 13/24 (*.f64 (pow.f64 x 3) 1/3)) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (fma.f64 y (*.f64 (pow.f64 x 3) (*.f64 -3/2 y)) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3)))
(+.f64 (*.f64 (+.f64 (*.f64 x (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2)))) (+.f64 (*.f64 1/2 (pow.f64 x 3)) (*.f64 1/24 (pow.f64 x 3)))) (pow.f64 y 4)) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 -1/24 (pow.f64 x 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/12 (pow.f64 x 2))) x)) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 x 2)) (*.f64 -1/24 (pow.f64 x 2))) x) (*.f64 -1/720 (pow.f64 x 3)))))) (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1 (pow.f64 x 3)) (*.f64 -1/2 (pow.f64 x 3)))) (pow.f64 x 3))))
(fma.f64 (fma.f64 x (*.f64 (*.f64 x x) 1/3) (*.f64 (pow.f64 x 3) 13/24)) (pow.f64 y 4) (fma.f64 (pow.f64 y 6) (fma.f64 -1/24 (pow.f64 x 3) (fma.f64 -1/2 (*.f64 x (*.f64 (*.f64 x x) 1/3)) (fma.f64 (*.f64 (*.f64 x x) -2/45) x (*.f64 -1/720 (pow.f64 x 3))))) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (fma.f64 (pow.f64 x 3) 13/24 (*.f64 (pow.f64 x 3) 1/3)) (fma.f64 (pow.f64 y 6) (fma.f64 (pow.f64 x 3) -1/24 (fma.f64 -1/2 (*.f64 (pow.f64 x 3) 1/3) (fma.f64 -1/720 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -2/45)))) (fma.f64 (*.f64 y y) (*.f64 (pow.f64 x 3) -3/2) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (fma.f64 (pow.f64 y 6) (+.f64 (*.f64 (pow.f64 x 3) -1/6) (fma.f64 (pow.f64 x 3) -1/24 (*.f64 (pow.f64 x 3) -11/240))) (fma.f64 y (*.f64 (pow.f64 x 3) (*.f64 -3/2 y)) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 x 3) 7/8) (fma.f64 (pow.f64 y 6) (fma.f64 x (*.f64 (*.f64 x x) -19/90) (*.f64 (pow.f64 x 3) -31/720)) (*.f64 (+.f64 (*.f64 (*.f64 -3/2 y) y) 1) (pow.f64 x 3))))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (cos.f64 y) 3))

localize44.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 y) (sqrt.f64 z))
0.1b
(*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z))
Compiler

Compiled 33 to 8 computations (75.8% saved)

series7.0ms (0.1%)

Counts
2 → 36
Calls

12 calls:

TimeVariablePointExpression
1.0ms
z
@-inf
(*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z))
1.0ms
z
@0
(*.f64 (sin.f64 y) (sqrt.f64 z))
1.0ms
z
@-inf
(*.f64 (sin.f64 y) (sqrt.f64 z))
1.0ms
y
@0
(*.f64 (sin.f64 y) (sqrt.f64 z))
1.0ms
y
@inf
(*.f64 (sin.f64 y) (sqrt.f64 z))

rewrite60.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
641×pow1_binary64
588×add-log-exp_binary64
588×log1p-expm1-u_binary64
588×expm1-log1p-u_binary64
573×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify88.0ms (0.7%)

Algorithm
egg-herbie
Rules
1003×fma-def_binary64
599×associate-*r*_binary64
446×neg-sub0_binary64
437×neg-mul-1_binary64
351×distribute-rgt-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
048356
1132343
2390316
31180312
43294312
55591312
67685312
Stop Event
node limit
Counts
58 → 40
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))))
(+.f64 (*.f64 y (sqrt.f64 z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z)))))
(+.f64 (*.f64 y (sqrt.f64 z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 z))) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z))))))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sqrt.f64 z) (sin.f64 y))
Outputs
(*.f64 y z)
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (*.f64 y z))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (*.f64 y z))
(*.f64 z (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 z (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (*.f64 1/120 (*.f64 (pow.f64 y 5) z))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (*.f64 1/120 (*.f64 z (pow.f64 y 5)))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (*.f64 z (+.f64 y (*.f64 1/120 (pow.f64 y 5)))))
(*.f64 z (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (*.f64 1/120 (pow.f64 y 5))))
(*.f64 z (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) z)) (+.f64 (*.f64 y z) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) z)))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (fma.f64 -1/5040 (*.f64 z (pow.f64 y 7)) (*.f64 1/120 (*.f64 z (pow.f64 y 5))))))
(fma.f64 -1/6 (*.f64 z (pow.f64 y 3)) (fma.f64 y z (*.f64 z (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (*.f64 1/120 (pow.f64 y 5))))))
(*.f64 z (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/5040 (pow.f64 y 7)))))
(*.f64 z (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))))
(*.f64 z (+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 z (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 z (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 z (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 z (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 z (sin.f64 y))))
(*.f64 z (sin.f64 y))
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))))
(fma.f64 y (sqrt.f64 z) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))))
(*.f64 (sqrt.f64 z) (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 (sqrt.f64 z) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 y (sqrt.f64 z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z)))))
(fma.f64 y (sqrt.f64 z) (fma.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z)))))
(fma.f64 y (sqrt.f64 z) (*.f64 (sqrt.f64 z) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 (sqrt.f64 z) (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (*.f64 1/120 (pow.f64 y 5))))
(*.f64 (sqrt.f64 z) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 y (sqrt.f64 z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z))) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 z))) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z))))))
(fma.f64 y (sqrt.f64 z) (fma.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 z)) (fma.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 z)) (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 z))))))
(+.f64 (*.f64 (sqrt.f64 z) (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))) (*.f64 (sqrt.f64 z) (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (*.f64 1/120 (pow.f64 y 5)))))
(*.f64 (sqrt.f64 z) (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/5040 (pow.f64 y 7)))))
(*.f64 (sqrt.f64 z) (+.f64 (*.f64 -1/5040 (pow.f64 y 7)) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))))
(*.f64 (sqrt.f64 z) (+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (sin.f64 y))
(*.f64 (sin.f64 y) (sqrt.f64 z))

localize16.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (cos.f64 y))
0.1b
(*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))
0.1b
(*.f64 x (sqrt.f64 (cos.f64 y)))
0.1b
(*.f64 z (sin.f64 y))
Compiler

Compiled 45 to 10 computations (77.8% saved)

series47.0ms (0.4%)

Counts
3 → 52
Calls

15 calls:

TimeVariablePointExpression
41.0ms
y
@inf
(*.f64 x (sqrt.f64 (cos.f64 y)))
1.0ms
y
@-inf
(*.f64 x (sqrt.f64 (cos.f64 y)))
1.0ms
x
@0
(*.f64 x (sqrt.f64 (cos.f64 y)))
1.0ms
y
@0
(*.f64 x (sqrt.f64 (cos.f64 y)))
1.0ms
x
@-inf
(*.f64 x (sqrt.f64 (cos.f64 y)))

rewrite134.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
641×pow1_binary64
588×add-log-exp_binary64
588×log1p-expm1-u_binary64
588×expm1-log1p-u_binary64
573×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify106.0ms (0.8%)

Algorithm
egg-herbie
Rules
1000×fma-def_binary64
957×distribute-rgt-out_binary64
748×distribute-lft-out_binary64
662×associate-*l*_binary64
492×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
044458
1112455
2302441
3987436
44055436
57341436
67732436
77962436
Stop Event
node limit
Counts
94 → 64
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
x
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1/96 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 -1/96 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
Outputs
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
x
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/4 (*.f64 x (*.f64 y y)) x)
(*.f64 (fma.f64 -1/4 (*.f64 y y) 1) x)
(fma.f64 x (*.f64 -1/4 (*.f64 y y)) x)
(fma.f64 -1/4 (*.f64 y (*.f64 y x)) x)
(+.f64 (*.f64 -1/96 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 -1/96 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/4 (*.f64 x (*.f64 y y)) x))
(fma.f64 -1/96 (*.f64 x (pow.f64 y 4)) (*.f64 (fma.f64 -1/4 (*.f64 y y) 1) x))
(*.f64 x (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1)))
(*.f64 x (fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) -1/96 -1/4) 1))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 -1/96 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -19/5760 (*.f64 x (pow.f64 y 6)) (fma.f64 -1/96 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/4 (*.f64 x (*.f64 y y)) x)))
(+.f64 (*.f64 (fma.f64 -1/4 (*.f64 y y) 1) x) (*.f64 x (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6)))))
(+.f64 x (*.f64 x (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6))))))
(*.f64 x (fma.f64 y (*.f64 y -1/4) (fma.f64 -19/5760 (pow.f64 y 6) (fma.f64 -1/96 (pow.f64 y 4) 1))))
(fma.f64 x (fma.f64 -1/96 (pow.f64 y 4) (fma.f64 -1/4 (*.f64 y y) (*.f64 -19/5760 (pow.f64 y 6)))) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (sqrt.f64 (cos.f64 y)) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
x
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)
(fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)
(fma.f64 (*.f64 x (*.f64 y y)) -1/2 x)
(fma.f64 y (*.f64 x (*.f64 y -1/2)) x)
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x))
(fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x))
(fma.f64 (*.f64 x (pow.f64 y 4)) 1/24 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x))
(fma.f64 x (fma.f64 (pow.f64 y 4) 1/24 (*.f64 y (*.f64 y -1/2))) x)
(fma.f64 x (*.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2)) x)
(*.f64 x (fma.f64 (pow.f64 y 4) 1/24 (fma.f64 y (*.f64 y -1/2) 1)))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) x)) (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) x)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)))
(fma.f64 -1/720 (*.f64 x (pow.f64 y 6)) (fma.f64 1/24 (*.f64 x (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 x (*.f64 y y)) x)))
(fma.f64 (*.f64 x (pow.f64 y 6)) -1/720 (fma.f64 (*.f64 x (pow.f64 y 4)) 1/24 (fma.f64 (*.f64 y (*.f64 y x)) -1/2 x)))
(fma.f64 x (*.f64 (pow.f64 y 6) -1/720) (fma.f64 x (fma.f64 (pow.f64 y 4) 1/24 (*.f64 y (*.f64 y -1/2))) x))
(fma.f64 x (fma.f64 (pow.f64 y 6) -1/720 (*.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2))) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
(*.f64 (cos.f64 y) x)
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(fma.f64 -1/4 (*.f64 y y) 1)
(fma.f64 y (*.f64 y -1/4) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(fma.f64 -1/4 (*.f64 y y) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(fma.f64 -1/4 (*.f64 y y) (fma.f64 -1/96 (pow.f64 y 4) 1))
(fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1))
(fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) -1/96 -1/4) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6))))
(fma.f64 -1/4 (*.f64 y y) (fma.f64 -1/96 (pow.f64 y 4) (fma.f64 -19/5760 (pow.f64 y 6) 1)))
(fma.f64 y (*.f64 y -1/4) (fma.f64 -19/5760 (pow.f64 y 6) (fma.f64 -1/96 (pow.f64 y 4) 1)))
(fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) -1/96 -1/4) (fma.f64 -19/5760 (pow.f64 y 6) 1))

eval151.0ms (1.2%)

Compiler

Compiled 5469 to 2294 computations (58.1% saved)

prune121.0ms (0.9%)

Pruning

22 alts after pruning (13 fresh and 9 done)

PrunedKeptTotal
New3308338
Fresh459
Picked011
Done189
Total33522357
Error
0.0b
Counts
357 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
51.8b
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
14.4b
(+.f64 (*.f64 (*.f64 x (-.f64 (+.f64 1 (sqrt.f64 (cos.f64 y))) 1)) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
33.0b
(*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))
39.5b
(+.f64 x (*.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))))
41.0b
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) x)) 2)
30.5b
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 (sin.f64 y) z) 3)))
37.1b
(+.f64 x (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
14.3b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
14.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
14.2b
(+.f64 x (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y))))
40.0b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
28.8b
(+.f64 (*.f64 y z) x)
25.0b
(*.f64 (cos.f64 y) x)
38.2b
x
14.4b
(+.f64 x (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3))
38.3b
(*.f64 z (sin.f64 y))
0.5b
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
0.1b
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
8.5b
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (cbrt.f64 x))) (*.f64 (cbrt.f64 x) (cos.f64 y))) (*.f64 z (sin.f64 y)))
52.8b
(*.f64 y z)
25.6b
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y)))
25.8b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) x)) 2) (cbrt.f64 (*.f64 (cos.f64 y) x)))
Compiler

Compiled 272 to 184 computations (32.4% saved)

regimes258.0ms (2%)

Counts
41 → 1
Calls
Call 1
Inputs
x
x
x
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(+.f64 x (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x) (*.f64 y z))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x) (*.f64 z (sin.f64 y)))
(pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) x)) 2)
(cbrt.f64 (pow.f64 (*.f64 (cos.f64 y) x) 3))
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 (sin.f64 y) z) 3)))
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
(+.f64 x (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
(*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y)))
(+.f64 x (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3))
(+.f64 x (*.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))))
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (cos.f64 y)) 3)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (sin.f64 y)) 3)))
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (cos.f64 y))) 2) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 3))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) x)) 2) (cbrt.f64 (*.f64 (cos.f64 y) x)))
(+.f64 (*.f64 x (cos.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 z)) 3))
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))))
(+.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (cos.f64 y))) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 x (cbrt.f64 x))) (*.f64 (cbrt.f64 x) (cos.f64 y))) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 (*.f64 x (-.f64 (+.f64 1 (sqrt.f64 (cos.f64 y))) 1)) (sqrt.f64 (cos.f64 y))) (*.f64 z (sin.f64 y)))
(+.f64 x (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y))))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (cos.f64 y))) 2) (cbrt.f64 (*.f64 x (cos.f64 y))) (*.f64 y z))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 z (sin.f64 y))) 2) (cbrt.f64 z)) (cbrt.f64 (sin.f64 y))))
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Calls

4 calls:

68.0ms
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
67.0ms
z
52.0ms
y
48.0ms
x
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
Compiler

Compiled 433 to 155 computations (64.2% saved)

regimes125.0ms (1%)

Counts
13 → 3
Calls
Call 1
Inputs
x
x
x
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(+.f64 x (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 y z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x)
(+.f64 (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) x)) x) (*.f64 y z))
Outputs
(+.f64 x (*.f64 z (sin.f64 y)))
(*.f64 (cos.f64 y) x)
(+.f64 x (*.f64 z (sin.f64 y)))
Calls

3 calls:

59.0ms
x
46.0ms
z
15.0ms
y
Results
ErrorSegmentsBranch
7.3b3x
12.0b2y
5.7b3z
Compiler

Compiled 83 to 40 computations (51.8% saved)

bsearch210.0ms (1.6%)

Algorithm
binary-search
Steps
TimeLeftRight
146.0ms
1.1228791439375612e-58
1.0534743273697433e-42
64.0ms
-0.5522434277288263
-3.865674960128869e-5
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes227.0ms (1.8%)

Counts
8 → 5
Calls
Call 1
Inputs
x
x
x
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
Outputs
(*.f64 z (sin.f64 y))
(*.f64 (cos.f64 y) x)
(*.f64 z (sin.f64 y))
(+.f64 (*.f64 y z) x)
(*.f64 (cos.f64 y) x)
Calls

3 calls:

155.0ms
y
37.0ms
x
32.0ms
z
Results
ErrorSegmentsBranch
14.3b4x
11.7b5y
13.3b4z
Compiler

Compiled 38 to 18 computations (52.6% saved)

bsearch585.0ms (4.5%)

Algorithm
binary-search
Steps
TimeLeftRight
157.0ms
0.005942722395923747
79.86688634909905
79.0ms
-959.0349490808583
-4.690189031088517e-10
73.0ms
-1.3948637207315615e+61
-5.6331254089158625e+56
276.0ms
-1.6168061700794143e+169
-6.228842761369212e+167
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes128.0ms (1%)

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

3 calls:

58.0ms
x
48.0ms
y
19.0ms
z
Results
ErrorSegmentsBranch
23.7b3x
15.1b3y
22.9b3z
Compiler

Compiled 30 to 16 computations (46.7% saved)

bsearch208.0ms (1.6%)

Algorithm
binary-search
Steps
TimeLeftRight
37.0ms
1.8081290083886633e-7
0.005942722395923747
171.0ms
-959.0349490808583
-4.690189031088517e-10
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes53.0ms (0.4%)

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

3 calls:

41.0ms
z
6.0ms
x
5.0ms
y
Results
ErrorSegmentsBranch
28.8b1x
28.8b1y
28.8b1z
Compiler

Compiled 26 to 14 computations (46.2% saved)

regimes36.0ms (0.3%)

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

3 calls:

14.0ms
y
13.0ms
x
8.0ms
z
Results
ErrorSegmentsBranch
34.3b3x
37.0b3y
37.0b2z
Compiler

Compiled 21 to 13 computations (38.1% saved)

bsearch193.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
129.0ms
6.898425995386248e-203
1.1759978495780932e-201
64.0ms
-1.6037008546249173e-173
-3.545546476856473e-178
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes16.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
3 → 1
Calls
Call 1
Inputs
x
x
x
Outputs
x
Calls

3 calls:

6.0ms
z
4.0ms
y
4.0ms
x
Results
ErrorSegmentsBranch
38.2b1x
38.2b1y
38.2b1z
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify13.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
042162
148162
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(if (<=.f64 z -4974166590674695/9007199254740992) (+.f64 x (*.f64 z (sin.f64 y))) (if (<=.f64 z 396791143913389/3533694129556768659166595001485837031654967793751237916243212402585239552) (*.f64 (cos.f64 y) x) (+.f64 x (*.f64 z (sin.f64 y)))))
(if (<=.f64 y -16168061700794143434200876931800779253130732190464746870848223349410265696449839733423360702244652267853879462379323705094800462288402507403322244963331123870533741969408) (*.f64 z (sin.f64 y)) (if (<=.f64 y -13948637207315614754675125809002374336675864510959908198285312) (*.f64 (cos.f64 y) x) (if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6851492446169213/1152921504606846976) (+.f64 (*.f64 y z) x) (*.f64 (cos.f64 y) x)))))
(if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6830918260735161/37778931862957161709568) (+.f64 (*.f64 y z) x) (*.f64 z (sin.f64 y))))
(+.f64 (*.f64 y z) x)
(if (<=.f64 x -8931628317451355/556938551955834377275533643273961343370755433013740225900780336657626363184653001282460059975265063449541297555370411048668054775558525146271076821255153099151854818647493280039413353545728) x (if (<=.f64 x 3043945516263499/44125218104815898389829825659447310364864904872680898823178155169729591099393726561029280015550468702670279148410687446533176513529349858556664892007608532912981188929417439383947376132698492620683708741856789536964608) (*.f64 y z) x))
x
Outputs
(+.f64 (*.f64 x (cos.f64 y)) (*.f64 z (sin.f64 y)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(if (<=.f64 z -4974166590674695/9007199254740992) (+.f64 x (*.f64 z (sin.f64 y))) (if (<=.f64 z 396791143913389/3533694129556768659166595001485837031654967793751237916243212402585239552) (*.f64 (cos.f64 y) x) (+.f64 x (*.f64 z (sin.f64 y)))))
(if (<=.f64 z -4974166590674695/9007199254740992) (+.f64 x (*.f64 z (sin.f64 y))) (if (<=.f64 z 396791143913389/3533694129556768659166595001485837031654967793751237916243212402585239552) (*.f64 x (cos.f64 y)) (+.f64 x (*.f64 z (sin.f64 y)))))
(if (<=.f64 y -16168061700794143434200876931800779253130732190464746870848223349410265696449839733423360702244652267853879462379323705094800462288402507403322244963331123870533741969408) (*.f64 z (sin.f64 y)) (if (<=.f64 y -13948637207315614754675125809002374336675864510959908198285312) (*.f64 (cos.f64 y) x) (if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6851492446169213/1152921504606846976) (+.f64 (*.f64 y z) x) (*.f64 (cos.f64 y) x)))))
(if (<=.f64 y -16168061700794143434200876931800779253130732190464746870848223349410265696449839733423360702244652267853879462379323705094800462288402507403322244963331123870533741969408) (*.f64 z (sin.f64 y)) (if (<=.f64 y -13948637207315614754675125809002374336675864510959908198285312) (*.f64 x (cos.f64 y)) (if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6851492446169213/1152921504606846976) (+.f64 x (*.f64 y z)) (*.f64 x (cos.f64 y))))))
(if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6830918260735161/37778931862957161709568) (+.f64 (*.f64 y z) x) (*.f64 z (sin.f64 y))))
(if (<=.f64 y -4217880311831871/4398046511104) (*.f64 z (sin.f64 y)) (if (<=.f64 y 6830918260735161/37778931862957161709568) (+.f64 x (*.f64 y z)) (*.f64 z (sin.f64 y))))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(if (<=.f64 x -8931628317451355/556938551955834377275533643273961343370755433013740225900780336657626363184653001282460059975265063449541297555370411048668054775558525146271076821255153099151854818647493280039413353545728) x (if (<=.f64 x 3043945516263499/44125218104815898389829825659447310364864904872680898823178155169729591099393726561029280015550468702670279148410687446533176513529349858556664892007608532912981188929417439383947376132698492620683708741856789536964608) (*.f64 y z) x))
x
Compiler

Compiled 131 to 74 computations (43.5% saved)

soundness0.0ms (0%)

end65.0ms (0.5%)

Compiler

Compiled 113 to 41 computations (63.7% saved)

Profiling

Loading profile data...