Details

Time bar (total: 10.0s)

analyze404.0ms (4.1%)

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

Compiled 13 to 9 computations (30.8% saved)

sample2.5s (25.2%)

Results
1.1s1940×body1024valid
1.0s5314×body256valid
327.0ms997×body512valid
4.0msbody2048valid

preprocess22.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0912
11312
21612
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 x (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

2 alts after pruning (2 fresh and 0 done)

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

Compiled 12 to 8 computations (33.3% saved)

localize13.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 8 computations (70.4% saved)

series8.0ms (0.1%)

Counts
2 → 40
Calls

12 calls:

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

rewrite59.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify151.0ms (1.5%)

Algorithm
egg-herbie
Rules
1987×fma-def_binary64
682×sqr-pow_binary64
443×pow-sqr_binary64
420×*-commutative_binary64
376×cube-prod_binary64
Iterations

Useful iterations: 8 (0.0ms)

IterNodesCost
049336
1129329
2359314
31204313
41950313
52861313
62999313
73216313
83430305
95384305
105803305
116309305
126910305
137615305
Stop Event
node limit
Counts
66 → 42
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)
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 z (fma.f64 y (*.f64 y -1/2) 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z))))
(+.f64 (fma.f64 -1/2 (*.f64 z (*.f64 y y)) z) (*.f64 1/24 (*.f64 z (pow.f64 y 4))))
(fma.f64 -1/2 (*.f64 y (*.f64 y z)) (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z))
(*.f64 z (+.f64 (*.f64 -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)))
(fma.f64 (*.f64 y (*.f64 y z)) (fma.f64 y (*.f64 y 1/24) -1/2) z)
(fma.f64 z (*.f64 y (fma.f64 y -1/2 (*.f64 1/24 (pow.f64 y 3)))) 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)))))
(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))) (fma.f64 z (*.f64 1/24 (pow.f64 y 4)) z))
(*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6)))))
(*.f64 z (fma.f64 y (fma.f64 -1/720 (pow.f64 y 5) (*.f64 y -1/2)) (fma.f64 1/24 (pow.f64 y 4) 1)))
(*.f64 z (fma.f64 y (*.f64 y -1/2) (fma.f64 1/24 (pow.f64 y 4) (fma.f64 -1/720 (pow.f64 y 6) 1))))
(*.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/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/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 (fma.f64 -1/6 (pow.f64 y 3) (fma.f64 -1/5040 (pow.f64 y 7) (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) (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)

eval10.0ms (0.1%)

Compiler

Compiled 595 to 263 computations (55.8% saved)

prune63.0ms (0.6%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New33942
Fresh000
Picked011
Done000
Total331043
Error
0.1b
Counts
43 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
18.7b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) (*.f64 z (cos.f64 y)))
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
30.1b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) (*.f64 z (cos.f64 y)))
13.8b
(+.f64 (*.f64 x (sin.f64 y)) z)
0.6b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) (*.f64 z (cos.f64 y)))
0.2b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
22.7b
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
26.2b
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) (*.f64 z (cos.f64 y)))
0.9b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
25.7b
(+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z))
Compiler

Compiled 270 to 194 computations (28.1% saved)

localize22.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.6b
(pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3)
8.0b
(cbrt.f64 (*.f64 x (sin.f64 y)))
Compiler

Compiled 43 to 14 computations (67.4% saved)

series70.0ms (0.7%)

Counts
2 → 16
Calls

12 calls:

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

rewrite61.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0814
116614
2166914
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 x (sin.f64 y)))
(pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3)
Outputs
((#(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 *.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (sin.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.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 (cbrt.f64 (sin.f64 y)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (pow.f64 (*.f64 x (sin.f64 y)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 x (sin.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 x (sin.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1/3) (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 1/3))))) (#(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 (*.f64 x (sin.f64 y))) 1)))) (#(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 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 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 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)))))))))
((#(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 (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 1 (*.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 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 (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 (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 (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 (*.f64 x (sin.f64 y))) (sqrt.f64 (*.f64 x (sin.f64 y))))))) (#(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 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (*.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 2)))))) (#(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 (pow.f64 (pow.f64 (cbrt.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 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 3) (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/6) 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 (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 (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 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) (pow.f64 (cbrt.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) (pow.f64 (*.f64 x (sin.f64 y)) 1/6)) (pow.f64 (*.f64 x (sin.f64 y)) 1/6))))) (#(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))))))))

simplify187.0ms (1.9%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
010136
126112
240112
351112
475112
5169112
6541112
71207112
81299112
91437112
101600112
111839112
122166112
132594112
143100112
153706112
164429112
174750112
185034112
195258112
205438112
215522112
226465112
237442112
247908112
Stop Event
node limit
Counts
68 → 55
Calls
Call 1
Inputs
(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)
(*.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))
Outputs
(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))
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)
(*.f64 (pow.f64 1 1/3) (*.f64 (sin.f64 y) x))
(*.f64 (*.f64 (sin.f64 y) x) 1)
(*.f64 (sin.f64 y) x)

localize12.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize50.0ms (0.5%)

Local error

Found 4 expressions with local error:

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

Compiled 52 to 30 computations (42.3% saved)

series10.0ms (0.1%)

Counts
3 → 51
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
z
@inf
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
1.0ms
x
@0
(+.f64 (*.f64 x (sin.f64 y)) (+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z))
1.0ms
y
@inf
(*.f64 (pow.f64 y 2) z)

rewrite116.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
686×log-prod_binary64
647×fma-def_binary64
367×pow2_binary64
347×fma-neg_binary64
253×pow1/3_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify103.0ms (1%)

Algorithm
egg-herbie
Rules
653×distribute-lft-out_binary64
595×distribute-rgt-neg-in_binary64
589×fma-neg_binary64
471×fma-def_binary64
459×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
037758
194678
2231678
3632675
42135674
54472674
Stop Event
node limit
Counts
232 → 199
Calls
Call 1
Inputs
z
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.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 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.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 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 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 -1/2 (*.f64 (pow.f64 y 2) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
Outputs
z
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 z -1/2)))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 z -1/2)))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z))
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x 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 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 y x z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 y x))
(fma.f64 y (+.f64 x (*.f64 y (*.f64 z -1/2))) 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 z (*.f64 y y)) (fma.f64 y x (fma.f64 -1/6 (*.f64 x (pow.f64 y 3)) z)))
(fma.f64 y x (fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 x (*.f64 -1/6 (pow.f64 y 3)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 x (fma.f64 -1/6 (pow.f64 y 3) y)))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 x (fma.f64 -1/6 (pow.f64 y 3) y) z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 z -1/2)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
(*.f64 -1/2 (*.f64 z (*.f64 y y)))
(*.f64 z (*.f64 -1/2 (*.f64 y y)))
(*.f64 y (*.f64 y (*.f64 z -1/2)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z)
(*.f64 z (+.f64 1 (*.f64 -1/2 (*.f64 y y))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 (+.f64 1 (*.f64 -1/2 (pow.f64 y 2))) z) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) 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))))
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) z)
(fma.f64 y (*.f64 y (*.f64 z -1/2)) z)
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))
(+.f64 (*.f64 -1 (*.f64 (-.f64 (*.f64 1/2 (pow.f64 y 2)) 1) z)) (*.f64 (sin.f64 y) x))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 z (*.f64 (sin.f64 y) x)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) 1) (*.f64 (sin.f64 y) x))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (sin.f64 y) x z))

localize60.0ms (0.6%)

Local error

Found 4 expressions with local error:

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

Compiled 43 to 14 computations (67.4% saved)

series30.0ms (0.3%)

Counts
2 → 24
Calls

12 calls:

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

rewrite97.0ms (1%)

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

Useful iterations: 0 (0.0ms)

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

simplify56.0ms (0.6%)

Algorithm
egg-herbie
Rules
694×associate-*r*_binary64
686×associate-*l*_binary64
551×fma-def_binary64
428×distribute-rgt-out_binary64
229×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
089496
1286453
2979401
35892392
Stop Event
node limit
Counts
76 → 71
Calls
Call 1
Inputs
(*.f64 (pow.f64 1 1/3) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z))
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(pow.f64 z 1/3)
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
Outputs
(*.f64 (pow.f64 1 1/3) z)
z
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (*.f64 (pow.f64 1 1/3) z))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) z)
(fma.f64 z (*.f64 (*.f64 y y) -1/2) z)
(+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z)))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))
(fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z))
(fma.f64 (fma.f64 z 1/18 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z -1/72))) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/24)) (pow.f64 y 4) (fma.f64 z (*.f64 (*.f64 y y) -1/2) z))
(+.f64 (*.f64 (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (*.f64 -1/9 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3))))) (*.f64 -1/9 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))))) (pow.f64 y 6)) (+.f64 (*.f64 (+.f64 (*.f64 -1/3 (*.f64 (pow.f64 1 1/3) z)) (*.f64 -1/6 (*.f64 (pow.f64 1 1/3) z))) (pow.f64 y 2)) (+.f64 (*.f64 (+.f64 (*.f64 1/3 (*.f64 (pow.f64 1 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (+.f64 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (+.f64 (*.f64 2/3 (*.f64 (pow.f64 (/.f64 1 z) 1/3) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))) (*.f64 1/36 (pow.f64 (*.f64 1 (pow.f64 z 2)) 1/3)))) (*.f64 1/18 (*.f64 (pow.f64 1 1/3) z)))) (pow.f64 y 4)) (*.f64 (pow.f64 1 1/3) z))))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (*.f64 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) -1/9)) (+.f64 (*.f64 1/3 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24))))) (fma.f64 -1/6 (*.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))) (*.f64 -1/9 (*.f64 z -1/24))))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (+.f64 (*.f64 1/3 (*.f64 z -1/24)) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (*.f64 z -1/24) (cbrt.f64 (/.f64 1 z))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)))
(fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 (cbrt.f64 (/.f64 1 z)) (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72))) (*.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 (*.f64 -1/9 z) -1/24))) (fma.f64 1/3 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (fma.f64 (*.f64 -1/6 (cbrt.f64 z)) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 (*.f64 -1/9 z) -1/24)))) (pow.f64 y 6) (fma.f64 (*.f64 z -1/2) (*.f64 y y) (fma.f64 (fma.f64 1/3 (*.f64 z -1/24) (fma.f64 (cbrt.f64 z) (fma.f64 2/3 (*.f64 z (*.f64 -1/24 (cbrt.f64 (/.f64 1 z)))) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/18))) (pow.f64 y 4) z)))
(fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 (fma.f64 1/3 (*.f64 z -23/2160) (fma.f64 (cbrt.f64 z) (*.f64 (cbrt.f64 (/.f64 1 z)) (+.f64 (*.f64 2/3 (*.f64 z -23/2160)) (*.f64 z 1/216))) (fma.f64 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 -1/6 (cbrt.f64 z)) (*.f64 z 1/216)))) (pow.f64 y 6) (fma.f64 (fma.f64 z 1/18 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z -1/72))) (pow.f64 y 4) z)))
(fma.f64 z (*.f64 (*.f64 y y) -1/2) (fma.f64 (+.f64 (*.f64 (cbrt.f64 z) (+.f64 (*.f64 (cbrt.f64 (/.f64 1 z)) (+.f64 (*.f64 2/3 (*.f64 z -23/2160)) (*.f64 z 1/216))) (*.f64 -1/6 (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z))))))) (fma.f64 1/3 (*.f64 z -23/2160) (*.f64 z 1/216))) (pow.f64 y 6) (fma.f64 (fma.f64 (cbrt.f64 z) (fma.f64 (cbrt.f64 (/.f64 1 z)) (*.f64 z -1/36) (*.f64 1/36 (cbrt.f64 (*.f64 z z)))) (*.f64 z 1/24)) (pow.f64 y 4) z)))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(*.f64 (pow.f64 1 1/3) (*.f64 z (cos.f64 y)))
(*.f64 z (cos.f64 y))
(pow.f64 z 1/3)
(cbrt.f64 z)
(+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))
(+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z))))
(fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z))
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2)))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)))))
(fma.f64 1/3 (*.f64 (*.f64 z -1/24) (*.f64 (pow.f64 y 4) (cbrt.f64 (/.f64 1 (*.f64 z z))))) (fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z)))
(fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (fma.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/72) (pow.f64 y 4)) (cbrt.f64 z)))
(+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (+.f64 (*.f64 -1/216 z) (*.f64 -1/3 (-.f64 (*.f64 1/24 z) (*.f64 1/12 z)))))))) (+.f64 (*.f64 1/3 (*.f64 (pow.f64 (/.f64 1 (pow.f64 z 2)) 1/3) (*.f64 (pow.f64 y 4) (-.f64 (*.f64 1/24 z) (*.f64 1/12 z))))) (+.f64 (pow.f64 z 1/3) (*.f64 -1/6 (*.f64 (pow.f64 (*.f64 1 z) 1/3) (pow.f64 y 2))))))
(fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (-.f64 (*.f64 z -1/720) (fma.f64 -1/216 z (*.f64 -1/3 (*.f64 z -1/24)))) (pow.f64 y 6))) (fma.f64 1/3 (*.f64 (cbrt.f64 (/.f64 1 (*.f64 z z))) (*.f64 (*.f64 z -1/24) (pow.f64 y 4))) (+.f64 (cbrt.f64 z) (*.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z))))))
(+.f64 (fma.f64 -1/6 (*.f64 y (*.f64 y (cbrt.f64 z))) (cbrt.f64 z)) (*.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (+.f64 (*.f64 (-.f64 (*.f64 z 7/2160) (*.f64 z 1/72)) (pow.f64 y 6)) (*.f64 z (*.f64 -1/24 (pow.f64 y 4))))))
(fma.f64 (*.f64 1/3 (cbrt.f64 (/.f64 1 (*.f64 z z)))) (fma.f64 (*.f64 z -23/2160) (pow.f64 y 6) (*.f64 z (*.f64 (pow.f64 y 4) -1/24))) (fma.f64 -1/6 (*.f64 (*.f64 y y) (cbrt.f64 z)) (cbrt.f64 z)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))
(pow.f64 (*.f64 (cos.f64 y) z) 1/3)
(cbrt.f64 (*.f64 z (cos.f64 y)))

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.5b
(sqrt.f64 (*.f64 x (sin.f64 y)))
Compiler

Compiled 43 to 14 computations (67.4% saved)

series11.0ms (0.1%)

Counts
2 → 16
Calls

12 calls:

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

rewrite57.0ms (0.6%)

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

simplify25.0ms (0.3%)

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)

eval169.0ms (1.7%)

Compiler

Compiled 10037 to 4271 computations (57.4% saved)

prune119.0ms (1.2%)

Pruning

23 alts after pruning (21 fresh and 2 done)

PrunedKeptTotal
New52519544
Fresh224
Picked101
Done325
Total53123554
Error
0.0b
Counts
554 → 23
Alt Table
Click to see full alt table
StatusErrorProgram
30.2b
(+.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (sin.f64 y)) 1/4) 2) 2) (*.f64 z (cos.f64 y)))
41.2b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
14.3b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
32.7b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y)))
37.3b
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z)
48.6b
(+.f64 (pow.f64 (*.f64 (sqrt.f64 (sin.f64 y)) (sqrt.f64 x)) 2) (*.f64 z (cos.f64 y)))
30.8b
(+.f64 (*.f64 y x) z)
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
1.0b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3))
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
30.8b
(fma.f64 y x z)
14.6b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
36.3b
(*.f64 (sin.f64 y) x)
26.2b
(+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y)))
0.2b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
0.8b
(+.f64 (pow.f64 (*.f64 (cbrt.f64 (sin.f64 y)) (cbrt.f64 x)) 3) (*.f64 z (cos.f64 y)))
23.3b
(+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
22.7b
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
0.4b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
29.9b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z)
0.9b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
37.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
13.8b
(+.f64 (*.f64 x (sin.f64 y)) z)
Compiler

Compiled 615 to 432 computations (29.8% saved)

localize25.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 55 to 18 computations (67.3% saved)

series16.0ms (0.2%)

Counts
3 → 48
Calls

12 calls:

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

rewrite56.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
659×pow1_binary64
607×add-log-exp_binary64
607×log1p-expm1-u_binary64
607×expm1-log1p-u_binary64
592×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify212.0ms (2.1%)

Algorithm
egg-herbie
Rules
1201×fma-def_binary64
703×sqr-pow_binary64
671×cube-prod_binary64
407×unpow3_binary64
402×fabs-mul_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
050432
1128423
2328414
31012411
42280411
52865411
63010411
73201411
83416411
93695411
104476411
114956411
125535411
136217411
146552411
156885411
167211411
177515411
187753411
Stop Event
node limit
Counts
97 → 73
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)
z
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
Outputs
1
(+.f64 1 (*.f64 -1/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 -1/72 (pow.f64 y 4) (fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/6 (*.f64 y y) 1)))
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -23/6480 (pow.f64 y 6) 1)))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6) (fma.f64 -23/6480 (pow.f64 y 6) 1))
(fma.f64 -1/6 (*.f64 y y) (fma.f64 -23/6480 (pow.f64 y 6) (fma.f64 -1/72 (pow.f64 y 4) 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 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) (fma.f64 -1/1701 (pow.f64 y 8) 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)))
(fma.f64 (pow.f64 y 6) (fma.f64 (*.f64 y y) -1/1701 -1/405) (fma.f64 (*.f64 y y) -1/3 1))
(fma.f64 (*.f64 y y) (fma.f64 (pow.f64 y 6) -1/1701 -1/3) (fma.f64 (pow.f64 y 6) -1/405 1))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/3)
(cbrt.f64 (pow.f64 (cos.f64 y) 2))
z
(+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/6 (*.f64 (*.f64 y y) z) z)
(*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z)
(fma.f64 y (*.f64 -1/6 (*.f64 y z)) z)
(fma.f64 y (*.f64 z (*.f64 -1/6 y)) z)
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z))
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z))
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z))
(fma.f64 z (fma.f64 -1/6 (*.f64 y y) (*.f64 -1/72 (pow.f64 y 4))) z)
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6)) z)
(*.f64 (fma.f64 -1/72 (pow.f64 y 4) (fma.f64 -1/6 (*.f64 y y) 1)) z)
(+.f64 (*.f64 -1/72 (*.f64 (pow.f64 y 4) z)) (+.f64 (*.f64 -23/6480 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 -1/6 (*.f64 (pow.f64 y 2) z)) z)))
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 -23/6480 (*.f64 (pow.f64 y 6) z) (fma.f64 -1/6 (*.f64 (*.f64 y y) z) z)))
(+.f64 (*.f64 (fma.f64 -1/6 (*.f64 y y) 1) z) (*.f64 z (fma.f64 -23/6480 (pow.f64 y 6) (*.f64 -1/72 (pow.f64 y 4)))))
(fma.f64 -1/72 (*.f64 (pow.f64 y 4) z) (fma.f64 z (fma.f64 -1/6 (*.f64 y y) (*.f64 -23/6480 (pow.f64 y 6))) z))
(fma.f64 z (fma.f64 -1/6 (*.f64 y y) (fma.f64 -1/72 (pow.f64 y 4) (*.f64 -23/6480 (pow.f64 y 6)))) z)
(*.f64 z (fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/72) -1/6) (fma.f64 -23/6480 (pow.f64 y 6) 1)))
(fma.f64 z (*.f64 (*.f64 y y) (fma.f64 y (fma.f64 -23/6480 (pow.f64 y 3) (*.f64 y -1/72)) -1/6)) z)
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (cos.f64 y)) 1/3) z)
(*.f64 z (cbrt.f64 (cos.f64 y)))

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

series3.0ms (0%)

Counts
1 → 9
Calls

9 calls:

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

rewrite57.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

localize31.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (sin.f64 y))
0.2b
(pow.f64 (*.f64 x (sin.f64 y)) 3)
34.0b
(cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3))
Compiler

Compiled 35 to 15 computations (57.1% saved)

series21.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite96.0ms (1%)

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

Useful iterations: 0 (0.0ms)

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

simplify200.0ms (2%)

Algorithm
egg-herbie
Rules
708×fma-def_binary64
486×associate-*l*_binary64
460×distribute-rgt-out_binary64
452×associate-*r*_binary64
425×distribute-rgt-in_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
073632
1229617
2872572
34541568
47031565
57155565
67291565
77445565
87633565
97823565
Stop Event
node limit
Counts
102 → 71
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 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.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 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 y 3) (pow.f64 x 3))
(+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3))))
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (+.f64 (*.f64 (pow.f64 y 3) (pow.f64 x 3)) (*.f64 (pow.f64 y 9) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x)) (+.f64 (*.f64 -1/360 (pow.f64 x 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/2520 (pow.f64 x 2)) (*.f64 -1/360 (pow.f64 x 2))) x) (*.f64 -1/5040 (pow.f64 x 3)))))))))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
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 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 x)))
(*.f64 -1 (*.f64 (cbrt.f64 -1) (*.f64 (sin.f64 y) x)))
(neg.f64 (*.f64 (*.f64 (sin.f64 y) x) (cbrt.f64 -1)))
(*.f64 (*.f64 (sin.f64 y) x) (neg.f64 (cbrt.f64 -1)))
(*.f64 (sin.f64 y) (*.f64 x (neg.f64 (cbrt.f64 -1))))
(*.f64 (sin.f64 y) (*.f64 (cbrt.f64 -1) (neg.f64 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/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/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/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 (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 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 y 3) (pow.f64 x 3))
(pow.f64 (*.f64 y x) 3)
(+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (*.f64 (pow.f64 y 3) (pow.f64 x 3)))
(fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2)))
(*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2)))
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (*.f64 (pow.f64 y 3) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 7) (fma.f64 (*.f64 (*.f64 x x) 2/45) x (*.f64 (pow.f64 x 3) 23/360)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (*.f64 (pow.f64 y 3) (pow.f64 x 3))))
(fma.f64 (pow.f64 y 7) (fma.f64 (pow.f64 x 3) 23/360 (*.f64 (pow.f64 x 3) 2/45)) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2))))
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2))))
(+.f64 (*.f64 (pow.f64 y 7) (+.f64 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x) (+.f64 (*.f64 1/18 (pow.f64 x 3)) (*.f64 1/120 (pow.f64 x 3))))) (+.f64 (*.f64 (pow.f64 y 5) (+.f64 (*.f64 -1/6 (pow.f64 x 3)) (*.f64 -1/3 (pow.f64 x 3)))) (+.f64 (*.f64 (pow.f64 y 3) (pow.f64 x 3)) (*.f64 (pow.f64 y 9) (+.f64 (*.f64 -1/6 (*.f64 (+.f64 (*.f64 1/36 (pow.f64 x 2)) (*.f64 1/60 (pow.f64 x 2))) x)) (+.f64 (*.f64 -1/360 (pow.f64 x 3)) (+.f64 (*.f64 (+.f64 (*.f64 -1/2520 (pow.f64 x 2)) (*.f64 -1/360 (pow.f64 x 2))) x) (*.f64 -1/5040 (pow.f64 x 3)))))))))
(fma.f64 (pow.f64 y 7) (fma.f64 (*.f64 (*.f64 x x) 2/45) x (*.f64 (pow.f64 x 3) 23/360)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 9) (fma.f64 -1/6 (*.f64 x (*.f64 (*.f64 x x) 2/45)) (fma.f64 -1/360 (pow.f64 x 3) (fma.f64 (*.f64 (*.f64 x x) -1/315) x (*.f64 -1/5040 (pow.f64 x 3)))))))))
(fma.f64 (pow.f64 y 7) (fma.f64 (pow.f64 x 3) 23/360 (*.f64 (pow.f64 x 3) 2/45)) (fma.f64 (pow.f64 y 5) (*.f64 (pow.f64 x 3) -1/2) (fma.f64 (pow.f64 y 3) (pow.f64 x 3) (*.f64 (pow.f64 y 9) (fma.f64 -1/6 (*.f64 (pow.f64 x 3) 2/45) (fma.f64 (pow.f64 x 3) -1/360 (fma.f64 -1/5040 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -1/315))))))))
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (fma.f64 (pow.f64 y 9) (+.f64 (*.f64 (pow.f64 x 3) -1/135) (fma.f64 -1/5040 (pow.f64 x 3) (*.f64 (pow.f64 x 3) -1/168))) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2)))))
(fma.f64 (pow.f64 y 7) (*.f64 (pow.f64 x 3) 13/120) (fma.f64 (pow.f64 y 9) (+.f64 (*.f64 (pow.f64 x 3) -1/168) (*.f64 x (*.f64 (*.f64 x x) -23/3024))) (*.f64 (pow.f64 x 3) (+.f64 (pow.f64 y 3) (*.f64 (pow.f64 y 5) -1/2)))))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))

localize35.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 43 to 14 computations (67.4% saved)

series19.0ms (0.2%)

Counts
2 → 16
Calls

12 calls:

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

rewrite84.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

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

simplify70.0ms (0.7%)

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

Useful iterations: 4 (0.0ms)

IterNodesCost
053293
1144289
2411241
31786214
45193213
Stop Event
node limit
Counts
66 → 64
Calls
Call 1
Inputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
Outputs
z
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) z)
(*.f64 z (fma.f64 -1/2 (*.f64 y y) 1))
(*.f64 z (fma.f64 (*.f64 -1/2 y) y 1))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z))
(fma.f64 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (*.f64 y (*.f64 -1/2 y)) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (+.f64 (fma.f64 (*.f64 -1/2 y) y 1) (*.f64 (pow.f64 y 4) 1/24)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) (+.f64 (*.f64 -1/720 (*.f64 (pow.f64 y 6) z)) (+.f64 (*.f64 (pow.f64 y 4) (-.f64 (+.f64 (*.f64 1/16 z) (*.f64 1/24 z)) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))) z)))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 -1/720 (*.f64 z (pow.f64 y 6)) (fma.f64 (pow.f64 y 4) (-.f64 (*.f64 z 5/48) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) z)))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (fma.f64 z 5/48 (*.f64 z -1/16)) z))
(fma.f64 z (fma.f64 -1/2 (*.f64 y y) (*.f64 -1/720 (pow.f64 y 6))) (fma.f64 (pow.f64 y 4) (*.f64 z 1/24) z))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(*.f64 z (cos.f64 y))
(sqrt.f64 z)
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))
(+.f64 (sqrt.f64 z) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))
(fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z))
(*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))
(+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z)))))
(+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2)))
(fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (pow.f64 y 4) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 1/2 (*.f64 z -1/48)))))
(fma.f64 (fma.f64 (*.f64 y y) -1/4 1) (sqrt.f64 z) (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 4) (*.f64 1/2 (*.f64 z -1/48)))))
(+.f64 (*.f64 1/2 (*.f64 (*.f64 (pow.f64 y 6) (-.f64 (*.f64 -1/720 z) (*.f64 -1/4 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2))))) (sqrt.f64 (/.f64 1 z)))) (+.f64 (sqrt.f64 z) (+.f64 (*.f64 1/2 (*.f64 (*.f64 (-.f64 (*.f64 1/24 z) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (pow.f64 y 4)) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (pow.f64 y 2) (sqrt.f64 z))))))
(fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (*.f64 (pow.f64 y 6) (+.f64 (*.f64 z -1/720) (*.f64 1/4 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)))))) (+.f64 (sqrt.f64 z) (fma.f64 1/2 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z)))) (*.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z))))))
(+.f64 (fma.f64 -1/4 (*.f64 (*.f64 y y) (sqrt.f64 z)) (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) (*.f64 (*.f64 (pow.f64 y 4) (sqrt.f64 (/.f64 1 z))) 1/2))) (fma.f64 1/2 (*.f64 (fma.f64 z -1/720 (*.f64 (-.f64 (*.f64 z 1/24) (pow.f64 (*.f64 -1/4 (sqrt.f64 z)) 2)) 1/4)) (*.f64 (pow.f64 y 6) (sqrt.f64 (/.f64 1 z)))) (sqrt.f64 z)))
(fma.f64 (pow.f64 y 6) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 z)) (fma.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) 1/4 (*.f64 z -1/720)))) (fma.f64 1/2 (*.f64 (pow.f64 y 4) (*.f64 (fma.f64 z 1/24 (*.f64 z -1/16)) (sqrt.f64 (/.f64 1 z)))) (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1))))
(+.f64 (*.f64 (sqrt.f64 z) (fma.f64 (*.f64 y y) -1/4 1)) (*.f64 (*.f64 1/2 (sqrt.f64 (/.f64 1 z))) (+.f64 (*.f64 (pow.f64 y 6) (fma.f64 z -1/720 (*.f64 -1/4 (*.f64 z 1/48)))) (*.f64 (pow.f64 y 4) (*.f64 z -1/48)))))

localize49.0ms (0.5%)

Local error

Found 4 expressions with local error:

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

Compiled 45 to 10 computations (77.8% saved)

series11.0ms (0.1%)

Counts
3 → 44
Calls

15 calls:

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

rewrite92.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

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

simplify125.0ms (1.3%)

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

Useful iterations: 3 (0.0ms)

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

eval169.0ms (1.7%)

Compiler

Compiled 8224 to 3415 computations (58.5% saved)

prune129.0ms (1.3%)

Pruning

28 alts after pruning (24 fresh and 4 done)

PrunedKeptTotal
New45813471
Fresh51116
Picked101
Done246
Total46628494
Error
0.0b
Counts
494 → 28
Alt Table
Click to see full alt table
StatusErrorProgram
14.3b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
32.7b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y)))
52.9b
(*.f64 y x)
14.3b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) z)
23.3b
(+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
39.6b
z
29.9b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z)
27.1b
(+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
30.8b
(fma.f64 y x z)
37.3b
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z)
30.8b
(+.f64 (*.f64 y x) z)
38.0b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z)
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
1.0b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3))
37.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
14.3b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x)) z)
42.6b
(+.f64 (*.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
0.9b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
39.3b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z)
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
26.2b
(+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y)))
0.2b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
36.3b
(*.f64 (sin.f64 y) x)
41.2b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
41.0b
(-.f64 (+.f64 1 (fma.f64 y x z)) 1)
22.7b
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
22.9b
(+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
0.5b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cos.f64 y))) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
Compiler

Compiled 707 to 470 computations (33.5% saved)

localize53.0ms (0.5%)

Local error

Found 4 expressions with local error:

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

Compiled 103 to 25 computations (75.7% saved)

series84.0ms (0.8%)

Counts
3 → 36
Calls

9 calls:

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

rewrite70.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
654×pow1_binary64
606×add-log-exp_binary64
606×log1p-expm1-u_binary64
606×expm1-log1p-u_binary64
589×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify117.0ms (1.2%)

Algorithm
egg-herbie
Rules
652×fma-def_binary64
581×associate-*l*_binary64
524×distribute-rgt-out_binary64
461×unswap-sqr_binary64
461×sqr-pow_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
052492
1126486
2293476
3885474
43442370
55580370
66787370
77259370
87705370
Stop Event
node limit
Counts
87 → 73
Calls
Call 1
Inputs
1
(+.f64 1 (*.f64 -1/18 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2))))
(+.f64 1 (+.f64 (*.f64 -347/174960 (pow.f64 y 6)) (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2)))))
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
(pow.f64 (cos.f64 y) 1/9)
1
(+.f64 1 (*.f64 -1/9 (pow.f64 y 2)))
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (*.f64 -1/81 (pow.f64 y 4))))
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (+.f64 (*.f64 -1/81 (pow.f64 y 4)) (*.f64 -34/10935 (pow.f64 y 6)))))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
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)
Outputs
1
(+.f64 1 (*.f64 -1/18 (pow.f64 y 2)))
(+.f64 1 (*.f64 -1/18 (*.f64 y y)))
(fma.f64 -1/18 (*.f64 y y) 1)
(+.f64 1 (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2))))
(+.f64 1 (fma.f64 -5/648 (pow.f64 y 4) (*.f64 -1/18 (*.f64 y y))))
(+.f64 (fma.f64 -1/18 (*.f64 y y) 1) (*.f64 -5/648 (pow.f64 y 4)))
(fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) 1))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -5/648) -1/18) 1)
(+.f64 1 (+.f64 (*.f64 -347/174960 (pow.f64 y 6)) (+.f64 (*.f64 -5/648 (pow.f64 y 4)) (*.f64 -1/18 (pow.f64 y 2)))))
(+.f64 1 (fma.f64 -347/174960 (pow.f64 y 6) (fma.f64 -5/648 (pow.f64 y 4) (*.f64 -1/18 (*.f64 y y)))))
(+.f64 (fma.f64 -347/174960 (pow.f64 y 6) (*.f64 -5/648 (pow.f64 y 4))) (fma.f64 -1/18 (*.f64 y y) 1))
(fma.f64 -347/174960 (pow.f64 y 6) (fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) 1)))
(fma.f64 -1/18 (*.f64 y y) (fma.f64 -5/648 (pow.f64 y 4) (fma.f64 -347/174960 (pow.f64 y 6) 1)))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -5/648) -1/18) (fma.f64 -347/174960 (pow.f64 y 6) 1))
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
(pow.f64 (cos.f64 y) 1/9)
(*.f64 (pow.f64 (cos.f64 y) 1/18) (pow.f64 (cos.f64 y) 1/18))
(pow.f64 (pow.f64 (cos.f64 y) 1/36) 4)
(pow.f64 (pow.f64 (cos.f64 y) 1/72) 8)
1
(+.f64 1 (*.f64 -1/9 (pow.f64 y 2)))
(+.f64 1 (*.f64 (*.f64 y y) -1/9))
(fma.f64 (*.f64 y y) -1/9 1)
(fma.f64 y (*.f64 y -1/9) 1)
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (*.f64 -1/81 (pow.f64 y 4))))
(+.f64 1 (fma.f64 -1/9 (*.f64 y y) (*.f64 (pow.f64 y 4) -1/81)))
(+.f64 1 (fma.f64 (pow.f64 y 4) -1/81 (*.f64 y (*.f64 y -1/9))))
(fma.f64 (pow.f64 y 4) -1/81 (fma.f64 y (*.f64 y -1/9) 1))
(fma.f64 (*.f64 y y) (fma.f64 y (*.f64 y -1/81) -1/9) 1)
(fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 1))
(+.f64 1 (+.f64 (*.f64 -1/9 (pow.f64 y 2)) (+.f64 (*.f64 -1/81 (pow.f64 y 4)) (*.f64 -34/10935 (pow.f64 y 6)))))
(+.f64 1 (fma.f64 -1/9 (*.f64 y y) (fma.f64 -1/81 (pow.f64 y 4) (*.f64 (pow.f64 y 6) -34/10935))))
(+.f64 (fma.f64 (*.f64 y y) -1/9 1) (fma.f64 (pow.f64 y 4) -1/81 (*.f64 (pow.f64 y 6) -34/10935)))
(+.f64 1 (fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 (*.f64 (pow.f64 y 6) -34/10935))))
(fma.f64 y (*.f64 y -1/9) (fma.f64 (pow.f64 y 4) -1/81 (fma.f64 (pow.f64 y 6) -34/10935 1)))
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
(pow.f64 (pow.f64 (cos.f64 y) 2) 1/9)
(*.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18) (pow.f64 (pow.f64 (cos.f64 y) 2) 1/18))
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/36) 4)
(pow.f64 (pow.f64 (pow.f64 (cos.f64 y) 2) 1/72) 8)
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 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1))
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 1))
(+.f64 1 (+.f64 (*.f64 -1/1701 (pow.f64 y 8)) (+.f64 (*.f64 -1/3 (pow.f64 y 2)) (*.f64 -1/405 (pow.f64 y 6)))))
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 -1/3 (*.f64 y y) (*.f64 (pow.f64 y 6) -1/405))))
(+.f64 1 (fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (*.f64 y (*.f64 y -1/3)))))
(fma.f64 -1/1701 (pow.f64 y 8) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 y (*.f64 y -1/3) 1)))
(fma.f64 y (*.f64 y -1/3) (fma.f64 (pow.f64 y 6) -1/405 (fma.f64 -1/1701 (pow.f64 y 8) 1)))
(pow.f64 (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))

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize14.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -1/2 (*.f64 (pow.f64 y 2) z))
0.0b
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) z)
6.3b
(*.f64 (pow.f64 y 2) z)
Compiler

Compiled 31 to 21 computations (32.3% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

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

rewrite50.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
690×pow1_binary64
636×add-log-exp_binary64
636×log1p-expm1-u_binary64
636×expm1-log1p-u_binary64
623×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
11 → 11
Calls
Call 1
Inputs
Outputs

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 39 to 13 computations (66.7% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

Compiled 41 to 9 computations (78% saved)

series5.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite74.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
555×log-prod_binary64
416×pow-prod-down_binary64
391×exp-prod_binary64
375×fma-def_binary64
275×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify215.0ms (2.2%)

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

Useful iterations: 4 (0.0ms)

IterNodesCost
026326
158324
2133323
3356321
41215318
52715318
63881318
73962318
84085318
94240318
104504318
114761318
125118318
135492318
145985318
156572318
167288318
177616318
187880318
Stop Event
node limit
Counts
116 → 93
Calls
Call 1
Inputs
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/24 (*.f64 (pow.f64 y 4) z)))))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(*.f64 (cos.f64 y) z)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
Outputs
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 z (*.f64 -1/2 (*.f64 y y)) (fma.f64 y x 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)) (+.f64 (*.f64 y x) (+.f64 z (*.f64 1/24 (*.f64 (pow.f64 y 4) z)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (+.f64 (fma.f64 y x z) (*.f64 1/24 (*.f64 z (pow.f64 y 4)))))
(fma.f64 -1/2 (*.f64 z (*.f64 y y)) (fma.f64 y x (fma.f64 1/24 (*.f64 z (pow.f64 y 4)) z)))
(fma.f64 y x (*.f64 z (+.f64 (fma.f64 1/24 (pow.f64 y 4) 1) (*.f64 y (*.f64 y -1/2)))))
(fma.f64 z (fma.f64 1/24 (pow.f64 y 4) (*.f64 -1/2 (*.f64 y y))) (fma.f64 y x z))
(fma.f64 z (*.f64 y (fma.f64 1/24 (pow.f64 y 3) (*.f64 y -1/2))) (fma.f64 y x z))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(*.f64 (cos.f64 y) z)
(*.f64 z (cos.f64 y))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))
(+.f64 (*.f64 (cos.f64 y) z) (*.f64 y x))
(fma.f64 z (cos.f64 y) (*.f64 y x))

eval256.0ms (2.6%)

Compiler

Compiled 12055 to 4358 computations (63.8% saved)

prune259.0ms (2.6%)

Pruning

30 alts after pruning (23 fresh and 7 done)

PrunedKeptTotal
New57411585
Fresh71219
Picked011
Done268
Total58330613
Error
0.0b
Counts
613 → 30
Alt Table
Click to see full alt table
StatusErrorProgram
14.3b
(+.f64 (pow.f64 (cbrt.f64 (*.f64 x (sin.f64 y))) 3) z)
32.7b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) (*.f64 z (cos.f64 y)))
22.9b
(+.f64 (*.f64 y x) (*.f64 (pow.f64 (cbrt.f64 (cos.f64 y)) 2) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
52.9b
(*.f64 y x)
14.3b
(+.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 y)) 2) (*.f64 (cbrt.f64 (sin.f64 y)) x)) z)
37.1b
(fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (cos.f64 y)) (*.f64 y x))
39.6b
z
23.3b
(+.f64 (*.f64 y x) (pow.f64 (cbrt.f64 (*.f64 z (cos.f64 y))) 3))
27.1b
(+.f64 (*.f64 y x) (*.f64 (*.f64 z (sqrt.f64 (cos.f64 y))) (sqrt.f64 (cos.f64 y))))
62.5b
(*.f64 y (*.f64 y (*.f64 z -1/2)))
29.9b
(+.f64 (cbrt.f64 (pow.f64 (*.f64 x (sin.f64 y)) 3)) z)
37.3b
(+.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3))) z)
30.8b
(+.f64 (*.f64 y x) z)
38.0b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (sqrt.f64 x)) (sqrt.f64 x)) z)
31.9b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
41.1b
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z)
1.0b
(+.f64 (*.f64 x (sin.f64 y)) (pow.f64 (*.f64 (cbrt.f64 (cos.f64 y)) (cbrt.f64 z)) 3))
37.5b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (sin.f64 y))) 2) z)
14.3b
(+.f64 (*.f64 (*.f64 (sin.f64 y) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x)) z)
42.6b
(+.f64 (*.f64 y x) (pow.f64 (sqrt.f64 (*.f64 z (cos.f64 y))) 2))
0.9b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (cos.f64 y))))
43.5b
(+.f64 (*.f64 y x) (*.f64 (*.f64 (cos.f64 y) (sqrt.f64 z)) (sqrt.f64 z)))
39.3b
(+.f64 (*.f64 (*.f64 x (sqrt.f64 (sin.f64 y))) (sqrt.f64 (sin.f64 y))) z)
26.7b
(*.f64 (cos.f64 y) z)
26.2b
(+.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 y) 3) (pow.f64 x 3)))) 3) (*.f64 z (cos.f64 y)))
41.2b
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2)))
0.2b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
36.3b
(*.f64 (sin.f64 y) x)
41.1b
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z)
0.3b
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 (sqrt.f64 (*.f64 (cos.f64 y) (cbrt.f64 (cos.f64 y)))) (*.f64 (cbrt.f64 (cos.f64 y)) z)))
Compiler

Compiled 404 to 274 computations (32.2% saved)

regimes287.0ms (2.9%)

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

4 calls:

77.0ms
z
65.0ms
y
44.0ms
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
43.0ms
x
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1z
0.2b1(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
Compiler

Compiled 608 to 226 computations (62.8% saved)

regimes366.0ms (3.7%)

Counts
16 → 5
Calls
Call 1
Inputs
z
z
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(*.f64 y (*.f64 y (*.f64 z -1/2)))
(*.f64 z (+.f64 1 (*.f64 (*.f64 y y) -1/2)))
(+.f64 (*.f64 -1/2 (+.f64 0 (*.f64 y (*.f64 y z)))) z)
(+.f64 (-.f64 (+.f64 1 (*.f64 z (*.f64 (*.f64 -1/2 y) y))) 1) z)
(*.f64 (cos.f64 y) z)
(fma.f64 y x z)
(fma.f64 y x z)
(*.f64 (sin.f64 y) x)
(+.f64 (*.f64 x (sin.f64 y)) z)
(-.f64 (+.f64 1 (fma.f64 y x z)) 1)
(+.f64 (*.f64 y x) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 -1/2 (*.f64 (pow.f64 y 2) z)) 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:

165.0ms
y
119.0ms
z
75.0ms
x
Results
ErrorSegmentsBranch
7.2b3x
10.5b5y
7.0b5z
Compiler

Compiled 112 to 59 computations (47.3% saved)

bsearch475.0ms (4.8%)

Algorithm
binary-search
Steps
TimeLeftRight
122.0ms
6.1808399442153046e+47
1.5470975288538274e+56
122.0ms
-9.071300668515432e-14
-1.1576661129978958e-20
140.0ms
-6.1218348465704036e+41
-5.001972212645505e+39
91.0ms
-8.069696018579312e+196
-1.2582800421291595e+194
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes240.0ms (2.4%)

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

3 calls:

91.0ms
y
75.0ms
z
70.0ms
x
Results
ErrorSegmentsBranch
13.7b3x
11.1b7y
14.3b5z
Compiler

Compiled 81 to 45 computations (44.4% saved)

bsearch633.0ms (6.4%)

Algorithm
binary-search
Steps
TimeLeftRight
68.0ms
0.08839147709823608
6.904028969813479
46.0ms
-10604636.769083364
-5.025292739923839e-8
141.0ms
-7.58325743152806e+89
-2.0759025492798803e+86
134.0ms
-1.6551753127859233e+187
-1.3670252685500282e+187
117.0ms
-7.73123433079739e+213
-4.010715378716946e+212
127.0ms
-4.467235781468881e+269
-2.0671629876694233e+263
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes179.0ms (1.8%)

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

3 calls:

126.0ms
y
27.0ms
x
22.0ms
z
Results
ErrorSegmentsBranch
20.8b3x
17.4b3y
20.6b3z
Compiler

Compiled 77 to 43 computations (44.2% saved)

bsearch116.0ms (1.2%)

Algorithm
binary-search
Steps
TimeLeftRight
75.0ms
9.789299162384845e-16
0.00012028864921560288
41.0ms
-6.22550385717427e+34
-1.0562257270902327e+29
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes22.0ms (0.2%)

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

3 calls:

7.0ms
z
5.0ms
x
5.0ms
y
Results
ErrorSegmentsBranch
30.8b1x
30.8b1y
30.8b1z
Compiler

Compiled 65 to 40 computations (38.5% saved)

regimes33.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:

14.0ms
z
14.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
35.2b3x
39.6b1y
35.9b3z
Compiler

Compiled 20 to 13 computations (35% saved)

bsearch198.0ms (2%)

Algorithm
binary-search
Steps
TimeLeftRight
57.0ms
3.840291792634429e+77
4.09667594258213e+77
141.0ms
-1.1660026554212445e+118
-3.447416757579016e+117
Compiler

Compiled 18 to 13 computations (27.8% saved)

regimes10.0ms (0.1%)

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:

3.0ms
z
3.0ms
y
3.0ms
x
Results
ErrorSegmentsBranch
39.6b1x
39.6b1y
39.6b1z
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify46.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
057213
163213
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 (cos.f64 y) z) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z -7187024835808954/79228162514264337593543950336) (*.f64 (cos.f64 y) z) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 (cos.f64 y) z) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 (sin.f64 y) x) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 (cos.f64 y) z) (if (<=.f64 y -45546568109172152/4294967296) (*.f64 (sin.f64 y) x) (if (<=.f64 y 1630534956328320000/18446744073709551616) (+.f64 (*.f64 y x) z) (*.f64 (sin.f64 y) x)))))))
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 (cos.f64 y) z) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 (*.f64 y x) z) (*.f64 (cos.f64 y) z)))
(+.f64 (*.f64 y x) z)
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 y x) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 y x)))
z
Outputs
(+.f64 (*.f64 x (sin.f64 y)) (*.f64 z (cos.f64 y)))
(+.f64 (*.f64 z (cos.f64 y)) (*.f64 x (sin.f64 y)))
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 (cos.f64 y) z) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 (*.f64 x (sin.f64 y)) z) (if (<=.f64 z -7187024835808954/79228162514264337593543950336) (*.f64 (cos.f64 y) z) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 (*.f64 x (sin.f64 y)) z) (*.f64 (cos.f64 y) z)))))
(if (<=.f64 z -80696960185793117418418492977943268870327980530031957292705086622062209663580833948103109400334086037599137240729993820671848948351896946650531956240498468189405212503048376602193895137110378151936) (*.f64 z (cos.f64 y)) (if (<=.f64 z -612183484657040359748470836321241335332864) (+.f64 z (*.f64 x (sin.f64 y))) (if (<=.f64 z -3593512417904477/39614081257132168796771975168) (*.f64 z (cos.f64 y)) (if (<=.f64 z 618083994421530457890804952986795969439573475328) (+.f64 z (*.f64 x (sin.f64 y))) (*.f64 z (cos.f64 y))))))
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 (sin.f64 y) x) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 (cos.f64 y) z) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 (sin.f64 y) x) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 (cos.f64 y) z) (if (<=.f64 y -45546568109172152/4294967296) (*.f64 (sin.f64 y) x) (if (<=.f64 y 1630534956328320000/18446744073709551616) (+.f64 (*.f64 y x) z) (*.f64 (sin.f64 y) x)))))))
(if (<=.f64 y -446723578146888114905140502667146732167601747351298119695531847089882952548351902617787805633893631460850862461808944845057217030705896779865475445174598980258804229209968375653309685925463450623550841136980775993004810489436698548930166270757722892775689647464013365248) (*.f64 x (sin.f64 y)) (if (<=.f64 y -7731234330797390218459609206827994840741265724685444951773957676317046720286916913926377078902197716610308268486969771806984420191009229451277907086238106523464731719125073814660069823715934527296640503825882415104) (*.f64 z (cos.f64 y)) (if (<=.f64 y -16551753127859232648373331454702849988017578769505670130453150669975857257508069702555482865846186819758165656356366190825881307899974270540330659143572912015832896776043317328714305372160) (*.f64 x (sin.f64 y)) (if (<=.f64 y -758325743152806013951705039971629235505177337563619300967984824736736194982359030959177728) (*.f64 z (cos.f64 y)) (if (<=.f64 y -5693321013646519/536870912) (*.f64 x (sin.f64 y)) (if (<=.f64 y 1592319293289375/18014398509481984) (+.f64 z (*.f64 x y)) (*.f64 x (sin.f64 y))))))))
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 (cos.f64 y) z) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 (*.f64 y x) z) (*.f64 (cos.f64 y) z)))
(if (<=.f64 y -62255038571742699602444550194331648) (*.f64 z (cos.f64 y)) (if (<=.f64 y 4963764383604341/5070602400912917605986812821504) (+.f64 z (*.f64 x y)) (*.f64 z (cos.f64 y))))
(+.f64 (*.f64 y x) z)
(+.f64 z (*.f64 x y))
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 y x) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 y x)))
(if (<=.f64 x -11660026554212444966310322289247636812736516650732823046703759746481582299734702514426936352305076677752168269922435072) (*.f64 x y) (if (<=.f64 x 384029179263442900427246529109638289548696076289593884072852399416155970732032) z (*.f64 x y)))
z
Compiler

Compiled 165 to 86 computations (47.9% saved)

soundness0.0ms (0%)

end82.0ms (0.8%)

Compiler

Compiled 147 to 53 computations (63.9% saved)

Profiling

Loading profile data...