Details

Time bar (total: 10.1s)

analyze5.0ms (0.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%49.7%50.3%0
0%49.7%50.3%1
0%49.7%50.3%2
24.8%24.8%50.3%3
37.3%12.4%50.3%4
43.5%6.2%50.3%5
46.6%3.1%50.3%6
48.1%1.6%50.3%7
48.9%0.8%50.3%8
49.3%0.4%50.3%9
49.5%0.2%50.3%10
49.6%0.1%50.3%11
49.6%0%50.3%12
49.7%0%50.3%13
49.7%0%50.3%14
Compiler

Compiled 16 to 12 computations (25% saved)

sample9.0s (89.7%)

Results
7.0s4123×body2048valid
1.3s2139×body1024valid
352.0ms1056×body512valid
203.0ms219×body4096valid
104.0ms461×body256valid
32.0ms258×body128valid

preprocess18.0ms (0.2%)

Algorithm
egg-herbie
Rules
39×fma-def_binary64
32×fma-neg_binary64
15×cancel-sign-sub-inv_binary64
12×sub-neg_binary64
10×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
11112
21712
32512
43512
55312
69012
712412
816912
920512
1023112
1123312
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
Outputs
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
(+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify10.0ms (0.1%)

Algorithm
egg-herbie
Rules
39×fma-def_binary64
32×fma-neg_binary64
15×cancel-sign-sub-inv_binary64
12×sub-neg_binary64
10×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
11112
21712
32512
43512
55312
69012
712412
816912
920512
1023112
1123312
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
Outputs
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
(+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
60.0b
Counts
3 → 1
Alt Table
StatusErrorProgram
60.0b
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
Compiler

Compiled 35 to 26 computations (25.7% saved)

localize5.0ms (0%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(/.f64 1 (tan.f64 x))
3.7b
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
1.0ms
x
@0
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
1.0ms
x
@-inf
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
0.0ms
x
@inf
(/.f64 1 (tan.f64 x))
0.0ms
x
@-inf
(/.f64 1 (tan.f64 x))

rewrite49.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
823×log1p-expm1-u_binary64
823×expm1-log1p-u_binary64
84×add-sqr-sqrt_binary64
81×*-un-lft-identity_binary64
81×pow1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0718
116018
2235818
Stop Event
node limit
Counts
2 → 69
Calls
Call 1
Inputs
(-.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))
(/.f64 1 (tan.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 1 x) (*.f64 (/.f64 -1 (tan.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) (fma.f64 (/.f64 -1 (tan.f64 x)) 1 (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) (fma.f64 (neg.f64 (/.f64 1 (cbrt.f64 (tan.f64 x)))) (cbrt.f64 (pow.f64 (tan.f64 x) -2)) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) (fma.f64 (neg.f64 (pow.f64 (tan.f64 x) -1/2)) (pow.f64 (tan.f64 x) -1/2) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 -1 (tan.f64 x)) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) (pow.f64 (cbrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) 2) (cbrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) (sqrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (tan.f64 x) x) (/.f64 (/.f64 1 x) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 x -3) (pow.f64 (tan.f64 x) -3)) (/.f64 1 (+.f64 (pow.f64 x -2) (+.f64 (pow.f64 (tan.f64 x) -2) (/.f64 (/.f64 1 x) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 x -2) (pow.f64 (tan.f64 x) -2)) (/.f64 1 (+.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x -1/2) (pow.f64 (tan.f64 x) -1/2)) (-.f64 (pow.f64 x -1/2) (pow.f64 (tan.f64 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (tan.f64 x) x) (-.f64 (tan.f64 x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 x -2) (+.f64 (pow.f64 (tan.f64 x) -2) (/.f64 (/.f64 1 x) (tan.f64 x)))) (-.f64 (pow.f64 x -3) (pow.f64 (tan.f64 x) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x))) (-.f64 (pow.f64 x -2) (pow.f64 (tan.f64 x) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (tan.f64 x) x) (*.f64 (tan.f64 x) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x -3) (pow.f64 (tan.f64 x) -3)) (+.f64 (pow.f64 x -2) (+.f64 (pow.f64 (tan.f64 x) -2) (/.f64 (/.f64 1 x) (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x -2) (pow.f64 (tan.f64 x) -2)) (+.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (tan.f64 x) x)) (neg.f64 (*.f64 (tan.f64 x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x -3) (pow.f64 (tan.f64 x) -3))) (neg.f64 (+.f64 (pow.f64 x -2) (+.f64 (pow.f64 (tan.f64 x) -2) (/.f64 (/.f64 1 x) (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x -2) (pow.f64 (tan.f64 x) -2))) (neg.f64 (+.f64 (/.f64 1 x) (/.f64 1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (neg.f64 (tan.f64 x)) (*.f64 (neg.f64 x) 1)) (*.f64 (neg.f64 x) (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (neg.f64 (tan.f64 x)) (*.f64 x -1)) (*.f64 x (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 -1 (neg.f64 (tan.f64 x))) (*.f64 (neg.f64 x) -1)) (*.f64 (neg.f64 x) (neg.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x -3) (pow.f64 (/.f64 -1 (tan.f64 x)) 3)) (+.f64 (pow.f64 x -2) (-.f64 (*.f64 (/.f64 -1 (tan.f64 x)) (/.f64 -1 (tan.f64 x))) (*.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x -2) (*.f64 (/.f64 -1 (tan.f64 x)) (/.f64 -1 (tan.f64 x)))) (-.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 (tan.f64 x) x) x) (tan.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x -2)) (cbrt.f64 (/.f64 1 x)) (/.f64 -1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x -1/2) (pow.f64 x -1/2) (/.f64 -1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 (/.f64 1 x) (/.f64 -1 (tan.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1 (tan.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (tan.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (tan.f64 x))) (cbrt.f64 (pow.f64 (tan.f64 x) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (tan.f64 x) -2)) (/.f64 1 (cbrt.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (tan.f64 x) -1/2) (pow.f64 (tan.f64 x) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 -1 (tan.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (tan.f64 x)) 2) -1) (pow.f64 (cbrt.f64 (tan.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (tan.f64 x)) -1) (pow.f64 (sqrt.f64 (tan.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sin.f64 x)) (cos.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (tan.f64 x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (tan.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 (tan.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (tan.f64 x) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (tan.f64 x) -3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (tan.f64 x) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1 (tan.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (tan.f64 x) -3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (tan.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (tan.f64 x)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (neg.f64 (log.f64 (tan.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (tan.f64 x))))))))

simplify53.0ms (0.5%)

Algorithm
egg-herbie
Rules
855×fma-def_binary64
624×unswap-sqr_binary64
435×associate-*l*_binary64
297×*-commutative_binary64
274×associate-*r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
039281
196275
2220275
3578275
41064275
52169275
63026275
74051275
84548275
Stop Event
node limit
Counts
93 → 88
Calls
Call 1
Inputs
(*.f64 1/3 x)
(+.f64 (*.f64 1/3 x) (*.f64 1/45 (pow.f64 x 3)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (+.f64 (*.f64 1/45 (pow.f64 x 3)) (*.f64 1/4725 (pow.f64 x 7)))))
(*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(/.f64 1 x)
(+.f64 (*.f64 -1/3 x) (/.f64 1 x))
(+.f64 (*.f64 -1/45 (pow.f64 x 3)) (+.f64 (*.f64 -1/3 x) (/.f64 1 x)))
(+.f64 (*.f64 -2/945 (pow.f64 x 5)) (+.f64 (*.f64 -1/45 (pow.f64 x 3)) (+.f64 (*.f64 -1/3 x) (/.f64 1 x))))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
Outputs
(*.f64 1/3 x)
(+.f64 (*.f64 1/3 x) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 1/3 x (*.f64 1/45 (pow.f64 x 3)))
(*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 1/3 x (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (+.f64 (*.f64 1/45 (pow.f64 x 3)) (*.f64 1/4725 (pow.f64 x 7)))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/45 (pow.f64 x 3) (*.f64 1/4725 (pow.f64 x 7)))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/4725 (pow.f64 x 7)))))
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/4725 (pow.f64 x 7))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/4725 (pow.f64 x 7))))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/4725 (pow.f64 x 7) (*.f64 1/3 x))))
(*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)))
(neg.f64 (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (neg.f64 (cos.f64 x)) (sin.f64 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)))
(neg.f64 (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 (neg.f64 (cos.f64 x)) (sin.f64 x))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(+.f64 (*.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x))) (/.f64 1 x))
(fma.f64 -1 (/.f64 (cos.f64 x) (sin.f64 x)) (/.f64 1 x))
(-.f64 (/.f64 1 x) (/.f64 (cos.f64 x) (sin.f64 x)))
(/.f64 1 x)
(+.f64 (*.f64 -1/3 x) (/.f64 1 x))
(fma.f64 -1/3 x (/.f64 1 x))
(fma.f64 x -1/3 (/.f64 1 x))
(+.f64 (*.f64 -1/45 (pow.f64 x 3)) (+.f64 (*.f64 -1/3 x) (/.f64 1 x)))
(fma.f64 -1/45 (pow.f64 x 3) (fma.f64 -1/3 x (/.f64 1 x)))
(fma.f64 (pow.f64 x 3) -1/45 (fma.f64 x -1/3 (/.f64 1 x)))
(fma.f64 x -1/3 (fma.f64 (pow.f64 x 3) -1/45 (/.f64 1 x)))
(fma.f64 x (fma.f64 x (*.f64 x -1/45) -1/3) (/.f64 1 x))
(+.f64 (*.f64 -2/945 (pow.f64 x 5)) (+.f64 (*.f64 -1/45 (pow.f64 x 3)) (+.f64 (*.f64 -1/3 x) (/.f64 1 x))))
(fma.f64 -2/945 (pow.f64 x 5) (fma.f64 -1/45 (pow.f64 x 3) (fma.f64 -1/3 x (/.f64 1 x))))
(fma.f64 (pow.f64 x 5) -2/945 (fma.f64 (pow.f64 x 3) -1/45 (fma.f64 x -1/3 (/.f64 1 x))))
(fma.f64 (pow.f64 x 3) -1/45 (fma.f64 (pow.f64 x 5) -2/945 (fma.f64 x -1/3 (/.f64 1 x))))
(fma.f64 x (fma.f64 x (*.f64 x -1/45) -1/3) (fma.f64 (pow.f64 x 5) -2/945 (/.f64 1 x)))
(fma.f64 x -1/3 (fma.f64 (pow.f64 x 3) -1/45 (fma.f64 (pow.f64 x 5) -2/945 (/.f64 1 x))))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))
(/.f64 (cos.f64 x) (sin.f64 x))

prune38.0ms (0.4%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New86288
Fresh000
Picked101
Done000
Total87289
Error
0.3b
Counts
89 → 2
Alt Table
StatusErrorProgram
0.4b
(+.f64 (*.f64 1/3 x) (*.f64 1/45 (pow.f64 x 3)))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
Compiler

Compiled 1228 to 800 computations (34.9% saved)

localize8.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 1/45 (*.f64 x x) 1/3)
0.1b
(*.f64 2/945 (pow.f64 x 5))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))

series5.0ms (0%)

Counts
3 → 24
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
1.0ms
x
@inf
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
1.0ms
x
@-inf
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
1.0ms
x
@0
(*.f64 2/945 (pow.f64 x 5))
0.0ms
x
@inf
(fma.f64 1/45 (*.f64 x x) 1/3)

rewrite45.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
419×log-prod_binary64
268×pow2_binary64
187×expm1-udef_binary64
187×log1p-udef_binary64
183×pow1/3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01133
123033
2248533
Stop Event
node limit
Counts
3 → 74
Calls
Call 1
Inputs
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(*.f64 2/945 (pow.f64 x 5))
(fma.f64 1/45 (*.f64 x x) 1/3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 1) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 3) (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3)) (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 2) (-.f64 (*.f64 (pow.f64 x 10) 4/893025) (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 2) (*.f64 (pow.f64 x 10) 4/893025)) (-.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5)))) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 2/945 (pow.f64 x 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2/945 (pow.f64 x 5)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 10) 4/893025) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2/945 (pow.f64 x 5))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2/945) (pow.f64 x 5/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 10) 4/893025))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 5 (log.f64 x) (log1p.f64 -943/945)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 5 (log.f64 x) (log1p.f64 -943/945)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2/945 (pow.f64 x 5))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1/3 (*.f64 1/45 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/45 (*.f64 x x)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 1/45 (*.f64 x x) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/45 (*.f64 x x)) 1) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/45 (*.f64 x x) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (pow.f64 (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 2) (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/45 (*.f64 x x)) 3) 1/27) (+.f64 (pow.f64 (*.f64 1/45 (*.f64 x x)) 2) (-.f64 1/9 (*.f64 (*.f64 1/45 (*.f64 x x)) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 1/45 (*.f64 x x)) 2) 1/9) (fma.f64 1/45 (*.f64 x x) -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))

simplify55.0ms (0.5%)

Algorithm
egg-herbie
Rules
753×unswap-sqr_binary64
512×associate-*l*_binary64
433×fma-def_binary64
331×*-commutative_binary64
327×associate-*r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
019270
148252
298252
3221252
4512252
51757252
63714252
74067252
84415252
94829252
Stop Event
node limit
Counts
98 → 87
Calls
Call 1
Inputs
(*.f64 1/3 x)
(+.f64 (*.f64 1/3 x) (*.f64 1/45 (pow.f64 x 3)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
1/3
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(*.f64 1/45 (pow.f64 x 2))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(*.f64 1/45 (pow.f64 x 2))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
Outputs
(*.f64 1/3 x)
(+.f64 (*.f64 1/3 x) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 1/3 x (*.f64 1/45 (pow.f64 x 3)))
(*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))
(*.f64 x (fma.f64 x (*.f64 x 1/45) 1/3))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 1/45 (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/45) 1/3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 1/45 (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/3 x)))
1/3
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(*.f64 1/45 (pow.f64 x 2))
(*.f64 1/45 (*.f64 x x))
(*.f64 x (*.f64 x 1/45))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(*.f64 1/45 (pow.f64 x 2))
(*.f64 1/45 (*.f64 x x))
(*.f64 x (*.f64 x 1/45))
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)
(+.f64 1/3 (*.f64 1/45 (pow.f64 x 2)))
(+.f64 1/3 (*.f64 1/45 (*.f64 x x)))
(fma.f64 1/45 (*.f64 x x) 1/3)
(fma.f64 x (*.f64 x 1/45) 1/3)

prune80.0ms (0.8%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New83487
Fresh101
Picked011
Done000
Total84589
Error
0.2b
Counts
89 → 5
Alt Table
StatusErrorProgram
39.8b
(cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 3))
1.5b
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
41.9b
(/.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 3) (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3)) (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 2) (-.f64 (*.f64 (pow.f64 x 10) 4/893025) (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))
31.3b
(*.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
Compiler

Compiled 1767 to 1232 computations (30.3% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 2/945 (pow.f64 x 5))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
0.6b
(cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))
0.7b
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)

series4.0ms (0%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
1.0ms
x
@inf
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
1.0ms
x
@-inf
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
0.0ms
x
@-inf
(cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))
0.0ms
x
@0
(cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))

rewrite49.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
488×log-prod_binary64
215×expm1-udef_binary64
215×log1p-udef_binary64
178×log-pow_binary64
136×prod-diff_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01438
129638
2295038
Stop Event
node limit
Counts
2 → 79
Calls
Call 1
Inputs
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
(cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 1) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) (cbrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) (*.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2) 3) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) 3) (pow.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) 1) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2)) (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6)) (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 3) (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3)) (fma.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (-.f64 (*.f64 (pow.f64 x 10) 4/893025) (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 (pow.f64 x 10) 4/893025)) (-.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5)))) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/45 (*.f64 x x) 1/3) x (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 5) 2/945 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2/945 (pow.f64 x 5)) 1 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 2/945 (pow.f64 x 5)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 10)) (*.f64 (cbrt.f64 (pow.f64 x 5)) 2/945) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 2/945 (pow.f64 x 5))) (cbrt.f64 (*.f64 (pow.f64 x 10) 4/893025)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 10) 4/893025)) (cbrt.f64 (*.f64 2/945 (pow.f64 x 5))) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 2/945) (pow.f64 x 5/2)) (*.f64 (sqrt.f64 2/945) (pow.f64 x 5/2)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 1 (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 5/2) (*.f64 (pow.f64 x 5/2) 2/945) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (cbrt.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) (cbrt.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) 2)) (cbrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2/945 (cbrt.f64 (pow.f64 x 10))) (cbrt.f64 (pow.f64 x 5)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2/945 (pow.f64 x 5/2)) (pow.f64 x 5/2) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))) (cbrt.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) (pow.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2) (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2) 1/3) (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1/3) (pow.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))))))))

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune116.0ms (1.2%)

Pruning

9 alts after pruning (7 fresh and 2 done)

PrunedKeptTotal
New1295134
Fresh123
Picked011
Done011
Total1309139
Error
0.1b
Counts
139 → 9
Alt Table
StatusErrorProgram
41.9b
(/.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 3) (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3)) (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 2) (-.f64 (*.f64 (pow.f64 x 10) 4/893025) (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))
31.4b
(fma.f64 (*.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 (sqrt.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 2/945 (pow.f64 x 5)))
0.7b
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
1.5b
(pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) 3)
31.3b
(*.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))
31.4b
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
1.4b
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
2.4b
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5))))) 2) 3) (cbrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
Compiler

Compiled 3457 to 2452 computations (29.1% saved)

localize10.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 1/45 (*.f64 x x) 1/3)
0.1b
(*.f64 2/945 (pow.f64 x 5))
0.3b
(*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))
0.4b
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))

series8.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
3.0ms
x
@0
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
2.0ms
x
@inf
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
1.0ms
x
@-inf
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
0.0ms
x
@inf
(*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))
0.0ms
x
@-inf
(*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))

rewrite65.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
523×log-prod_binary64
218×expm1-udef_binary64
218×log1p-udef_binary64
183×log-pow_binary64
147×prod-diff_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01345
127033
2295431
Stop Event
node limit
Counts
2 → 47
Calls
Call 1
Inputs
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
(*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 1) (*.f64 2/945 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))) (cbrt.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))))) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) (pow.f64 (cbrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) 2) (cbrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) (sqrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) 3) (pow.f64 (*.f64 2/945 (pow.f64 x 5)) 3)) (fma.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (-.f64 (*.f64 (pow.f64 x 10) 4/893025) (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (*.f64 (pow.f64 x 10) 4/893025)) (-.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 2/945) (pow.f64 x 5)) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5)))) (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) (+.f64 1 (expm1.f64 (*.f64 2/945 (pow.f64 x 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 2/945 (pow.f64 x 5) (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (*.f64 x (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 1/45 (*.f64 x x) 1/3) 3/2) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))))))

simplify38.0ms (0.4%)

Algorithm
egg-herbie
Rules
750×times-frac_binary64
422×fma-def_binary64
307×fma-neg_binary64
224×associate-/r*_binary64
166×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0111681
1336556
21072524
33602524
Stop Event
node limit
Counts
71 → 85
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 1/3) 2) x)
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (*.f64 1/45 (pow.f64 x 3)))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (+.f64 (pow.f64 (/.f64 -1/16200 (pow.f64 (sqrt.f64 1/3) 3)) 2) (*.f64 1/65610000 (/.f64 1 (pow.f64 (sqrt.f64 1/3) 6))))) (*.f64 1/52488000 (/.f64 1 (pow.f64 (sqrt.f64 1/3) 6)))) (pow.f64 x 9)) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5))))
(+.f64 (*.f64 5/5184 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 6) (pow.f64 x 5)))) (+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 -1 (/.f64 (+.f64 (*.f64 1/1296 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6))) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (pow.f64 x 5)))))))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5))))
(+.f64 (*.f64 -1 (/.f64 (-.f64 (+.f64 (*.f64 1/1296 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6))) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (*.f64 5/5184 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6)))) (pow.f64 x 5))) (+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))))
(*.f64 (sqrt.f64 1/3) x)
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (*.f64 (sqrt.f64 1/3) x))
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (+.f64 (*.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3))) (*.f64 (sqrt.f64 1/3) x)))
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (+.f64 (*.f64 1/1458000 (/.f64 (pow.f64 x 7) (pow.f64 (sqrt.f64 1/3) 5))) (+.f64 (*.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3))) (*.f64 (sqrt.f64 1/3) x))))
(*.f64 (sqrt.f64 1/45) (pow.f64 x 2))
(+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45)))) (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 1/432 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4)))) (+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))) (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))))
(*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))
(-.f64 (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(-.f64 (+.f64 (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))) (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(-.f64 (+.f64 (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))) (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))) (+.f64 (*.f64 1/432 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4)))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45)))))
Outputs
(*.f64 (pow.f64 (sqrt.f64 1/3) 2) x)
(*.f64 1/3 x)
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 (pow.f64 (sqrt.f64 1/3) 2) x (*.f64 1/45 (pow.f64 x 3)))
(fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 (pow.f64 (sqrt.f64 1/3) 2) x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45)))
(+.f64 (*.f64 (+.f64 (*.f64 -1 (+.f64 (pow.f64 (/.f64 -1/16200 (pow.f64 (sqrt.f64 1/3) 3)) 2) (*.f64 1/65610000 (/.f64 1 (pow.f64 (sqrt.f64 1/3) 6))))) (*.f64 1/52488000 (/.f64 1 (pow.f64 (sqrt.f64 1/3) 6)))) (pow.f64 x 9)) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/3) 2) x) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 1/45 (pow.f64 x 3)))))
(fma.f64 (fma.f64 -1 (+.f64 (pow.f64 (/.f64 -1/16200 (pow.f64 (sqrt.f64 1/3) 3)) 2) (/.f64 1/65610000 (pow.f64 (sqrt.f64 1/3) 6))) (/.f64 1/52488000 (pow.f64 (sqrt.f64 1/3) 6))) (pow.f64 x 9) (fma.f64 (pow.f64 (sqrt.f64 1/3) 2) x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3)))))
(fma.f64 (+.f64 (neg.f64 (pow.f64 (/.f64 -1/5400 (sqrt.f64 1/3)) 2)) 1/9720000) (pow.f64 x 9) (fma.f64 1/3 x (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5)))))
(fma.f64 (-.f64 1/9720000 (pow.f64 (/.f64 -1/5400 (sqrt.f64 1/3)) 2)) (pow.f64 x 9) (fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45))))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 (pow.f64 (sqrt.f64 1/3) 2) x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45)))
(+.f64 (*.f64 5/5184 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 6) (pow.f64 x 5)))) (+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (+.f64 (*.f64 2/945 (pow.f64 x 5)) (*.f64 -1 (/.f64 (+.f64 (*.f64 1/1296 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6))) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (pow.f64 x 5)))))))
(+.f64 (/.f64 5/5184 (*.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/45) 6))) (fma.f64 1/3 x (fma.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (neg.f64 (/.f64 (+.f64 (/.f64 1/1296 (pow.f64 (sqrt.f64 1/45) 6)) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (pow.f64 x 5)))))))
(+.f64 (/.f64 5625/64 (pow.f64 x 5)) (fma.f64 1/3 x (-.f64 (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5))) (/.f64 (+.f64 1125/16 (pow.f64 (/.f64 -5/8 (sqrt.f64 1/45)) 2)) (pow.f64 x 5)))))
(-.f64 (fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45))) (/.f64 (+.f64 (pow.f64 (/.f64 -5/8 (sqrt.f64 1/45)) 2) -1125/64) (pow.f64 x 5)))
(*.f64 2/945 (pow.f64 x 5))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3) (*.f64 2/945 (pow.f64 x 5)))
(fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5)))
(+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 (pow.f64 (sqrt.f64 1/3) 2) x (fma.f64 2/945 (pow.f64 x 5) (*.f64 1/45 (pow.f64 x 3))))
(fma.f64 1/3 x (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5))))
(fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45)))
(+.f64 (*.f64 -1 (/.f64 (-.f64 (+.f64 (*.f64 1/1296 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6))) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (*.f64 5/5184 (/.f64 1 (pow.f64 (sqrt.f64 1/45) 6)))) (pow.f64 x 5))) (+.f64 (*.f64 1/3 x) (+.f64 (*.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3)) (*.f64 2/945 (pow.f64 x 5)))))
(+.f64 (/.f64 5/5184 (*.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/45) 6))) (fma.f64 1/3 x (fma.f64 (pow.f64 (sqrt.f64 1/45) 2) (pow.f64 x 3) (fma.f64 2/945 (pow.f64 x 5) (neg.f64 (/.f64 (+.f64 (/.f64 1/1296 (pow.f64 (sqrt.f64 1/45) 6)) (pow.f64 (/.f64 -1/72 (pow.f64 (sqrt.f64 1/45) 3)) 2)) (pow.f64 x 5)))))))
(+.f64 (/.f64 5625/64 (pow.f64 x 5)) (fma.f64 1/3 x (-.f64 (fma.f64 (pow.f64 x 3) 1/45 (*.f64 2/945 (pow.f64 x 5))) (/.f64 (+.f64 1125/16 (pow.f64 (/.f64 -5/8 (sqrt.f64 1/45)) 2)) (pow.f64 x 5)))))
(-.f64 (fma.f64 2/945 (pow.f64 x 5) (fma.f64 1/3 x (*.f64 (pow.f64 x 3) 1/45))) (/.f64 (+.f64 (pow.f64 (/.f64 -5/8 (sqrt.f64 1/45)) 2) -1125/64) (pow.f64 x 5)))
(*.f64 (sqrt.f64 1/3) x)
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (*.f64 (sqrt.f64 1/3) x))
(fma.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3)) (*.f64 (sqrt.f64 1/3) x))
(fma.f64 (sqrt.f64 1/3) x (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))))
(fma.f64 (sqrt.f64 1/3) x (/.f64 (pow.f64 x 3) (/.f64 (sqrt.f64 1/3) 1/90)))
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (+.f64 (*.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3))) (*.f64 (sqrt.f64 1/3) x)))
(fma.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3)) (fma.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3)) (*.f64 (sqrt.f64 1/3) x)))
(fma.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3)) (fma.f64 (sqrt.f64 1/3) x (*.f64 -1/5400 (/.f64 (pow.f64 x 5) (sqrt.f64 1/3)))))
(fma.f64 -1/5400 (/.f64 (pow.f64 x 5) (sqrt.f64 1/3)) (fma.f64 (sqrt.f64 1/3) x (/.f64 (pow.f64 x 3) (/.f64 (sqrt.f64 1/3) 1/90))))
(+.f64 (*.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3))) (+.f64 (*.f64 1/1458000 (/.f64 (pow.f64 x 7) (pow.f64 (sqrt.f64 1/3) 5))) (+.f64 (*.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3))) (*.f64 (sqrt.f64 1/3) x))))
(fma.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3)) (fma.f64 1/1458000 (/.f64 (pow.f64 x 7) (pow.f64 (sqrt.f64 1/3) 5)) (fma.f64 -1/16200 (/.f64 (pow.f64 x 5) (pow.f64 (sqrt.f64 1/3) 3)) (*.f64 (sqrt.f64 1/3) x))))
(fma.f64 1/90 (/.f64 (pow.f64 x 3) (sqrt.f64 1/3)) (fma.f64 1/1458000 (/.f64 (pow.f64 x 7) (pow.f64 (sqrt.f64 1/3) 5)) (fma.f64 (sqrt.f64 1/3) x (*.f64 -1/5400 (/.f64 (pow.f64 x 5) (sqrt.f64 1/3))))))
(fma.f64 1/1458000 (/.f64 (pow.f64 x 7) (pow.f64 (sqrt.f64 1/3) 5)) (fma.f64 -1/5400 (/.f64 (pow.f64 x 5) (sqrt.f64 1/3)) (fma.f64 (sqrt.f64 1/3) x (/.f64 (pow.f64 x 3) (/.f64 (sqrt.f64 1/3) 1/90)))))
(*.f64 (sqrt.f64 1/45) (pow.f64 x 2))
(*.f64 (sqrt.f64 1/45) (*.f64 x x))
(*.f64 x (*.f64 x (sqrt.f64 1/45)))
(+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(fma.f64 (sqrt.f64 1/45) (*.f64 x x) (/.f64 1/6 (sqrt.f64 1/45)))
(fma.f64 x (*.f64 x (sqrt.f64 1/45)) (/.f64 1/6 (sqrt.f64 1/45)))
(-.f64 (+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45)))) (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))))
(-.f64 (fma.f64 (sqrt.f64 1/45) (*.f64 x x) (/.f64 1/6 (sqrt.f64 1/45))) (/.f64 1/72 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (*.f64 x x))))
(+.f64 (fma.f64 (sqrt.f64 1/45) (*.f64 x x) (/.f64 1/6 (sqrt.f64 1/45))) (*.f64 -1/72 (/.f64 (/.f64 45 (sqrt.f64 1/45)) (*.f64 x x))))
(+.f64 (fma.f64 x (*.f64 x (sqrt.f64 1/45)) (/.f64 1/6 (sqrt.f64 1/45))) (/.f64 (/.f64 -5/8 (sqrt.f64 1/45)) (*.f64 x x)))
(-.f64 (+.f64 (*.f64 1/432 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4)))) (+.f64 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))) (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))))
(+.f64 (/.f64 1/432 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4))) (-.f64 (fma.f64 (sqrt.f64 1/45) (*.f64 x x) (/.f64 1/6 (sqrt.f64 1/45))) (/.f64 1/72 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (*.f64 x x)))))
(+.f64 (fma.f64 (sqrt.f64 1/45) (*.f64 x x) (/.f64 1/6 (sqrt.f64 1/45))) (-.f64 (/.f64 (/.f64 1/432 (pow.f64 x 4)) (pow.f64 (sqrt.f64 1/45) 5)) (*.f64 1/72 (/.f64 (/.f64 45 (sqrt.f64 1/45)) (*.f64 x x)))))
(+.f64 (+.f64 (/.f64 1/6 (sqrt.f64 1/45)) (fma.f64 x (*.f64 x (sqrt.f64 1/45)) (/.f64 (/.f64 1/432 (pow.f64 x 4)) (pow.f64 (sqrt.f64 1/45) 5)))) (/.f64 (/.f64 -5/8 (sqrt.f64 1/45)) (*.f64 x x)))
(*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))
(neg.f64 (*.f64 (sqrt.f64 1/45) (*.f64 x x)))
(*.f64 (*.f64 x x) (neg.f64 (sqrt.f64 1/45)))
(*.f64 x (*.f64 x (neg.f64 (sqrt.f64 1/45))))
(-.f64 (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(-.f64 (neg.f64 (*.f64 (sqrt.f64 1/45) (*.f64 x x))) (/.f64 1/6 (sqrt.f64 1/45)))
(fma.f64 (neg.f64 (sqrt.f64 1/45)) (*.f64 x x) (/.f64 -1/6 (sqrt.f64 1/45)))
(-.f64 (/.f64 -1/6 (sqrt.f64 1/45)) (*.f64 x (*.f64 x (sqrt.f64 1/45))))
(-.f64 (+.f64 (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))) (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45))))
(-.f64 (+.f64 (/.f64 1/72 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (*.f64 x x))) (neg.f64 (*.f64 (sqrt.f64 1/45) (*.f64 x x)))) (/.f64 1/6 (sqrt.f64 1/45)))
(fma.f64 1/72 (/.f64 (/.f64 45 (sqrt.f64 1/45)) (*.f64 x x)) (fma.f64 (neg.f64 (sqrt.f64 1/45)) (*.f64 x x) (/.f64 -1/6 (sqrt.f64 1/45))))
(-.f64 (/.f64 (/.f64 5/8 (sqrt.f64 1/45)) (*.f64 x x)) (fma.f64 x (*.f64 x (sqrt.f64 1/45)) (/.f64 1/6 (sqrt.f64 1/45))))
(-.f64 (+.f64 (*.f64 1/72 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (pow.f64 x 2)))) (*.f64 -1 (*.f64 (sqrt.f64 1/45) (pow.f64 x 2)))) (+.f64 (*.f64 1/432 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4)))) (*.f64 1/6 (/.f64 1 (sqrt.f64 1/45)))))
(-.f64 (+.f64 (/.f64 1/72 (*.f64 (pow.f64 (sqrt.f64 1/45) 3) (*.f64 x x))) (neg.f64 (*.f64 (sqrt.f64 1/45) (*.f64 x x)))) (+.f64 (/.f64 1/6 (sqrt.f64 1/45)) (/.f64 1/432 (*.f64 (pow.f64 (sqrt.f64 1/45) 5) (pow.f64 x 4)))))
(-.f64 (fma.f64 1/72 (/.f64 (/.f64 45 (sqrt.f64 1/45)) (*.f64 x x)) (fma.f64 (neg.f64 (sqrt.f64 1/45)) (*.f64 x x) (/.f64 -1/6 (sqrt.f64 1/45)))) (/.f64 (/.f64 1/432 (pow.f64 x 4)) (pow.f64 (sqrt.f64 1/45) 5)))
(-.f64 (/.f64 (/.f64 5/8 (sqrt.f64 1/45)) (*.f64 x x)) (+.f64 (/.f64 1/6 (sqrt.f64 1/45)) (fma.f64 x (*.f64 x (sqrt.f64 1/45)) (/.f64 (/.f64 1/432 (pow.f64 x 4)) (pow.f64 (sqrt.f64 1/45) 5)))))

prune204.0ms (2%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1642166
Fresh516
Picked011
Done112
Total1705175
Error
0.0b
Counts
175 → 5
Alt Table
StatusErrorProgram
0.7b
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
31.3b
(*.f64 (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))) (sqrt.f64 (fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))))
0.5b
(fma.f64 (*.f64 x (sqrt.f64 (+.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3))))))) (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3)) (*.f64 2/945 (pow.f64 x 5)))
0.5b
(fma.f64 (*.f64 x (sqrt.f64 (fma.f64 1/45 (*.f64 x x) 1/3))) (sqrt.f64 (+.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/45 (*.f64 x x) 1/3)))))) (*.f64 2/945 (pow.f64 x 5)))
0.3b
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
Compiler

Compiled 4427 to 3151 computations (28.8% saved)

regimes44.0ms (0.4%)

Accuracy

Total -32.7b remaining (-9612.3%)

Threshold costs -32.7b (-9612.3%)

Counts
37 → 1
Compiler

Compiled 756 to 522 computations (31% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01118
11218
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))
Outputs
(fma.f64 x (fma.f64 1/45 (*.f64 x x) 1/3) (*.f64 2/945 (pow.f64 x 5)))

end104.0ms (1%)

Stop Event
fuel
Compiler

Compiled 162 to 109 computations (32.7% saved)

Profiling

Loading profile data...