Details

Time bar (total: 9.8s)

analyze211.0ms (2.2%)

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

Compiled 13 to 9 computations (30.8% saved)

sample3.2s (32.5%)

Results
1.4s2072×body1024valid
1.3s5145×body256valid
488.0ms1033×body512valid
6.0msbody2048valid

preprocess39.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02248
13848
25048
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x (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)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 y (sin.f64 x)) (*.f64 z (cos.f64 x)))
(fma.f64 y (sin.f64 x) (*.f64 z (cos.f64 x)))
(+.f64 (*.f64 z (sin.f64 y)) (*.f64 x (cos.f64 y)))
(fma.f64 z (sin.f64 y) (*.f64 x (cos.f64 y)))
(fma.f64 x (cos.f64 y) (*.f64 (sin.f64 y) z))
(+.f64 (*.f64 x (sin.f64 z)) (*.f64 y (cos.f64 z)))
(fma.f64 x (sin.f64 z) (*.f64 y (cos.f64 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify31.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

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

eval1.0ms (0%)

Compiler

Compiled 20 to 9 computations (55% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 23 to 15 computations (34.8% saved)

localize39.0ms (0.4%)

Local error

Found 3 expressions with local error:

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

rewrite80.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
484×log-prod_binary64
382×prod-exp_binary64
361×exp-prod_binary64
332×pow-prod-down_binary64
325×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify216.0ms (2.2%)

Algorithm
egg-herbie
Rules
682×sqr-pow_binary64
626×cube-prod_binary64
464×*-commutative_binary64
443×pow-sqr_binary64
413×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
055732
1150723
2414705
31331704
42171704
53318704
63456704
73673704
83888704
94170704
104583704
115080704
125658704
136348704
146858704
157252704
167640704
Stop Event
node limit
Counts
213 → 161
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 (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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (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 (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))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
Outputs
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
(*.f64 (cos.f64 y) z)
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 z (fma.f64 (*.f64 y -1/2) y 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 -1/2 (*.f64 y y)) (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 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 (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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/6 (pow.f64 y 3) y)))
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))) (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 (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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x z))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 y x z))
(fma.f64 y x (*.f64 z (fma.f64 (*.f64 y -1/2) y 1)))
(fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x (fma.f64 (*.f64 -1/6 (pow.f64 y 3)) x z)))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) 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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.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))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.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))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))

localize14.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 7 computations (68.2% saved)

series4.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite80.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
757×pow1_binary64
689×add-log-exp_binary64
689×log1p-expm1-u_binary64
689×expm1-log1p-u_binary64
672×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify180.0ms (1.8%)

Algorithm
egg-herbie
Rules
853×fma-def_binary64
757×sqr-pow_binary64
556×distribute-lft-out_binary64
476×*-commutative_binary64
441×cube-prod_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
025396
163394
2151394
3400391
41332388
52659388
64130388
74254388
84430388
94644388
104980388
115334388
125810388
136353388
147015388
157843388
Stop Event
node limit
Counts
57 → 32
Calls
Call 1
Inputs
(*.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 (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))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
Outputs
(*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x z))
(fma.f64 y x (fma.f64 z (*.f64 y (*.f64 y -1/2)) z))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 y (*.f64 z -1/2) x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 (pow.f64 y 3) (*.f64 x -1/6) (fma.f64 y x z)))
(fma.f64 y (*.f64 y (*.f64 z -1/2)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(fma.f64 y x (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 x -1/6) (*.f64 z -1/2)) z))
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) (*.f64 z (fma.f64 y (*.f64 y -1/2) 1)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.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))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.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))
(fma.f64 (cos.f64 y) z (*.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 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))

eval49.0ms (0.5%)

Compiler

Compiled 3378 to 1083 computations (67.9% saved)

prune55.0ms (0.6%)

Pruning

20 alts after pruning (18 fresh and 2 done)

PrunedKeptTotal
New21418232
Fresh000
Picked011
Done011
Total21420234
Error
0b
Counts
234 → 20
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
14.6b
(+.f64 (*.f64 x (sin.f64 y)) z)
16.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
0.9b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 x (sin.f64 y)))
34.1b
(fma.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 z (cos.f64 y)))
29.9b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) (*.f64 z (cos.f64 y)))
0.8b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
0.1b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
31.2b
(fma.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)) (*.f64 z (cos.f64 y)))
30.3b
(+.f64 (*.f64 y x) z)
0.1b
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
0.6b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) (*.f64 z (cos.f64 y)))
4.1b
(fma.f64 (*.f64 x (cbrt.f64 (pow.f64 (sin.f64 y) 2))) (cbrt.f64 (sin.f64 y)) (*.f64 z (cos.f64 y)))
30.2b
(fma.f64 y x z)
39.7b
z
37.1b
(*.f64 (sin.f64 y) x)
31.5b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
25.9b
(*.f64 (cos.f64 y) z)
35.7b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (*.f64 x (sin.f64 y)))
Compiler

Compiled 477 to 312 computations (34.6% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 7 computations (68.2% saved)

series7.0ms (0.1%)

Counts
2 → 40
Calls

15 calls:

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

rewrite59.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
757×pow1_binary64
689×add-log-exp_binary64
689×log1p-expm1-u_binary64
689×expm1-log1p-u_binary64
672×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify203.0ms (2.1%)

Algorithm
egg-herbie
Rules
845×fma-def_binary64
626×distribute-lft-out_binary64
551×sqr-pow_binary64
466×associate-+l+_binary64
439×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
040472
1109467
2285453
3811451
42536451
53406451
65141451
75482451
86064451
96482451
106946451
117476451
Stop Event
node limit
Counts
74 → 53
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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))
(*.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 (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))
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 x (+.f64 (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3))) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/5040 (pow.f64 y 7) (fma.f64 -1/6 (pow.f64 y 3) y))))
(*.f64 x (+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))))))
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x z))
(fma.f64 y x (fma.f64 z (*.f64 y (*.f64 y -1/2)) z))
(fma.f64 y x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) z))
(fma.f64 y (*.f64 z (*.f64 y -1/2)) (fma.f64 y x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) (fma.f64 z (*.f64 -1/2 (*.f64 y y)) z))
(fma.f64 y (*.f64 z (*.f64 y -1/2)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 x (sin.f64 y)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series28.0ms (0.3%)

Counts
1 → 9
Calls

9 calls:

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

rewrite62.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
707×pow1_binary64
655×add-log-exp_binary64
655×log1p-expm1-u_binary64
655×expm1-log1p-u_binary64
640×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0524
1624
Stop Event
saturated
Counts
44 → 37
Calls
Call 1
Inputs
z
(*.f64 y x)
(*.f64 y x)
z
(*.f64 y x)
(*.f64 y x)
(*.f64 y x)
z
z
Outputs
z
(*.f64 y x)
(*.f64 y x)
z
(*.f64 y x)
(*.f64 y x)
(*.f64 y x)
z
z

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

series7.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite58.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify145.0ms (1.5%)

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

Useful iterations: 4 (0.0ms)

IterNodesCost
022305
155249
2136246
3368242
41004240
52335240
62793240
73429240
83551240
93724240
103943240
114930240
125390240
135991240
146744240
157676240
Stop Event
node limit
Counts
71 → 44
Calls
Call 1
Inputs
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
Outputs
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z))
(fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 y x z))
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z)
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 x (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z))
(fma.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)) z)
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)) z)
(fma.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)) z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (sin.f64 y))
0.1b
(*.f64 z (cos.f64 y))
0.2b
(pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2)
7.8b
(sqrt.f64 (*.f64 x (sin.f64 y)))
Compiler

Compiled 43 to 14 computations (67.4% saved)

series67.0ms (0.7%)

Counts
2 → 16
Calls

12 calls:

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

rewrite71.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
(sqrt.f64 (*.f64 x (sin.f64 y)))
(pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 x (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (pow.f64 (*.f64 x (sin.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sin.f64 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(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 x (sin.f64 y)) 1)))) (#(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 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 (cbrt.f64 (*.f64 x (sin.f64 y))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(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 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) (*.f64 (sqrt.f64 (sin.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (pow.f64 (*.f64 x (sin.f64 y)) 1/4)) (pow.f64 (*.f64 x (sin.f64 y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (cbrt.f64 (*.f64 x (sin.f64 y)))) (cbrt.f64 (sqrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) (sqrt.f64 x)) (sqrt.f64 (sin.f64 y)))))) (#(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 (pow.f64 (exp.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 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))))))))

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06112
17112
Stop Event
saturated
Counts
66 → 51
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.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 (sin.f64 y) x)
Outputs
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.f64 (sin.f64 y) x))
(sqrt.f64 (*.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 (sin.f64 y) x)

localize15.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 35 to 9 computations (74.3% saved)

series12.0ms (0.1%)

Counts
3 → 56
Calls

18 calls:

TimeVariablePointExpression
3.0ms
y
@0
(sqrt.f64 (cos.f64 y))
2.0ms
z
@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
@-inf
(*.f64 z (sqrt.f64 (cos.f64 y)))

rewrite103.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
931×pow1_binary64
850×add-log-exp_binary64
850×log1p-expm1-u_binary64
850×expm1-log1p-u_binary64
828×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify187.0ms (1.9%)

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

Useful iterations: 8 (0.0ms)

IterNodesCost
053610
1131602
2334593
31092591
41759591
52749591
62883591
73038591
83204585
95086585
105397585
115767585
126232585
136785585
147532585
157942585
Stop Event
node limit
Counts
110 → 79
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (*.f64 -19/5760 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z)))))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (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 (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))
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
Outputs
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
(*.f64 (sqrt.f64 (cos.f64 y)) z)
z
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) z)
(*.f64 (fma.f64 -1/4 (*.f64 y y) 1) z)
(*.f64 z (fma.f64 -1/4 (*.f64 y y) 1))
(*.f64 z (fma.f64 y (*.f64 y -1/4) 1))
(+.f64 (*.f64 -1/4 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 -1/96 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 -1/96 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/4 (*.f64 z (*.f64 y y)) (*.f64 (fma.f64 -1/96 (pow.f64 y 4) 1) z))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1)))
(fma.f64 z (*.f64 y (fma.f64 y -1/4 (*.f64 -1/96 (pow.f64 y 3)))) 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)))))
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (+.f64 (fma.f64 -1/4 (*.f64 z (*.f64 y y)) z) (*.f64 -1/96 (*.f64 z (pow.f64 y 4)))))
(fma.f64 -19/5760 (*.f64 z (pow.f64 y 6)) (fma.f64 -1/4 (*.f64 z (*.f64 y y)) (*.f64 (fma.f64 -1/96 (pow.f64 y 4) 1) z)))
(+.f64 z (*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6))))))
(*.f64 z (fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (fma.f64 -19/5760 (pow.f64 y 6) 1))))
(*.f64 z (fma.f64 y (fma.f64 -19/5760 (pow.f64 y 5) (fma.f64 y -1/4 (*.f64 -1/96 (pow.f64 y 3)))) 1))
(fma.f64 z (fma.f64 y (*.f64 y -1/4) (*.f64 (pow.f64 y 4) (fma.f64 (*.f64 y y) -19/5760 -1/96))) z)
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z))
(fma.f64 (*.f64 z (*.f64 y y)) -1/2 (fma.f64 y x z))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 y (*.f64 z -1/2) x) z)
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 (*.f64 z (*.f64 y y)) -1/2 (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 y x (fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z)))
(fma.f64 y x (fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z)))
(fma.f64 y x (fma.f64 (*.f64 y y) (fma.f64 x (*.f64 y -1/6) (*.f64 z -1/2)) z))
(fma.f64 y x (fma.f64 (*.f64 y y) (fma.f64 z -1/2 (*.f64 x (*.f64 y -1/6))) z))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
(*.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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) 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))
(fma.f64 (sin.f64 y) x (*.f64 (cos.f64 y) z))
1
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) 1)
(fma.f64 -1/4 (*.f64 y y) 1)
(fma.f64 y (*.f64 y -1/4) 1)
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (*.f64 -1/96 (pow.f64 y 4))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (*.f64 -1/96 (pow.f64 y 4)))
(fma.f64 -1/4 (*.f64 y y) (fma.f64 -1/96 (pow.f64 y 4) 1))
(fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) 1))
(+.f64 (*.f64 -1/4 (pow.f64 y 2)) (+.f64 1 (+.f64 (*.f64 -1/96 (pow.f64 y 4)) (*.f64 -19/5760 (pow.f64 y 6)))))
(+.f64 (fma.f64 -1/4 (*.f64 y y) 1) (fma.f64 -1/96 (pow.f64 y 4) (*.f64 -19/5760 (pow.f64 y 6))))
(fma.f64 y (*.f64 y -1/4) (fma.f64 -1/96 (pow.f64 y 4) (fma.f64 -19/5760 (pow.f64 y 6) 1)))
(fma.f64 y (fma.f64 -19/5760 (pow.f64 y 5) (fma.f64 y -1/4 (*.f64 -1/96 (pow.f64 y 3)))) 1)

eval104.0ms (1.1%)

Compiler

Compiled 6693 to 2322 computations (65.3% saved)

prune93.0ms (1%)

Pruning

24 alts after pruning (18 fresh and 6 done)

PrunedKeptTotal
New43413447
Fresh8513
Picked011
Done156
Total44324467
Error
0b
Counts
467 → 24
Alt Table
Click to see full alt table
StatusErrorProgram
35.9b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
37.1b
(*.f64 (sin.f64 y) x)
0.1b
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
14.6b
(+.f64 (*.f64 x (sin.f64 y)) z)
16.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
0.9b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 x (sin.f64 y)))
31.5b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
30.2b
(fma.f64 y x z)
34.1b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) (*.f64 z (cos.f64 y)))
4.1b
(fma.f64 (*.f64 x (cbrt.f64 (pow.f64 (sin.f64 y) 2))) (cbrt.f64 (sin.f64 y)) (*.f64 z (cos.f64 y)))
49.3b
(+.f64 (pow.f64 (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x)) 2) (*.f64 z (cos.f64 y)))
52.3b
(*.f64 y x)
30.3b
(+.f64 (*.f64 y x) z)
0.1b
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
0.6b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) (*.f64 z (cos.f64 y)))
26.2b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 y x))
35.7b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (*.f64 x (sin.f64 y)))
15.2b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
39.7b
z
1.4b
(pow.f64 (cbrt.f64 (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))) 3)
0.1b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
31.2b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y)))
25.9b
(*.f64 (cos.f64 y) z)
Compiler

Compiled 537 to 353 computations (34.3% saved)

localize25.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 49 to 22 computations (55.1% saved)

series17.0ms (0.2%)

Counts
4 → 52
Calls

15 calls:

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

rewrite97.0ms (1%)

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

Useful iterations: 0 (0.0ms)

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

simplify80.0ms (0.8%)

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

Useful iterations: 3 (0.0ms)

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

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 y x) z)
0.2b
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
1.6b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
7.2b
(*.f64 (pow.f64 y 2) z)
Compiler

Compiled 44 to 23 computations (47.7% saved)

series9.0ms (0.1%)

Counts
3 → 21
Calls

21 calls:

TimeVariablePointExpression
1.0ms
y
@0
(*.f64 (pow.f64 y 2) z)
1.0ms
z
@0
(*.f64 (pow.f64 y 2) z)
1.0ms
y
@inf
(*.f64 (pow.f64 y 2) z)
1.0ms
x
@0
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
0.0ms
z
@0
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))

rewrite85.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
638×log-prod_binary64
630×fma-def_binary64
341×pow2_binary64
334×fma-neg_binary64
235×pow1/3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01232
126932
2361932
Stop Event
node limit
Counts
3 → 134
Calls
Call 1
Inputs
(*.f64 (pow.f64 y 2) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 y y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (*.f64 y y) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 y y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 y y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 z 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 z 3) (pow.f64 (*.f64 y y) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 y y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 y y) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (*.f64 y y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 y y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 y y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 y y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 y y) z)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z))) (/.f64 (pow.f64 (fma.f64 y x z) 2) (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) 2) (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3)) (/.f64 1 (fma.f64 (fma.f64 y x z) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (pow.f64 (fma.f64 y x z) 2)) (/.f64 1 (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 y x z) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4)) (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z)) (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (pow.f64 (fma.f64 y x z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3)) (fma.f64 (fma.f64 y x z) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3)) (+.f64 (pow.f64 (fma.f64 y x z) 2) (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (*.f64 (*.f64 (*.f64 y y) z) (*.f64 -1/2 (fma.f64 y x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (pow.f64 (fma.f64 y x z) 2)) (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3))) (neg.f64 (fma.f64 (fma.f64 y x z) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (pow.f64 (fma.f64 y x z) 2))) (neg.f64 (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 2) (-.f64 (*.f64 z z) (*.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 y x z) 2) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4)) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 2) (*.f64 z z)) (-.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (fma.f64 y x z) (-.f64 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4)) (fma.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8 (pow.f64 (fma.f64 y x z) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z)) (-.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) (pow.f64 (fma.f64 y x z) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 z) (exp.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (exp.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 z) (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (exp.f64 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 z)) (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (exp.f64 (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2))) (exp.f64 (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (+.f64 1 (expm1.f64 (fma.f64 y x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2))) (+.f64 1 (expm1.f64 (fma.f64 y x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 y x z))) (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 y x z)) (+.f64 1 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 y x z))) (+.f64 1 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (exp.f64 (*.f64 y x))) (exp.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2))) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2) (exp.f64 (*.f64 y x))) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y y) (*.f64 z -1/2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z 1 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) z) -1/2 (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1/2 (*.f64 (*.f64 y y) z) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) 1 (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) 1 (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 y x z) 1 (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (*.f64 (*.f64 y y) z) -1/2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 y x z) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 y x z)) (pow.f64 (cbrt.f64 (fma.f64 y x z)) 2) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 y x z)) 2) (cbrt.f64 (fma.f64 y x z)) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (pow.f64 (cbrt.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 2) (cbrt.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 z) 2) (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 y y) z)) 2) (*.f64 (cbrt.f64 (*.f64 (*.f64 y y) z)) -1/2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y x)) (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (cbrt.f64 (*.f64 y x)) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 y x z)) (sqrt.f64 (fma.f64 y x z)) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 z)) (*.f64 (*.f64 y (sqrt.f64 z)) -1/2) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3)) (/.f64 1 (fma.f64 z (-.f64 z (*.f64 y x)) (pow.f64 (*.f64 y x) 2))) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 z z)) (/.f64 1 (-.f64 (*.f64 y x) z)) (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 y y) -1/2) z (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 1 z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2))) 2) (cbrt.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2))) (sqrt.f64 (fma.f64 y x (*.f64 (*.f64 (*.f64 y y) z) -1/2))) z)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 z) (*.f64 y y) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (pow.f64 (cbrt.f64 (*.f64 (*.f64 y y) z)) 2)) (cbrt.f64 (*.f64 (*.f64 y y) z)) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -1/2 (*.f64 y (sqrt.f64 z))) (*.f64 y (sqrt.f64 z)) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) 1) z (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (*.f64 y y) -1/2) (sqrt.f64 z)) (sqrt.f64 z) (fma.f64 y x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (+.f64 z (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2)) 2)) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 -1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 (*.f64 z z) (pow.f64 y 4)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 z) (*.f64 y y)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (*.f64 y y) z) 3) -1/8))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) 1))))))

simplify163.0ms (1.7%)

Algorithm
egg-herbie
Rules
2100×fma-neg_binary64
545×fma-def_binary64
415×distribute-rgt-neg-in_binary64
383×unswap-sqr_binary64
331×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
025258
157234
2127234
3334232
41043201
52391201
64145201
75107201
86080201
96522201
107091201
117404201
Stop Event
node limit
Counts
155 → 149
Calls
Call 1
Inputs
z
(+.f64 (*.f64 y x) z)
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (*.f64 y x))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(*.f64 y x)
(*.f64 y x)
Outputs
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 -1/2 (*.f64 (*.f64 z y) y))
(*.f64 y (*.f64 (*.f64 z y) -1/2))
(*.f64 z (*.f64 y (*.f64 y -1/2)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (*.f64 y x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (*.f64 y x))
(fma.f64 y x (*.f64 -1/2 (*.f64 (*.f64 z y) y)))
(fma.f64 y x (*.f64 y (*.f64 (*.f64 z y) -1/2)))
(*.f64 y (+.f64 x (*.f64 z (*.f64 y -1/2))))
(*.f64 y (fma.f64 z (*.f64 y -1/2) x))
(*.f64 y (fma.f64 y (*.f64 z 1/2) x))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 -1/2 (*.f64 (*.f64 z y) y))
(*.f64 y (*.f64 (*.f64 z y) -1/2))
(*.f64 z (*.f64 y (*.f64 y -1/2)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (*.f64 y x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (*.f64 y x))
(fma.f64 y x (*.f64 -1/2 (*.f64 (*.f64 z y) y)))
(fma.f64 y x (*.f64 y (*.f64 (*.f64 z y) -1/2)))
(*.f64 y (+.f64 x (*.f64 z (*.f64 y -1/2))))
(*.f64 y (fma.f64 z (*.f64 y -1/2) x))
(*.f64 y (fma.f64 y (*.f64 z 1/2) x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(fma.f64 -1/2 (*.f64 (*.f64 z y) y) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 (*.f64 y y) (*.f64 z -1/2) z)
(*.f64 z (fma.f64 y (*.f64 y -1/2) 1))
(fma.f64 y (*.f64 y (*.f64 z 1/2)) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(fma.f64 -1/2 (*.f64 (*.f64 z y) y) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 (*.f64 y y) (*.f64 z -1/2) z)
(*.f64 z (fma.f64 y (*.f64 y -1/2) 1))
(fma.f64 y (*.f64 y (*.f64 z 1/2)) z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)))
(fma.f64 y x (*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y)))))
(fma.f64 y x (fma.f64 -1/2 (*.f64 (*.f64 z y) y) z))
(fma.f64 z (fma.f64 y (*.f64 y -1/2) 1) (*.f64 y x))
(fma.f64 y x (fma.f64 (*.f64 y y) (*.f64 z -1/2) z))
(fma.f64 y (fma.f64 z (*.f64 y -1/2) x) z)
(fma.f64 y (fma.f64 y (*.f64 z 1/2) x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(fma.f64 -1/2 (*.f64 (*.f64 z y) y) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(fma.f64 (*.f64 y y) (*.f64 z -1/2) z)
(*.f64 z (fma.f64 y (*.f64 y -1/2) 1))
(fma.f64 y (*.f64 y (*.f64 z 1/2)) z)
(*.f64 y x)
(*.f64 y x)

localize15.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 42 to 10 computations (76.2% saved)

series11.0ms (0.1%)

Counts
3 → 64
Calls

21 calls:

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

rewrite107.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
599×log-prod_binary64
437×pow-prod-down_binary64
387×fma-def_binary64
301×pow2_binary64
229×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify83.0ms (0.8%)

Algorithm
egg-herbie
Rules
925×unsub-neg_binary64
670×unswap-sqr_binary64
367×*-commutative_binary64
324×fma-def_binary64
271×distribute-rgt-neg-out_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
059688
1164673
2478643
31406643
42058643
52885642
65184642
Stop Event
node limit
Counts
182 → 146
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (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 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 y (sqrt.f64 x))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x))) (+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x)))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x))) (+.f64 (*.f64 y (sqrt.f64 x)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x))) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 x))))))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (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 (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 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (*.f64 1/120 (pow.f64 y 5))))
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 x (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7)))))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 x (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 x (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 x (sin.f64 y))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 x (sin.f64 y))
(*.f64 y (sqrt.f64 x))
(+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x))))
(fma.f64 y (sqrt.f64 x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x))))
(*.f64 (sqrt.f64 x) (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 (sqrt.f64 x) (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x))) (+.f64 (*.f64 y (sqrt.f64 x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x)))))
(fma.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x)) (fma.f64 y (sqrt.f64 x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x)))))
(fma.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x)) (*.f64 (sqrt.f64 x) (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 (sqrt.f64 x) (+.f64 (fma.f64 -1/6 (pow.f64 y 3) y) (*.f64 1/120 (pow.f64 y 5))))
(*.f64 (sqrt.f64 x) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x))) (+.f64 (*.f64 y (sqrt.f64 x)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x))) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 x))))))
(fma.f64 1/120 (*.f64 (pow.f64 y 5) (sqrt.f64 x)) (fma.f64 y (sqrt.f64 x) (fma.f64 -1/6 (*.f64 (pow.f64 y 3) (sqrt.f64 x)) (*.f64 -1/5040 (*.f64 (pow.f64 y 7) (sqrt.f64 x))))))
(+.f64 (*.f64 (sqrt.f64 x) (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7)))) (*.f64 (sqrt.f64 x) (+.f64 (*.f64 1/120 (pow.f64 y 5)) y)))
(*.f64 (sqrt.f64 x) (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 (sqrt.f64 x) (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7)))))
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x z))
(fma.f64 y x (fma.f64 -1/2 (*.f64 y (*.f64 y z)) z))
(fma.f64 y x (fma.f64 z (*.f64 y (*.f64 y -1/2)) z))
(+.f64 z (*.f64 y (fma.f64 z (*.f64 y -1/2) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(fma.f64 z (*.f64 y (*.f64 y -1/2)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x)))
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (sin.f64 y) x))))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 (sin.f64 y) x)
(*.f64 x (sin.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 45 to 10 computations (77.8% saved)

series8.0ms (0.1%)

Counts
3 → 44
Calls

15 calls:

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

rewrite60.0ms (0.6%)

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 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y)))
(*.f64 x (sqrt.f64 (sin.f64 y)))
(sqrt.f64 (sin.f64 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sin.f64 y))) 1)))) (#(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 (pow.f64 (exp.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 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 -.f64 (+.f64 1 (*.f64 x (sqrt.f64 (sin.f64 y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 (sin.f64 y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 (sin.f64 y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (sin.f64 y) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sqrt.f64 (sin.f64 y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (sin.f64 y))) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 (sqrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sin.f64 y) 1/4) (pow.f64 (sin.f64 y) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2)) (sqrt.f64 (cbrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) 1/2) (pow.f64 (cbrt.f64 (sin.f64 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sin.f64 y) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sin.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 y) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (sin.f64 y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sin.f64 y) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sin.f64 y) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (sin.f64 y))))))))

simplify123.0ms (1.3%)

Algorithm
egg-herbie
Rules
1154×fma-def_binary64
690×unswap-sqr_binary64
654×sqr-pow_binary64
596×cube-prod_binary64
430×fabs-mul_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
028356
174353
2193342
3567340
41542338
52401338
62608338
73056338
83935338
94078338
104305338
114792338
125388338
136261338
147370338
Stop Event
node limit
Counts
86 → 52
Calls
Call 1
Inputs
(*.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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 (sqrt.f64 (sin.f64 y)) x)
Outputs
(*.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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (*.f64 1/120 (pow.f64 y 5)) (fma.f64 -1/6 (pow.f64 y 3) y)))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 1/120 (pow.f64 y 5))) (fma.f64 -1/5040 (pow.f64 y 7) y)))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) y))))
(*.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 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))
(*.f64 (sqrt.f64 (sin.f64 y)) x)
(*.f64 x (sqrt.f64 (sin.f64 y)))

eval221.0ms (2.3%)

Compiler

Compiled 10463 to 3795 computations (63.7% saved)

prune117.0ms (1.2%)

Pruning

25 alts after pruning (17 fresh and 8 done)

PrunedKeptTotal
New5808588
Fresh4913
Picked101
Done2810
Total58725612
Error
0b
Counts
612 → 25
Alt Table
Click to see full alt table
StatusErrorProgram
35.9b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
0.8b
(+.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y))) 3) (*.f64 z (cos.f64 y)))
37.1b
(*.f64 (sin.f64 y) x)
0.1b
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
14.6b
(+.f64 (*.f64 x (sin.f64 y)) z)
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
31.1b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (pow.f64 (pow.f64 (sin.f64 y) 1/4) 2)) (*.f64 z (cos.f64 y)))
30.2b
(fma.f64 y x z)
30.3b
(+.f64 (*.f64 y x) z)
0.1b
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
25.9b
(*.f64 (cos.f64 y) z)
62.5b
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
31.5b
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
0.6b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) (*.f64 z (cos.f64 y)))
26.2b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 y x))
15.2b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
39.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z)
39.5b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z)
16.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
39.7b
z
1.4b
(pow.f64 (cbrt.f64 (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))) 3)
0.1b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
52.3b
(*.f64 y x)
35.7b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (*.f64 (sin.f64 y) x))
0.9b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 (sin.f64 y) x))
Compiler

Compiled 529 to 349 computations (34% saved)

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 55 to 18 computations (67.3% saved)

series25.0ms (0.3%)

Counts
4 → 60
Calls

18 calls:

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

rewrite123.0ms (1.3%)

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

simplify145.0ms (1.5%)

Algorithm
egg-herbie
Rules
1303×fma-def_binary64
651×sqr-pow_binary64
614×unswap-sqr_binary64
541×cube-prod_binary64
327×associate-*l*_binary64
Iterations

Useful iterations: 9 (0.0ms)

IterNodesCost
035460
196457
2240446
3660444
41979444
52378444
62806444
73711444
83917444
94218442
105432442
116026442
126929442
137736442
Stop Event
node limit
Counts
123 → 75
Calls
Call 1
Inputs
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (sin.f64 y) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) 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 (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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
Outputs
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (sin.f64 y) 1/3)
(cbrt.f64 (sin.f64 y))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(pow.f64 (pow.f64 (sin.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (sin.f64 y) 2))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))
(fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (*.f64 x (+.f64 y (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 (*.f64 -1/5040 (*.f64 (pow.f64 y 7) x)) (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/5040 (*.f64 x (pow.f64 y 7)) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (*.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (*.f64 -1/5040 (pow.f64 y 7))))))
(*.f64 x (+.f64 (fma.f64 -1/6 (pow.f64 y 3) (*.f64 -1/5040 (pow.f64 y 7))) (fma.f64 1/120 (pow.f64 y 5) y)))
(*.f64 x (+.f64 (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 (fma.f64 -1/5040 (pow.f64 y 7) y) (fma.f64 1/120 (pow.f64 y 5) (*.f64 -1/6 (pow.f64 y 3)))))
(*.f64 x (+.f64 y (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) (*.f64 -1/6 (pow.f64 y 3))))))
(*.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/5040 (pow.f64 y 7) y))))
(*.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 (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 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (sin.f64 y)) 1/3) x)
(*.f64 x (cbrt.f64 (sin.f64 y)))

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -1/2 (*.f64 y y))
7.4b
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
Compiler

Compiled 21 to 10 computations (52.4% saved)

series3.0ms (0%)

Counts
2 → 36
Calls

9 calls:

TimeVariablePointExpression
0.0ms
y
@inf
(*.f64 -1/2 (*.f64 y y))
0.0ms
y
@0
(*.f64 -1/2 (*.f64 y y))
0.0ms
z
@0
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
0.0ms
y
@inf
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
0.0ms
z
@inf
(*.f64 z (*.f64 -1/2 (*.f64 y y)))

rewrite51.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

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

simplify177.0ms (1.8%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1080×sqr-pow_binary64
636×fabs-mul_binary64
612×pow-sqr_binary64
610×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09324
118324
239324
390324
4247324
5850324
61099324
71513324
81613324
91748324
101917324
112162324
122477324
132849324
143308324
153893324
164601324
175461324
185885324
196199324
206505324
216583324
226619324
Stop Event
node limit
Counts
58 → 26
Calls
Call 1
Inputs
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (pow.f64 y 2))
Outputs
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (*.f64 y y) z))
(*.f64 -1/2 (*.f64 y (*.f64 y z)))
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))
(*.f64 -1/2 (pow.f64 y 2))
(*.f64 -1/2 (*.f64 y y))

localize4.0ms (0%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 36 to 8 computations (77.8% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite59.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
981×pow1_binary64
906×add-log-exp_binary64
906×log1p-expm1-u_binary64
906×expm1-log1p-u_binary64
98×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify141.0ms (1.4%)

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

Useful iterations: 4 (0.0ms)

IterNodesCost
022305
155249
2136246
3368242
41004240
52335240
62793240
73429240
83551240
93724240
103943240
114930240
125390240
135991240
146744240
157676240
Stop Event
node limit
Counts
73 → 47
Calls
Call 1
Inputs
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
z
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
(+.f64 z (*.f64 (sin.f64 y) x))
Outputs
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 (*.f64 y x) z)
(fma.f64 y x z)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x))))
(+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3))))
(fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z))
(fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 y x z))
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z)
(+.f64 (*.f64 1/120 (*.f64 (pow.f64 y 5) x)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 -1/6 (*.f64 (pow.f64 y 3) x)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (+.f64 (fma.f64 y x z) (*.f64 -1/6 (*.f64 x (pow.f64 y 3)))))
(fma.f64 1/120 (*.f64 x (pow.f64 y 5)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 x (fma.f64 1/120 (pow.f64 y 5) y) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z))
(fma.f64 x (+.f64 (*.f64 -1/6 (pow.f64 y 3)) (fma.f64 1/120 (pow.f64 y 5) y)) z)
(fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 1/120 (pow.f64 y 5) y)) z)
(fma.f64 x (fma.f64 1/120 (pow.f64 y 5) (fma.f64 -1/6 (pow.f64 y 3) y)) z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(*.f64 (sin.f64 y) x)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
z
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)
(+.f64 z (*.f64 (sin.f64 y) x))
(fma.f64 (sin.f64 y) x z)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y)))
0.6b
(cbrt.f64 x)
0.6b
(cbrt.f64 (sin.f64 y))
0.7b
(pow.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y))) 3)
Compiler

Compiled 47 to 15 computations (68.1% saved)

series16.0ms (0.2%)

Counts
3 → 16
Calls

15 calls:

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

rewrite71.0ms (0.7%)

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

Useful iterations: 1 (0.0ms)

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

simplify180.0ms (1.8%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
010136
126112
240112
351112
475112
5162112
6543112
71206112
81298112
91436112
101599112
111837112
122164112
132591112
143097112
153701112
164428112
174747112
185033112
195253112
205431112
215515112
226458112
237435112
247901112
Stop Event
node limit
Counts
75 → 62
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
Outputs
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 1 (*.f64 (sin.f64 y) x))
(*.f64 (sin.f64 y) x)
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))
(pow.f64 (*.f64 (sin.f64 y) x) 1/3)
(cbrt.f64 (*.f64 (sin.f64 y) x))

eval111.0ms (1.1%)

Compiler

Compiled 4881 to 1820 computations (62.7% saved)

prune94.0ms (1%)

Pruning

27 alts after pruning (14 fresh and 13 done)

PrunedKeptTotal
New3186324
Fresh4812
Picked011
Done01212
Total32227349
Error
0b
Counts
349 → 27
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(+.f64 (pow.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y))) 3) (*.f64 z (cos.f64 y)))
0.1b
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
14.6b
(+.f64 (*.f64 x (sin.f64 y)) z)
16.6b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
37.1b
(*.f64 (sin.f64 y) x)
0.3b
(fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (cos.f64 y) 2))) (cbrt.f64 (cos.f64 y)) (*.f64 x (sin.f64 y)))
30.2b
(fma.f64 y x z)
30.3b
(+.f64 (*.f64 y x) z)
0.1b
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
0.9b
(fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 (sin.f64 y) x))
15.2b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
35.9b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
25.9b
(*.f64 (cos.f64 y) z)
62.5b
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
62.3b
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
31.5b
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
0.6b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) (*.f64 z (cos.f64 y)))
26.2b
(fma.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y)) (*.f64 y x))
39.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z)
39.5b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z)
39.7b
z
1.4b
(pow.f64 (cbrt.f64 (+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))) 3)
0.1b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
52.3b
(*.f64 y x)
39.4b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (pow.f64 (pow.f64 (sin.f64 y) 1/4) 2)) z)
35.7b
(fma.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z) (*.f64 (sin.f64 y) x))
62.4b
(-.f64 (+.f64 1 (*.f64 z (*.f64 -1/2 (*.f64 y y)))) 1)
Compiler

Compiled 333 to 221 computations (33.6% saved)

regimes182.0ms (1.9%)

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

5 calls:

62.0ms
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
32.0ms
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
30.0ms
z
23.0ms
x
22.0ms
y
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
0.1b1(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 507 to 167 computations (67.1% saved)

regimes47.0ms (0.5%)

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

4 calls:

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

Compiled 150 to 65 computations (56.7% saved)

regimes134.0ms (1.4%)

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

4 calls:

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

Compiled 142 to 64 computations (54.9% saved)

regimes144.0ms (1.5%)

Counts
17 → 5
Calls
Call 1
Inputs
z
z
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(-.f64 (+.f64 1 (*.f64 z (*.f64 -1/2 (*.f64 y y)))) 1)
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(fma.f64 y x z)
(fma.f64 y x z)
(*.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 x (sin.f64 y)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 y x) z))
Outputs
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 x (sin.f64 y)) z)
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 x (sin.f64 y)) z)
(*.f64 (cos.f64 y) z)
Calls

3 calls:

69.0ms
y
38.0ms
z
32.0ms
x
Results
ErrorSegmentsBranch
8.5b3x
10.7b4y
5.7b5z
Compiler

Compiled 121 to 54 computations (55.4% saved)

bsearch245.0ms (2.5%)

Algorithm
binary-search
Steps
TimeLeftRight
68.0ms
87716725260.12997
29610547099847.535
63.0ms
1.6218222859138105e-133
2.601523267934546e-133
55.0ms
4.384120464137304e-170
1.8235241019479528e-166
58.0ms
-1.1041014529716775e+25
-7.374097473638935e+21
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes149.0ms (1.5%)

Counts
14 → 7
Calls
Call 1
Inputs
z
z
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(-.f64 (+.f64 1 (*.f64 z (*.f64 -1/2 (*.f64 y y)))) 1)
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
(*.f64 (sin.f64 y) x)
(*.f64 (sin.f64 y) x)
(fma.f64 y x z)
(fma.f64 y x z)
(*.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
Outputs
(*.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
(*.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
(*.f64 (sin.f64 y) x)
(*.f64 (cos.f64 y) z)
Calls

3 calls:

63.0ms
y
59.0ms
z
24.0ms
x
Results
ErrorSegmentsBranch
15.3b3x
10.6b7y
12.4b7z
Compiler

Compiled 89 to 40 computations (55.1% saved)

bsearch395.0ms (4%)

Algorithm
binary-search
Steps
TimeLeftRight
157.0ms
3.0838474813585634e+193
1.6753291705899198e+195
39.0ms
2.236350086383115e-18
8.968143961225647e-7
37.0ms
-3.511397279149462
-0.00013607478070912725
62.0ms
-3.8631468672212416e+29
-1.9386270498887087e+20
34.0ms
-1.0334180033719905e+58
-4.45450690179577e+54
65.0ms
-7.47855548357234e+139
-5.742112648211332e+130
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes111.0ms (1.1%)

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

3 calls:

43.0ms
x
43.0ms
z
22.0ms
y
Results
ErrorSegmentsBranch
24.8b3x
15.8b3y
23.8b5z
Compiler

Compiled 85 to 38 computations (55.3% saved)

bsearch67.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
32.0ms
2.236350086383115e-18
8.968143961225647e-7
35.0ms
-196821.13922514336
-102004.40835487047
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes19.0ms (0.2%)

Counts
8 → 1
Calls
Call 1
Inputs
z
z
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(*.f64 y (*.f64 -1/2 (*.f64 y z)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(-.f64 (+.f64 1 (*.f64 z (*.f64 -1/2 (*.f64 y y)))) 1)
(+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z))
Outputs
(+.f64 (*.f64 y x) z)
Calls

3 calls:

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

Compiled 65 to 35 computations (46.2% saved)

regimes27.0ms (0.3%)

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

3 calls:

12.0ms
x
10.0ms
z
3.0ms
y
Results
ErrorSegmentsBranch
35.4b3x
39.7b1y
36.5b3z
Compiler

Compiled 20 to 13 computations (35% saved)

bsearch106.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
54.0ms
3.609989251816531e+78
1.1777290780605276e+79
52.0ms
-3.953974486164688e+88
-1.0932646505723681e+86
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes19.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

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

3 calls:

12.0ms
x
3.0ms
z
3.0ms
y
Results
ErrorSegmentsBranch
39.7b1x
39.7b1y
39.7b1z
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify11.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
064261
176261
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -11041014529716775410466816) (*.f64 (cos.f64 y) z) (if (<=.f64 z 5961146735587331/135971326161092377264534580877431968596375838138120172339057699379303311324378174141225600579898697131235668348479104259928724310439093053288837114564246362097620805333860664072122400768) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z 1036886296559945/6393341031047152089869511126616404594173128996177860916959553453312761321102879990006386899074031556935325554936640763689877454191182408307282280448) (*.f64 (cos.f64 y) z) (if (<=.f64 z 2874301653323939/32768) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 y -74785554835723396920563132145846647590859486735153207531484167435375218465182141253686194518359671845528111282894086383150532880840473444352) (*.f64 (sin.f64 y) x) (if (<=.f64 y -10334180033719904643329154150049343201942328708010411556864) (*.f64 (cos.f64 y) z) (if (<=.f64 y -386314686722124158820325261312) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7906963738963645/2251799813685248) (*.f64 (cos.f64 y) z) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z)) (if (<=.f64 y 30838474813585633975046676979837141466791309232746476653830176576538620691170667869332053724555763074758850223779307693475188811598469548057135294160506119468044114386361962288584586825079717888) (*.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z)))))))
(if (<=.f64 y -1690680712266907/8589934592) (*.f64 (sin.f64 y) x) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z)) (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 y x) z)
(if (<=.f64 x -39539744861646881333389205640405516225510701697493374365876261052610200318083313071816704) (*.f64 y x) (if (<=.f64 x 3609989251816531192635699806628576981357124609164439222929795869205086802542592) z (*.f64 y x)))
z
Outputs
(fma.f64 x (sin.f64 y) (*.f64 z (cos.f64 y)))
(fma.f64 (cos.f64 y) z (*.f64 (sin.f64 y) x))
(fma.f64 (cos.f64 y) z (*.f64 x (sin.f64 y)))
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -11041014529716775410466816) (*.f64 (cos.f64 y) z) (if (<=.f64 z 5961146735587331/135971326161092377264534580877431968596375838138120172339057699379303311324378174141225600579898697131235668348479104259928724310439093053288837114564246362097620805333860664072122400768) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z 1036886296559945/6393341031047152089869511126616404594173128996177860916959553453312761321102879990006386899074031556935325554936640763689877454191182408307282280448) (*.f64 (cos.f64 y) z) (if (<=.f64 z 2874301653323939/32768) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 z -11041014529716775410466816) (*.f64 z (cos.f64 y)) (if (<=.f64 z 5961146735587331/135971326161092377264534580877431968596375838138120172339057699379303311324378174141225600579898697131235668348479104259928724310439093053288837114564246362097620805333860664072122400768) (+.f64 z (*.f64 x (sin.f64 y))) (if (<=.f64 z 1036886296559945/6393341031047152089869511126616404594173128996177860916959553453312761321102879990006386899074031556935325554936640763689877454191182408307282280448) (*.f64 z (cos.f64 y)) (if (<=.f64 z 2874301653323939/32768) (+.f64 z (*.f64 x (sin.f64 y))) (*.f64 z (cos.f64 y))))))
(if (<=.f64 y -74785554835723396920563132145846647590859486735153207531484167435375218465182141253686194518359671845528111282894086383150532880840473444352) (*.f64 (sin.f64 y) x) (if (<=.f64 y -10334180033719904643329154150049343201942328708010411556864) (*.f64 (cos.f64 y) z) (if (<=.f64 y -386314686722124158820325261312) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7906963738963645/2251799813685248) (*.f64 (cos.f64 y) z) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z)) (if (<=.f64 y 30838474813585633975046676979837141466791309232746476653830176576538620691170667869332053724555763074758850223779307693475188811598469548057135294160506119468044114386361962288584586825079717888) (*.f64 (sin.f64 y) x) (*.f64 (cos.f64 y) z)))))))
(if (<=.f64 y -74785554835723396920563132145846647590859486735153207531484167435375218465182141253686194518359671845528111282894086383150532880840473444352) (*.f64 x (sin.f64 y)) (if (<=.f64 y -10334180033719904643329154150049343201942328708010411556864) (*.f64 z (cos.f64 y)) (if (<=.f64 y -386314686722124158820325261312) (*.f64 x (sin.f64 y)) (if (<=.f64 y -7906963738963645/2251799813685248) (*.f64 z (cos.f64 y)) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (*.f64 (*.f64 z (*.f64 y y)) -1/2) (+.f64 z (*.f64 x y))) (if (<=.f64 y 30838474813585633975046676979837141466791309232746476653830176576538620691170667869332053724555763074758850223779307693475188811598469548057135294160506119468044114386361962288584586825079717888) (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y))))))))
(if (<=.f64 y -1690680712266907/8589934592) (*.f64 (sin.f64 y) x) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (+.f64 0 (*.f64 (*.f64 (*.f64 y y) z) -1/2)) (+.f64 (*.f64 y x) z)) (*.f64 (sin.f64 y) x)))
(if (<=.f64 y -1690680712266907/8589934592) (*.f64 x (sin.f64 y)) (if (<=.f64 y 5805896764055569/2596148429267413814265248164610048) (+.f64 (*.f64 (*.f64 z (*.f64 y y)) -1/2) (+.f64 z (*.f64 x y))) (*.f64 x (sin.f64 y))))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 x y))
(if (<=.f64 x -39539744861646881333389205640405516225510701697493374365876261052610200318083313071816704) (*.f64 y x) (if (<=.f64 x 3609989251816531192635699806628576981357124609164439222929795869205086802542592) z (*.f64 y x)))
(if (<=.f64 x -39539744861646881333389205640405516225510701697493374365876261052610200318083313071816704) (*.f64 x y) (if (<=.f64 x 3609989251816531192635699806628576981357124609164439222929795869205086802542592) z (*.f64 x y)))
z
Compiler

Compiled 203 to 110 computations (45.8% saved)

soundness8.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0912
11312
21612
Stop Event
saturated
Compiler

Compiled 23 to 15 computations (34.8% saved)

end149.0ms (1.5%)

Compiler

Compiled 179 to 63 computations (64.8% saved)

Profiling

Loading profile data...