Details

Time bar (total: 9.0s)

analyze252.0ms (2.8%)

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.4s (26.6%)

Results
1.3s6217×body256valid
852.0ms1345×body1024valid
247.0ms691×body512valid
3.0msbody2048valid

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

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series15.0ms (0.2%)

Counts
4 → 80
Calls

24 calls:

TimeVariablePointExpression
5.0ms
z
@0
(*.f64 z (cos.f64 y))
1.0ms
y
@0
(*.f64 z (cos.f64 y))
1.0ms
y
@0
(sin.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))

rewrite91.0ms (1%)

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

simplify226.0ms (2.5%)

Algorithm
egg-herbie
Rules
721×cube-prod_binary64
656×sqr-pow_binary64
511×fabs-mul_binary64
434×pow-sqr_binary64
416×unpow3_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
059722
1160716
2411712
31333711
42051711
52972711
63122711
73321711
83526711
93796711
104174711
114641711
125205711
135893711
146402711
156793711
167183711
177635711
Stop Event
node limit
Counts
272 → 227
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))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(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)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) z)
(+.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 (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 1/24 (pow.f64 y 4))))
(*.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) 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 z (+.f64 y 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 z (+.f64 x (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(+.f64 y (+.f64 (fma.f64 -1/2 (*.f64 y (*.f64 y z)) z) x))
(+.f64 y (+.f64 (fma.f64 z (*.f64 y (*.f64 y -1/2)) 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))))
(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)))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(+.f64 y (+.f64 (fma.f64 -1/2 (*.f64 y (*.f64 y z)) z) (fma.f64 -1/6 (pow.f64 y 3) x)))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) x) (+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) 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 (*.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))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(fma.f64 -1/6 (pow.f64 y 3) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (*.f64 -1/5040 (pow.f64 y 7))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) y)))
(fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/5040 (pow.f64 y 7) y)))
(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 (fma.f64 -1/6 (pow.f64 y 3) 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 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 1/120 (pow.f64 y 5) x))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/6 (pow.f64 y 3) x))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.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)

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (sin.f64 y))
0.0b
(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
0.0ms
z
@0
(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
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)))
0.0ms
z
@-inf
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))

rewrite55.0ms (0.6%)

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

simplify132.0ms (1.5%)

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

eval79.0ms (0.9%)

Compiler

Compiled 5111 to 1695 computations (66.8% saved)

prune71.0ms (0.8%)

Pruning

17 alts after pruning (16 fresh and 1 done)

PrunedKeptTotal
New34316359
Fresh000
Picked101
Done011
Total34417361
Error
0.0b
Counts
361 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
0.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
28.2b
(fma.f64 (cos.f64 y) z (sin.f64 y))
24.7b
(+.f64 y (+.f64 z x))
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.1b
(+.f64 (sin.f64 y) x)
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
17.3b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
21.5b
(+.f64 z x)
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
34.5b
x
0.5b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
36.9b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
36.7b
(*.f64 (cos.f64 y) z)
0.1b
(+.f64 (+.f64 x (expm1.f64 (log1p.f64 (sin.f64 y)))) (*.f64 z (cos.f64 y)))
26.8b
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
38.7b
(/.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))))
33.1b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
Compiler

Compiled 440 to 281 computations (36.1% saved)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 38 to 10 computations (73.7% saved)

series57.0ms (0.6%)

Counts
3 → 60
Calls

15 calls:

TimeVariablePointExpression
26.0ms
y
@inf
(log1p.f64 (sin.f64 y))
24.0ms
y
@-inf
(log1p.f64 (sin.f64 y))
3.0ms
x
@0
(+.f64 (+.f64 x (expm1.f64 (log1p.f64 (sin.f64 y)))) (*.f64 z (cos.f64 y)))
1.0ms
y
@0
(log1p.f64 (sin.f64 y))
0.0ms
y
@0
(expm1.f64 (log1p.f64 (sin.f64 y)))

rewrite75.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
535×log-prod_binary64
507×fma-def_binary64
393×pow-prod-down_binary64
300×pow2_binary64
258×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify146.0ms (1.6%)

Algorithm
egg-herbie
Rules
825×fma-def_binary64
691×distribute-lft-out_binary64
633×*-commutative_binary64
432×sqr-pow_binary64
364×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
055555
1138551
2328549
31028540
42809540
54288540
65054540
75501540
85953540
96448540
106968540
117775540
Stop Event
node limit
Counts
196 → 167
Calls
Call 1
Inputs
y
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) y)
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 y (*.f64 1/6 (pow.f64 y 3))))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 y (+.f64 (*.f64 1/6 (pow.f64 y 3)) (*.f64 -1/12 (pow.f64 y 4)))))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
(log.f64 (+.f64 1 (sin.f64 y)))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(+.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))
Outputs
y
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) y)
(fma.f64 -1/2 (*.f64 y y) y)
(fma.f64 y (*.f64 y -1/2) y)
(*.f64 y (fma.f64 y -1/2 1))
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 y (*.f64 1/6 (pow.f64 y 3))))
(fma.f64 -1/2 (*.f64 y y) (+.f64 y (*.f64 1/6 (pow.f64 y 3))))
(fma.f64 -1/2 (*.f64 y y) (fma.f64 1/6 (pow.f64 y 3) y))
(fma.f64 y (*.f64 y -1/2) (fma.f64 1/6 (pow.f64 y 3) y))
(fma.f64 (*.f64 y y) (fma.f64 y 1/6 -1/2) y)
(fma.f64 y (*.f64 y (fma.f64 y 1/6 -1/2)) y)
(+.f64 (*.f64 -1/2 (pow.f64 y 2)) (+.f64 y (+.f64 (*.f64 1/6 (pow.f64 y 3)) (*.f64 -1/12 (pow.f64 y 4)))))
(+.f64 (fma.f64 -1/2 (*.f64 y y) y) (fma.f64 1/6 (pow.f64 y 3) (*.f64 -1/12 (pow.f64 y 4))))
(fma.f64 y (*.f64 y -1/2) (fma.f64 -1/12 (pow.f64 y 4) (fma.f64 1/6 (pow.f64 y 3) y)))
(fma.f64 (*.f64 y y) (fma.f64 y 1/6 -1/2) (fma.f64 -1/12 (pow.f64 y 4) y))
(fma.f64 y (*.f64 y (fma.f64 y 1/6 -1/2)) (fma.f64 -1/12 (pow.f64 y 4) y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
(log.f64 (+.f64 1 (sin.f64 y)))
(log1p.f64 (sin.f64 y))
y
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(fma.f64 -1/6 (pow.f64 y 3) y)
(fma.f64 (pow.f64 y 3) -1/6 y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y))
(fma.f64 (pow.f64 y 3) -1/6 (fma.f64 1/120 (pow.f64 y 5) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 1/120 (pow.f64 y 5)) (+.f64 y (*.f64 -1/5040 (pow.f64 y 7)))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (*.f64 -1/5040 (pow.f64 y 7))))
(fma.f64 (pow.f64 y 3) -1/6 (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) y)))
(fma.f64 -1/5040 (pow.f64 y 7) (fma.f64 (pow.f64 y 3) -1/6 (fma.f64 1/120 (pow.f64 y 5) y)))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) 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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (+.f64 y x) z)
(+.f64 z (+.f64 y x))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x)))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (+.f64 y (+.f64 z x)))
(+.f64 (+.f64 z x) (fma.f64 -1/2 (*.f64 (*.f64 z y) y) y))
(+.f64 y (fma.f64 (*.f64 y y) (*.f64 -1/2 z) (+.f64 z x)))
(+.f64 y (+.f64 z (fma.f64 y (*.f64 y (*.f64 -1/2 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))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 (*.f64 y y) z) (+.f64 y (+.f64 z x))))
(fma.f64 (pow.f64 y 3) -1/6 (+.f64 (+.f64 z x) (fma.f64 -1/2 (*.f64 (*.f64 z y) y) y)))
(+.f64 (fma.f64 (pow.f64 y 3) -1/6 y) (fma.f64 (*.f64 y y) (*.f64 -1/2 z) (+.f64 z x)))
(+.f64 y (fma.f64 (*.f64 y y) (fma.f64 -1/2 z (*.f64 y -1/6)) (+.f64 z x)))
(fma.f64 (*.f64 y y) (fma.f64 -1/2 z (*.f64 y -1/6)) (+.f64 z (+.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 z (cos.f64 y) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.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 (sin.f64 y) (fma.f64 z (cos.f64 y) x))

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (sin.f64 y) x)
0.0b
(sin.f64 y)
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
y
@-inf
(+.f64 (sin.f64 y) x)
0.0ms
x
@-inf
(+.f64 (sin.f64 y) x)

rewrite47.0ms (0.5%)

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

simplify159.0ms (1.8%)

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

localize19.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
0.1b
(*.f64 -1/6 (pow.f64 y 3))
Compiler

Compiled 43 to 24 computations (44.2% saved)

series6.0ms (0.1%)

Counts
2 → 36
Calls

12 calls:

TimeVariablePointExpression
1.0ms
y
@0
(*.f64 -1/6 (pow.f64 y 3))
1.0ms
z
@0
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
1.0ms
y
@-inf
(*.f64 -1/6 (pow.f64 y 3))
1.0ms
y
@inf
(*.f64 -1/6 (pow.f64 y 3))
1.0ms
x
@0
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))

rewrite68.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
584×log-prod_binary64
566×fma-def_binary64
343×pow2_binary64
308×fma-neg_binary64
235×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify136.0ms (1.5%)

Algorithm
egg-herbie
Rules
635×associate-*l*_binary64
536×unswap-sqr_binary64
518×distribute-lft-out_binary64
429×distribute-rgt-out_binary64
425×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
026495
174495
2190495
3576492
41380492
53113492
65236492
76571492
86865492
97172492
107555492
Stop Event
node limit
Counts
86 → 69
Calls
Call 1
Inputs
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.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/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y (+.f64 z x))))
(*.f64 -1/6 (pow.f64 y 3))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(*.f64 -1/6 (pow.f64 y 3))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
x
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
x
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
Outputs
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(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 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 z x)
(+.f64 x z)
(+.f64 y (+.f64 z x))
(+.f64 y (+.f64 x 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 y (*.f64 y z)) y))
(+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) y))
(+.f64 y (+.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))
(+.f64 y (+.f64 z (fma.f64 z (*.f64 -1/2 (*.f64 y y)) x)))
(+.f64 y (+.f64 x (fma.f64 y (*.f64 y (*.f64 z -1/2)) z)))
(+.f64 x (fma.f64 y (*.f64 y (*.f64 z -1/2)) (+.f64 y 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 y (+.f64 x z))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 x z) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.f64 x z)))
(+.f64 y (+.f64 z (fma.f64 (*.f64 y y) (fma.f64 -1/6 y (*.f64 z -1/2)) x)))
(*.f64 -1/6 (pow.f64 y 3))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(fma.f64 -1/6 (pow.f64 y 3) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(*.f64 -1/6 (pow.f64 y 3))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) y)
(fma.f64 -1/6 (pow.f64 y 3) y)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) y))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
x
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
x
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (fma.f64 (cos.f64 y) z y) x))
(+.f64 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)) x)
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (cos.f64 y) z x)))

localize15.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 33 to 9 computations (72.7% saved)

series11.0ms (0.1%)

Counts
2 → 37
Calls

15 calls:

TimeVariablePointExpression
2.0ms
z
@-inf
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
2.0ms
y
@-inf
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
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
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
1.0ms
y
@inf
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))

rewrite63.0ms (0.7%)

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
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
(*.f64 (cos.f64 y) (sqrt.f64 z))
Outputs
((#(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))))))
((#(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))))))

simplify157.0ms (1.7%)

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

Useful iterations: 9 (0.0ms)

IterNodesCost
041425
1103420
2283407
3990399
42542399
53359399
63514399
73663399
83829399
94053393
105454393
115834393
126309393
136862393
147609393
Stop Event
node limit
Counts
92 → 78
Calls
Call 1
Inputs
(+.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))
(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))
Outputs
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 (+.f64 z x) y)
(+.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 (+.f64 z x) y))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (+.f64 x y)))
(+.f64 z (+.f64 x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 (+.f64 z y) (fma.f64 (*.f64 y -1/2) (*.f64 z y) x))
(+.f64 x (fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) y))
(+.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 (+.f64 z x) y)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (+.f64 x y))))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) (+.f64 x y)))
(+.f64 z (fma.f64 y (fma.f64 y (fma.f64 z -1/2 (*.f64 y -1/6)) 1) 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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (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)))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(sqrt.f64 z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) (sqrt.f64 z))) (sqrt.f64 z))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z))
(*.f64 (+.f64 (*.f64 -1/2 (*.f64 y y)) 1) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 (sqrt.f64 z) (fma.f64 y (*.f64 y -1/2) 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 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) (*.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 y (*.f64 y (sqrt.f64 z))) (fma.f64 1/24 (*.f64 (sqrt.f64 z) (pow.f64 y 4)) (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) 1)))
(*.f64 (sqrt.f64 z) (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (sqrt.f64 z) (fma.f64 y (fma.f64 y -1/2 (*.f64 (pow.f64 y 3) 1/24)) 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 (*.f64 y y) (sqrt.f64 z)) (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 y (*.f64 y -1/2)))))
(*.f64 (sqrt.f64 z) (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 1/24 (pow.f64 y 4) 1))))
(*.f64 (sqrt.f64 z) (fma.f64 y (fma.f64 -1/720 (pow.f64 y 5) (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 (sqrt.f64 z) (fma.f64 y (*.f64 y -1/2) (fma.f64 -1/720 (pow.f64 y 6) (fma.f64 1/24 (pow.f64 y 4) 1))))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (cos.f64 y))
(*.f64 (cos.f64 y) (sqrt.f64 z))

eval170.0ms (1.9%)

Compiler

Compiled 7602 to 2780 computations (63.4% saved)

prune296.0ms (3.3%)

Pruning

22 alts after pruning (18 fresh and 4 done)

PrunedKeptTotal
New50113514
Fresh6511
Picked101
Done145
Total50922531
Error
0.0b
Counts
531 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
24.7b
(+.f64 y (+.f64 z x))
36.7b
(*.f64 (cos.f64 y) z)
33.3b
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) (sqrt.f64 z))) 3) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
0.5b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 (sin.f64 y) x))
38.7b
(/.f64 1 (/.f64 (fma.f64 (*.f64 z (cos.f64 y)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x)) (pow.f64 (+.f64 (sin.f64 y) x) 2)) (+.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3))))
36.9b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
0.6b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
28.2b
(fma.f64 (cos.f64 y) z (sin.f64 y))
17.3b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 (sin.f64 y) x))
26.8b
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.1b
(+.f64 (sin.f64 y) x)
0.3b
(fma.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)) (+.f64 (sin.f64 y) x))
37.1b
(+.f64 y x)
34.5b
x
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
54.1b
(sin.f64 y)
0.3b
(fma.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z) (+.f64 (sin.f64 y) x))
21.5b
(+.f64 z x)
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
42.1b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 y x))
26.1b
(+.f64 (expm1.f64 (log1p.f64 (sin.f64 y))) x)
Compiler

Compiled 529 to 337 computations (36.3% saved)

localize25.0ms (0.3%)

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.4b
(cbrt.f64 (cos.f64 y))
Compiler

Compiled 49 to 22 computations (55.1% saved)

series21.0ms (0.2%)

Counts
4 → 52
Calls

15 calls:

TimeVariablePointExpression
4.0ms
y
@-inf
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
3.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
@inf
(cbrt.f64 (cos.f64 y))
2.0ms
y
@inf
(*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2)))

rewrite142.0ms (1.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)))))))

simplify92.0ms (1%)

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)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series4.0ms (0%)

Counts
2 → 19
Calls

12 calls:

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

rewrite71.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
803×pow1_binary64
742×add-log-exp_binary64
742×log1p-expm1-u_binary64
742×expm1-log1p-u_binary64
725×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify128.0ms (1.4%)

Algorithm
egg-herbie
Rules
765×fma-def_binary64
745×distribute-rgt-out_binary64
687×associate-*l*_binary64
565×distribute-lft-out_binary64
527×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
034171
186167
2240159
3835155
43973155
56847155
67098155
77367155
87637155
97989155
Stop Event
node limit
Counts
65 → 62
Calls
Call 1
Inputs
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 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
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)))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) z)
(*.f64 z (fma.f64 y (*.f64 -1/2 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 z (*.f64 y y)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 y (*.f64 -1/2 y)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (fma.f64 1/24 (pow.f64 y 4) (fma.f64 y (*.f64 -1/2 y) 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 z (*.f64 y y)) (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)))))
(fma.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))) z)
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
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))
(fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z y)
(fma.f64 z (fma.f64 y (*.f64 -1/2 y) 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) (fma.f64 (fma.f64 -1/2 (*.f64 y y) 1) z y))
(+.f64 z (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) y))
(sin.f64 y)
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
0.2b
(*.f64 z (cos.f64 y))
0.6b
(cbrt.f64 (*.f64 z (cos.f64 y)))
0.8b
(pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3)
Compiler

Compiled 43 to 14 computations (67.4% saved)

series22.0ms (0.2%)

Counts
3 → 51
Calls

21 calls:

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

rewrite86.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
574×log-prod_binary64
548×fma-def_binary64
439×pow-prod-down_binary64
321×pow2_binary64
260×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify76.0ms (0.8%)

Algorithm
egg-herbie
Rules
791×associate-*r*_binary64
763×associate-*l*_binary64
644×fma-def_binary64
280×associate-+l+_binary64
275×associate-+r+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0104817
1338738
21111686
36650686
Stop Event
node limit
Counts
208 → 190
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(pow.f64 z 1/3)
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(+.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))
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 y (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.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 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
Outputs
(*.f64 (pow.f64 1 1/3) z)
z
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) z)
(fma.f64 z (*.f64 (*.f64 y y) -1/2) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (fma.f64 z 1/18 (*.f64 z -1/72))) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z))
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (*.f64 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) -1/9)) (+.f64 (*.f64 1/3 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (fma.f64 -1/6 (*.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))) (*.f64 -1/9 (*.f64 z -1/24))))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72))) (*.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 (*.f64 z -1/24) -1/9))) (fma.f64 1/3 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (fma.f64 (*.f64 -1/6 (cbrt.f64 z)) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 (*.f64 z -1/24) -1/9)))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)))
(fma.f64 (fma.f64 1/3 (*.f64 z -23/2160) (fma.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (/.f64 1 z)) (+.f64 (*.f64 2/3 (*.f64 z -23/2160)) (*.f64 z 1/216))) (fma.f64 (cbrt.f64 z) (*.f64 -1/6 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))) (*.f64 z 1/216)))) (pow.f64 y 6) (fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (fma.f64 z 1/18 (*.f64 z -1/72))) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(pow.f64 z 1/3)
(cbrt.f64 z)
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))
(+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z))))
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)))))
(fma.f64 1/3 (*.f64 (pow.f64 y 4) (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 (*.f64 z z))))) (fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)))
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (fma.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/72) (pow.f64 y 4)) (cbrt.f64 z)))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24)))) (pow.f64 y 6))) (fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z))))))
(+.f64 (fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)) (*.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (+.f64 (*.f64 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (pow.f64 y 6)) (*.f64 z (*.f64 -1/24 (pow.f64 y 4))))))
(fma.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (fma.f64 (*.f64 z -23/2160) (pow.f64 y 6) (*.f64 z (*.f64 (pow.f64 y 4) -1/24))) (fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (*.f64 z (cos.f64 y)) (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
x
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (*.f64 (pow.f64 1 1/3) z) x)
(+.f64 z x)
(+.f64 y (+.f64 (*.f64 (pow.f64 1 1/3) z) x))
(+.f64 (+.f64 y z) x)
(+.f64 x (+.f64 z y))
(+.f64 z (+.f64 y x))
(+.f64 y (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (pow.f64 1 1/3) z) x)))
(+.f64 y (fma.f64 (*.f64 z -1/2) (*.f64 y y) (+.f64 z x)))
(fma.f64 z (*.f64 (*.f64 y y) -1/2) (+.f64 z (+.f64 y x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (pow.f64 1 1/3) z) x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 (*.f64 z -1/2) (*.f64 y y) (+.f64 z x))))
(+.f64 (fma.f64 (*.f64 z -1/2) (*.f64 y y) (+.f64 z x)) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 (*.f64 y y) -1/2) y)))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (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) (+.f64 (*.f64 z (cos.f64 y)) x))
(+.f64 (sin.f64 y) (fma.f64 z (cos.f64 y) x))
(+.f64 x (fma.f64 z (cos.f64 y) (sin.f64 y)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)

localize56.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)) (+.f64 (sin.f64 y) x))
0.1b
(*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2))
0.3b
(pow.f64 (cbrt.f64 (cos.f64 y)) 2)
0.4b
(cbrt.f64 (cos.f64 y))
Compiler

Compiled 45 to 17 computations (62.2% saved)

series62.0ms (0.7%)

Counts
3 → 72
Calls

18 calls:

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

rewrite73.0ms (0.8%)

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

Useful iterations: 2 (0.0ms)

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

simplify367.0ms (4.1%)

Algorithm
egg-herbie
Rules
719×sqr-pow_binary64
473×cube-prod_binary64
418×*-commutative_binary64
379×associate-+l+_binary64
325×pow-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
063886
1183789
2484780
31620778
42679778
53606778
63932778
74216778
84499778
94864778
105330778
115939778
126547778
137271778
147654778
Stop Event
node limit
Counts
141 → 101
Calls
Call 1
Inputs
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)
(*.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)
(+.f64 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 y (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1/6 z) (*.f64 -1/3 z))) (+.f64 z x)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1/6 z) (*.f64 -1/3 z))) (+.f64 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 z (cos.f64 y))) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
Outputs
1
(+.f64 1 (*.f64 -1/3 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/3 (*.f64 y y)))
(fma.f64 -1/3 (*.f64 y y) 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 -1/405 (pow.f64 y 6))))
(+.f64 (fma.f64 -1/3 (*.f64 y y) 1) (*.f64 -1/405 (pow.f64 y 6)))
(fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 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 -1/405 (pow.f64 y 6)))))
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 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))
(*.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 -1/3 (*.f64 y y) 1) z)
(fma.f64 (*.f64 y y) (*.f64 -1/3 z) z)
(fma.f64 y (*.f64 -1/3 (*.f64 y 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 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6)))))
(*.f64 z (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 1)))
(*.f64 (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 1)) z)
(fma.f64 z (fma.f64 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6))) 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 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6)))) (fma.f64 -1/1701 (*.f64 (pow.f64 y 8) z) z))
(+.f64 z (*.f64 z (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6))))))
(*.f64 z (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 1))))
(*.f64 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 1))) 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 (sin.f64 y) x)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 1 (*.f64 (cos.f64 y) z))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 1 (*.f64 (cos.f64 y) z))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 z x)
(+.f64 y (+.f64 z x))
(+.f64 y (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1/6 z) (*.f64 -1/3 z))) (+.f64 z x)))
(+.f64 y (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z x)))
(+.f64 y (+.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)))
(+.f64 y (+.f64 x (fma.f64 y (*.f64 y (*.f64 z -1/2)) z)))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y (+.f64 (*.f64 (pow.f64 y 2) (+.f64 (*.f64 -1/6 z) (*.f64 -1/3 z))) (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z x))))
(+.f64 (+.f64 x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z)) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 x (+.f64 (fma.f64 y (*.f64 y (*.f64 z -1/2)) z) (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (*.f64 y y) (*.f64 z -1/2) y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z x))))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (sin.f64 y) (+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (sin.f64 y))
(fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y))) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 1 (*.f64 (cos.f64 y) z) (sin.f64 y)) x)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))

eval266.0ms (2.9%)

Compiler

Compiled 10091 to 3955 computations (60.8% saved)

prune191.0ms (2.1%)

Pruning

24 alts after pruning (18 fresh and 6 done)

PrunedKeptTotal
New56913582
Fresh8513
Picked101
Done268
Total58024604
Error
0.0b
Counts
604 → 24
Alt Table
Click to see full alt table
StatusErrorProgram
24.7b
(+.f64 y (+.f64 z x))
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3) (+.f64 x (sin.f64 y)))
33.3b
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) (sqrt.f64 z))) 3) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
28.7b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3) (sin.f64 y))
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
36.7b
(*.f64 (cos.f64 y) z)
0.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
34.5b
x
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.1b
(+.f64 (sin.f64 y) x)
47.9b
(+.f64 z y)
17.3b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
28.2b
(fma.f64 (cos.f64 y) z (sin.f64 y))
17.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
54.1b
(sin.f64 y)
21.5b
(+.f64 z x)
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y))))
48.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2) (sin.f64 y))
42.1b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 y x))
26.8b
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
37.1b
(+.f64 y x)
26.1b
(+.f64 (expm1.f64 (log1p.f64 (sin.f64 y))) x)
Compiler

Compiled 531 to 362 computations (31.8% saved)

localize45.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y))))))
0.3b
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))
0.4b
(cbrt.f64 (cos.f64 y))
0.4b
(+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y))))
Compiler

Compiled 79 to 53 computations (32.9% saved)

series16.0ms (0.2%)

Counts
3 → 40
Calls

12 calls:

TimeVariablePointExpression
5.0ms
z
@0
(*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y))))))
2.0ms
y
@inf
(*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y))))))
2.0ms
y
@-inf
(*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y))))))
2.0ms
y
@inf
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))
2.0ms
y
@-inf
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))

rewrite86.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
522×log-prod_binary64
317×prod-diff_binary64
297×pow-prod-down_binary64
290×pow2_binary64
205×expm1-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify108.0ms (1.2%)

Algorithm
egg-herbie
Rules
818×fma-def_binary64
504×fma-neg_binary64
474×distribute-rgt-neg-in_binary64
438×cancel-sign-sub-inv_binary64
379×sub-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
054624
1131553
2335542
31044540
42520540
53730540
65752540
77307540
Stop Event
node limit
Counts
149 → 133
Calls
Call 1
Inputs
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)))))
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 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 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 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
Outputs
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))))
(fma.f64 -1 (*.f64 y y) (+.f64 1 (*.f64 1/3 (pow.f64 y 4))))
(-.f64 (fma.f64 1/3 (pow.f64 y 4) 1) (*.f64 y y))
(-.f64 (*.f64 1/3 (pow.f64 y 4)) (fma.f64 y y -1))
(-.f64 1 (fma.f64 y y (*.f64 (pow.f64 y 4) -1/3)))
(fma.f64 y (fma.f64 1/3 (pow.f64 y 3) (neg.f64 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 1/3 (pow.f64 y 4))))
(+.f64 (-.f64 1 (*.f64 y y)) (fma.f64 -2/45 (pow.f64 y 6) (*.f64 1/3 (pow.f64 y 4))))
(-.f64 (fma.f64 1/3 (pow.f64 y 4) (fma.f64 -2/45 (pow.f64 y 6) 1)) (*.f64 y y))
(-.f64 (fma.f64 1/3 (pow.f64 y 4) (*.f64 -2/45 (pow.f64 y 6))) (fma.f64 y y -1))
(-.f64 (fma.f64 1/3 (pow.f64 y 4) 1) (fma.f64 y y (*.f64 (pow.f64 y 6) 2/45)))
(fma.f64 y (fma.f64 1/3 (pow.f64 y 3) (neg.f64 y)) (fma.f64 -2/45 (pow.f64 y 6) 1))
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 (fma.f64 (*.f64 y y) -1/3 1) (*.f64 (pow.f64 y 6) -1/405))
(fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1))
(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 (*.f64 y y) -1/3 (*.f64 (pow.f64 y 6) -1/405))))
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 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 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(pow.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1/3)
(cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2)))))
(cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2))
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/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)
(*.f64 (fma.f64 y (*.f64 y -1/3) 1) z)
(fma.f64 (*.f64 y 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 (*.f64 y y) -1/3 (*.f64 (pow.f64 y 6) -1/405))))
(*.f64 z (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1)))
(*.f64 (fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1)) 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 (*.f64 y y) -1/3 (*.f64 (pow.f64 y 6) -1/405))) (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)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)
(*.f64 (pow.f64 (*.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))) 1) 1/3) z)
(*.f64 (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 y 2))))) z)
(*.f64 (cbrt.f64 (fma.f64 1/2 (cos.f64 (*.f64 y 2)) 1/2)) z)

localize8.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize24.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite59.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
695×pow1_binary64
645×add-log-exp_binary64
645×expm1-log1p-u_binary64
644×log1p-expm1-u_binary64
630×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
076
11286
217216
Stop Event
node limit
Counts
1 → 35
Calls
Call 1
Inputs
(+.f64 (expm1.f64 (log1p.f64 (sin.f64 y))) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (sin.f64 y) 1) (-.f64 1 x))))) (#(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 x (+.f64 (sin.f64 y) 1)) 1)))) (#(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 x) 2) (cbrt.f64 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 (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)))))

simplify165.0ms (1.8%)

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
59 → 45
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)
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 (*.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)))
(fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) (+.f64 x y)))
(+.f64 y (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) 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))

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 29 to 8 computations (72.4% saved)

series3.0ms (0%)

Counts
1 → 25
Calls

9 calls:

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

rewrite55.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
571×prod-diff_binary64
457×log-prod_binary64
340×exp-prod_binary64
321×pow-prod-down_binary64
253×pow2_binary64
Iterations

Useful iterations: 2 (0.0ms)

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

simplify202.0ms (2.2%)

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

Useful iterations: 19 (0.0ms)

IterNodesCost
026220
166220
2172218
3478218
41535218
52249218
63416218
73497218
83631218
93781218
104013218
114304218
124653218
135027218
145510218
156099218
166815218
177141218
187405218
197619213
Stop Event
node limit
Counts
63 → 52
Calls
Call 1
Inputs
(+.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 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 z x)
(+.f64 y (+.f64 z x))
(+.f64 (+.f64 z x) y)
(+.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 (+.f64 z x) y))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (+.f64 x y)))
(+.f64 x (+.f64 z (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(+.f64 x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) (+.f64 z y)))
(+.f64 z (+.f64 y (fma.f64 y (*.f64 -1/2 (*.f64 z y)) x)))
(+.f64 (+.f64 x y) (fma.f64 y (*.f64 -1/2 (*.f64 z y)) z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (+.f64 x y))
(+.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 (fma.f64 (fma.f64 1/24 (pow.f64 y 4) 1) z x) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) (+.f64 x y)))
(+.f64 (fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) x) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y))
(+.f64 x (fma.f64 z (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) y)))
(fma.f64 y (fma.f64 z (*.f64 y (fma.f64 (*.f64 y y) 1/24 -1/2)) 1) (+.f64 z x))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
y
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 y x)
(+.f64 x y)
(+.f64 (*.f64 (cos.f64 y) z) y)
(fma.f64 (cos.f64 y) z y)
(fma.f64 z (cos.f64 y) y)
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
x
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 y x))
(+.f64 (fma.f64 (cos.f64 y) z y) x)
(fma.f64 z (cos.f64 y) (+.f64 x y))
(+.f64 x (fma.f64 z (cos.f64 y) y))

localize24.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 57 to 22 computations (61.4% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite65.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
096
11816
220116
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.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)) 3) 1/3)))) (#(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 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 cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (cos.f64 y) (*.f64 (pow.f64 (*.f64 z (cos.f64 y)) 2) z)))))) (#(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))))))))

simplify160.0ms (1.8%)

Algorithm
egg-herbie
Rules
779×distribute-lft-out_binary64
755×*-commutative_binary64
526×associate-+l+_binary64
521×distribute-rgt-out_binary64
499×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
026188
163184
2167180
3534177
42189177
54362177
64594177
74886177
85259177
95656177
106047177
117566177
127998177
Stop Event
node limit
Counts
37 → 22
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 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
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)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 z (fma.f64 y (*.f64 y -1/2) 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 z (fma.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 y (*.f64 y -1/2) (*.f64 -1/720 (pow.f64 y 6)))))
(*.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 y (*.f64 y -1/2) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(*.f64 (cos.f64 y) z)

eval346.0ms (3.8%)

Compiler

Compiled 8712 to 3877 computations (55.5% saved)

prune189.0ms (2.1%)

Pruning

26 alts after pruning (16 fresh and 10 done)

PrunedKeptTotal
New5176523
Fresh31013
Picked011
Done1910
Total52126547
Error
0.0b
Counts
547 → 26
Alt Table
Click to see full alt table
StatusErrorProgram
60.4b
y
48.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2) (sin.f64 y))
24.7b
(+.f64 y (+.f64 z x))
33.3b
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) (sqrt.f64 z))) 3) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
28.7b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3) (sin.f64 y))
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3) (+.f64 x (sin.f64 y)))
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
36.7b
(*.f64 (cos.f64 y) z)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.1b
(+.f64 (sin.f64 y) x)
47.9b
(+.f64 z y)
28.2b
(fma.f64 (cos.f64 y) z (sin.f64 y))
20.5b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))))
17.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
28.2b
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
54.1b
(sin.f64 y)
34.5b
x
21.5b
(+.f64 z x)
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y))))
17.3b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
42.1b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 y x))
0.2b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z) (cbrt.f64 (cos.f64 y))))
26.8b
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
37.1b
(+.f64 y x)
26.1b
(+.f64 (expm1.f64 (log1p.f64 (sin.f64 y))) x)
Compiler

Compiled 318 to 219 computations (31.1% saved)

regimes221.0ms (2.4%)

Counts
50 → 1
Calls
Call 1
Inputs
(/.f64 1 (/.f64 (fma.f64 (*.f64 z (cos.f64 y)) (-.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x)) (pow.f64 (+.f64 (sin.f64 y) x) 2)) (+.f64 (pow.f64 (+.f64 (sin.f64 y) x) 3) (pow.f64 (*.f64 z (cos.f64 y)) 3))))
(/.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))))
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3) (+.f64 x (sin.f64 y)))
(fma.f64 (*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 3) (+.f64 x (sin.f64 y)))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) (sqrt.f64 z))) 3) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
(fma.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z) (+.f64 (sin.f64 y) x))
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
(fma.f64 (*.f64 z (cbrt.f64 (+.f64 1/2 (*.f64 1/2 (cos.f64 (*.f64 2 y)))))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 (cbrt.f64 (pow.f64 (cos.f64 y) 2)) z) (cbrt.f64 (cos.f64 y))))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (pow.f64 (cbrt.f64 (cos.f64 y)) 2)) (cbrt.f64 (cos.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 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 (sin.f64 y) x))
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.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)) (+.f64 (sin.f64 y) x))
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 y x))
(+.f64 (+.f64 x (expm1.f64 (log1p.f64 (sin.f64 y)))) (*.f64 z (cos.f64 y)))
(+.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 y) z)) 3) (sin.f64 y))
(+.f64 (pow.f64 (sqrt.f64 (*.f64 (cos.f64 y) z)) 2) (sin.f64 y))
(fma.f64 z (cos.f64 y) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x)))
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (expm1.f64 (log1p.f64 (sin.f64 y))) x)
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(+.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
(sin.f64 y)
(+.f64 y (+.f64 z x))
(+.f64 y (+.f64 z x))
(+.f64 z y)
(+.f64 y x)
(+.f64 z x)
y
x
x
x
x
Outputs
(fma.f64 z (cos.f64 y) (+.f64 x (sin.f64 y)))
Calls

4 calls:

89.0ms
x
48.0ms
z
42.0ms
y
25.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 566 to 185 computations (67.3% saved)

regimes52.0ms (0.6%)

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

4 calls:

13.0ms
z
12.0ms
x
12.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
10.0ms
y
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 103 to 36 computations (65% saved)

regimes105.0ms (1.2%)

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

3 calls:

37.0ms
y
36.0ms
z
29.0ms
x
Results
ErrorSegmentsBranch
5.5b3x
9.0b4y
9.4b4z
Compiler

Compiled 64 to 21 computations (67.2% saved)

bsearch176.0ms (1.9%)

Algorithm
binary-search
Steps
TimeLeftRight
95.0ms
3.6713465662994665e+50
2.164716391439032e+57
81.0ms
-2.8939672978711524e+44
-3.8307441138161643e+43
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes24.0ms (0.3%)

Accuracy

Total -29.7b remaining (-90.8%)

Threshold costs -29.7b (-90.8%)

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

3 calls:

13.0ms
x
5.0ms
z
4.0ms
y
Results
ErrorSegmentsBranch
32.7b3x
34.5b1y
34.5b1z
Compiler

Compiled 20 to 12 computations (40% saved)

bsearch161.0ms (1.8%)

Algorithm
binary-search
Steps
TimeLeftRight
103.0ms
8.226831608733367e-96
3.90833115791255e-90
58.0ms
-6.657102180469003e-122
-1.1220569804581964e-147
Compiler

Compiled 18 to 13 computations (27.8% saved)

simplify10.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02673
13173
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 x -289396729787115242476744989871722436153573376) (+.f64 z x) (if (<=.f64 x 367134656629946648803695562342968255001604042784768) (+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y)) (+.f64 z x)))
(if (<=.f64 x -6193458760137719/93035356709837681990313447409664580397266094167976711716030745495121828878514934185752454491361736391777602765602070775492429008462675968) x (if (<=.f64 x 2473096237365769/300613450595050653169853516389035139504087366260264943450533244356122755214669880763353471793250393988087676928) y x))
x
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 x -289396729787115242476744989871722436153573376) (+.f64 z x) (if (<=.f64 x 367134656629946648803695562342968255001604042784768) (+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y)) (+.f64 z x)))
(if (<=.f64 x -289396729787115242476744989871722436153573376) (+.f64 z x) (if (<=.f64 x 367134656629946648803695562342968255001604042784768) (+.f64 (sin.f64 y) (*.f64 z (cos.f64 y))) (+.f64 z x)))
(if (<=.f64 x -6193458760137719/93035356709837681990313447409664580397266094167976711716030745495121828878514934185752454491361736391777602765602070775492429008462675968) x (if (<=.f64 x 2473096237365769/300613450595050653169853516389035139504087366260264943450533244356122755214669880763353471793250393988087676928) y x))
x
Compiler

Compiled 65 to 41 computations (36.9% saved)

soundness16.0ms (0.2%)

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)

end140.0ms (1.5%)

Compiler

Compiled 53 to 23 computations (56.6% saved)

Profiling

Loading profile data...