Details

Time bar (total: 10.8s)

analyze251.0ms (2.3%)

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.3s (21.4%)

Results
1.3s6279×body256valid
754.0ms1297×body1024valid
257.0ms677×body512valid
5.0msbody2048valid

preprocess20.0ms (0.2%)

Algorithm
egg-herbie
Rules
24×fma-def_binary64
20×+-commutative_binary64
12×associate-+r+_binary64
12×associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02256
14248
27848
310248
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (+.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x)))
(+.f64 (+.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(+.f64 (+.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z)))
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 x (+.f64 (sin.f64 y) (*.f64 z (cos.f64 y))))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (+.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x)))
(fma.f64 z (cos.f64 x) (+.f64 y (sin.f64 x)))
(+.f64 (sin.f64 x) (fma.f64 z (cos.f64 x) y))
(+.f64 (+.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(+.f64 z (+.f64 (sin.f64 y) (*.f64 x (cos.f64 y))))
(fma.f64 x (cos.f64 y) (+.f64 (sin.f64 y) z))
(+.f64 (sin.f64 y) (fma.f64 x (cos.f64 y) z))
(+.f64 (+.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z)))
(+.f64 x (+.f64 (sin.f64 z) (*.f64 y (cos.f64 z))))
(fma.f64 y (cos.f64 z) (+.f64 x (sin.f64 z)))
(+.f64 x (fma.f64 y (cos.f64 z) (sin.f64 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
+-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0914
11412
22312
32912
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))

eval1.0ms (0%)

Compiler

Compiled 20 to 9 computations (55% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 23 to 15 computations (34.8% saved)

localize14.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series13.0ms (0.1%)

Counts
3 → 76
Calls

21 calls:

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

rewrite87.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
497×log-prod_binary64
490×fma-def_binary64
374×pow-prod-down_binary64
280×pow2_binary64
236×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify157.0ms (1.5%)

Algorithm
egg-herbie
Rules
767×distribute-rgt-out_binary64
713×associate-*l*_binary64
565×distribute-lft-out_binary64
552×associate-*r*_binary64
492×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
049674
1131670
2349666
31155665
43789665
56746665
67020665
77307665
87595665
97966665
Stop Event
node limit
Counts
240 → 191
Calls
Call 1
Inputs
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
Outputs
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)
(fma.f64 z (*.f64 y (*.f64 y -1/2)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4))))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (*.f64 z (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x)))
(+.f64 (+.f64 z x) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y))
(+.f64 y (+.f64 (fma.f64 z (*.f64 y (*.f64 y -1/2)) z) x))
(+.f64 x (+.f64 z (fma.f64 (*.f64 y y) (*.f64 z -1/2) y)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 z x) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 z (fma.f64 -1/6 (pow.f64 y 3) (+.f64 y x))))
(+.f64 z (+.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) y) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 y (+.f64 (fma.f64 z (*.f64 y (*.f64 y -1/2)) z) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y x))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) x)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (+.f64 y x)))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)

localize12.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 7 computations (68.2% saved)

series4.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite57.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
909×pow1_binary64
838×add-log-exp_binary64
838×log1p-expm1-u_binary64
838×expm1-log1p-u_binary64
818×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify137.0ms (1.3%)

Algorithm
egg-herbie
Rules
980×fma-def_binary64
646×associate-*l*_binary64
536×unswap-sqr_binary64
497×distribute-lft-out_binary64
412×associate-*r*_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
023393
159393
2152393
3455390
41232388
53644388
65623388
76858388
87119388
97430388
107813388
Stop Event
node limit
Counts
59 → 38
Calls
Call 1
Inputs
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
Outputs
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 x z)
(+.f64 y (+.f64 z x))
(+.f64 (+.f64 y z) x)
(+.f64 y (+.f64 x z))
(+.f64 x (+.f64 y z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (+.f64 y z) x))
(+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y))
(+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 x z)))
(+.f64 (+.f64 y x) (fma.f64 z (*.f64 y (*.f64 y -1/2)) z))
(+.f64 x (fma.f64 (fma.f64 y (*.f64 z -1/2) 1) y z))
(fma.f64 (fma.f64 y (*.f64 z -1/2) 1) y (+.f64 x z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (+.f64 y z) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(+.f64 (+.f64 x z) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 y (*.f64 y -1/2)) y)))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 y -1/6 (*.f64 z -1/2)) (+.f64 y x)))
(+.f64 y (+.f64 x (fma.f64 (*.f64 y y) (fma.f64 y -1/6 (*.f64 z -1/2)) z)))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (sin.f64 y)) x)
(fma.f64 (cos.f64 y) z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))

eval60.0ms (0.6%)

Compiler

Compiled 4137 to 1286 computations (68.9% saved)

prune66.0ms (0.6%)

Pruning

20 alts after pruning (19 fresh and 1 done)

PrunedKeptTotal
New26919288
Fresh000
Picked101
Done011
Total27020290
Error
0.0b
Counts
290 → 20
Alt Table
Click to see full alt table
StatusErrorProgram
35.3b
(*.f64 (cos.f64 y) z)
27.9b
(+.f64 (sin.f64 y) x)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
29.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
37.1b
x
34.3b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) (*.f64 z (cos.f64 y)))
22.6b
(+.f64 y (+.f64 z x))
0.6b
(fma.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (+.f64 x (sin.f64 y)))
25.6b
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
21.2b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)))
21.6b
(+.f64 z x)
0.6b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
12.4b
(+.f64 (+.f64 x (sin.f64 y)) z)
16.6b
(fma.f64 z (cos.f64 y) (+.f64 y x))
25.7b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
27.9b
(/.f64 1 (/.f64 (+.f64 (sin.f64 y) (-.f64 x (*.f64 z (cos.f64 y)))) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))))
29.1b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
13.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
16.6b
(+.f64 (+.f64 y x) (*.f64 z (cos.f64 y)))
Compiler

Compiled 480 to 315 computations (34.4% saved)

localize24.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2)))
0.2b
(pow.f64 (cos.f64 y) 2)
0.3b
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
0.3b
(cbrt.f64 (cos.f64 y))
Compiler

Compiled 49 to 22 computations (55.1% saved)

series22.0ms (0.2%)

Counts
4 → 52
Calls

15 calls:

TimeVariablePointExpression
4.0ms
y
@-inf
(*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2)))
3.0ms
y
@inf
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
2.0ms
z
@0
(*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2)))
2.0ms
y
@-inf
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
2.0ms
y
@0
(cbrt.f64 (pow.f64 (cos.f64 y) 2))

rewrite68.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify88.0ms (0.8%)

Algorithm
egg-herbie
Rules
1004×fma-def_binary64
504×fma-neg_binary64
490×distribute-rgt-neg-in_binary64
438×cancel-sign-sub-inv_binary64
373×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
061548
1153527
2396516
31260514
43052514
54385514
66357514
Stop Event
node limit
Counts
128 → 106
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))))
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
(pow.f64 (cos.f64 y) 1/3)
1
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
1
(+.f64 (*.f64 -1 (pow.f64 y 2)) 1)
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 1 (*.f64 1/3 (pow.f64 y 4))))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -2/45 (pow.f64 y 6)) (*.f64 1/3 (pow.f64 y 4)))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
z
(+.f64 z (*.f64 -1/3 (*.f64 (pow.f64 y 2) z)))
(+.f64 z (+.f64 (*.f64 -1/405 (*.f64 (pow.f64 y 6) z)) (*.f64 -1/3 (*.f64 (pow.f64 y 2) z))))
(+.f64 (*.f64 -1/1701 (*.f64 (pow.f64 y 8) z)) (+.f64 z (+.f64 (*.f64 -1/405 (*.f64 (pow.f64 y 6) z)) (*.f64 -1/3 (*.f64 (pow.f64 y 2) z)))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
Outputs
1
(+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/6 (*.f64 y y)))
(fma.f64 -1/6 (*.f64 y y) 1)
(+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2))))
(fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 -1/6 (*.f64 y y))))
(fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1))
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) 1))
(+.f64 (*.f64 -23/6480 (pow.f64 y 6)) (+.f64 (*.f64 -1/72 (pow.f64 y 4)) (+.f64 1 (*.f64 -1/6 (pow.f64 y 2)))))
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) (+.f64 1 (*.f64 -1/6 (*.f64 y y)))))
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1)))
(fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) 1)))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6) (fma.f64 -23/6480 (pow.f64 y 6) 1))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
(pow.f64 (cos.f64 y) 1/3)
(cbrt.f64 (cos.f64 y))
1
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2)))
(+.f64 1 (*.f64 (*.f64 y y) -1/3))
(fma.f64 (*.f64 y y) -1/3 1)
(fma.f64 y (*.f64 y -1/3) 1)
(+.f64 1 (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6))))
(+.f64 1 (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405)))
(+.f64 1 (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3))))
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1))
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))))
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405))))
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))))
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1)))
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1)))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
1
(+.f64 (*.f64 -1 (pow.f64 y 2)) 1)
(fma.f64 -1 (*.f64 y y) 1)
(-.f64 1 (*.f64 y y))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 1 (*.f64 1/3 (pow.f64 y 4))))
(+.f64 (fma.f64 -1 (*.f64 y y) 1) (*.f64 (pow.f64 y 4) 1/3))
(-.f64 (fma.f64 (pow.f64 y 4) 1/3 1) (*.f64 y y))
(-.f64 (*.f64 (pow.f64 y 4) 1/3) (fma.f64 y y -1))
(+.f64 (*.f64 -1 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -2/45 (pow.f64 y 6)) (*.f64 1/3 (pow.f64 y 4)))))
(+.f64 (fma.f64 -1 (*.f64 y y) 1) (fma.f64 -2/45 (pow.f64 y 6) (*.f64 (pow.f64 y 4) 1/3)))
(+.f64 (-.f64 1 (*.f64 y y)) (fma.f64 (pow.f64 y 4) 1/3 (*.f64 (pow.f64 y 6) -2/45)))
(-.f64 (fma.f64 (pow.f64 y 4) 1/3 (fma.f64 (pow.f64 y 6) -2/45 1)) (*.f64 y y))
(-.f64 (fma.f64 (pow.f64 y 4) 1/3 (*.f64 (pow.f64 y 6) -2/45)) (fma.f64 y y -1))
(-.f64 (fma.f64 (pow.f64 y 4) 1/3 1) (fma.f64 y y (*.f64 (pow.f64 y 6) 2/45)))
(-.f64 1 (fma.f64 y y (fma.f64 (pow.f64 y 4) -1/3 (*.f64 (pow.f64 y 6) 2/45))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
z
(+.f64 z (*.f64 -1/3 (*.f64 (pow.f64 y 2) z)))
(+.f64 z (*.f64 -1/3 (*.f64 (*.f64 y y) z)))
(*.f64 (fma.f64 (*.f64 y y) -1/3 1) z)
(fma.f64 (*.f64 y (*.f64 y -1/3)) z z)
(fma.f64 y (*.f64 y (*.f64 -1/3 z)) z)
(+.f64 z (+.f64 (*.f64 -1/405 (*.f64 (pow.f64 y 6) z)) (*.f64 -1/3 (*.f64 (pow.f64 y 2) z))))
(+.f64 z (fma.f64 -1/405 (*.f64 (pow.f64 y 6) z) (*.f64 -1/3 (*.f64 (*.f64 y y) z))))
(+.f64 z (*.f64 z (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))))
(fma.f64 z (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3))) z)
(fma.f64 (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3))) z z)
(fma.f64 (fma.f64 y (*.f64 y -1/3) (*.f64 (pow.f64 y 6) -1/405)) z z)
(+.f64 (*.f64 -1/1701 (*.f64 (pow.f64 y 8) z)) (+.f64 z (+.f64 (*.f64 -1/405 (*.f64 (pow.f64 y 6) z)) (*.f64 -1/3 (*.f64 (pow.f64 y 2) z)))))
(fma.f64 -1/1701 (*.f64 (pow.f64 y 8) z) (+.f64 z (fma.f64 -1/405 (*.f64 (pow.f64 y 6) z) (*.f64 -1/3 (*.f64 (*.f64 y y) z)))))
(+.f64 (*.f64 z (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))) (fma.f64 -1/1701 (*.f64 (pow.f64 y 8) z) z))
(+.f64 z (*.f64 z (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 -1/1701 (pow.f64 y 8))))))
(*.f64 z (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1))))
(*.f64 (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1))) z)
(fma.f64 z (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 -1/1701 (pow.f64 y 8)))) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 (cos.f64 y) 2)) 1/3) z)
(*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite56.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
987×pow1_binary64
919×add-log-exp_binary64
919×log1p-expm1-u_binary64
919×expm1-log1p-u_binary64
88×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify175.0ms (1.6%)

Algorithm
egg-herbie
Rules
780×sqr-pow_binary64
692×fma-def_binary64
684×cube-prod_binary64
604×fabs-mul_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022296
158296
2149296
3416296
4806296
51428296
62034296
72704296
82812296
92974296
103187296
113517296
123973296
134571296
145321296
156255296
166763296
177251296
187651296
197977296
Stop Event
node limit
Counts
75 → 52
Calls
Call 1
Inputs
(+.f64 z (sin.f64 y))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
x
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
x
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 z x))))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) x)
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
z
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
z
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 z (+.f64 (sin.f64 y) x))
Outputs
(+.f64 z (sin.f64 y))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
x
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
x
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 x (+.f64 z y))
(+.f64 z (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (+.f64 z x)))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 z (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 z (+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (+.f64 z x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 z (+.f64 y x)))
(+.f64 y (+.f64 z (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) (+.f64 z x))))
(+.f64 (+.f64 x (fma.f64 1/120 (pow.f64 y 5) z)) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 z (+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 z (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))))
(+.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 1/120 (pow.f64 y 5) z)))
(+.f64 y (+.f64 (fma.f64 1/120 (pow.f64 y 5) z) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 (sin.f64 y) x)
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
z
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
z
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))
(+.f64 z (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 z x))

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 15 to 6 computations (60% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
z
@-inf
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.0ms
y
@0
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.0ms
z
@inf
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.0ms
y
@inf
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.0ms
y
@-inf
(fma.f64 (cos.f64 y) z (sin.f64 y))

rewrite43.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
567×pow1_binary64
517×add-log-exp_binary64
517×log1p-expm1-u_binary64
517×expm1-log1p-u_binary64
504×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify133.0ms (1.2%)

Algorithm
egg-herbie
Rules
633×associate-*l*_binary64
536×unswap-sqr_binary64
507×distribute-lft-out_binary64
507×sqr-pow_binary64
504×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
019208
148208
2117208
3319203
4835203
52855203
64828203
76067203
86328203
96639203
107022203
117599203
Stop Event
node limit
Counts
45 → 32
Calls
Call 1
Inputs
z
(+.f64 y z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(sin.f64 y)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
Outputs
z
(+.f64 y z)
(+.f64 z y)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y))
(+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y))
(+.f64 y (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z))
(fma.f64 (fma.f64 y (*.f64 y -1/2) 1) z y)
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y)))
(+.f64 z (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 y (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) z))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) y))
(fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) (+.f64 z y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(sin.f64 y)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))

localize15.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 33 to 9 computations (72.7% saved)

series16.0ms (0.1%)

Counts
2 → 37
Calls

15 calls:

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

rewrite61.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
571×prod-diff_binary64
501×log-prod_binary64
344×pow-prod-down_binary64
279×pow2_binary64
235×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify174.0ms (1.6%)

Algorithm
egg-herbie
Rules
1975×fma-def_binary64
662×sqr-pow_binary64
416×cube-prod_binary64
356×*-commutative_binary64
351×pow-sqr_binary64
Iterations

Useful iterations: 9 (0.0ms)

IterNodesCost
041425
1103420
2285407
3998399
42534399
53349399
63504399
73653399
83819399
94043393
105434393
115816393
126291393
136844393
147593393
157996393
Stop Event
node limit
Counts
92 → 77
Calls
Call 1
Inputs
(sqrt.f64 z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (sqrt.f64 z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (+.f64 (sqrt.f64 z) (*.f64 1/24 (*.f64 (pow.f64 y 4) (sqrt.f64 z)))))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) (sqrt.f64 z))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (+.f64 (sqrt.f64 z) (*.f64 1/24 (*.f64 (pow.f64 y 4) (sqrt.f64 z))))))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
Outputs
(sqrt.f64 z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (sqrt.f64 z))
(fma.f64 -1/2 (*.f64 (sqrt.f64 z) (*.f64 y y)) (sqrt.f64 z))
(fma.f64 (*.f64 -1/2 (*.f64 y y)) (sqrt.f64 z) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (+.f64 (sqrt.f64 z) (*.f64 1/24 (*.f64 (pow.f64 y 4) (sqrt.f64 z)))))
(+.f64 (fma.f64 -1/2 (*.f64 (sqrt.f64 z) (*.f64 y y)) (sqrt.f64 z)) (*.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 (sqrt.f64 z) (*.f64 y y)) (fma.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4)) (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (+.f64 (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 1/24 (pow.f64 y 4))))
(*.f64 (sqrt.f64 z) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) 1/24 -1/2) 1))
(*.f64 (sqrt.f64 z) (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) 1)))
(+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) (sqrt.f64 z))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (+.f64 (sqrt.f64 z) (*.f64 1/24 (*.f64 (pow.f64 y 4) (sqrt.f64 z))))))
(fma.f64 -1/720 (*.f64 (sqrt.f64 z) (pow.f64 y 6)) (+.f64 (fma.f64 -1/2 (*.f64 (sqrt.f64 z) (*.f64 y y)) (sqrt.f64 z)) (*.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4)))))
(+.f64 (fma.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4)) (sqrt.f64 z)) (*.f64 (sqrt.f64 z) (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 (sqrt.f64 z) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 -1/2 (*.f64 y y))) (*.f64 (sqrt.f64 z) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (sqrt.f64 z) (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 -1/720 (pow.f64 y 6) (*.f64 -1/2 (*.f64 y y)))))
(*.f64 (sqrt.f64 z) (+.f64 (*.f64 -1/2 (*.f64 y y)) (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 1/24 (pow.f64 y 4) 1))))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) (fma.f64 (pow.f64 y 4) -1/720 -1/2) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (sqrt.f64 z) (fma.f64 -1/2 (*.f64 y y) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 z (+.f64 x y))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x)))
(+.f64 (+.f64 z x) (fma.f64 (*.f64 -1/2 (*.f64 y y)) z y))
(+.f64 (+.f64 z x) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y))
(+.f64 (+.f64 z y) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) x))
(fma.f64 y (fma.f64 -1/2 (*.f64 z y) 1) (+.f64 z x))
(+.f64 x (fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 z x) (fma.f64 (*.f64 -1/2 (*.f64 y y)) z y)))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 (+.f64 z y) (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) x))
(fma.f64 y (fma.f64 y (fma.f64 z -1/2 (*.f64 y -1/6)) 1) (+.f64 z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (+.f64 x (sin.f64 y)))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))

eval90.0ms (0.8%)

Compiler

Compiled 5913 to 2078 computations (64.9% saved)

prune80.0ms (0.7%)

Pruning

24 alts after pruning (20 fresh and 4 done)

PrunedKeptTotal
New37510385
Fresh41014
Picked101
Done145
Total38124405
Error
0b
Counts
405 → 24
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(+.f64 z x)
22.6b
(+.f64 (+.f64 y x) z)
35.3b
(*.f64 (cos.f64 y) z)
27.9b
(+.f64 (sin.f64 y) x)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
29.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
53.2b
(sin.f64 y)
16.6b
(fma.f64 z (cos.f64 y) (+.f64 y x))
43.9b
(+.f64 z y)
0.6b
(fma.f64 (*.f64 (cos.f64 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (+.f64 x (sin.f64 y)))
25.6b
(fma.f64 (cos.f64 y) z (sin.f64 y))
46.8b
z
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
21.2b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)))
37.8b
(+.f64 (sin.f64 y) z)
16.6b
(+.f64 (+.f64 y x) (*.f64 z (cos.f64 y)))
0.6b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
43.2b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (sin.f64 y))
25.7b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
41.0b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) z)
13.6b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
27.9b
(/.f64 1 (/.f64 (+.f64 (sin.f64 y) (-.f64 x (*.f64 z (cos.f64 y)))) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))))
37.1b
x
13.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
Compiler

Compiled 493 to 326 computations (33.9% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.2b
(*.f64 (cbrt.f64 z) (cos.f64 y))
0.5b
(pow.f64 (cbrt.f64 z) 2)
0.6b
(cbrt.f64 z)
Compiler

Compiled 40 to 14 computations (65% saved)

series19.0ms (0.2%)

Counts
4 → 39
Calls

21 calls:

TimeVariablePointExpression
2.0ms
y
@-inf
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
2.0ms
y
@inf
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
2.0ms
y
@inf
(*.f64 (cbrt.f64 z) (cos.f64 y))
2.0ms
z
@-inf
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
2.0ms
x
@0
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))

rewrite72.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
578×prod-diff_binary64
549×log-prod_binary64
375×pow-prod-down_binary64
313×pow2_binary64
247×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01239
124931
2306529
Stop Event
node limit
Counts
4 → 98
Calls
Call 1
Inputs
(cbrt.f64 z)
(pow.f64 (cbrt.f64 z) 2)
(*.f64 (cbrt.f64 z) (cos.f64 y))
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 z))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 z)))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (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 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2) (cbrt.f64 (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 z 1/6) (pow.f64 z 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 4)) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 z))))) (#(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 (pow.f64 (cbrt.f64 z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z z) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 z) 2/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 fabs.f64 (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.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 exp.f64 (*.f64 (log.f64 z) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 z)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (cbrt.f64 z) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 4) (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (pow.f64 z 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 z 1/6) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 (cbrt.f64 z)) 2)) (cbrt.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 z (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cbrt.f64 z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 z z))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2/3 (log.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2/3 (log.f64 z)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (cbrt.f64 z) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (cbrt.f64 z)) (cos.f64 y))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (cbrt.f64 z)) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cbrt.f64 z)) (cos.f64 y)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (cbrt.f64 z)) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (cbrt.f64 z) (cos.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 z) (cos.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (cbrt.f64 z) (cos.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (pow.f64 (cos.f64 y) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (cbrt.f64 z) (cos.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (cbrt.f64 z)) (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (cbrt.f64 z) (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 z (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (cbrt.f64 z) (cos.f64 y))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z (cos.f64 y)) 1) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2) (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) (pow.f64 (+.f64 x (sin.f64 y)) 3)) (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (*.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (pow.f64 (+.f64 x (sin.f64 y)) 2)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 x (sin.f64 y))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y)))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 z (cos.f64 y))) (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 1))))))

simplify204.0ms (1.9%)

Algorithm
egg-herbie
Rules
928×*-commutative_binary64
632×distribute-lft-out_binary64
629×sqr-pow_binary64
539×associate-+l+_binary64
394×+-commutative_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
052493
1152433
2404431
31442426
42729424
52899424
63045424
73246424
83529424
93740424
105132424
115960424
126351424
136804424
147330424
157636424
Stop Event
node limit
Counts
137 → 121
Calls
Call 1
Inputs
(pow.f64 z 1/3)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3)))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 6))))))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x))))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
Outputs
(pow.f64 z 1/3)
(cbrt.f64 z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3))
(fma.f64 -1/2 (*.f64 (cbrt.f64 z) (*.f64 y y)) (cbrt.f64 z))
(*.f64 (+.f64 (*.f64 -1/2 (*.f64 y y)) 1) (cbrt.f64 z))
(*.f64 (cbrt.f64 z) (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3)))
(fma.f64 1/24 (*.f64 (cbrt.f64 z) (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 (cbrt.f64 z) (*.f64 y y)) (cbrt.f64 z)))
(+.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 z) (+.f64 (*.f64 -1/2 (*.f64 y y)) (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cbrt.f64 z) (+.f64 (*.f64 -1/2 (*.f64 y y)) (+.f64 1 (*.f64 1/24 (pow.f64 y 4)))))
(*.f64 (cbrt.f64 z) (+.f64 1 (*.f64 (*.f64 y y) (+.f64 -1/2 (*.f64 (*.f64 y y) 1/24)))))
(*.f64 (cbrt.f64 z) (+.f64 1 (+.f64 (*.f64 -1/2 (*.f64 y y)) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 6))))))
(fma.f64 1/24 (*.f64 (cbrt.f64 z) (pow.f64 y 4)) (+.f64 (fma.f64 -1/2 (*.f64 (cbrt.f64 z) (*.f64 y y)) (cbrt.f64 z)) (*.f64 -1/720 (*.f64 (cbrt.f64 z) (pow.f64 y 6)))))
(fma.f64 1/24 (*.f64 (cbrt.f64 z) (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 (cbrt.f64 z) (*.f64 y y)) (fma.f64 -1/720 (*.f64 (cbrt.f64 z) (pow.f64 y 6)) (cbrt.f64 z))))
(+.f64 (*.f64 (+.f64 (*.f64 -1/2 (*.f64 y y)) 1) (cbrt.f64 z)) (*.f64 (cbrt.f64 z) (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 1/24 (pow.f64 y 4)))))
(+.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 z) (+.f64 (*.f64 (*.f64 y y) (+.f64 (*.f64 (*.f64 y y) 1/24) -1/2)) (*.f64 -1/720 (pow.f64 y 6)))))
(*.f64 (cbrt.f64 z) (+.f64 (+.f64 1 (*.f64 -1/720 (pow.f64 y 6))) (*.f64 (*.f64 y y) (+.f64 -1/2 (*.f64 (*.f64 y y) 1/24)))))
(*.f64 (cbrt.f64 z) (+.f64 1 (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 (*.f64 y y) (+.f64 -1/2 (*.f64 (*.f64 y y) 1/24))))))
(*.f64 (cbrt.f64 z) (+.f64 1 (+.f64 (*.f64 -1/2 (*.f64 y y)) (+.f64 (*.f64 -1/720 (pow.f64 y 6)) (*.f64 1/24 (pow.f64 y 4))))))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cbrt.f64 z) (cos.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(+.f64 z x)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 y (+.f64 z x))
(+.f64 x (+.f64 z y))
(+.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 y (+.f64 (+.f64 z x) (*.f64 -1/2 (*.f64 z (*.f64 y y)))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (+.f64 x y))
(+.f64 z (+.f64 x (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y)))
(fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z (+.f64 y x)))
(+.f64 y (+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (+.f64 (+.f64 z x) (*.f64 -1/2 (*.f64 z (*.f64 y y))))))
(+.f64 (+.f64 x (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 z (+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) x) (fma.f64 -1/6 (pow.f64 y 3) y)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z (+.f64 y x))))
(+.f64 z (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) x)))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(fma.f64 1 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))

localize7.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize12.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series2.0ms (0%)

Counts
1 → 7
Calls

6 calls:

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

rewrite48.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
612×pow1_binary64
569×add-log-exp_binary64
569×log1p-expm1-u_binary64
569×expm1-log1p-u_binary64
556×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify158.0ms (1.5%)

Algorithm
egg-herbie
Rules
1204×sqr-pow_binary64
710×cube-prod_binary64
678×fabs-mul_binary64
660×pow-sqr_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01739
14439
29939
324839
444839
596539
6142739
7208139
8218939
9235139
10256439
11289439
12335039
13394939
14470039
15563039
16614039
17662839
18702639
19734639
20750839
Stop Event
node limit
Counts
40 → 41
Calls
Call 1
Inputs
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(sin.f64 y)
x
x
Outputs
x
(+.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) x)))
(fma.f64 1/120 (pow.f64 y 5) (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)))
(sin.f64 y)
x
x

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite50.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
821×pow1_binary64
759×add-log-exp_binary64
759×log1p-expm1-u_binary64
759×expm1-log1p-u_binary64
741×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify208.0ms (1.9%)

Algorithm
egg-herbie
Rules
3214×fma-def_binary64
671×sqr-pow_binary64
448×cube-prod_binary64
430×distribute-lft-out_binary64
420×*-commutative_binary64
Iterations

Useful iterations: 19 (0.0ms)

IterNodesCost
026322
166322
2172320
3485320
41542320
52257320
63425320
73506320
83639320
93789320
104019320
114308320
124659320
135036320
145523320
156108320
166826320
177152320
187414320
197628315
Stop Event
node limit
Counts
59 → 39
Calls
Call 1
Inputs
(+.f64 y x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x))))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) y)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
Outputs
(+.f64 y x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 x z)
(+.f64 y (+.f64 z x))
(+.f64 y (+.f64 x z))
(+.f64 x (+.f64 y z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 x z)))
(+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y))
(+.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 y z)))
(+.f64 y (+.f64 x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)))
(+.f64 y (+.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))
(+.f64 y (+.f64 x (fma.f64 z (*.f64 y (*.f64 y -1/2)) z)))
(+.f64 y (fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z (+.f64 (*.f64 1/24 (*.f64 (pow.f64 y 4) z)) x))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) x))))
(+.f64 (+.f64 z (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) x)) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y))
(+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 (fma.f64 1/24 (pow.f64 y 4) 1) z x)))
(+.f64 y (fma.f64 y (*.f64 y (*.f64 z -1/2)) (fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) x)))
(+.f64 (fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) x) (fma.f64 y (*.f64 y (*.f64 z -1/2)) y))
(fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 y x)))
(fma.f64 y (fma.f64 (*.f64 y z) (fma.f64 (*.f64 y y) 1/24 -1/2) 1) (+.f64 x z))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) y)
(fma.f64 (cos.f64 y) z y)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(+.f64 x (fma.f64 (cos.f64 y) z y))
(+.f64 y (fma.f64 (cos.f64 y) z x))

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 8 computations (69.2% saved)

series2.0ms (0%)

Counts
1 → 13
Calls

6 calls:

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

rewrite50.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
741×pow1_binary64
678×add-log-exp_binary64
678×log1p-expm1-u_binary64
678×expm1-log1p-u_binary64
660×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify126.0ms (1.2%)

Algorithm
egg-herbie
Rules
633×associate-*l*_binary64
536×unswap-sqr_binary64
507×distribute-lft-out_binary64
507×sqr-pow_binary64
504×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
019115
148115
2117115
3319110
4835110
52855110
64828110
76067110
86328110
96639110
107022110
117599110
Stop Event
node limit
Counts
34 → 30
Calls
Call 1
Inputs
z
(+.f64 y z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(sin.f64 y)
Outputs
z
(+.f64 y z)
(+.f64 z y)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y))
(+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y))
(+.f64 y (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z))
(fma.f64 (fma.f64 y (*.f64 y -1/2) 1) z y)
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z y)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y)))
(+.f64 z (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 y (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) z))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) y))
(fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) (+.f64 z y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(sin.f64 y)

eval67.0ms (0.6%)

Compiler

Compiled 4062 to 1427 computations (64.9% saved)

prune72.0ms (0.7%)

Pruning

26 alts after pruning (17 fresh and 9 done)

PrunedKeptTotal
New27710287
Fresh8715
Picked011
Done088
Total28526311
Error
0b
Counts
311 → 26
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(+.f64 z x)
16.6b
(+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x)
35.3b
(*.f64 (cos.f64 y) z)
27.9b
(+.f64 (sin.f64 y) x)
44.5b
(cbrt.f64 (pow.f64 (+.f64 (sin.f64 y) (*.f64 (cos.f64 y) z)) 3))
0.6b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
16.0b
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
46.6b
(fma.f64 (sqrt.f64 (*.f64 z (pow.f64 (cos.f64 y) 2))) (sqrt.f64 z) (sin.f64 y))
43.2b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (sin.f64 y))
53.2b
(sin.f64 y)
45.0b
(pow.f64 (sqrt.f64 (+.f64 (sin.f64 y) (*.f64 (cos.f64 y) z))) 2)
16.6b
(fma.f64 z (cos.f64 y) (+.f64 y x))
25.7b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
58.4b
y
51.3b
(log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))
37.4b
(+.f64 y x)
43.9b
(+.f64 z y)
46.8b
z
37.1b
x
25.6b
(fma.f64 (cos.f64 y) z (sin.f64 y))
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
13.6b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
27.9b
(/.f64 1 (/.f64 (+.f64 (sin.f64 y) (-.f64 x (*.f64 z (cos.f64 y)))) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))))
13.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
37.8b
(+.f64 (sin.f64 y) z)
Compiler

Compiled 458 to 309 computations (32.5% saved)

localize15.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 35 to 9 computations (74.3% saved)

series11.0ms (0.1%)

Counts
3 → 56
Calls

18 calls:

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

rewrite65.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
571×prod-diff_binary64
501×log-prod_binary64
344×pow-prod-down_binary64
279×pow2_binary64
235×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01034
120727
2269825
Stop Event
node limit
Counts
3 → 84
Calls
Call 1
Inputs
(*.f64 z (sqrt.f64 (cos.f64 y)))
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
(sqrt.f64 (cos.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y)))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 z (cos.f64 y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 z (*.f64 z (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (sqrt.f64 (cos.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 z (sqrt.f64 (cos.f64 y)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 z (sqrt.f64 (cos.f64 y))))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z (cos.f64 y)) 1) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2) (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) (pow.f64 (+.f64 x (sin.f64 y)) 3)) (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (*.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (pow.f64 (+.f64 x (sin.f64 y)) 2)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 x (sin.f64 y))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y)))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 z (cos.f64 y))) (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (cos.f64 y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (cos.f64 y))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (cos.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (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 (pow.f64 (cos.f64 y) 1/6) (cbrt.f64 (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cos.f64 y)) (pow.f64 (cos.f64 y) 1/6))))) (#(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 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 (pow.f64 (cos.f64 y) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cos.f64 y) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cos.f64 y)) 3/2)))) (#(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 log.f64 (+.f64 1 (expm1.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))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cos.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (cos.f64 y))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3/2 (log.f64 (cos.f64 y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (cos.f64 y) 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/4 (log.f64 (cos.f64 y))) 2))))))

simplify185.0ms (1.7%)

Algorithm
egg-herbie
Rules
1984×fma-def_binary64
662×sqr-pow_binary64
416×cube-prod_binary64
360×*-commutative_binary64
351×pow-sqr_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
053607
1131601
2338592
31159590
41863590
52650590
62785590
72934590
83100583
95026583
105376583
115754583
126233583
136786583
147535583
157942583
Stop Event
node limit
Counts
140 → 113
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))))
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.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)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) z)
(*.f64 (fma.f64 -1/4 (*.f64 y y) 1) z)
(*.f64 z (fma.f64 -1/4 (*.f64 y y) 1))
(*.f64 z (fma.f64 y (*.f64 y -1/4) 1))
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 -1/96 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) (*.f64 (fma.f64 -1/96 (pow.f64 y 4) 1) z))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1)))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 -1/96 (*.f64 z (pow.f64 y 4)))))
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (fma.f64 -1/4 (*.f64 z (*.f64 y y)) (*.f64 (fma.f64 -1/96 (pow.f64 y 4) 1) z)))
(+.f64 z (*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6))))))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -19/5760 (pow.f64 y 6) (fma.f64 -1/96 (pow.f64 y 4) 1))))
(*.f64 z (fma.f64 (*.f64 y y) (fma.f64 (pow.f64 y 4) -19/5760 -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1)))
(fma.f64 z (fma.f64 (*.f64 y y) (fma.f64 (*.f64 y y) -1/96 -1/4) (*.f64 -19/5760 (pow.f64 y 6))) z)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x)))
(fma.f64 (*.f64 z (*.f64 y y)) -1/2 (+.f64 y (+.f64 z x)))
(+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 z x)))
(+.f64 y (fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (*.f64 z (*.f64 y y)) -1/2 (+.f64 y (+.f64 z x))))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 y (*.f64 y -1/2)) y)))
(+.f64 z (+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 y (*.f64 y -1/2)) y))))
(+.f64 z (fma.f64 y (fma.f64 y (fma.f64 y -1/6 (*.f64 z -1/2)) 1) x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 x (fma.f64 (cos.f64 y) z (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z 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))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 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))
(+.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 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 (pow.f64 y 4) -19/5760 -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1))
(fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (fma.f64 -19/5760 (pow.f64 y 6) 1)))

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 11 to 5 computations (54.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite99.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
612×pow1_binary64
569×add-log-exp_binary64
569×log1p-expm1-u_binary64
569×expm1-log1p-u_binary64
556×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
11086
215116
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 (sin.f64 y) 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 (/.f64 (pow.f64 (sin.f64 y) 2) (-.f64 (sin.f64 y) z)) (/.f64 (*.f64 z z) (-.f64 (sin.f64 y) z)))))) (#(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 (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 (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 (sqrt.f64 (+.f64 (sin.f64 y) z)) (sqrt.f64 (+.f64 (sin.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z (-.f64 z (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z z)) (/.f64 1 (-.f64 (sin.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z (-.f64 z (sin.f64 y)))) (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 z 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (sin.f64 y) z) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z (-.f64 z (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 z 3)) (+.f64 (*.f64 z z) (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 (sin.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z z)) (-.f64 (sin.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z (-.f64 z (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (sin.f64 y) 2) (*.f64 z z))) (neg.f64 (-.f64 (sin.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 z z) (pow.f64 (sin.f64 y) 2)) (-.f64 z (sin.f64 y)))))) (#(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 (exp.f64 (+.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 fma.f64 1 (sin.f64 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (cbrt.f64 (sin.f64 y)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (sin.f64 y)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (sin.f64 y))))))

simplify163.0ms (1.5%)

Algorithm
egg-herbie
Rules
1204×sqr-pow_binary64
710×cube-prod_binary64
683×fabs-mul_binary64
660×pow-sqr_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018141
146141
2101141
3245141
4441141
5944141
61407141
72061141
82169141
92331141
102544141
112874141
123330141
133927141
144680141
155612141
166124141
176612141
187010141
197336141
207496141
Stop Event
node limit
Counts
57 → 42
Calls
Call 1
Inputs
z
(+.f64 y z)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (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))
(sin.f64 y)
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
z
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
z
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
Outputs
z
(+.f64 y z)
(+.f64 z y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y z))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 z y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) z)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) z)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) z) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 z (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) (+.f64 z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (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))
(sin.f64 y)
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
z
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
z
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))
(+.f64 z (sin.f64 y))

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (sin.f64 y) x)
0.1b
(expm1.f64 (+.f64 (sin.f64 y) x))
0.1b
(log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))
Compiler

Compiled 22 to 7 computations (68.2% saved)

series4.0ms (0%)

Counts
2 → 48
Calls

12 calls:

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

rewrite58.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
693×pow1_binary64
644×expm1-log1p-u_binary64
643×add-log-exp_binary64
643×log1p-expm1-u_binary64
628×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify70.0ms (0.6%)

Algorithm
egg-herbie
Rules
897×fma-neg_binary64
353×cancel-sign-sub-inv_binary64
315×fma-def_binary64
279×distribute-rgt-neg-in_binary64
246×associate-+l+_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
065443
1187426
2470402
31653389
43758385
Stop Event
node limit
Counts
100 → 78
Calls
Call 1
Inputs
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(-.f64 (exp.f64 x) 1)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (exp.f64 x)) 1)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x))))) 1)
(-.f64 (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (exp.f64 x))) (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x)))))) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (sin.f64 y)) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (exp.f64 (sin.f64 y))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (exp.f64 (sin.f64 y)))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (+.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)))))) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
Outputs
x
(+.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 1/120 (pow.f64 y 5)) x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 1/120 (pow.f64 y 5) x)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
x
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
x
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(+.f64 (sin.f64 y) x)
(+.f64 x (sin.f64 y))
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (exp.f64 x)) 1)
(+.f64 (*.f64 y (exp.f64 x)) (expm1.f64 x))
(fma.f64 y (exp.f64 x) (expm1.f64 x))
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x))))) 1)
(+.f64 (+.f64 (*.f64 (+.f64 y 1) (exp.f64 x)) (*.f64 1/2 (*.f64 (exp.f64 x) (*.f64 y y)))) -1)
(+.f64 (*.f64 (exp.f64 x) (+.f64 (+.f64 y 1) (*.f64 1/2 (*.f64 y y)))) -1)
(fma.f64 (exp.f64 x) (+.f64 y (fma.f64 1/2 (*.f64 y y) 1)) -1)
(-.f64 (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (exp.f64 x))) (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x)))))) 1)
(+.f64 (fma.f64 -1/8 (*.f64 (exp.f64 x) (pow.f64 y 4)) (+.f64 (*.f64 (+.f64 y 1) (exp.f64 x)) (*.f64 1/2 (*.f64 (exp.f64 x) (*.f64 y y))))) -1)
(+.f64 (fma.f64 -1/8 (*.f64 (exp.f64 x) (pow.f64 y 4)) (*.f64 (exp.f64 x) (+.f64 (+.f64 y 1) (*.f64 1/2 (*.f64 y y))))) -1)
(+.f64 (*.f64 (exp.f64 x) (+.f64 (fma.f64 -1/8 (pow.f64 y 4) y) (*.f64 y (*.f64 y 1/2)))) (expm1.f64 x))
(fma.f64 (exp.f64 x) (+.f64 (fma.f64 -1/8 (pow.f64 y 4) y) (fma.f64 1/2 (*.f64 y y) 1)) -1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (sin.f64 y)) 1)
(expm1.f64 (sin.f64 y))
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (exp.f64 (sin.f64 y))) 1)
(+.f64 (*.f64 x (exp.f64 (sin.f64 y))) (expm1.f64 (sin.f64 y)))
(fma.f64 x (exp.f64 (sin.f64 y)) (expm1.f64 (sin.f64 y)))
(fma.f64 (+.f64 x 1) (exp.f64 (sin.f64 y)) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 x 1) -1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (exp.f64 (sin.f64 y)))) 1)
(+.f64 (fma.f64 (exp.f64 (sin.f64 y)) x (fma.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 x x)) (exp.f64 (sin.f64 y)))) -1)
(+.f64 (fma.f64 x (exp.f64 (sin.f64 y)) (*.f64 (exp.f64 (sin.f64 y)) (*.f64 (*.f64 x x) 1/2))) (expm1.f64 (sin.f64 y)))
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 x (*.f64 x 1/2)))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 x (+.f64 1 (*.f64 x (*.f64 x 1/2)))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 1 (fma.f64 x (*.f64 x 1/2) x)) -1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (+.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)))))) 1)
(+.f64 (fma.f64 (exp.f64 (sin.f64 y)) x (+.f64 (fma.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 x x)) (exp.f64 (sin.f64 y))) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3))))) -1)
(fma.f64 x (exp.f64 (sin.f64 y)) (+.f64 (fma.f64 1/2 (*.f64 x (*.f64 x (exp.f64 (sin.f64 y)))) (fma.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)) (exp.f64 (sin.f64 y)))) -1))
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 x (*.f64 x 1/2)))) (fma.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (pow.f64 x 3)) -1))
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 (*.f64 x x) (+.f64 (*.f64 x 1/6) 1/2)))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 (*.f64 x x) (+.f64 (*.f64 x 1/6) 1/2))) -1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 x (sin.f64 y)))

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.2b
(*.f64 (cbrt.f64 z) (cos.f64 y))
0.6b
(cbrt.f64 z)
30.0b
(cbrt.f64 (*.f64 z z))
Compiler

Compiled 42 to 11 computations (73.8% saved)

series8.0ms (0.1%)

Counts
2 → 27
Calls

12 calls:

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

rewrite71.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
578×prod-diff_binary64
560×log-prod_binary64
396×pow-prod-down_binary64
311×pow2_binary64
252×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01228
124320
2305018
Stop Event
node limit
Counts
2 → 65
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 z z))
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (cbrt.f64 z) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 z) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 z) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 z)) 4) (cbrt.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 z 1/6) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (pow.f64 z 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 (cbrt.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 z) (cbrt.f64 (pow.f64 (cbrt.f64 z) 2))) (cbrt.f64 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 z 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z z) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 z) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 z) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 3) 2/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 4) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 6) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (cbrt.f64 z)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 z)) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 z) 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 z 1/6) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 z) 4/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 z (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cbrt.f64 z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2/3 (log.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 z)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2/3 (log.f64 z)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z (cos.f64 y)) 1) (+.f64 x (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))) (log.f64 (sqrt.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (cbrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2)) (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3) (pow.f64 (+.f64 x (sin.f64 y)) 3)) (+.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (*.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) (pow.f64 (+.f64 x (sin.f64 y)) 2)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (+.f64 x (sin.f64 y))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y)))) (exp.f64 (*.f64 z (cos.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 z (cos.f64 y))) (+.f64 1 (expm1.f64 (+.f64 x (sin.f64 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (fma.f64 z (cos.f64 y) x) (sin.f64 y))) 1))))))

simplify170.0ms (1.6%)

Algorithm
egg-herbie
Rules
1843×fma-def_binary64
765×sqr-pow_binary64
499×cube-prod_binary64
370×pow-sqr_binary64
285×fabs-mul_binary64
Iterations

Useful iterations: 9 (0.0ms)

IterNodesCost
031347
187285
2234285
3575281
41623281
52044281
62596281
72720281
82874281
93068278
104617278
114958278
125390278
135922278
146584278
157414278
167817278
Stop Event
node limit
Counts
92 → 79
Calls
Call 1
Inputs
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x))))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
Outputs
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(fma.f64 1 z x)
(+.f64 x z)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 y (fma.f64 1 z x))
(+.f64 y (+.f64 x z))
(+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 y (+.f64 (fma.f64 1 z x) (*.f64 -1/2 (*.f64 z (*.f64 y y)))))
(+.f64 y (+.f64 x (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)))
(+.f64 y (+.f64 z (fma.f64 -1/2 (*.f64 z (*.f64 y y)) x)))
(+.f64 y (fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) x))
(+.f64 y (fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 1 1/3) (*.f64 (pow.f64 y 2) z))) (+.f64 (*.f64 (pow.f64 1 1/3) z) x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (+.f64 (fma.f64 1 z x) (*.f64 -1/2 (*.f64 z (*.f64 y y))))))
(+.f64 (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)) x)
(+.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)))
(+.f64 y (fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 x (fma.f64 y (fma.f64 y (fma.f64 y -1/6 (*.f64 z -1/2)) 1) z))
(fma.f64 y (fma.f64 y (fma.f64 y -1/6 (*.f64 z -1/2)) 1) (+.f64 x z))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(fma.f64 1 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (fma.f64 1 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))

eval110.0ms (1%)

Compiler

Compiled 7455 to 2441 computations (67.3% saved)

prune121.0ms (1.1%)

Pruning

27 alts after pruning (14 fresh and 13 done)

PrunedKeptTotal
New4985503
Fresh3912
Picked011
Done11213
Total50227529
Error
0b
Counts
529 → 27
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(+.f64 z x)
35.3b
(*.f64 (cos.f64 y) z)
16.6b
(+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x)
46.8b
z
44.5b
(cbrt.f64 (pow.f64 (+.f64 (sin.f64 y) (*.f64 (cos.f64 y) z)) 3))
0.6b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
16.0b
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
53.2b
(sin.f64 y)
45.0b
(pow.f64 (sqrt.f64 (+.f64 (sin.f64 y) (*.f64 (cos.f64 y) z))) 2)
16.6b
(fma.f64 z (cos.f64 y) (+.f64 y x))
25.7b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
58.4b
y
42.7b
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) z)) 1)
23.2b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 y x))
13.6b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
51.3b
(log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))
37.4b
(+.f64 y x)
43.9b
(+.f64 z y)
37.1b
x
25.6b
(fma.f64 (cos.f64 y) z (sin.f64 y))
27.9b
(+.f64 (sin.f64 y) x)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
43.2b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (sin.f64 y))
34.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (sin.f64 y))
27.9b
(/.f64 1 (/.f64 (+.f64 (sin.f64 y) (-.f64 x (*.f64 z (cos.f64 y)))) (-.f64 (pow.f64 (+.f64 x (sin.f64 y)) 2) (pow.f64 (*.f64 z (cos.f64 y)) 2))))
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
37.8b
(+.f64 (sin.f64 y) z)
Compiler

Compiled 293 to 196 computations (33.1% saved)

regimes277.0ms (2.6%)

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

4 calls:

104.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
69.0ms
x
55.0ms
y
38.0ms
z
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 380 to 112 computations (70.5% saved)

regimes99.0ms (0.9%)

Counts
28 → 1
Calls
Call 1
Inputs
z
y
z
x
z
x
x
(+.f64 y x)
(+.f64 z y)
(+.f64 z x)
(+.f64 (+.f64 y x) z)
(+.f64 y (+.f64 z x))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) z)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) x)
(+.f64 (+.f64 x (sin.f64 y)) z)
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) z)) 1)
(+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x)
(+.f64 (+.f64 y x) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 z (cos.f64 y) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(log1p.f64 (expm1.f64 (+.f64 (sin.f64 y) x)))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) z)
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Calls

4 calls:

47.0ms
y
16.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
16.0ms
z
15.0ms
x
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 151 to 49 computations (67.5% saved)

regimes317.0ms (2.9%)

Counts
24 → 3
Calls
Call 1
Inputs
z
y
z
x
z
x
x
(+.f64 y x)
(+.f64 z y)
(+.f64 z x)
(+.f64 (+.f64 y x) z)
(+.f64 y (+.f64 z x))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) z)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) x)
(+.f64 (+.f64 x (sin.f64 y)) z)
(-.f64 (+.f64 1 (+.f64 (sin.f64 y) z)) 1)
(+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x)
(+.f64 (+.f64 y x) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 z (cos.f64 y) (+.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
Outputs
(+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x)
(+.f64 (+.f64 x (sin.f64 y)) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
Calls

3 calls:

127.0ms
y
94.0ms
x
91.0ms
z
Results
ErrorSegmentsBranch
5.9b5x
5.6b8y
4.9b3z
Compiler

Compiled 110 to 34 computations (69.1% saved)

bsearch94.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
0.022348561497808516
901.4964957225062
50.0ms
-7.242755417033766e+78
-1.6082455111062106e+77
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes180.0ms (1.7%)

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

3 calls:

84.0ms
x
52.0ms
y
39.0ms
z
Results
ErrorSegmentsBranch
8.9b7x
9.2b4y
5.1b3z
Compiler

Compiled 89 to 32 computations (64% saved)

bsearch94.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
0.022348561497808516
901.4964957225062
49.0ms
-7.242755417033766e+78
-1.6082455111062106e+77
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes104.0ms (1%)

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

3 calls:

38.0ms
z
29.0ms
y
29.0ms
x
Results
ErrorSegmentsBranch
11.4b3x
10.8b3y
5.6b3z
Compiler

Compiled 73 to 28 computations (61.6% saved)

bsearch95.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
43.0ms
0.022348561497808516
901.4964957225062
51.0ms
-3.561976126371877e+175
-1.7882597674183293e+170
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes180.0ms (1.7%)

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

3 calls:

80.0ms
x
54.0ms
z
42.0ms
y
Results
ErrorSegmentsBranch
13.7b4x
11.9b5y
6.4b5z
Compiler

Compiled 59 to 22 computations (62.7% saved)

bsearch317.0ms (2.9%)

Algorithm
binary-search
Steps
TimeLeftRight
69.0ms
0.022348561497808516
901.4964957225062
44.0ms
-171242.39464640015
-1.1514728422659725e-7
47.0ms
-1.5955346731555302e+121
-3.8136242248445835e+111
157.0ms
-3.561976126371877e+175
-1.7882597674183293e+170
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes289.0ms (2.7%)

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

3 calls:

158.0ms
x
86.0ms
y
41.0ms
z
Results
ErrorSegmentsBranch
13.7b4x
14.1b6y
13.7b4z
Compiler

Compiled 55 to 21 computations (61.8% saved)

bsearch217.0ms (2%)

Algorithm
binary-search
Steps
TimeLeftRight
58.0ms
1.4109044396418216e-38
8.397780260101193e-36
71.0ms
1.5491214806175476e-140
4.0626365231060186e-134
88.0ms
-2.1313940557463502e-66
-3.032017750921104e-70
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes213.0ms (2%)

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

3 calls:

86.0ms
y
73.0ms
x
51.0ms
z
Results
ErrorSegmentsBranch
15.2b5x
14.1b6y
13.7b4z
Compiler

Compiled 47 to 20 computations (57.4% saved)

bsearch315.0ms (2.9%)

Algorithm
binary-search
Steps
TimeLeftRight
153.0ms
0.022348561497808516
901.4964957225062
105.0ms
-4.325800161513698e-148
-4.3067751468584874e-161
58.0ms
-3.561976126371877e+175
-1.7882597674183293e+170
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes70.0ms (0.6%)

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

3 calls:

23.0ms
z
22.0ms
x
22.0ms
y
Results
ErrorSegmentsBranch
18.5b3x
18.0b3y
20.0b3z
Compiler

Compiled 43 to 18 computations (58.1% saved)

bsearch104.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
43.0ms
1.1148360912509461e+21
2.732380832552907e+29
61.0ms
-2.5689418592315446e+91
-5.288790038627914e+89
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes65.0ms (0.6%)

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

3 calls:

34.0ms
z
20.0ms
x
8.0ms
y
Results
ErrorSegmentsBranch
18.9b3x
21.6b1y
20.3b3z
Compiler

Compiled 31 to 15 computations (51.6% saved)

bsearch154.0ms (1.4%)

Algorithm
binary-search
Steps
TimeLeftRight
94.0ms
1.7076220005650084e-147
1.5491214806175476e-140
60.0ms
-8.698480835359714e-212
-4.043433950653809e-225
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes77.0ms (0.7%)

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

3 calls:

32.0ms
z
25.0ms
x
18.0ms
y
Results
ErrorSegmentsBranch
25.6b3x
33.4b3y
26.9b5z
Compiler

Compiled 28 to 14 computations (50% saved)

bsearch235.0ms (2.2%)

Algorithm
binary-search
Steps
TimeLeftRight
148.0ms
1.032843798311854e-16
6.373286120265694e-11
87.0ms
-1.4982982968575364e+20
-111637110831511920.0
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes56.0ms (0.5%)

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

3 calls:

23.0ms
x
16.0ms
z
15.0ms
y
Results
ErrorSegmentsBranch
28.4b3x
33.6b3y
27.9b3z
Compiler

Compiled 25 to 13 computations (48% saved)

bsearch157.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
77.0ms
0.022348561497808516
901.4964957225062
79.0ms
-1.1514728422659725e-7
-7.789947473576971e-11
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes100.0ms (0.9%)

Counts
7 → 3
Calls
Call 1
Inputs
z
y
z
x
z
x
x
Outputs
z
x
z
Calls

3 calls:

49.0ms
x
35.0ms
y
14.0ms
z
Results
ErrorSegmentsBranch
28.4b3x
34.5b5y
28.3b3z
Compiler

Compiled 22 to 12 computations (45.5% saved)

bsearch88.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
0.022348561497808516
901.4964957225062
44.0ms
-1.1514728422659725e-7
-7.789947473576971e-11
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes20.0ms (0.2%)

Accuracy

Total -18.8b remaining (-43.2%)

Threshold costs -18.8b (-43.2%)

Counts
3 → 3
Calls
Call 1
Inputs
z
y
z
Outputs
z
y
z
Calls

3 calls:

10.0ms
z
5.0ms
y
4.0ms
x
Results
ErrorSegmentsBranch
46.8b1x
46.8b1y
43.6b3z
Compiler

Compiled 18 to 12 computations (33.3% saved)

bsearch160.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
1.1046098938209496e-115
8.822601706807371e-98
116.0ms
-4.3067751468584874e-161
-2.590276924504644e-163
Compiler

Compiled 18 to 13 computations (27.8% saved)

simplify19.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
085391
198391
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z -15955346731555301761805320764911926610926423267995187589630784258315433108288407310545558362274650064314307415236688216064) (+.f64 z x) (if (<=.f64 z -5883843877560113/34359738368) (*.f64 (cos.f64 y) z) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 x -8087095564791535/3794275180128377091639574036764685364535950857523710002444946112771297432041422848) (+.f64 z x) (if (<=.f64 x 6646503447125879/429049853758163107186368799942587076079339706258956588087153966199096448962353503257659977541340909686081019461967553627320124249982290238285876768194691072) (+.f64 (sin.f64 y) z) (if (<=.f64 x 5405511905847443/383123885216472214589586756787577295904684780545900544) (*.f64 (cos.f64 y) z) (+.f64 z x))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z -24910594584411088/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 z x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 y x) z) (*.f64 (cos.f64 y) z))))
(if (<=.f64 y -25689418592315446358799742655038447386956576108065566565160052009680396938462180999012810752) (+.f64 z x) (if (<=.f64 y 1114836091250946080768) (+.f64 (+.f64 y x) z) (+.f64 z x)))
(if (<=.f64 x -2060630626285849/23689546086131422960647270026588478931532074235789438036179382904450240366918592625898413220651954314430049601701829119967217713075482397330387684250506304003974227539380644310764545984368872754291732775783027172102246808682496) (+.f64 z x) (if (<=.f64 x 98335285429854288/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 z y) (+.f64 z x)))
(if (<=.f64 x -19638495436571101496344576/131072) x (if (<=.f64 x 8379424389580967/81129638414606681695789005144064) (+.f64 z y) x))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 y x) z))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 412258194365632704/18446744073709551616) x z))
(if (<=.f64 z -681725712721215/15829145694278690179872161345257420162248406342477557754500035589945422406818039498900249667919554879334250971265032917718487362195632077437922953926521162746662833417516744704) z (if (<=.f64 z 4900349402277373/44362715105933037753254626946289339254982993206013065202727673289833940924890009968639590497666233249558259375382457149263586525184) y z))
z
Outputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 x (+.f64 y (*.f64 z (cos.f64 y)))) (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 z (+.f64 x (sin.f64 y))) (+.f64 (sin.f64 y) (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 (+.f64 (*.f64 z (cos.f64 y)) y) x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))
(if (<=.f64 z -7242755417033766223831274867599068118272835604564222464887336329100580303667200) (+.f64 x (+.f64 y (*.f64 z (cos.f64 y)))) (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 z (+.f64 x (sin.f64 y))) (*.f64 z (cos.f64 y))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 z (cos.f64 y)) (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 z (+.f64 x (sin.f64 y))) (*.f64 z (cos.f64 y))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z -15955346731555301761805320764911926610926423267995187589630784258315433108288407310545558362274650064314307415236688216064) (+.f64 z x) (if (<=.f64 z -5883843877560113/34359738368) (*.f64 (cos.f64 y) z) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 z (cos.f64 y)) (if (<=.f64 z -15955346731555301761805320764911926610926423267995187589630784258315433108288407310545558362274650064314307415236688216064) (+.f64 z x) (if (<=.f64 z -5883843877560113/34359738368) (*.f64 z (cos.f64 y)) (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))))))
(if (<=.f64 x -8087095564791535/3794275180128377091639574036764685364535950857523710002444946112771297432041422848) (+.f64 z x) (if (<=.f64 x 6646503447125879/429049853758163107186368799942587076079339706258956588087153966199096448962353503257659977541340909686081019461967553627320124249982290238285876768194691072) (+.f64 (sin.f64 y) z) (if (<=.f64 x 5405511905847443/383123885216472214589586756787577295904684780545900544) (*.f64 (cos.f64 y) z) (+.f64 z x))))
(if (<=.f64 x -8087095564791535/3794275180128377091639574036764685364535950857523710002444946112771297432041422848) (+.f64 z x) (if (<=.f64 x 6646503447125879/429049853758163107186368799942587076079339706258956588087153966199096448962353503257659977541340909686081019461967553627320124249982290238285876768194691072) (+.f64 z (sin.f64 y)) (if (<=.f64 x 5405511905847443/383123885216472214589586756787577295904684780545900544) (*.f64 z (cos.f64 y)) (+.f64 z x))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 (cos.f64 y) z) (if (<=.f64 z -24910594584411088/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 z x) (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 (+.f64 y x) z) (*.f64 (cos.f64 y) z))))
(if (<=.f64 z -35619761263718767661620417645368222586316535060715050101043212951779148310253473353805502994517051424487252125978481359202772520390865236638788991634612266963543852771318956032) (*.f64 z (cos.f64 y)) (if (<=.f64 z -1556912161525693/3599131035634557106248430806148785487095757694641533306480604458089470064537190296255232548883112685719936728506816716098566612844395439751206812144692131084107776) (+.f64 z x) (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 z (+.f64 y x)) (*.f64 z (cos.f64 y)))))
(if (<=.f64 y -25689418592315446358799742655038447386956576108065566565160052009680396938462180999012810752) (+.f64 z x) (if (<=.f64 y 1114836091250946080768) (+.f64 (+.f64 y x) z) (+.f64 z x)))
(if (<=.f64 y -25689418592315446358799742655038447386956576108065566565160052009680396938462180999012810752) (+.f64 z x) (if (<=.f64 y 1114836091250946080768) (+.f64 z (+.f64 y x)) (+.f64 z x)))
(if (<=.f64 x -2060630626285849/23689546086131422960647270026588478931532074235789438036179382904450240366918592625898413220651954314430049601701829119967217713075482397330387684250506304003974227539380644310764545984368872754291732775783027172102246808682496) (+.f64 z x) (if (<=.f64 x 98335285429854288/57586096570152913699974892898380567793532123114264532903689671329431521032595044740083720782129802971518987656109067457577065805510327036019308994315074097345724416) (+.f64 z y) (+.f64 z x)))
(if (<=.f64 x -2060630626285849/23689546086131422960647270026588478931532074235789438036179382904450240366918592625898413220651954314430049601701829119967217713075482397330387684250506304003974227539380644310764545984368872754291732775783027172102246808682496) (+.f64 z x) (if (<=.f64 x 6145955339365893/3599131035634557106248430806148785487095757694641533306480604458089470064537190296255232548883112685719936728506816716098566612844395439751206812144692131084107776) (+.f64 z y) (+.f64 z x)))
(if (<=.f64 x -19638495436571101496344576/131072) x (if (<=.f64 x 8379424389580967/81129638414606681695789005144064) (+.f64 z y) x))
(if (<=.f64 x -149829829685753643008) x (if (<=.f64 x 8379424389580967/81129638414606681695789005144064) (+.f64 z y) x))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 412258194365632704/18446744073709551616) (+.f64 y x) z))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 6441534286963011/288230376151711744) (+.f64 y x) z))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 412258194365632704/18446744073709551616) x z))
(if (<=.f64 z -8700282810002359/75557863725914323419136) z (if (<=.f64 z 6441534286963011/288230376151711744) x z))
(if (<=.f64 z -681725712721215/15829145694278690179872161345257420162248406342477557754500035589945422406818039498900249667919554879334250971265032917718487362195632077437922953926521162746662833417516744704) z (if (<=.f64 z 4900349402277373/44362715105933037753254626946289339254982993206013065202727673289833940924890009968639590497666233249558259375382457149263586525184) y z))
z
Compiler

Compiled 313 to 180 computations (42.5% saved)

soundness9.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
+-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0914
11412
22312
32912
Stop Event
saturated
Compiler

Compiled 35 to 23 computations (34.3% saved)

end115.0ms (1.1%)

Compiler

Compiled 271 to 102 computations (62.4% saved)

Profiling

Loading profile data...