Details

Time bar (total: 4.5s)

analyze5.0ms (0.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%74.9%25.1%0
0%74.9%25.1%1
37.5%37.5%25.1%2
37.5%18.7%43.8%3
46.8%9.4%43.8%4
51.5%4.7%43.8%5
51.5%2.3%46.1%6
52.7%1.2%46.1%7
53.3%0.6%46.1%8
53.3%0.3%46.4%9
53.4%0.1%46.4%10
53.5%0.1%46.4%11
53.5%0%46.5%12
53.5%0%46.5%13
53.5%0%46.5%14
Compiler

Compiled 71 to 33 computations (53.5% saved)

sample1.5s (33.1%)

Results
1.5s8256×body128valid
0.0msbody128invalid
Compiler

Compiled 142 to 66 computations (53.5% saved)

preprocess28.0ms (0.6%)

Algorithm
egg-herbie
Rules
642×distribute-lft-out_binary64
588×associate-/l*_binary64
406×associate-/r*_binary64
400×*-commutative_binary64
244×distribute-rgt-out_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03275
17459
225141
3120837
4239437
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
Outputs
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (fma.f64 2 (fabs.f64 x) (*.f64 2/3 (*.f64 (fabs.f64 x) (*.f64 x x)))) (*.f64 1/5 (*.f64 (fabs.f64 x) (*.f64 (*.f64 x x) (*.f64 x x))))) (*.f64 1/21 (*.f64 (fabs.f64 x) (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))))))
(fabs.f64 (/.f64 (fma.f64 1/21 (*.f64 (*.f64 x x) (*.f64 (*.f64 x x) (pow.f64 (fabs.f64 x) 3))) (fma.f64 1/5 (*.f64 (*.f64 x x) (pow.f64 (fabs.f64 x) 3)) (*.f64 (fabs.f64 x) (+.f64 2 (*.f64 (*.f64 2/3 x) x))))) (sqrt.f64 (PI.f64))))
(fabs.f64 (/.f64 (*.f64 (fabs.f64 x) (+.f64 (fma.f64 2/3 (*.f64 x x) 2) (fma.f64 1/5 (pow.f64 (fabs.f64 x) 4) (*.f64 1/21 (pow.f64 (fabs.f64 x) 6))))) (sqrt.f64 (PI.f64))))
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
Compiler

Compiled 68 to 31 computations (54.4% saved)

simplify24.0ms (0.5%)

Algorithm
egg-herbie
Rules
642×distribute-lft-out_binary64
588×associate-/l*_binary64
406×associate-/r*_binary64
400×*-commutative_binary64
244×distribute-rgt-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
03275
17459
225141
3120837
4239437
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
Outputs
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (fma.f64 2 (fabs.f64 x) (*.f64 2/3 (*.f64 (fabs.f64 x) (*.f64 x x)))) (*.f64 1/5 (*.f64 (fabs.f64 x) (*.f64 (*.f64 x x) (*.f64 x x))))) (*.f64 1/21 (*.f64 (fabs.f64 x) (*.f64 (*.f64 (*.f64 x x) (*.f64 x x)) (*.f64 x x)))))))
(fabs.f64 (/.f64 (fma.f64 1/21 (*.f64 (*.f64 x x) (*.f64 (*.f64 x x) (pow.f64 (fabs.f64 x) 3))) (fma.f64 1/5 (*.f64 (*.f64 x x) (pow.f64 (fabs.f64 x) 3)) (*.f64 (fabs.f64 x) (+.f64 2 (*.f64 (*.f64 2/3 x) x))))) (sqrt.f64 (PI.f64))))
(fabs.f64 (/.f64 (*.f64 (fabs.f64 x) (+.f64 (fma.f64 2/3 (*.f64 x x) 2) (fma.f64 1/5 (pow.f64 (fabs.f64 x) 4) (*.f64 1/21 (pow.f64 (fabs.f64 x) 6))))) (sqrt.f64 (PI.f64))))
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))

prune5.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.5b
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
Compiler

Compiled 278 to 149 computations (46.4% saved)

localize24.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))
0.1b
(*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x))
0.2b
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))
1.0b
(sqrt.f64 (PI.f64))

series9.0ms (0.2%)

Counts
4 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))
1.0ms
x
@-inf
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))
1.0ms
x
@-inf
(*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))
1.0ms
x
@0
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))
1.0ms
x
@inf
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))

rewrite53.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
633×log-prod_binary64
240×expm1-udef_binary64
240×log1p-udef_binary64
196×log-pow_binary64
155×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01934
134422
2357422
Stop Event
node limit
Counts
4 → 78
Calls
Call 1
Inputs
(sqrt.f64 (PI.f64))
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))
(*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x))
(*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (PI.f64)))) (cbrt.f64 (exp.f64 (sqrt.f64 (PI.f64)))))) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (PI.f64))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (PI.f64))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (PI.f64))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (PI.f64)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (PI.f64)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (PI.f64))) (cbrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (PI.f64)) (cbrt.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (PI.f64) 1/4) (pow.f64 (PI.f64) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (PI.f64) 2))) (sqrt.f64 (cbrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (PI.f64) 2)) 1/2) (pow.f64 (cbrt.f64 (PI.f64)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (PI.f64) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (PI.f64)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (PI.f64) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (PI.f64))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (PI.f64) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (PI.f64) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (PI.f64)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (PI.f64))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2/3 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3))) (cbrt.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 2/3 (pow.f64 x 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2/3 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2/3 (pow.f64 x 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (cbrt.f64 2/3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2/3) (pow.f64 x 3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 4/9 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 2/3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 2/3 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2/3 (pow.f64 x 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2/3 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2/3 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 3 (log.f64 x) (log.f64 2/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 3 (log.f64 x) (log.f64 2/3)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 x 3))) (cbrt.f64 (exp.f64 (pow.f64 x 3))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 x 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (pow.f64 x 3) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (neg.f64 x) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 (*.f64 x x) (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 x 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 x)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/5 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5))) (cbrt.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 1/5 (pow.f64 x 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/5 (pow.f64 x 5)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/5 (pow.f64 x 5)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/5 (pow.f64 x 5))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/5 (pow.f64 x 5))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (pow.f64 x 5) 2) 1/25))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/5) (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/5 (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/5 (pow.f64 x 5)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/5 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/5 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/5 (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/5 (pow.f64 x 5))) 1))))))

simplify66.0ms (1.5%)

Algorithm
egg-herbie
Rules
828×sqr-pow_binary64
416×unswap-sqr_binary64
388×pow-sqr_binary64
332×cube-prod_binary64
252×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011288
125288
252288
3114288
4243288
5630288
6923288
71559288
81667288
91829288
102044288
112374288
122830288
133427288
144176288
Stop Event
node limit
Counts
114 → 81
Calls
Call 1
Inputs
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
Outputs
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(*.f64 2/3 (pow.f64 (fabs.f64 x) 3))
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(pow.f64 (fabs.f64 x) 3)
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))
(*.f64 1/5 (pow.f64 (fabs.f64 x) 5))

prune192.0ms (4.3%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New1212123
Fresh011
Picked011
Done000
Total1214125
Error
0.0b
Counts
125 → 4
Alt Table
StatusErrorProgram
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
1.1b
(fabs.f64 (*.f64 (/.f64 1 (expm1.f64 (log1p.f64 (sqrt.f64 (PI.f64))))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.5b
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
Compiler

Compiled 8431 to 3428 computations (59.3% saved)

localize27.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x))
0.2b
(*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))
1.0b
(sqrt.f64 (PI.f64))
9.7b
(sqrt.f64 (pow.f64 x 6))

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
(sqrt.f64 (pow.f64 x 6))
1.0ms
x
@inf
(sqrt.f64 (pow.f64 x 6))
0.0ms
x
@-inf
(sqrt.f64 (pow.f64 x 6))

rewrite29.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
404×pow1_binary64
382×add-log-exp_binary64
382×log1p-expm1-u_binary64
382×expm1-log1p-u_binary64
371×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054
11054
211384
Stop Event
node limit
Counts
1 → 25
Calls
Call 1
Inputs
(sqrt.f64 (pow.f64 x 6))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/2) (pow.f64 x 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 x 12))) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 x) 3) (pow.f64 (sqrt.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 x 12)) 1/2) (pow.f64 (*.f64 x x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x x) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x x) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 6) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 9) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 x 9))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 x) 3))))))

simplify30.0ms (0.7%)

Algorithm
egg-herbie
Rules
912×fma-def_binary64
450×associate-*l*_binary64
362×unswap-sqr_binary64
279×associate-*r*_binary64
271×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0656
11656
24456
37456
414356
540956
6141856
7269756
8452756
Stop Event
node limit
Counts
37 → 27
Calls
Call 1
Inputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(*.f64 -1 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
Outputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(*.f64 -1 (pow.f64 x 3))
(neg.f64 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
(neg.f64 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
(neg.f64 (pow.f64 x 3))
(*.f64 -1 (pow.f64 x 3))
(neg.f64 (pow.f64 x 3))

prune163.0ms (3.6%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1111112
Fresh112
Picked011
Done101
Total1133116
Error
0.0b
Counts
116 → 3
Alt Table
StatusErrorProgram
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.5b
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
1.0b
(fabs.f64 (*.f64 (/.f64 1 (expm1.f64 (log1p.f64 (sqrt.f64 (PI.f64))))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
Compiler

Compiled 7343 to 3704 computations (49.6% saved)

localize15.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
0.1b
(*.f64 1/21 (pow.f64 x 6))
0.3b
(/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64)))
1.0b
(sqrt.f64 (PI.f64))

series8.0ms (0.2%)

Counts
3 → 24
Calls

9 calls:

TimeVariablePointExpression
2.0ms
x
@0
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
1.0ms
x
@0
(/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64)))
1.0ms
x
@0
(*.f64 1/21 (pow.f64 x 6))
1.0ms
x
@-inf
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
1.0ms
x
@inf
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))

rewrite52.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
534×log-prod_binary64
220×expm1-udef_binary64
220×log1p-udef_binary64
185×log-pow_binary64
142×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01430
130028
2345528
Stop Event
node limit
Counts
3 → 81
Calls
Call 1
Inputs
(/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64)))
(*.f64 1/21 (pow.f64 x 6))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 x (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64))))) (cbrt.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64))))))) (log.f64 (cbrt.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 x (sqrt.f64 (PI.f64))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (pow.f64 (PI.f64) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (sqrt.f64 (PI.f64))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 x (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) (cbrt.f64 (/.f64 (*.f64 x x) (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (*.f64 x x) (PI.f64))) (cbrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) (pow.f64 (PI.f64) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) (sqrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (/.f64 1 (neg.f64 (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (PI.f64) -1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 x x)) 1) (/.f64 (cbrt.f64 x) (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) 1) (/.f64 (sqrt.f64 x) (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (PI.f64))) (/.f64 x (cbrt.f64 (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 (PI.f64))) (cbrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) (cbrt.f64 (PI.f64))) (/.f64 (sqrt.f64 x) (cbrt.f64 (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (*.f64 x x)) (pow.f64 (PI.f64) 1/4)) (/.f64 (cbrt.f64 x) (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (PI.f64)) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 x (neg.f64 (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (*.f64 x x) (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 x (sqrt.f64 (PI.f64))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 x 3) (pow.f64 (PI.f64) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/21 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6))) (cbrt.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 1/21 (pow.f64 x 6)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/21 (pow.f64 x 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/21 (pow.f64 x 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 1/21) (*.f64 x x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 1/21) (pow.f64 x 3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 12) 1/441))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/21 (pow.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/21 (pow.f64 x 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/21 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/21 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/21 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/21 (pow.f64 x 6))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/21 (pow.f64 x 6)) (*.f64 1/5 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/5 (pow.f64 x 4)) 1) (*.f64 1/21 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))) (cbrt.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))))) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) (pow.f64 (cbrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 2) (cbrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) (sqrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/5 (pow.f64 x 4)) 3) (pow.f64 (*.f64 1/21 (pow.f64 x 6)) 3)) (fma.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/5 (pow.f64 x 4)) (-.f64 (*.f64 (pow.f64 x 12) 1/441) (*.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/5 (pow.f64 x 4))) (*.f64 (pow.f64 x 12) 1/441)) (-.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 1/21) (pow.f64 x 6)) (exp.f64 (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/21 (pow.f64 x 6)))) (exp.f64 (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 1/5 (pow.f64 x 4))) (+.f64 1 (expm1.f64 (*.f64 1/21 (pow.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 1))))))

simplify71.0ms (1.6%)

Algorithm
egg-herbie
Rules
518×sqr-pow_binary64
487×associate-*l*_binary64
467×unswap-sqr_binary64
440×fma-def_binary64
300×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
017291
132291
256291
3123267
4399267
51478267
62937267
73286267
83570267
93854267
104219267
114698267
Stop Event
node limit
Counts
105 → 86
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 1/5 (pow.f64 x 4))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 1/21 (pow.f64 x 6))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 1/21 (pow.f64 x 6))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
Outputs
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) (fabs.f64 x))
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 1/5 (pow.f64 x 4))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(*.f64 1/21 (pow.f64 x 6))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(*.f64 1/21 (pow.f64 x 6))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))
(+.f64 (*.f64 1/5 (pow.f64 x 4)) (*.f64 1/21 (pow.f64 x 6)))
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/21 (*.f64 x x) 1/5))

prune132.0ms (2.9%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New1102112
Fresh011
Picked101
Done011
Total1114115
Error
0b
Counts
115 → 4
Alt Table
StatusErrorProgram
0.5b
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (pow.f64 (sqrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 2) (fma.f64 2/3 (*.f64 x x) 2))))
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.2b
(fabs.f64 (*.f64 (*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
1.0b
(fabs.f64 (*.f64 (/.f64 1 (expm1.f64 (log1p.f64 (sqrt.f64 (PI.f64))))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
Compiler

Compiled 3514 to 2257 computations (35.8% saved)

localize17.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6)))
0.1b
(*.f64 1/21 (pow.f64 x 6))
0.2b
(/.f64 x (pow.f64 (PI.f64) 1/4))
0.3b
(*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))

series49.0ms (1.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
46.0ms
x
@0
(/.f64 x (pow.f64 (PI.f64) 1/4))
1.0ms
x
@0
(*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))
1.0ms
x
@inf
(*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))
1.0ms
x
@-inf
(*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))
0.0ms
x
@-inf
(/.f64 x (pow.f64 (PI.f64) 1/4))

rewrite49.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
845×log1p-expm1-u_binary64
845×expm1-log1p-u_binary64
91×add-sqr-sqrt_binary64
87×add-log-exp_binary64
86×add-cbrt-cube_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0923
119615
2244415
Stop Event
node limit
Counts
2 → 88
Calls
Call 1
Inputs
(*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4)))
(/.f64 x (pow.f64 (PI.f64) 1/4))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 x (sqrt.f64 (PI.f64))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (*.f64 (pow.f64 (PI.f64) 1/4) (/.f64 (pow.f64 (PI.f64) 1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (*.f64 (/.f64 (pow.f64 (PI.f64) 1/4) x) (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 (PI.f64)) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (PI.f64) 1/4) (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (PI.f64) -1/4) (/.f64 (pow.f64 (PI.f64) 1/4) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (sqrt.f64 (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (/.f64 (pow.f64 (PI.f64) 1/4) (pow.f64 (PI.f64) -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) (pow.f64 (PI.f64) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (*.f64 x (/.f64 x (sqrt.f64 (PI.f64))))) (/.f64 (pow.f64 (PI.f64) 1/4) (cbrt.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 x) 2) (/.f64 (sqrt.f64 (PI.f64)) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/8)) (/.f64 (pow.f64 (PI.f64) 1/4) (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/8))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 x) (/.f64 (sqrt.f64 (PI.f64)) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (*.f64 (neg.f64 (pow.f64 (PI.f64) 1/4)) (/.f64 (pow.f64 (PI.f64) 1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (*.f64 (/.f64 (pow.f64 (PI.f64) 1/4) x) (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 x) (neg.f64 (sqrt.f64 (PI.f64))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 x) (*.f64 (neg.f64 (pow.f64 (PI.f64) 1/4)) (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 x) (*.f64 (pow.f64 (PI.f64) 1/4) (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)) (neg.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (neg.f64 x)) (*.f64 (neg.f64 (pow.f64 (PI.f64) 1/4)) (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) 1) (*.f64 (neg.f64 (pow.f64 (PI.f64) 1/4)) (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x -1) (*.f64 (pow.f64 (PI.f64) 1/4) (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) -1) (*.f64 (neg.f64 (pow.f64 (PI.f64) 1/4)) (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) (pow.f64 (PI.f64) 1/8)) (pow.f64 (PI.f64) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 1) (pow.f64 (PI.f64) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) (cbrt.f64 (sqrt.f64 (PI.f64)))) (cbrt.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (*.f64 (pow.f64 (PI.f64) -1/4) x)) (neg.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) (pow.f64 (PI.f64) -1/4)) (neg.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (PI.f64) -1/4) (neg.f64 x)) (neg.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) -1) (neg.f64 (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (*.f64 x x) (PI.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 x (sqrt.f64 (PI.f64))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 x (sqrt.f64 (PI.f64))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 3) (pow.f64 (pow.f64 (PI.f64) 1/4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 (PI.f64) -1/4) 3) (pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 3) (pow.f64 (pow.f64 (PI.f64) -1/4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 x (sqrt.f64 (PI.f64)))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (pow.f64 (PI.f64) -1/4) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (PI.f64) -1/4) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (pow.f64 (PI.f64) -1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)) (cbrt.f64 (*.f64 x (/.f64 x (sqrt.f64 (PI.f64))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (/.f64 x (sqrt.f64 (PI.f64))))) (cbrt.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (PI.f64) -1/2)) (*.f64 (cbrt.f64 (pow.f64 (PI.f64) -1/4)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (pow.f64 (PI.f64) -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/8)) (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (PI.f64) -1/8) (/.f64 x (pow.f64 (PI.f64) 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (PI.f64) -1/8) (*.f64 (pow.f64 (PI.f64) -1/8) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (/.f64 1 (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (sqrt.f64 (PI.f64)))) (/.f64 x (cbrt.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) 1) (/.f64 (cbrt.f64 x) (pow.f64 (PI.f64) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) 1) (sqrt.f64 (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 (sqrt.f64 (PI.f64)))) (cbrt.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) (cbrt.f64 (sqrt.f64 (PI.f64)))) (/.f64 (sqrt.f64 x) (cbrt.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (PI.f64) 1/8)) (/.f64 (cbrt.f64 x) (pow.f64 (PI.f64) 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (PI.f64) -1/8) (sqrt.f64 x)) (*.f64 (pow.f64 (PI.f64) -1/8) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (cbrt.f64 (pow.f64 (PI.f64) -1/2))) (cbrt.f64 (pow.f64 (PI.f64) -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (PI.f64) -1/8)) (pow.f64 (PI.f64) -1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (PI.f64) -1/4) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (PI.f64) -1/4) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 x) (pow.f64 (PI.f64) -1/8)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (PI.f64) 1/4) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 x (neg.f64 (pow.f64 (PI.f64) 1/4))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (/.f64 x (sqrt.f64 (PI.f64)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (pow.f64 (PI.f64) -1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (PI.f64) 1/4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (pow.f64 (PI.f64) -1/4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 (PI.f64) -1/4) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 (PI.f64) -1/4) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 -1/4 (log.f64 (PI.f64))) (log.f64 x)))))))

simplify71.0ms (1.6%)

Algorithm
egg-herbie
Rules
729×sqr-pow_binary64
440×associate-*l*_binary64
362×unswap-sqr_binary64
313×pow-sqr_binary64
256×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
010252
119252
228252
347252
4105252
5323252
61174252
71865252
81955252
92090252
102249252
112481252
122803252
133224252
143724252
154319252
Stop Event
node limit
Counts
112 → 91
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
Outputs
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (sqrt.f64 (/.f64 1 (PI.f64))) x)
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))
(*.f64 (pow.f64 (/.f64 1 (PI.f64)) 1/4) x)
(*.f64 x (pow.f64 (/.f64 1 (PI.f64)) 1/4))

prune188.0ms (4.2%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New1390139
Fresh022
Picked011
Done011
Total1394143
Error
0b
Counts
143 → 4
Alt Table
StatusErrorProgram
0.5b
(fabs.f64 (*.f64 (/.f64 (fabs.f64 x) (sqrt.f64 (PI.f64))) (+.f64 (pow.f64 (sqrt.f64 (fma.f64 1/21 (pow.f64 x 6) (*.f64 1/5 (pow.f64 x 4)))) 2) (fma.f64 2/3 (*.f64 x x) 2))))
0.2b
(fabs.f64 (*.f64 (/.f64 1 (sqrt.f64 (PI.f64))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
0.2b
(fabs.f64 (*.f64 (*.f64 (/.f64 1 (pow.f64 (PI.f64) 1/4)) (/.f64 x (pow.f64 (PI.f64) 1/4))) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
1.0b
(fabs.f64 (*.f64 (/.f64 1 (expm1.f64 (log1p.f64 (sqrt.f64 (PI.f64))))) (+.f64 (+.f64 (+.f64 (*.f64 2 (fabs.f64 x)) (*.f64 (/.f64 2 3) (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 5) (*.f64 (*.f64 (*.f64 (*.f64 (fabs.f64 x) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)))) (*.f64 (/.f64 1 21) (*.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 (pow.f64 x 6)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x)) (fabs.f64 x))))))
Compiler

Compiled 4780 to 3470 computations (27.4% saved)

regimes1.6s (34.7%)

Accuracy

Total 0.1b remaining (93.1%)

Threshold costs 0.1b (93.1%)

Counts
238 → 1
Compiler

Compiled 10441 to 5767 computations (44.8% saved)

simplify2.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02136
12836
23336
Stop Event
saturated
Calls
Call 1
Inputs
(fabs.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) -1/2) x) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))
Outputs
(fabs.f64 (*.f64 (*.f64 (pow.f64 (PI.f64) -1/2) x) (+.f64 (fma.f64 1/5 (pow.f64 x 4) (*.f64 1/21 (pow.f64 x 6))) (fma.f64 2/3 (*.f64 x x) 2))))

end132.0ms (2.9%)

Stop Event
fuel
Compiler

Compiled 239 to 162 computations (32.2% saved)

Profiling

Loading profile data...