FastMath test2

Time bar (total: 2.6s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 14 to 10 computations (28.6% saved)

sample1.2s (43.5%)

Results
898.0ms7080×body256valid
225.0ms1073×body256infinite
13.0ms71×body1024valid
4.0ms32×body512valid
Bogosity

preprocess216.0ms (8.2%)

Algorithm
egg-herbie
Rules
2540×fma-def
736×fma-neg
324×unsub-neg
244×cancel-sign-sub-inv
228×distribute-rgt-in
Problems
256×No Errors
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
032258
193183
2291141
3870133
42078133
53173133
63872133
73902133
83902133
94084133
104084133
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (+.f64 (*.f64 (neg.f64 d1) 10) (*.f64 (neg.f64 d1) d2)) (*.f64 (neg.f64 d1) 20))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 (neg.f64 d2))) (*.f64 d1 20))
(neg.f64 (+.f64 (+.f64 (*.f64 (neg.f64 d1) 10) (*.f64 (neg.f64 d1) d2)) (*.f64 (neg.f64 d1) 20)))
(neg.f64 (+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 (neg.f64 d2))) (*.f64 d1 20)))
(+.f64 (+.f64 (*.f64 d2 10) (*.f64 d2 d1)) (*.f64 d2 20))
Outputs
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (*.f64 d1 (+.f64 10 d2)) (*.f64 d1 20))
(*.f64 d1 (+.f64 (+.f64 10 d2) 20))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(+.f64 (*.f64 d1 (+.f64 10 d2)) (*.f64 d1 20))
(*.f64 d1 (+.f64 (+.f64 10 d2) 20))
(*.f64 d1 (+.f64 d2 30))
(+.f64 (+.f64 (*.f64 (neg.f64 d1) 10) (*.f64 (neg.f64 d1) d2)) (*.f64 (neg.f64 d1) 20))
(+.f64 (*.f64 (neg.f64 d1) (+.f64 10 d2)) (*.f64 20 (neg.f64 d1)))
(*.f64 (neg.f64 d1) (+.f64 (+.f64 10 d2) 20))
(*.f64 (neg.f64 d1) (+.f64 d2 30))
(*.f64 d1 (-.f64 -30 d2))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 (neg.f64 d2))) (*.f64 d1 20))
(+.f64 (*.f64 d1 20) (*.f64 d1 (+.f64 10 (neg.f64 d2))))
(*.f64 d1 (+.f64 20 (-.f64 10 d2)))
(*.f64 d1 (-.f64 30 d2))
(neg.f64 (+.f64 (+.f64 (*.f64 (neg.f64 d1) 10) (*.f64 (neg.f64 d1) d2)) (*.f64 (neg.f64 d1) 20)))
(+.f64 (*.f64 d1 (+.f64 10 d2)) (*.f64 d1 20))
(*.f64 d1 (+.f64 (+.f64 10 d2) 20))
(*.f64 d1 (+.f64 d2 30))
(neg.f64 (+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 (neg.f64 d2))) (*.f64 d1 20)))
(neg.f64 (+.f64 (*.f64 d1 20) (*.f64 d1 (+.f64 10 (neg.f64 d2)))))
(neg.f64 (*.f64 d1 (+.f64 20 (-.f64 10 d2))))
(*.f64 (neg.f64 d1) (-.f64 30 d2))
(*.f64 d1 (+.f64 d2 -30))
(+.f64 (+.f64 (*.f64 d2 10) (*.f64 d2 d1)) (*.f64 d2 20))
(+.f64 (*.f64 d2 (+.f64 10 d1)) (*.f64 d2 20))
(*.f64 d2 (+.f64 (+.f64 d1 10) 20))
(*.f64 d2 (+.f64 d1 30))
Symmetry

(negabs d1)

Compiler

Compiled 47 to 28 computations (40.4% saved)

eval3.0ms (0.1%)

Compiler

Compiled 23 to 16 computations (30.4% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 d1 (+.f64 d2 30))
100.0%
(*.f64 d1 (+.f64 d2 30))
Compiler

Compiled 14 to 10 computations (28.6% saved)

localize25.0ms (0.9%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(*.f64 d1 (+.f64 d2 30))
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
d1
@0
(*.f64 d1 (+.f64 d2 30))
0.0ms
d2
@-inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d1
@-inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d2
@inf
(*.f64 d1 (+.f64 d2 30))
0.0ms
d1
@inf
(*.f64 d1 (+.f64 d2 30))

rewrite237.0ms (8.9%)

Algorithm
batch-egg-rewrite
Rules
680×unpow-prod-down
515×log1p-expm1-u
515×expm1-log1p-u
498×log-prod
480×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
110619
2141819
Stop Event
node limit
Counts
1 → 53
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 d2 30))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(+.f64 0 (*.f64 d1 (+.f64 d2 30)))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 30) 1))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 30))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (*.f64 (pow.f64 d1 3) 27000)) (+.f64 (pow.f64 (*.f64 d1 d2) 2) (-.f64 (pow.f64 (*.f64 d1 30) 2) (*.f64 (*.f64 d1 d2) (*.f64 d1 30)))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 d2) 2) (pow.f64 (*.f64 d1 30) 2)) (-.f64 (*.f64 d1 d2) (*.f64 d1 30)))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d2 3) 27000)) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 -900)) (+.f64 d2 -30))
(/.f64 (*.f64 (+.f64 (pow.f64 d2 3) 27000) d1) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 (fma.f64 d2 d2 -900) d1) (+.f64 d2 -30))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 d2 30))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 30))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30)))) 2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 30))))
(fma.f64 d1 d2 (*.f64 d1 30))
(fma.f64 d1 30 (*.f64 d1 d2))
(fma.f64 d2 d1 (*.f64 d1 30))
(fma.f64 30 d1 (*.f64 d1 d2))
(fma.f64 1 (*.f64 d1 d2) (*.f64 d1 30))
(fma.f64 1 (*.f64 d1 30) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) d2) (*.f64 d1 30))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) 30) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 d2) 2) (*.f64 (cbrt.f64 d2) d1) (*.f64 d1 30))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) d2) (*.f64 d1 30))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) 30) (*.f64 d1 d2))
(fma.f64 (sqrt.f64 d2) (*.f64 (sqrt.f64 d2) d1) (*.f64 d1 30))
(fma.f64 (*.f64 d1 d2) 1 (*.f64 (*.f64 d1 30) 1))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 30)) 2) (cbrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 d2)) 2) (cbrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(fma.f64 (sqrt.f64 (*.f64 d1 30)) (sqrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(fma.f64 (sqrt.f64 (*.f64 d1 d2)) (sqrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(fma.f64 (*.f64 30 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 d2))
(fma.f64 (*.f64 30 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 d2))
(fma.f64 (*.f64 d1 (pow.f64 (cbrt.f64 d2) 2)) (cbrt.f64 d2) (*.f64 d1 30))
(fma.f64 (*.f64 d1 (sqrt.f64 d2)) (sqrt.f64 d2) (*.f64 d1 30))
(fma.f64 (*.f64 d2 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 30))
(fma.f64 (*.f64 d2 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 30))

simplify66.0ms (2.5%)

Algorithm
egg-herbie
Rules
1282×associate-/r*
1128×fma-def
558×fma-neg
446×cancel-sign-sub-inv
418×associate-*r/
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01571811
13841760
210441739
341891735
Stop Event
node limit
Counts
77 → 73
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 30 d1)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(+.f64 0 (*.f64 d1 (+.f64 d2 30)))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 30) 1))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 30))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (*.f64 (pow.f64 d1 3) 27000)) (+.f64 (pow.f64 (*.f64 d1 d2) 2) (-.f64 (pow.f64 (*.f64 d1 30) 2) (*.f64 (*.f64 d1 d2) (*.f64 d1 30)))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 d2) 2) (pow.f64 (*.f64 d1 30) 2)) (-.f64 (*.f64 d1 d2) (*.f64 d1 30)))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d2 3) 27000)) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 -900)) (+.f64 d2 -30))
(/.f64 (*.f64 (+.f64 (pow.f64 d2 3) 27000) d1) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 (fma.f64 d2 d2 -900) d1) (+.f64 d2 -30))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 d2 30))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 30))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30)))) 2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 30))))
(fma.f64 d1 d2 (*.f64 d1 30))
(fma.f64 d1 30 (*.f64 d1 d2))
(fma.f64 d2 d1 (*.f64 d1 30))
(fma.f64 30 d1 (*.f64 d1 d2))
(fma.f64 1 (*.f64 d1 d2) (*.f64 d1 30))
(fma.f64 1 (*.f64 d1 30) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) d2) (*.f64 d1 30))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) 30) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 d2) 2) (*.f64 (cbrt.f64 d2) d1) (*.f64 d1 30))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) d2) (*.f64 d1 30))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) 30) (*.f64 d1 d2))
(fma.f64 (sqrt.f64 d2) (*.f64 (sqrt.f64 d2) d1) (*.f64 d1 30))
(fma.f64 (*.f64 d1 d2) 1 (*.f64 (*.f64 d1 30) 1))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 30)) 2) (cbrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 d2)) 2) (cbrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(fma.f64 (sqrt.f64 (*.f64 d1 30)) (sqrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(fma.f64 (sqrt.f64 (*.f64 d1 d2)) (sqrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(fma.f64 (*.f64 30 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 d2))
(fma.f64 (*.f64 30 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 d2))
(fma.f64 (*.f64 d1 (pow.f64 (cbrt.f64 d2) 2)) (cbrt.f64 d2) (*.f64 d1 30))
(fma.f64 (*.f64 d1 (sqrt.f64 d2)) (sqrt.f64 d2) (*.f64 d1 30))
(fma.f64 (*.f64 d2 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 30))
(fma.f64 (*.f64 d2 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 30))
Outputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 30 d1)
(*.f64 d1 30)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 0 (*.f64 d1 (+.f64 d2 30)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 (*.f64 d1 d2) 1) (*.f64 (*.f64 d1 30) 1))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 30 d2)) d1)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 30 d2)) d1))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 30 d2)) d1))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 30 d2)) d1))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))))
(*.f64 d1 (+.f64 30 d2))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 d2 30))) 1)
(*.f64 d1 (+.f64 30 d2))
(/.f64 (+.f64 (pow.f64 (*.f64 d1 d2) 3) (*.f64 (pow.f64 d1 3) 27000)) (+.f64 (pow.f64 (*.f64 d1 d2) 2) (-.f64 (pow.f64 (*.f64 d1 30) 2) (*.f64 (*.f64 d1 d2) (*.f64 d1 30)))))
(/.f64 (*.f64 (pow.f64 d1 3) (+.f64 27000 (pow.f64 d2 3))) (+.f64 (pow.f64 (*.f64 d1 d2) 2) (*.f64 (*.f64 d1 30) (-.f64 (*.f64 d1 30) (*.f64 d1 d2)))))
(/.f64 (pow.f64 d1 3) (/.f64 (fma.f64 (*.f64 d1 30) (*.f64 d1 (-.f64 30 d2)) (pow.f64 (*.f64 d1 d2) 2)) (+.f64 27000 (pow.f64 d2 3))))
(/.f64 (*.f64 (pow.f64 d1 3) (+.f64 27000 (pow.f64 d2 3))) (*.f64 d1 (+.f64 (/.f64 d1 1/900) (*.f64 d2 (*.f64 d1 (+.f64 d2 -30))))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 d2) 2) (pow.f64 (*.f64 d1 30) 2)) (-.f64 (*.f64 d1 d2) (*.f64 d1 30)))
(*.f64 d1 (+.f64 30 d2))
(/.f64 (*.f64 d1 (+.f64 (pow.f64 d2 3) 27000)) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 d1 (+.f64 27000 (pow.f64 d2 3))) (-.f64 (fma.f64 d2 d2 900) (*.f64 30 d2)))
(/.f64 (*.f64 d1 (+.f64 27000 (pow.f64 d2 3))) (+.f64 (fma.f64 d2 d2 900) (*.f64 d2 -30)))
(*.f64 d1 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (fma.f64 d2 -30 (fma.f64 d2 d2 900))))
(*.f64 d1 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (+.f64 900 (*.f64 d2 (+.f64 d2 -30)))))
(/.f64 (*.f64 d1 (fma.f64 d2 d2 -900)) (+.f64 d2 -30))
(/.f64 d1 (/.f64 (+.f64 d2 -30) (fma.f64 d2 d2 -900)))
(*.f64 (/.f64 d1 (+.f64 d2 -30)) (fma.f64 d2 d2 -900))
(*.f64 d1 (/.f64 (fma.f64 d2 d2 -900) (+.f64 d2 -30)))
(/.f64 (*.f64 (+.f64 (pow.f64 d2 3) 27000) d1) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 (*.f64 d1 (+.f64 27000 (pow.f64 d2 3))) (-.f64 (fma.f64 d2 d2 900) (*.f64 30 d2)))
(/.f64 (*.f64 d1 (+.f64 27000 (pow.f64 d2 3))) (+.f64 (fma.f64 d2 d2 900) (*.f64 d2 -30)))
(*.f64 d1 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (fma.f64 d2 -30 (fma.f64 d2 d2 900))))
(*.f64 d1 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (+.f64 900 (*.f64 d2 (+.f64 d2 -30)))))
(/.f64 (*.f64 (fma.f64 d2 d2 -900) d1) (+.f64 d2 -30))
(/.f64 d1 (/.f64 (+.f64 d2 -30) (fma.f64 d2 d2 -900)))
(*.f64 (/.f64 d1 (+.f64 d2 -30)) (fma.f64 d2 d2 -900))
(*.f64 d1 (/.f64 (fma.f64 d2 d2 -900) (+.f64 d2 -30)))
(pow.f64 (*.f64 d1 (+.f64 d2 30)) 1)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30))) 3)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2) 1/2)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3) 1/3)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30))) 2)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 d2 30))))
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 d2 30)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 2))
(*.f64 d1 (+.f64 30 d2))
(log.f64 (pow.f64 (exp.f64 (+.f64 d2 30)) d1))
(*.f64 d1 (+.f64 30 d2))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 d2 30)) 3))
(*.f64 d1 (+.f64 30 d2))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 d2 30))))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 d2 30))))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 d2 30)))) 3))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 d2 30)))) 1/3))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 d2 30)))) 2))
(*.f64 d1 (+.f64 30 d2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 d2 30))))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 d1 d2 (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 d1 30 (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 d2 d1 (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 30 d1 (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 1 (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 1 (*.f64 d1 30) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (pow.f64 (cbrt.f64 d1) 2) (*.f64 (cbrt.f64 d1) 30) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (pow.f64 (cbrt.f64 d2) 2) (*.f64 (cbrt.f64 d2) d1) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (sqrt.f64 d1) (*.f64 (sqrt.f64 d1) 30) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (sqrt.f64 d2) (*.f64 (sqrt.f64 d2) d1) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 d1 d2) 1 (*.f64 (*.f64 d1 30) 1))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 30)) 2) (cbrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 d1 d2)) 2) (cbrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (sqrt.f64 (*.f64 d1 30)) (sqrt.f64 (*.f64 d1 30)) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (sqrt.f64 (*.f64 d1 d2)) (sqrt.f64 (*.f64 d1 d2)) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 30 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 30 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 d1 (pow.f64 (cbrt.f64 d2) 2)) (cbrt.f64 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 d1 (sqrt.f64 d2)) (sqrt.f64 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 d2 (pow.f64 (cbrt.f64 d1) 2)) (cbrt.f64 d1) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(fma.f64 (*.f64 d2 (sqrt.f64 d1)) (sqrt.f64 d1) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))

eval22.0ms (0.8%)

Compiler

Compiled 833 to 527 computations (36.7% saved)

prune12.0ms (0.5%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New70373
Fresh000
Picked011
Done000
Total70474
Accuracy
100.0%
Counts
74 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 d1 30 (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 30))
49.4%
(*.f64 d1 d2)
53.2%
(*.f64 d1 30)
100.0%
(fma.f64 d1 30 (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 30))
49.4%
(*.f64 d1 d2)
53.2%
(*.f64 d1 30)
Compiler

Compiled 50 to 34 computations (32% saved)

localize62.0ms (2.4%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(fma.f64 d1 30 (*.f64 d1 d2))
Compiler

Compiled 25 to 10 computations (60% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d1
@-inf
(fma.f64 d1 30 (*.f64 d1 d2))
1.0ms
d1
@0
(fma.f64 d1 30 (*.f64 d1 d2))
1.0ms
d1
@inf
(fma.f64 d1 30 (*.f64 d1 d2))
0.0ms
d2
@0
(fma.f64 d1 30 (*.f64 d1 d2))
0.0ms
d2
@inf
(fma.f64 d1 30 (*.f64 d1 d2))

rewrite66.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
528×unpow-prod-down
412×log-prod
404×cbrt-prod
357×log1p-expm1-u
357×expm1-log1p-u
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01124
18819
296919
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(fma.f64 d1 30 (*.f64 d1 d2))
Outputs
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(+.f64 0 (*.f64 d1 (+.f64 30 d2)))
(+.f64 (*.f64 (*.f64 d1 30) 1) (*.f64 d1 d2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 30 d2))) 1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(*.f64 (*.f64 d1 (+.f64 30 d2)) (log.f64 (E.f64)))
(*.f64 1 (*.f64 d1 (+.f64 30 d2)))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2) (cbrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) (sqrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(*.f64 (pow.f64 1 1/3) (*.f64 d1 (+.f64 30 d2)))
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3))
(*.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2) 1/3) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))) (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2)) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 30) 2) (pow.f64 (*.f64 d1 d2) 2)) (-.f64 (*.f64 d1 30) (*.f64 d1 d2)))
(/.f64 (+.f64 (*.f64 (pow.f64 d1 3) 27000) (pow.f64 (*.f64 d1 d2) 3)) (+.f64 (pow.f64 (*.f64 d1 30) 2) (-.f64 (pow.f64 (*.f64 d1 d2) 2) (*.f64 (*.f64 d1 30) (*.f64 d1 d2)))))
(pow.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 30 d2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2))
(log.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 30 d2))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 30 d2))))

simplify70.0ms (2.6%)

Algorithm
egg-herbie
Rules
1658×times-frac
960×fma-def
544×log-prod
538×distribute-lft-in
494×distribute-rgt-in
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01251681
13101598
210061573
345351571
Stop Event
node limit
Counts
65 → 56
Calls
Call 1
Inputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 30 d1)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(+.f64 0 (*.f64 d1 (+.f64 30 d2)))
(+.f64 (*.f64 (*.f64 d1 30) 1) (*.f64 d1 d2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 30 d2))) 1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(*.f64 (*.f64 d1 (+.f64 30 d2)) (log.f64 (E.f64)))
(*.f64 1 (*.f64 d1 (+.f64 30 d2)))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2) (cbrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) (sqrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(*.f64 (pow.f64 1 1/3) (*.f64 d1 (+.f64 30 d2)))
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3))
(*.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2) 1/3) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))) (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2)) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 30) 2) (pow.f64 (*.f64 d1 d2) 2)) (-.f64 (*.f64 d1 30) (*.f64 d1 d2)))
(/.f64 (+.f64 (*.f64 (pow.f64 d1 3) 27000) (pow.f64 (*.f64 d1 d2) 3)) (+.f64 (pow.f64 (*.f64 d1 30) 2) (-.f64 (pow.f64 (*.f64 d1 d2) 2) (*.f64 (*.f64 d1 30) (*.f64 d1 d2)))))
(pow.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 3)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 30 d2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2))
(log.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 30 d2))))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 30 d2))))
Outputs
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 -1 (*.f64 d1 (-.f64 (*.f64 -1 d2) 30)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 30 d1)
(*.f64 d1 30)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 d2)
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 30 d1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 d1 30) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 0 (*.f64 d1 (+.f64 30 d2)))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (*.f64 (*.f64 d1 30) 1) (*.f64 d1 d2))
(*.f64 d1 (+.f64 30 d2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(*.f64 d1 (+.f64 30 d2))
(-.f64 (+.f64 1 (*.f64 d1 (+.f64 30 d2))) 1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(*.f64 d1 (+.f64 30 d2))
(*.f64 (*.f64 d1 (+.f64 30 d2)) (log.f64 (E.f64)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 1 (*.f64 d1 (+.f64 30 d2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 2) (cbrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) (sqrt.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (pow.f64 1 1/3) (*.f64 d1 (+.f64 30 d2)))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3)) 1/3))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (*.f64 (+.f64 30 d2) (cbrt.f64 (*.f64 d1 (+.f64 30 d2))))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 4) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 8)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2) 1/3) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2)) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))) (cbrt.f64 (sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))))
(*.f64 d1 (+.f64 30 d2))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 (*.f64 d1 (+.f64 30 d2)) (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (*.f64 (+.f64 30 d2) (cbrt.f64 (*.f64 d1 (+.f64 30 d2))))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 4) 2)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 8)) (cbrt.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 5/2)) (cbrt.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))))
(/.f64 (-.f64 (pow.f64 (*.f64 d1 30) 2) (pow.f64 (*.f64 d1 d2) 2)) (-.f64 (*.f64 d1 30) (*.f64 d1 d2)))
(*.f64 d1 (+.f64 30 d2))
(/.f64 (+.f64 (*.f64 (pow.f64 d1 3) 27000) (pow.f64 (*.f64 d1 d2) 3)) (+.f64 (pow.f64 (*.f64 d1 30) 2) (-.f64 (pow.f64 (*.f64 d1 d2) 2) (*.f64 (*.f64 d1 30) (*.f64 d1 d2)))))
(/.f64 (fma.f64 (pow.f64 d1 3) 27000 (pow.f64 (*.f64 d1 d2) 3)) (+.f64 (pow.f64 (*.f64 d1 30) 2) (-.f64 (pow.f64 (*.f64 d1 d2) 2) (*.f64 d1 (*.f64 30 (*.f64 d1 d2))))))
(/.f64 (*.f64 (pow.f64 d1 3) (+.f64 27000 (pow.f64 d2 3))) (+.f64 (pow.f64 (*.f64 d1 30) 2) (*.f64 (*.f64 d1 d2) (-.f64 (*.f64 d1 d2) (*.f64 d1 30)))))
(/.f64 (*.f64 (pow.f64 d1 3) (+.f64 27000 (pow.f64 d2 3))) (fma.f64 (*.f64 d1 d2) (*.f64 d1 (+.f64 d2 -30)) (pow.f64 (*.f64 d1 30) 2)))
(/.f64 (*.f64 (pow.f64 d1 3) (+.f64 27000 (pow.f64 d2 3))) (*.f64 d1 (+.f64 (*.f64 d1 900) (*.f64 d2 (*.f64 d1 (+.f64 d2 -30))))))
(pow.f64 (*.f64 d1 (+.f64 30 d2)) 1)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2))) 3)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2) 1/2)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3) 1/3)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2))) 2)
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (E.f64) (log.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 2)) (cbrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))) (sqrt.f64 (log.f64 (*.f64 d1 (+.f64 30 d2)))))
(sqrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 2))
(*.f64 d1 (+.f64 30 d2))
(log.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))
(*.f64 d1 (+.f64 30 d2))
(cbrt.f64 (pow.f64 (*.f64 d1 (+.f64 30 d2)) 3))
(*.f64 d1 (+.f64 30 d2))
(expm1.f64 (log1p.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (log.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 d1 (+.f64 30 d2)))) 3))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 d1 (+.f64 30 d2)))) 1/3))
(*.f64 d1 (+.f64 30 d2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 d1 (+.f64 30 d2)))) 2))
(*.f64 d1 (+.f64 30 d2))
(log1p.f64 (expm1.f64 (*.f64 d1 (+.f64 30 d2))))
(*.f64 d1 (+.f64 30 d2))

eval17.0ms (0.6%)

Compiler

Compiled 730 to 516 computations (29.3% saved)

prune10.0ms (0.4%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New56056
Fresh000
Picked033
Done011
Total56460
Accuracy
100.0%
Counts
60 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 d1 30 (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 30))
49.4%
(*.f64 d1 d2)
53.2%
(*.f64 d1 30)
Compiler

Compiled 55 to 33 computations (40% saved)

regimes16.0ms (0.6%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 d1 30)
(*.f64 d1 d2)
(*.f64 d1 (+.f64 d2 30))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
(fma.f64 d1 30 (*.f64 d1 d2))
Outputs
(fma.f64 d1 30 (*.f64 d1 d2))
Calls

3 calls:

6.0ms
d1
4.0ms
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
4.0ms
d2
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1d2
100.0%1(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Compiler

Compiled 49 to 29 computations (40.8% saved)

regimes13.0ms (0.5%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 d1 30)
(*.f64 d1 d2)
(*.f64 d1 (+.f64 d2 30))
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Outputs
(*.f64 d1 (+.f64 d2 30))
Calls

3 calls:

4.0ms
(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
4.0ms
d1
4.0ms
d2
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1d2
100.0%1(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
Compiler

Compiled 43 to 27 computations (37.2% saved)

regimes114.0ms (4.3%)

Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 d1 30)
(*.f64 d1 d2)
Outputs
(*.f64 d1 d2)
(*.f64 d1 30)
(*.f64 d1 d2)
Calls

2 calls:

100.0ms
d1
11.0ms
d2
Results
AccuracySegmentsBranch
67.0%9d1
98.4%3d2
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes6.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 d1 30)
Outputs
(*.f64 d1 30)
Calls

2 calls:

3.0ms
d2
3.0ms
d1
Results
AccuracySegmentsBranch
53.2%1d1
53.2%1d2
Compiler

Compiled 11 to 8 computations (27.3% saved)

bsearch41.0ms (1.5%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
20.0ms
1.3497389076126927
328.66033141930836
21.0ms
-6271.517448580492
-2.8792439509957287e-21
Results
37.0ms288×body256valid
Compiler

Compiled 234 to 175 computations (25.2% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative
+-commutative
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022107
131107
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 d1 30 (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 30))
(if (<=.f64 d2 -30) (*.f64 d1 d2) (if (<=.f64 d2 30) (*.f64 d1 30) (*.f64 d1 d2)))
(*.f64 d1 30)
Outputs
(fma.f64 d1 30 (*.f64 d1 d2))
(*.f64 d1 (+.f64 d2 30))
(*.f64 d1 (+.f64 30 d2))
(if (<=.f64 d2 -30) (*.f64 d1 d2) (if (<=.f64 d2 30) (*.f64 d1 30) (*.f64 d1 d2)))
(if (or (<=.f64 d2 -30) (not (<=.f64 d2 30))) (*.f64 d1 d2) (*.f64 d1 30))
(*.f64 d1 30)
Compiler

Compiled 37 to 26 computations (29.7% saved)

soundness438.0ms (16.5%)

Rules
2540×fma-def
1282×associate-/r*
1128×fma-def
736×fma-neg
680×unpow-prod-down
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
032258
193183
2291141
3870133
42078133
53173133
63872133
73902133
83902133
94084133
104084133
01019
110619
2141819
01571811
13841760
210441739
341891735
Stop Event
node limit
node limit
saturated
Compiler

Compiled 81 to 53 computations (34.6% saved)

end0.0ms (0%)

preprocess49.0ms (1.9%)

Remove

(negabs d1)

Compiler

Compiled 166 to 106 computations (36.1% saved)

Profiling

Loading profile data...