Details

Time bar (total: 8.6s)

analyze367.0ms (4.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
25%25%74.9%0.1%0%0%0%7
37.5%37.4%62.4%0.1%0%0%0%8
37.5%37.4%62.4%0.1%0%0%0%9
56.3%56.2%43.7%0.1%0%0%0%10
65.6%65.5%34.3%0.1%0%0%0%11
65.6%65.5%34.3%0.1%0%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample2.1s (24.5%)

Results
1.1s6198×body256valid
713.0ms1390×body1024valid
230.0ms663×body512valid
8.0msbody2048valid
Bogosity

preprocess20.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 15 to 11 computations (26.7% saved)

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

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 12 to 8 computations (33.3% saved)

localize13.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series12.0ms (0.1%)

Counts
3 → 76
Calls

21 calls:

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

rewrite78.0ms (0.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify164.0ms (1.9%)

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

Useful iterations: 3 (0.0ms)

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

eval62.0ms (0.7%)

Compiler

Compiled 2871 to 911 computations (68.3% saved)

prune70.0ms (0.8%)

Pruning

16 alts after pruning (15 fresh and 1 done)

PrunedKeptTotal
New17615191
Fresh000
Picked011
Done000
Total17616192
Error
0.0b
Counts
192 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
14.8b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
22.9b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)))
0.2b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
18.0b
(+.f64 (+.f64 y x) (*.f64 z (cos.f64 y)))
0.4b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
11.3b
(+.f64 (+.f64 x (sin.f64 y)) z)
0.1b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
30.9b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (+.f64 x (sin.f64 y)))
28.3b
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
25.0b
(+.f64 (sin.f64 y) x)
0.5b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (+.f64 x (sin.f64 y)))
30.1b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
24.4b
(+.f64 y (+.f64 z x))
21.1b
(+.f64 z x)
32.3b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) (*.f64 z (cos.f64 y)))
34.7b
x
Compiler

Compiled 368 to 247 computations (32.9% saved)

localize42.0ms (0.5%)

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

Compiled 49 to 22 computations (55.1% saved)

series32.0ms (0.4%)

Counts
4 → 52
Calls

15 calls:

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

rewrite114.0ms (1.3%)

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
2192130
Stop Event
node limit
Counts
4 → 76
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(cbrt.f64 (cos.f64 y))
(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 (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 (cbrt.f64 (cos.f64 y)) (cbrt.f64 (cos.f64 y)))))) (#(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 (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 (cbrt.f64 (cos.f64 y)) 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 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 (+.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 (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 (cos.f64 y)) 1)))) (#(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 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)))))))

simplify127.0ms (1.5%)

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
31254514
43033514
54369514
66341514
Stop Event
node limit
Counts
128 → 106
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)
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 (*.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/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)))
(fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) (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 1 (*.f64 -1/6 (pow.f64 y 2)))
(+.f64 1 (*.f64 (*.f64 y y) -1/6))
(fma.f64 (*.f64 y y) -1/6 1)
(fma.f64 y (*.f64 y -1/6) 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 (*.f64 y y) -1/6)))
(fma.f64 -1/72 (pow.f64 y 4) (fma.f64 (*.f64 y y) -1/6 1))
(fma.f64 y (*.f64 y -1/6) (fma.f64 -1/72 (pow.f64 y 4) 1))
(fma.f64 -1/72 (pow.f64 y 4) (fma.f64 y (*.f64 y -1/6) 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 (*.f64 y y) -1/6))))
(fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 (*.f64 y y) -1/6 1)))
(fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 y (*.f64 y -1/6) (fma.f64 -1/72 (pow.f64 y 4) 1)))
(fma.f64 y (*.f64 y -1/6) (fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 -1/72 (pow.f64 y 4) 1)))
(fma.f64 y (*.f64 y -1/6) (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 (pow.f64 y 6) -23/6480 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 (*.f64 -1 (pow.f64 y 2)) 1)
(fma.f64 -1 (*.f64 y y) 1)
(-.f64 1 (*.f64 y y))
(neg.f64 (fma.f64 y y -1))
(+.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 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 -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 (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 1/3 (pow.f64 y 4) (*.f64 (pow.f64 y 6) -2/45)))
(-.f64 (fma.f64 (pow.f64 y 6) -2/45 (fma.f64 1/3 (pow.f64 y 4) 1)) (*.f64 y y))
(-.f64 (*.f64 1/3 (pow.f64 y 4)) (fma.f64 y y (fma.f64 (pow.f64 y 6) 2/45 -1)))
(*.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 -1/3 y) (*.f64 y 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 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6)))))
(fma.f64 z (fma.f64 -1/3 (*.f64 y y) (*.f64 -1/405 (pow.f64 y 6))) z)
(*.f64 (fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) 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 -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/3 (*.f64 y y) (fma.f64 -1/1701 (pow.f64 y 8) (*.f64 -1/405 (pow.f64 y 6))))))
(fma.f64 z (fma.f64 -1/405 (pow.f64 y 6) (fma.f64 -1/3 (*.f64 y y) (*.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)

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 40 to 10 computations (75% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite59.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify60.0ms (0.7%)

Algorithm
egg-herbie
Rules
897×fma-neg_binary64
353×cancel-sign-sub-inv_binary64
314×fma-def_binary64
279×distribute-rgt-neg-in_binary64
241×distribute-lft-neg-out_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
065443
1187426
2470402
31652389
43749385
Stop Event
node limit
Counts
100 → 78
Calls
Call 1
Inputs
(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)
(-.f64 (exp.f64 (sin.f64 y)) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (exp.f64 (sin.f64 y))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (exp.f64 (sin.f64 y)))) 1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (+.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)))))) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (exp.f64 x)) 1)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x))))) 1)
(-.f64 (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (exp.f64 x))) (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x)))))) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
Outputs
(sin.f64 y)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
x
(+.f64 y x)
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 y x))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y x))
(+.f64 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)))
(+.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(+.f64 (sin.f64 y) x)
(-.f64 (exp.f64 (sin.f64 y)) 1)
(expm1.f64 (sin.f64 y))
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (exp.f64 (sin.f64 y))) 1)
(+.f64 (*.f64 x (exp.f64 (sin.f64 y))) (expm1.f64 (sin.f64 y)))
(fma.f64 x (exp.f64 (sin.f64 y)) (expm1.f64 (sin.f64 y)))
(fma.f64 (+.f64 x 1) (exp.f64 (sin.f64 y)) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 x 1) -1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (exp.f64 (sin.f64 y)))) 1)
(+.f64 (fma.f64 (exp.f64 (sin.f64 y)) x (fma.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 x x)) (exp.f64 (sin.f64 y)))) -1)
(fma.f64 x (exp.f64 (sin.f64 y)) (+.f64 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 (*.f64 x x) 1/2)) (expm1.f64 (sin.f64 y))))
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 x (*.f64 x 1/2)))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 1 (*.f64 x (+.f64 (*.f64 x 1/2) 1))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 1 (fma.f64 x (*.f64 x 1/2) x)) -1)
(-.f64 (+.f64 (*.f64 (exp.f64 (sin.f64 y)) x) (+.f64 (*.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 2))) (+.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)))))) 1)
(+.f64 (fma.f64 (exp.f64 (sin.f64 y)) x (+.f64 (fma.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 x x)) (exp.f64 (sin.f64 y))) (*.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3))))) -1)
(+.f64 (fma.f64 x (exp.f64 (sin.f64 y)) (fma.f64 1/2 (*.f64 (exp.f64 (sin.f64 y)) (*.f64 x x)) (fma.f64 1/6 (*.f64 (exp.f64 (sin.f64 y)) (pow.f64 x 3)) (exp.f64 (sin.f64 y))))) -1)
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 x (*.f64 x 1/2)))) (fma.f64 (exp.f64 (sin.f64 y)) (*.f64 1/6 (pow.f64 x 3)) -1))
(+.f64 (*.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 (*.f64 x x) (+.f64 1/2 (*.f64 x 1/6))))) -1)
(fma.f64 (exp.f64 (sin.f64 y)) (+.f64 (+.f64 x 1) (*.f64 (*.f64 x x) (+.f64 1/2 (*.f64 x 1/6)))) -1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (-.f64 (sin.f64 y) (*.f64 -1 x))) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (exp.f64 x)) 1)
(+.f64 (*.f64 y (exp.f64 x)) (expm1.f64 x))
(fma.f64 y (exp.f64 x) (expm1.f64 x))
(-.f64 (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x))))) 1)
(+.f64 (+.f64 (*.f64 (+.f64 y 1) (exp.f64 x)) (*.f64 1/2 (*.f64 (exp.f64 x) (*.f64 y y)))) -1)
(+.f64 -1 (*.f64 (exp.f64 x) (+.f64 (+.f64 y 1) (*.f64 1/2 (*.f64 y y)))))
(fma.f64 (exp.f64 x) (+.f64 y (fma.f64 1/2 (*.f64 y y) 1)) -1)
(-.f64 (+.f64 (*.f64 -1/8 (*.f64 (pow.f64 y 4) (exp.f64 x))) (+.f64 (*.f64 y (exp.f64 x)) (+.f64 (exp.f64 x) (*.f64 1/2 (*.f64 (pow.f64 y 2) (exp.f64 x)))))) 1)
(+.f64 (fma.f64 -1/8 (*.f64 (exp.f64 x) (pow.f64 y 4)) (+.f64 (*.f64 (+.f64 y 1) (exp.f64 x)) (*.f64 1/2 (*.f64 (exp.f64 x) (*.f64 y y))))) -1)
(+.f64 -1 (fma.f64 -1/8 (*.f64 (exp.f64 x) (pow.f64 y 4)) (*.f64 (exp.f64 x) (+.f64 (+.f64 y 1) (*.f64 1/2 (*.f64 y y))))))
(+.f64 (*.f64 (exp.f64 x) (+.f64 (fma.f64 -1/8 (pow.f64 y 4) y) (*.f64 1/2 (*.f64 y y)))) (expm1.f64 x))
(fma.f64 (exp.f64 x) (+.f64 (fma.f64 -1/8 (pow.f64 y 4) y) (fma.f64 1/2 (*.f64 y y) 1)) -1)
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))
(-.f64 (exp.f64 (+.f64 (sin.f64 y) x)) 1)
(expm1.f64 (+.f64 (sin.f64 y) x))

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 43 to 14 computations (67.4% saved)

series10.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

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

rewrite56.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
613×pow1_binary64
565×add-log-exp_binary64
565×log1p-expm1-u_binary64
565×expm1-log1p-u_binary64
551×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify52.0ms (0.6%)

Algorithm
egg-herbie
Rules
398×*-commutative_binary64
389×distribute-rgt-in_binary64
382×distribute-lft-in_binary64
316×distribute-lft-out_binary64
307×unswap-sqr_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
053293
1144289
2411241
31786214
45193213
Stop Event
node limit
Counts
66 → 64
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 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) 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))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 z (fma.f64 (*.f64 -1/2 y) y 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (+.f64 (fma.f64 (*.f64 -1/2 y) y 1) (*.f64 (pow.f64 y 4) 1/24)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) 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))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))
(fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (pow.f64 y 4) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 1/2 (*.f64 z -1/48)))))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 4) (*.f64 1/2 (*.f64 z -1/48)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 z -1/720) (*.f64 1/4 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))) (+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2))) (fma.f64 1/2 (*.f64 (fma.f64 z -1/720 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) 1/4)) (*.f64 (pow.f64 y 6) (sqrt.f64 (/.f64 1 z)))) (sqrt.f64 z)))
(fma.f64 (pow.f64 y 6) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (fma.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) 1/4 (*.f64 z -1/720)))) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))))
(+.f64 (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) (*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (+.f64 (*.f64 (pow.f64 y 6) (fma.f64 z -1/720 (*.f64 -1/4 (*.f64 z 1/48)))) (*.f64 (pow.f64 y 4) (*.f64 z -1/48)))))

eval122.0ms (1.4%)

Compiler

Compiled 8298 to 3253 computations (60.8% saved)

prune88.0ms (1%)

Pruning

18 alts after pruning (17 fresh and 1 done)

PrunedKeptTotal
New47213485
Fresh6410
Picked101
Done415
Total48318501
Error
0.0b
Counts
501 → 18
Alt Table
Click to see full alt table
StatusErrorProgram
39.6b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) z)
28.3b
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
37.9b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (*.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z)) 2))
30.9b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
25.0b
(+.f64 (sin.f64 y) x)
14.8b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
44.3b
(+.f64 (sin.f64 y) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
39.3b
(+.f64 (sin.f64 y) z)
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
39.5b
(+.f64 (+.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
24.4b
(+.f64 (+.f64 y x) z)
34.7b
x
0.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
14.8b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
0.4b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
10.3b
(+.f64 x (*.f64 z (cos.f64 y)))
21.1b
(+.f64 z x)
22.9b
(+.f64 (+.f64 x (sin.f64 y)) (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)))
Compiler

Compiled 434 to 297 computations (31.6% saved)

localize23.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 55 to 18 computations (67.3% saved)

series17.0ms (0.2%)

Counts
3 → 60
Calls

15 calls:

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

rewrite60.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify181.0ms (2.1%)

Algorithm
egg-herbie
Rules
1936×fma-def_binary64
703×sqr-pow_binary64
436×*-commutative_binary64
417×cube-prod_binary64
320×pow-sqr_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
056528
1149522
2401508
31267506
42030506
52780506
62934506
73125506
83340500
95257500
105654500
116134500
126711500
137393500
147724500
Stop Event
node limit
Counts
103 → 68
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)
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))
(*.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/6 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
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)))
(fma.f64 -1/3 (*.f64 y y) (fma.f64 -1/405 (pow.f64 y 6) (fma.f64 -1/1701 (pow.f64 y 8) 1)))
(fma.f64 (*.f64 y y) (fma.f64 (pow.f64 y 6) -1/1701 -1/3) (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))
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) z)
(*.f64 z (fma.f64 (*.f64 y y) -1/2 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 (*.f64 y y) z) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 (*.f64 y 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 (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 (*.f64 y y) -1/2 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 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (+.f64 z (*.f64 1/24 (*.f64 z (pow.f64 y 4))))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)))
(fma.f64 z (fma.f64 (*.f64 y y) -1/2 (*.f64 (pow.f64 y 6) -1/720)) (*.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 (*.f64 y y) -1/2 (*.f64 (pow.f64 y 6) -1/720))))
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 6) -1/720 (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) (fma.f64 (pow.f64 y 6) -1/720 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)
(*.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/6 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/6 (*.f64 (*.f64 y y) z) z)
(fma.f64 (*.f64 (*.f64 y y) z) -1/6 z)
(*.f64 z (fma.f64 (*.f64 y y) -1/6 1))
(fma.f64 y (*.f64 y (*.f64 z -1/6)) z)
(fma.f64 (*.f64 y (*.f64 y z)) -1/6 z)
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))
(fma.f64 -1/72 (*.f64 z (pow.f64 y 4)) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z))
(fma.f64 (*.f64 z (pow.f64 y 4)) -1/72 (fma.f64 (*.f64 (*.f64 y y) z) -1/6 z))
(fma.f64 z (fma.f64 (pow.f64 y 4) -1/72 (*.f64 y (*.f64 y -1/6))) z)
(*.f64 z (fma.f64 y (*.f64 y -1/6) (fma.f64 (pow.f64 y 4) -1/72 1)))
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)))
(fma.f64 -1/72 (*.f64 z (pow.f64 y 4)) (fma.f64 -23/6480 (*.f64 (pow.f64 y 6) z) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z)))
(fma.f64 (*.f64 z (pow.f64 y 4)) -1/72 (fma.f64 (*.f64 (pow.f64 y 6) z) -23/6480 (fma.f64 (*.f64 (*.f64 y y) z) -1/6 z)))
(fma.f64 z (fma.f64 (pow.f64 y 4) -1/72 (*.f64 (pow.f64 y 6) -23/6480)) (*.f64 z (fma.f64 (*.f64 y y) -1/6 1)))
(*.f64 z (+.f64 (fma.f64 (*.f64 y y) -1/6 1) (fma.f64 (pow.f64 y 4) -1/72 (*.f64 (pow.f64 y 6) -23/6480))))
(*.f64 z (fma.f64 y (*.f64 y -1/6) (fma.f64 (pow.f64 y 6) -23/6480 (fma.f64 (pow.f64 y 4) -1/72 1))))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))

localize6.0ms (0.1%)

Compiler

Compiled 14 to 5 computations (64.3% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 20 to 7 computations (65% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite58.0ms (0.7%)

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

simplify129.0ms (1.5%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
019208
148208
2117208
3317203
4824203
52856203
64829203
76064203
86325203
96636203
107019203
117596203
Stop Event
node limit
Counts
59 → 44
Calls
Call 1
Inputs
(sin.f64 y)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
z
(+.f64 y z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(+.f64 (*.f64 -1/6 (pow.f64 y 3)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z)))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
Outputs
(sin.f64 y)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
z
(+.f64 y z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 y z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y z))
(+.f64 z (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y))
(+.f64 y (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z))
(fma.f64 (fma.f64 y (*.f64 y -1/2) 1) z y)
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) y)
(fma.f64 (fma.f64 -1/2 (*.f64 y z) 1) y z)
(+.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 y z)))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 z (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 -1/6 (pow.f64 y 3) (+.f64 y z)))
(fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 y -1/6)) (+.f64 y z))
(+.f64 y (fma.f64 y (*.f64 y (fma.f64 z -1/2 (*.f64 y -1/6))) z))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (sin.f64 y))
(fma.f64 (cos.f64 y) z (sin.f64 y))

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 44 to 17 computations (61.4% saved)

series12.0ms (0.1%)

Counts
3 → 84
Calls

21 calls:

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

rewrite82.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
578×log-prod_binary64
515×fma-def_binary64
441×pow-prod-down_binary64
322×pow2_binary64
271×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify64.0ms (0.7%)

Algorithm
egg-herbie
Rules
857×distribute-rgt-out_binary64
678×distribute-rgt-in_binary64
674×distribute-lft-in_binary64
656×fma-def_binary64
506×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0851042
12491013
2886979
34666972
Stop Event
node limit
Counts
237 → 185
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 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.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))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(pow.f64 z 3)
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (pow.f64 z 3))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (+.f64 (pow.f64 z 3) (*.f64 (pow.f64 y 4) (+.f64 (*.f64 1/24 (pow.f64 z 3)) (+.f64 (*.f64 1/2 (pow.f64 z 3)) (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z))))))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (+.f64 (pow.f64 z 3) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 z 2)) (*.f64 -1/24 (pow.f64 z 2))) z) (+.f64 (*.f64 -1/720 (pow.f64 z 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z)) (*.f64 -1/24 (pow.f64 z 3)))))) (*.f64 (pow.f64 y 4) (+.f64 (*.f64 1/24 (pow.f64 z 3)) (+.f64 (*.f64 1/2 (pow.f64 z 3)) (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z)))))))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(+.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 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))
(+.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 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.f64 (sin.f64 y) x))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.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 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) z) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) z) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) z) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 z)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) z) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 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 (*.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/24 (pow.f64 y 4) 1) (*.f64 y (*.f64 y -1/2))))
(+.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 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)
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(pow.f64 z 3)
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (pow.f64 z 3))
(fma.f64 (*.f64 (pow.f64 z 3) -3/2) (*.f64 y y) (pow.f64 z 3))
(fma.f64 (*.f64 y y) (*.f64 (pow.f64 z 3) -3/2) (pow.f64 z 3))
(fma.f64 y (*.f64 y (*.f64 (pow.f64 z 3) -3/2)) (pow.f64 z 3))
(*.f64 (+.f64 (*.f64 (*.f64 y y) -3/2) 1) (pow.f64 z 3))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (+.f64 (pow.f64 z 3) (*.f64 (pow.f64 y 4) (+.f64 (*.f64 1/24 (pow.f64 z 3)) (+.f64 (*.f64 1/2 (pow.f64 z 3)) (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z))))))
(+.f64 (fma.f64 (*.f64 (pow.f64 z 3) -3/2) (*.f64 y y) (pow.f64 z 3)) (*.f64 (pow.f64 y 4) (fma.f64 1/24 (pow.f64 z 3) (fma.f64 1/2 (pow.f64 z 3) (*.f64 z (*.f64 (*.f64 z z) 1/3))))))
(fma.f64 (*.f64 y y) (*.f64 (pow.f64 z 3) -3/2) (fma.f64 (pow.f64 y 4) (+.f64 (*.f64 (pow.f64 z 3) 1/3) (*.f64 (pow.f64 z 3) 13/24)) (pow.f64 z 3)))
(fma.f64 y (*.f64 y (*.f64 (pow.f64 z 3) -3/2)) (fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 z 3) 7/8) (pow.f64 z 3)))
(fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 z 3) 7/8) (*.f64 (+.f64 (*.f64 (*.f64 y y) -3/2) 1) (pow.f64 z 3)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (pow.f64 z 3)) (*.f64 -1/2 (pow.f64 z 3))) (pow.f64 y 2)) (+.f64 (pow.f64 z 3) (+.f64 (*.f64 (pow.f64 y 6) (+.f64 (*.f64 (+.f64 (*.f64 -1/360 (pow.f64 z 2)) (*.f64 -1/24 (pow.f64 z 2))) z) (+.f64 (*.f64 -1/720 (pow.f64 z 3)) (+.f64 (*.f64 -1/2 (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z)) (*.f64 -1/24 (pow.f64 z 3)))))) (*.f64 (pow.f64 y 4) (+.f64 (*.f64 1/24 (pow.f64 z 3)) (+.f64 (*.f64 1/2 (pow.f64 z 3)) (*.f64 (+.f64 (*.f64 1/4 (pow.f64 z 2)) (*.f64 1/12 (pow.f64 z 2))) z)))))))
(+.f64 (fma.f64 (*.f64 (pow.f64 z 3) -3/2) (*.f64 y y) (pow.f64 z 3)) (fma.f64 (pow.f64 y 6) (fma.f64 (*.f64 (*.f64 z z) -2/45) z (fma.f64 -1/720 (pow.f64 z 3) (fma.f64 -1/2 (*.f64 z (*.f64 (*.f64 z z) 1/3)) (*.f64 (pow.f64 z 3) -1/24)))) (*.f64 (pow.f64 y 4) (fma.f64 1/24 (pow.f64 z 3) (fma.f64 1/2 (pow.f64 z 3) (*.f64 z (*.f64 (*.f64 z z) 1/3)))))))
(+.f64 (fma.f64 (*.f64 y y) (*.f64 (pow.f64 z 3) -3/2) (pow.f64 z 3)) (fma.f64 (pow.f64 y 4) (+.f64 (*.f64 (pow.f64 z 3) 1/3) (*.f64 (pow.f64 z 3) 13/24)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 (pow.f64 z 3) -2/45) (fma.f64 -1/720 (pow.f64 z 3) (fma.f64 -1/2 (*.f64 (pow.f64 z 3) 1/3) (*.f64 (pow.f64 z 3) -1/24)))))))
(fma.f64 y (*.f64 y (*.f64 (pow.f64 z 3) -3/2)) (fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 z 3) 7/8) (fma.f64 (pow.f64 y 6) (fma.f64 -1/720 (pow.f64 z 3) (+.f64 (*.f64 (pow.f64 z 3) -1/6) (*.f64 (pow.f64 z 3) -31/360))) (pow.f64 z 3))))
(fma.f64 y (*.f64 (pow.f64 z 3) (*.f64 -3/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 (pow.f64 z 3) 7/8) (fma.f64 (pow.f64 y 6) (+.f64 (*.f64 z (*.f64 (*.f64 z z) -5/24)) (*.f64 (pow.f64 z 3) -11/240)) (pow.f64 z 3))))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(*.f64 (pow.f64 z 3) (pow.f64 (cos.f64 y) 3))
(*.f64 (pow.f64 (cos.f64 y) 3) (pow.f64 z 3))
(+.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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
x
(+.f64 (*.f64 z (cos.f64 y)) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (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))
(+.f64 (fma.f64 (cos.f64 y) z (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))
(+.f64 (fma.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 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))
(fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z (+.f64 y x)))
(+.f64 y (fma.f64 z (*.f64 y (*.f64 y -1/2)) (+.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))))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 y (+.f64 z x))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 (+.f64 z x) (fma.f64 -1/2 (*.f64 y (*.f64 y z)) y)))
(fma.f64 -1/6 (pow.f64 y 3) (fma.f64 (*.f64 y y) (*.f64 z -1/2) (+.f64 z (+.f64 y x))))
(+.f64 (+.f64 z x) (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 z (*.f64 y (*.f64 y -1/2)) y)))
(+.f64 (*.f64 (cos.f64 y) z) (+.f64 (sin.f64 y) x))
(+.f64 (fma.f64 (cos.f64 y) z (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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.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))
(+.f64 (fma.f64 (cos.f64 y) z (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)
(+.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)
(+.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)
(+.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)
(+.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)
(+.f64 (sin.f64 y) (fma.f64 (cos.f64 y) z x))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z)))
(neg.f64 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)))
(*.f64 (*.f64 (cos.f64 y) z) (neg.f64 (cbrt.f64 -1)))
(*.f64 (cos.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.f64 (sin.f64 y) x))
(fma.f64 -1 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)) (+.f64 (sin.f64 y) x))
(+.f64 x (fma.f64 (neg.f64 (cbrt.f64 -1)) (*.f64 (cos.f64 y) z) (sin.f64 y)))
(+.f64 (sin.f64 y) (-.f64 x (*.f64 (cos.f64 y) (*.f64 z (cbrt.f64 -1)))))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.f64 (sin.f64 y) x))
(fma.f64 -1 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)) (+.f64 (sin.f64 y) x))
(+.f64 x (fma.f64 (neg.f64 (cbrt.f64 -1)) (*.f64 (cos.f64 y) z) (sin.f64 y)))
(+.f64 (sin.f64 y) (-.f64 x (*.f64 (cos.f64 y) (*.f64 z (cbrt.f64 -1)))))
(+.f64 (*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (cos.f64 y) z))) (+.f64 (sin.f64 y) x))
(fma.f64 -1 (*.f64 (*.f64 (cos.f64 y) z) (cbrt.f64 -1)) (+.f64 (sin.f64 y) x))
(+.f64 x (fma.f64 (neg.f64 (cbrt.f64 -1)) (*.f64 (cos.f64 y) z) (sin.f64 y)))
(+.f64 (sin.f64 y) (-.f64 x (*.f64 (cos.f64 y) (*.f64 z (cbrt.f64 -1)))))

localize25.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 45 to 10 computations (77.8% saved)

series6.0ms (0.1%)

Counts
3 → 44
Calls

15 calls:

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

rewrite59.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify115.0ms (1.3%)

Algorithm
egg-herbie
Rules
1013×fma-def_binary64
950×distribute-rgt-out_binary64
761×distribute-lft-out_binary64
654×associate-*l*_binary64
487×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
048402
1119392
2318379
31042374
44130374
57361374
67708374
77938374
Stop Event
node limit
Counts
86 → 66
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))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))))
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
Outputs
(*.f64 (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 (*.f64 y z) (*.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 (*.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 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.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)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 z (sqrt.f64 (cos.f64 y)))
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) z)
(*.f64 (fma.f64 (*.f64 y y) -1/4 1) z)
(*.f64 z (fma.f64 y (*.f64 y -1/4) 1))
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 (*.f64 z (pow.f64 y 4)) -1/96))
(fma.f64 (*.f64 y (*.f64 y z)) -1/4 (fma.f64 (*.f64 z (pow.f64 y 4)) -1/96 z))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 1)))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 (*.f64 z (pow.f64 y 4)) -1/96)))
(fma.f64 (*.f64 z (pow.f64 y 6)) -19/5760 (fma.f64 (*.f64 y (*.f64 y z)) -1/4 (fma.f64 (*.f64 z (pow.f64 y 4)) -1/96 z)))
(+.f64 z (*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 6) -19/5760 (*.f64 (pow.f64 y 4) -1/96)))))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 (fma.f64 (pow.f64 y 6) -19/5760 1))))
(*.f64 z (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/96) -1/4) (fma.f64 (pow.f64 y 6) -19/5760 1)))
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(fma.f64 -1/4 (*.f64 y y) 1)
(fma.f64 (*.f64 y y) -1/4 1)
(fma.f64 y (*.f64 y -1/4) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (*.f64 (pow.f64 y 4) -1/96))
(fma.f64 (*.f64 y y) -1/4 (fma.f64 (pow.f64 y 4) -1/96 1))
(fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 1))
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 (pow.f64 y 6) -19/5760)))
(+.f64 (fma.f64 (*.f64 y y) -1/4 1) (fma.f64 (pow.f64 y 4) -1/96 (*.f64 (pow.f64 y 6) -19/5760)))
(fma.f64 y (*.f64 y -1/4) (fma.f64 (pow.f64 y 4) -1/96 (fma.f64 (pow.f64 y 6) -19/5760 1)))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/96) -1/4) (fma.f64 (pow.f64 y 6) -19/5760 1))

eval270.0ms (3.1%)

Compiler

Compiled 9691 to 3468 computations (64.2% saved)

prune192.0ms (2.2%)

Pruning

22 alts after pruning (18 fresh and 4 done)

PrunedKeptTotal
New55510565
Fresh4812
Picked101
Done145
Total56122583
Error
0.0b
Counts
583 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
39.6b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) z)
28.3b
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
37.9b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (*.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z)) 2))
30.9b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
28.6b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3) (sin.f64 y))
25.0b
(+.f64 (sin.f64 y) x)
45.9b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)) (sin.f64 y))
45.9b
(+.f64 y z)
21.1b
(+.f64 z x)
48.7b
z
0.3b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
38.1b
(*.f64 (cos.f64 y) z)
39.5b
(+.f64 (+.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
24.4b
(+.f64 (+.f64 y x) z)
34.7b
x
53.0b
(sin.f64 y)
14.8b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
37.2b
(+.f64 (sin.f64 y) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
14.9b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (-.f64 (+.f64 1 (sqrt.f64 (cos.f64 y))) 1)) (sqrt.f64 (cos.f64 y))))
0.2b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4)) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
10.3b
(+.f64 x (*.f64 z (cos.f64 y)))
0.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
Compiler

Compiled 467 to 320 computations (31.5% saved)

localize27.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 63 to 23 computations (63.5% saved)

series9.0ms (0.1%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
3.0ms
y
@inf
(pow.f64 (cbrt.f64 (cos.f64 y)) 4)
2.0ms
y
@inf
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4)) (*.f64 (cbrt.f64 (cos.f64 y)) z))
2.0ms
z
@0
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 4)) (*.f64 (cbrt.f64 (cos.f64 y)) z))
1.0ms
y
@-inf
(pow.f64 (cbrt.f64 (cos.f64 y)) 4)
1.0ms
y
@0
(pow.f64 (cbrt.f64 (cos.f64 y)) 4)

rewrite64.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
842×pow1_binary64
782×add-log-exp_binary64
782×log1p-expm1-u_binary64
782×expm1-log1p-u_binary64
761×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify122.0ms (1.4%)

Algorithm
egg-herbie
Rules
659×fma-def_binary64
625×distribute-rgt-out_binary64
503×associate-*l*_binary64
479×distribute-lft-out_binary64
422×distribute-lft-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
042304
1102298
2256292
3806287
43108287
55391287
66714287
76990287
87266287
97609287
Stop Event
node limit
Counts
67 → 49
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -2/3 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -2/3 (pow.f64 y 2)) (*.f64 1/9 (pow.f64 y 4))))
(+.f64 1 (+.f64 (*.f64 -2/3 (pow.f64 y 2)) (+.f64 (*.f64 1/9 (pow.f64 y 4)) (*.f64 -2/405 (pow.f64 y 6)))))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
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))
(*.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)
Outputs
1
(+.f64 1 (*.f64 -2/3 (pow.f64 y 2)))
(+.f64 1 (*.f64 -2/3 (*.f64 y y)))
(fma.f64 -2/3 (*.f64 y y) 1)
(fma.f64 y (*.f64 -2/3 y) 1)
(+.f64 1 (+.f64 (*.f64 -2/3 (pow.f64 y 2)) (*.f64 1/9 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -2/3 (*.f64 y y) (*.f64 1/9 (pow.f64 y 4))))
(fma.f64 -2/3 (*.f64 y y) (fma.f64 1/9 (pow.f64 y 4) 1))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/9) -2/3) 1)
(+.f64 1 (+.f64 (*.f64 -2/3 (pow.f64 y 2)) (+.f64 (*.f64 1/9 (pow.f64 y 4)) (*.f64 -2/405 (pow.f64 y 6)))))
(+.f64 1 (fma.f64 -2/3 (*.f64 y y) (fma.f64 1/9 (pow.f64 y 4) (*.f64 -2/405 (pow.f64 y 6)))))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y 1/9) -2/3) (fma.f64 -2/405 (pow.f64 y 6) 1))
(fma.f64 1/9 (pow.f64 y 4) (fma.f64 -2/405 (pow.f64 y 6) (fma.f64 y (*.f64 -2/3 y) 1)))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
(pow.f64 (pow.f64 (cos.f64 y) 4) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 4))
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) z)
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)
(*.f64 z (fma.f64 (*.f64 y -1/2) 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))))
(fma.f64 -1/2 (*.f64 (*.f64 y y) z) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z))
(*.f64 z (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 (pow.f64 y 4) 1/24 1)))
(*.f64 z (fma.f64 (pow.f64 y 4) 1/24 (fma.f64 y (*.f64 y -1/2) 1)))
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 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 (*.f64 y y) z) (fma.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 y (*.f64 y z)) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) z) (fma.f64 1/24 (*.f64 (pow.f64 y 4) z) z)))
(fma.f64 z (fma.f64 (*.f64 y y) -1/2 (*.f64 (pow.f64 y 6) -1/720)) (*.f64 z (fma.f64 (pow.f64 y 4) 1/24 1)))
(*.f64 z (+.f64 (fma.f64 (pow.f64 y 4) 1/24 (fma.f64 y (*.f64 y -1/2) 1)) (*.f64 (pow.f64 y 6) -1/720)))
(*.f64 z (+.f64 (*.f64 (pow.f64 y 6) -1/720) (fma.f64 y (*.f64 y -1/2) (fma.f64 (pow.f64 y 4) 1/24 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)
(*.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)

localize5.0ms (0.1%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 36 to 13 computations (63.9% saved)

series27.0ms (0.3%)

Counts
3 → 39
Calls

18 calls:

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

rewrite78.0ms (0.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify60.0ms (0.7%)

Algorithm
egg-herbie
Rules
793×associate-*r*_binary64
765×associate-*l*_binary64
614×fma-def_binary64
241×unswap-sqr_binary64
236×associate-+r+_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
099633
1318574
21057522
36456522
Stop Event
node limit
Counts
130 → 119
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)
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(*.f64 (pow.f64 1 1/3) z)
(+.f64 y (*.f64 (pow.f64 1 1/3) z))
(+.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 (pow.f64 1 1/3) z)))
(+.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 (pow.f64 1 1/3) z))))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
(+.f64 (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)) (sin.f64 y))
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 z (*.f64 (*.f64 y y) -1/2) (fma.f64 (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 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 -1/6 (cbrt.f64 z)) (fma.f64 1/3 (*.f64 z -23/2160) (*.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) 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 (*.f64 -1/6 (cbrt.f64 z)) (*.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 (*.f64 -1/6 (cbrt.f64 z)) (*.f64 y y) (cbrt.f64 z)))
(fma.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/72) (pow.f64 y 4)) (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 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 (*.f64 -1/6 (cbrt.f64 z)) (*.f64 y y) (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 1/3 (*.f64 (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)))
(sin.f64 y)
(sin.f64 y)
(sin.f64 y)
(*.f64 (pow.f64 1 1/3) z)
z
(+.f64 y (*.f64 (pow.f64 1 1/3) z))
(+.f64 z y)
(+.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 (pow.f64 1 1/3) z)))
(+.f64 y (fma.f64 (*.f64 z -1/2) (*.f64 y y) z))
(+.f64 z (fma.f64 z (*.f64 (*.f64 y y) -1/2) y))
(+.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 (pow.f64 1 1/3) z))))
(fma.f64 -1/6 (pow.f64 y 3) (+.f64 y (fma.f64 (*.f64 z -1/2) (*.f64 y y) z)))
(+.f64 (fma.f64 (*.f64 z -1/2) (*.f64 y y) z) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (fma.f64 z (*.f64 (*.f64 y y) -1/2) z) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.f64 y))
(+.f64 (sin.f64 y) (*.f64 (pow.f64 1 1/3) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
(fma.f64 z (cos.f64 y) (sin.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 (*.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 (*.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 (*.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))

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 51 to 18 computations (64.7% saved)

series12.0ms (0.1%)

Counts
4 → 36
Calls

18 calls:

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

rewrite70.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

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

simplify165.0ms (1.9%)

Algorithm
egg-herbie
Rules
838×unswap-sqr_binary64
756×distribute-rgt-out_binary64
655×associate-+l+_binary64
534×sqr-pow_binary64
461×*-commutative_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
043338
1120332
2378318
31378314
42404310
53990310
65137310
75586310
85749310
95964310
106269310
116630310
127067310
137811310
Stop Event
node limit
Counts
99 → 81
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))
(pow.f64 z 1/3)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3)))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 6))))))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
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 (*.f64 y -1/2) y 1))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 (*.f64 y -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 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)))
(*.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 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)
(pow.f64 z 1/3)
(cbrt.f64 z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z))
(*.f64 (fma.f64 (*.f64 y -1/2) y 1) (cbrt.f64 z))
(*.f64 (cbrt.f64 z) (fma.f64 (*.f64 y -1/2) y 1))
(*.f64 (cbrt.f64 z) (fma.f64 -1/2 (*.f64 y y) 1))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (pow.f64 z 1/3)))
(fma.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 z)) (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)))
(fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 z)) (*.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (cbrt.f64 z)))
(*.f64 (cbrt.f64 z) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 (*.f64 y -1/2) y 1)))
(*.f64 (cbrt.f64 z) (+.f64 (*.f64 y (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(+.f64 (*.f64 1/24 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 4))) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/720 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 6))))))
(fma.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 z)) (+.f64 (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)) (*.f64 -1/720 (*.f64 (pow.f64 y 6) (cbrt.f64 z)))))
(fma.f64 1/24 (*.f64 (pow.f64 y 4) (cbrt.f64 z)) (fma.f64 -1/2 (*.f64 (*.f64 y y) (cbrt.f64 z)) (fma.f64 -1/720 (*.f64 (pow.f64 y 6) (cbrt.f64 z)) (cbrt.f64 z))))
(+.f64 (*.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (cbrt.f64 z)) (*.f64 (cbrt.f64 z) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))))
(+.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 z) (+.f64 (*.f64 1/24 (pow.f64 y 4)) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))))))
(*.f64 (cbrt.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 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))
(*.f64 (pow.f64 (*.f64 1 z) 1/3) (cos.f64 y))
(*.f64 (cos.f64 y) (cbrt.f64 z))

eval224.0ms (2.6%)

Compiler

Compiled 7355 to 3269 computations (55.6% saved)

prune73.0ms (0.8%)

Pruning

24 alts after pruning (18 fresh and 6 done)

PrunedKeptTotal
New39510405
Fresh5813
Picked011
Done358
Total40324427
Error
0.0b
Counts
427 → 24
Alt Table
Click to see full alt table
StatusErrorProgram
39.6b
(+.f64 (log1p.f64 (expm1.f64 (+.f64 x (sin.f64 y)))) z)
28.3b
(+.f64 (*.f64 z (cos.f64 y)) (sin.f64 y))
45.0b
(+.f64 (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)) (sin.f64 y))
10.6b
(+.f64 x (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
42.3b
(+.f64 (*.f64 (*.f64 (cos.f64 y) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z)) (sin.f64 y))
35.0b
(+.f64 x (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
37.9b
(+.f64 (+.f64 x (sin.f64 y)) (pow.f64 (*.f64 (sqrt.f64 (cos.f64 y)) (sqrt.f64 z)) 2))
37.2b
(+.f64 (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))) (sin.f64 y))
14.8b
(fma.f64 (*.f64 z (pow.f64 (cos.f64 y) 2/3)) (cbrt.f64 (cos.f64 y)) (+.f64 x (sin.f64 y)))
10.3b
(+.f64 x (*.f64 z (cos.f64 y)))
45.9b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)) (sin.f64 y))
45.9b
(+.f64 y z)
21.1b
(+.f64 z x)
28.4b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)) (sin.f64 y))
48.7b
z
38.1b
(*.f64 (cos.f64 y) z)
24.4b
(+.f64 (+.f64 y x) z)
34.7b
x
53.0b
(sin.f64 y)
25.0b
(+.f64 (sin.f64 y) x)
14.9b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (*.f64 z (-.f64 (+.f64 1 (sqrt.f64 (cos.f64 y))) 1)) (sqrt.f64 (cos.f64 y))))
33.0b
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 z (cos.f64 y)) 3)))
0.5b
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
28.7b
(+.f64 (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3) (sin.f64 y))
Compiler

Compiled 274 to 191 computations (30.3% saved)

regimes146.0ms (1.7%)

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

4 calls:

60.0ms
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
26.0ms
z
24.0ms
x
24.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 504 to 154 computations (69.4% saved)

regimes99.0ms (1.1%)

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

3 calls:

37.0ms
z
30.0ms
x
29.0ms
y
Results
ErrorSegmentsBranch
1.1b4x
7.0b3y
0.5b3z
Compiler

Compiled 76 to 28 computations (63.2% saved)

bsearch91.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
8.255363010356919e-46
4.948284004429801e-43
47.0ms
-764.4658699606699
-0.0004379723431898376
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes72.0ms (0.8%)

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

3 calls:

26.0ms
y
22.0ms
x
21.0ms
z
Results
ErrorSegmentsBranch
8.5b3x
7.0b3y
2.1b3z
Compiler

Compiled 55 to 24 computations (56.4% saved)

bsearch89.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
44.0ms
8.255363010356919e-46
4.948284004429801e-43
45.0ms
-1.8470280334412355e-53
-8.563682778899648e-62
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes85.0ms (1%)

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

3 calls:

37.0ms
z
25.0ms
y
20.0ms
x
Results
ErrorSegmentsBranch
13.7b3x
11.2b4y
7.6b5z
Compiler

Compiled 49 to 22 computations (55.1% saved)

bsearch338.0ms (3.9%)

Algorithm
binary-search
Steps
TimeLeftRight
52.0ms
1.2865172192115594e+152
5.582473929625616e+154
46.0ms
350413565150.9004
5.5497162710987944e+22
159.0ms
-1.8470280334412355e-53
-8.563682778899648e-62
81.0ms
-4.415234112267413e+78
-2.562511123360362e+74
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes176.0ms (2.1%)

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

3 calls:

100.0ms
y
57.0ms
z
17.0ms
x
Results
ErrorSegmentsBranch
13.7b3x
13.4b6y
14.3b5z
Compiler

Compiled 45 to 21 computations (53.3% saved)

bsearch478.0ms (5.6%)

Algorithm
binary-search
Steps
TimeLeftRight
80.0ms
8.238487680462956e+172
7.323125778418745e+173
117.0ms
3659287558771437.0
6.15549303359176e+21
106.0ms
-0.08996209833038692
-0.00011627691102091232
60.0ms
-3.427922393040104e+87
-1.0012482326530239e+80
115.0ms
-2.380352982134691e+160
-4.514646546284102e+150
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes51.0ms (0.6%)

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

3 calls:

17.0ms
y
15.0ms
z
15.0ms
x
Results
ErrorSegmentsBranch
18.1b3x
17.8b3y
19.8b3z
Compiler

Compiled 37 to 18 computations (51.4% saved)

bsearch78.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
39.0ms
2.0426390121999264e-34
9.30002974345612e-27
39.0ms
-6.769775456934134e+50
-7.78735560651104e+48
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes29.0ms (0.3%)

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

3 calls:

11.0ms
x
11.0ms
y
5.0ms
z
Results
ErrorSegmentsBranch
18.4b3x
20.0b3y
21.1b1z
Compiler

Compiled 23 to 14 computations (39.1% saved)

bsearch144.0ms (1.7%)

Algorithm
binary-search
Steps
TimeLeftRight
86.0ms
4.815017388032583e-136
1.2231052501874592e-122
58.0ms
-3.711949721195061e-102
-9.329586023543906e-104
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes153.0ms (1.8%)

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

3 calls:

109.0ms
y
24.0ms
x
18.0ms
z
Results
ErrorSegmentsBranch
22.2b3x
30.0b5y
29.9b3z
Compiler

Compiled 20 to 13 computations (35% saved)

bsearch199.0ms (2.3%)

Algorithm
binary-search
Steps
TimeLeftRight
109.0ms
2.955737922670193e-36
4.414279286242659e-35
90.0ms
-128085349078244210.0
-38335654704798056.0
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes76.0ms (0.9%)

Accuracy

Total -37.2b remaining (-148.4%)

Threshold costs -37.2b (-148.4%)

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

3 calls:

36.0ms
y
22.0ms
z
16.0ms
x
Results
ErrorSegmentsBranch
25.1b3x
30.8b7y
29.9b3z
Compiler

Compiled 17 to 12 computations (29.4% saved)

bsearch143.0ms (1.7%)

Algorithm
binary-search
Steps
TimeLeftRight
75.0ms
2.955737922670193e-36
4.414279286242659e-35
68.0ms
-128085349078244210.0
-38335654704798056.0
Compiler

Compiled 18 to 13 computations (27.8% saved)

simplify14.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
073287
183287
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -6724312904477217/8796093022208) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 (+.f64 x (sin.f64 y)) z) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 (sin.f64 y) x) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -4415234112267412863547327255197025102267678976371523482830441578770461160898560) (*.f64 (cos.f64 y) z) (if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 z x) (if (<=.f64 z 179411745357261/512) (+.f64 (sin.f64 y) x) (if (<=.f64 z 128651721921155943305039768075033692958458403246089579391415657474819270237029949107209835480333488153096732241115965354578097567014704493973420766134272) (+.f64 z x) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 y -23803529821346910895835810057182441163038312745936588216704602743019636104254115349291905698797042130462633690628524477015993811812571422614216731775587057664000) (*.f64 (cos.f64 y) z) (if (<=.f64 y -3427922393040103950867094753607792593142220488302492835626793216502115444572065888206848) (+.f64 z x) (if (<=.f64 y -6482452360291175/72057594037927936) (*.f64 (cos.f64 y) z) (if (<=.f64 y 3659287558771437) (+.f64 (+.f64 y x) z) (if (<=.f64 y 82384876804629561421751800966010149103211301180241848812986349085308714472890250008651584256877965308029060412931697314993132825123601097566476190459072512334940429344571392) (*.f64 (cos.f64 y) z) (+.f64 z x))))))
(if (<=.f64 y -676977545693413375057669691148341919518942438621184) (+.f64 z x) (if (<=.f64 y 4776512417289873/23384026197294446691258957323460528314494920687616) (+.f64 (+.f64 y x) z) (+.f64 z x)))
(if (<=.f64 x -2340132254643721/630432099142311667396464641602297820881275828327447146687172694467931548343955369782628260078158650252906047844909056) (+.f64 z x) (if (<=.f64 x 1576143269484247/3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376) (+.f64 y z) (+.f64 z x)))
(if (<=.f64 x -128085349078244208) x (if (<=.f64 x 8846982786055227/2993155353253689176481146537402947624255349848014848) (+.f64 y z) x))
(if (<=.f64 x -128085349078244208) x (if (<=.f64 x 8846982786055227/2993155353253689176481146537402947624255349848014848) z x))
z
Outputs
(+.f64 (+.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -6724312904477217/8796093022208) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 (+.f64 x (sin.f64 y)) z) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -6724312904477217/8796093022208) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 z (+.f64 x (sin.f64 y))) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 (sin.f64 y) x) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 x (*.f64 z (cos.f64 y))) (if (<=.f64 z 5306342756204383/6427752177035961102167848369364650410088811975131171341205504) (+.f64 x (sin.f64 y)) (+.f64 x (*.f64 z (cos.f64 y)))))
(if (<=.f64 z -4415234112267412863547327255197025102267678976371523482830441578770461160898560) (*.f64 (cos.f64 y) z) (if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 z x) (if (<=.f64 z 179411745357261/512) (+.f64 (sin.f64 y) x) (if (<=.f64 z 128651721921155943305039768075033692958458403246089579391415657474819270237029949107209835480333488153096732241115965354578097567014704493973420766134272) (+.f64 z x) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 z -4415234112267412863547327255197025102267678976371523482830441578770461160898560) (*.f64 z (cos.f64 y)) (if (<=.f64 z -3983662181944627/215679573337205118357336120696157045389097155380324579848828881993728) (+.f64 x z) (if (<=.f64 z 179411745357261/512) (+.f64 x (sin.f64 y)) (if (<=.f64 z 128651721921155943305039768075033692958458403246089579391415657474819270237029949107209835480333488153096732241115965354578097567014704493973420766134272) (+.f64 x z) (*.f64 z (cos.f64 y))))))
(if (<=.f64 y -23803529821346910895835810057182441163038312745936588216704602743019636104254115349291905698797042130462633690628524477015993811812571422614216731775587057664000) (*.f64 (cos.f64 y) z) (if (<=.f64 y -3427922393040103950867094753607792593142220488302492835626793216502115444572065888206848) (+.f64 z x) (if (<=.f64 y -6482452360291175/72057594037927936) (*.f64 (cos.f64 y) z) (if (<=.f64 y 3659287558771437) (+.f64 (+.f64 y x) z) (if (<=.f64 y 82384876804629561421751800966010149103211301180241848812986349085308714472890250008651584256877965308029060412931697314993132825123601097566476190459072512334940429344571392) (*.f64 (cos.f64 y) z) (+.f64 z x))))))
(if (<=.f64 y -23803529821346910895835810057182441163038312745936588216704602743019636104254115349291905698797042130462633690628524477015993811812571422614216731775587057664000) (*.f64 z (cos.f64 y)) (if (<=.f64 y -3427922393040103950867094753607792593142220488302492835626793216502115444572065888206848) (+.f64 x z) (if (<=.f64 y -6482452360291175/72057594037927936) (*.f64 z (cos.f64 y)) (if (<=.f64 y 3659287558771437) (+.f64 z (+.f64 x y)) (if (<=.f64 y 82384876804629561421751800966010149103211301180241848812986349085308714472890250008651584256877965308029060412931697314993132825123601097566476190459072512334940429344571392) (*.f64 z (cos.f64 y)) (+.f64 x z))))))
(if (<=.f64 y -676977545693413375057669691148341919518942438621184) (+.f64 z x) (if (<=.f64 y 4776512417289873/23384026197294446691258957323460528314494920687616) (+.f64 (+.f64 y x) z) (+.f64 z x)))
(if (<=.f64 y -676977545693413375057669691148341919518942438621184) (+.f64 x z) (if (<=.f64 y 4776512417289873/23384026197294446691258957323460528314494920687616) (+.f64 z (+.f64 x y)) (+.f64 x z)))
(if (<=.f64 x -2340132254643721/630432099142311667396464641602297820881275828327447146687172694467931548343955369782628260078158650252906047844909056) (+.f64 z x) (if (<=.f64 x 1576143269484247/3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376) (+.f64 y z) (+.f64 z x)))
(if (<=.f64 x -2340132254643721/630432099142311667396464641602297820881275828327447146687172694467931548343955369782628260078158650252906047844909056) (+.f64 x z) (if (<=.f64 x 1576143269484247/3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376) (+.f64 y z) (+.f64 x z)))
(if (<=.f64 x -128085349078244208) x (if (<=.f64 x 8846982786055227/2993155353253689176481146537402947624255349848014848) (+.f64 y z) x))
(if (<=.f64 x -128085349078244208) x (if (<=.f64 x 8846982786055227/2993155353253689176481146537402947624255349848014848) z x))
z
Compiler

Compiled 227 to 125 computations (44.9% saved)

soundness0.0ms (0%)

end79.0ms (0.9%)

Compiler

Compiled 200 to 77 computations (61.5% saved)

Profiling

Loading profile data...