FastMath test2

Time bar (total: 1.9s)

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)

sample753.0ms (40.4%)

Results
628.0ms7117×body256valid
90.0ms1047×body256infinite
14.0ms56×body1024valid
5.0ms36×body512valid
Bogosity

preprocess184.0ms (9.9%)

Algorithm
egg-herbie
Rules
2540×fma-def
782×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
42075133
53194133
63898133
73928133
83928133
94110133
104110133
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)

eval1.0ms (0%)

Compiler

Compiled 23 to 16 computations (30.4% saved)

prune1.0ms (0.1%)

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)

localize24.0ms (1.3%)

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

rewrite99.0ms (5.3%)

Algorithm
batch-egg-rewrite
Rules
682×unpow-prod-down
517×log1p-expm1-u
517×expm1-log1p-u
498×log-prod
450×prod-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
110619
2141519
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))

simplify54.0ms (2.9%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
01571811
13811760
210431739
341931735
Stop Event
node limit
Counts
77 → 74
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 (pow.f64 d1 3) (/.f64 (*.f64 d1 (+.f64 (/.f64 d1 1/900) (*.f64 d2 (*.f64 d1 (+.f64 d2 -30))))) (+.f64 27000 (pow.f64 d2 3))))
(/.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 d1 (/.f64 (-.f64 (fma.f64 d2 d2 900) (*.f64 30 d2)) (+.f64 27000 (pow.f64 d2 3))))
(*.f64 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (+.f64 (fma.f64 d2 d2 900) (*.f64 d2 -30))) d1)
(/.f64 d1 (/.f64 (fma.f64 d2 -30 (fma.f64 d2 d2 900)) (+.f64 27000 (pow.f64 d2 3))))
(*.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 (fma.f64 d2 d2 -900) (/.f64 d1 (+.f64 d2 -30)))
(/.f64 (*.f64 (+.f64 (pow.f64 d2 3) 27000) d1) (-.f64 (fma.f64 d2 d2 900) (*.f64 d2 30)))
(/.f64 d1 (/.f64 (-.f64 (fma.f64 d2 d2 900) (*.f64 30 d2)) (+.f64 27000 (pow.f64 d2 3))))
(*.f64 (/.f64 (+.f64 27000 (pow.f64 d2 3)) (+.f64 (fma.f64 d2 d2 900) (*.f64 d2 -30))) d1)
(/.f64 d1 (/.f64 (fma.f64 d2 -30 (fma.f64 d2 d2 900)) (+.f64 27000 (pow.f64 d2 3))))
(*.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)))
(*.f64 (fma.f64 d2 d2 -900) (/.f64 d1 (+.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))

eval17.0ms (0.9%)

Compiler

Compiled 843 to 533 computations (36.8% saved)

prune11.0ms (0.6%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New71374
Fresh000
Picked011
Done000
Total71475
Accuracy
100.0%
Counts
75 → 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.7%
(*.f64 d1 d2)
53.1%
(*.f64 d1 30)
100.0%
(fma.f64 d1 30 (*.f64 d1 d2))
100.0%
(*.f64 d1 (+.f64 d2 30))
49.7%
(*.f64 d1 d2)
53.1%
(*.f64 d1 30)
Compiler

Compiled 50 to 34 computations (32% saved)

localize31.0ms (1.7%)

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.2%)

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

rewrite51.0ms (2.7%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01124
18819
296619
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 (cbrt.f64 (pow.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))))

simplify54.0ms (2.9%)

Algorithm
egg-herbie
Rules
1658×times-frac
956×fma-def
542×distribute-lft-in
540×log-prod
498×distribute-rgt-in
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01261681
13071634
210051609
345551607
Stop Event
node limit
Counts
65 → 55
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 (cbrt.f64 (pow.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 (cbrt.f64 (pow.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 (cbrt.f64 (pow.f64 (exp.f64 d1) (*.f64 2 (+.f64 30 d2))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 30 d2)))))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 d1) (+.f64 60 (*.f64 2 d2))))) (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 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 (+.f64 (pow.f64 (*.f64 d1 30) 2) (pow.f64 (*.f64 d1 d2) 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 30) 2) (*.f64 (*.f64 d1 d2) (+.f64 (*.f64 d1 d2) (*.f64 d1 -30)))))
(/.f64 (pow.f64 d1 3) (/.f64 (fma.f64 (*.f64 d1 d2) (*.f64 d1 (+.f64 d2 -30)) (pow.f64 (*.f64 d1 30) 2)) (+.f64 27000 (pow.f64 d2 3))))
(/.f64 (pow.f64 d1 3) (/.f64 (*.f64 d1 (+.f64 (*.f64 d1 900) (*.f64 d2 (*.f64 d1 (+.f64 d2 -30))))) (+.f64 27000 (pow.f64 d2 3))))
(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))

eval15.0ms (0.8%)

Compiler

Compiled 729 to 515 computations (29.4% saved)

prune8.0ms (0.4%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New55055
Fresh000
Picked033
Done011
Total55459
Accuracy
100.0%
Counts
59 → 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.7%
(*.f64 d1 d2)
53.1%
(*.f64 d1 30)
Compiler

Compiled 55 to 33 computations (40% saved)

regimes14.0ms (0.8%)

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:

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

regimes12.0ms (0.7%)

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)

regimes35.0ms (1.9%)

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:

19.0ms
d1
15.0ms
d2
Results
AccuracySegmentsBranch
62.0%6d1
98.4%3d2
Compiler

Compiled 14 to 9 computations (35.7% saved)

regimes6.0ms (0.3%)

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
d1
3.0ms
d2
Results
AccuracySegmentsBranch
53.1%1d1
53.1%1d2
Compiler

Compiled 11 to 8 computations (27.3% saved)

bsearch34.0ms (1.8%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
16.0ms
0.015081679829513594
59093078804.82544
17.0ms
-10132736.778385324
-0.0004481957086002048
Results
30.0ms320×body256valid
Compiler

Compiled 258 to 193 computations (25.2% saved)

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

soundness395.0ms (21.2%)

Rules
2540×fma-def
1284×associate-/r*
1128×fma-def
782×fma-neg
682×unpow-prod-down
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
032258
193183
2291141
3870133
42075133
53194133
63898133
73928133
83928133
94110133
104110133
01019
110619
2141519
01571811
13811760
210431739
341931735
Stop Event
node limit
node limit
saturated
Compiler

Compiled 81 to 53 computations (34.6% saved)

end0.0ms (0%)

preprocess54.0ms (2.9%)

Remove

(negabs d1)

Compiler

Compiled 166 to 106 computations (36.1% saved)

Profiling

Loading profile data...