FastMath test2

Time bar (total: 3.1s)

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)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
Operation ival-add, time spent: 0.0ms, 0.0% of total-time
Operation ival-mult, time spent: 0.0ms, 0.0% of total-time
Operation const, time spent: 0.0ms, 0.0% of total-time

sample1.2s (40.7%)

Results
945.0ms7213×0valid
131.0ms1042×0infinite
75.0ms133×5exit
0.0ms0valid
Precisions
Click to see histograms. Total time spent on operations: 562.0ms
Operation ival-add, time spent: 317.0ms, 56.0% of total-time
Operation ival-mult, time spent: 216.0ms, 38.0% of total-time
Operation const, time spent: 29.0ms, 5.0% of total-time
Bogosity

preprocess542.0ms (17.7%)

Algorithm
egg-herbie
Rules
2540×fma-def
736×fma-neg
324×unsub-neg
244×cancel-sign-sub-inv
228×distribute-rgt-in
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(+.f64 (*.f64 d1 10) (*.f64 d1 d2))
00-0-(*.f64 d1 10)
00-0-(*.f64 d1 20)
00-0-10
00-0-d1
00-0-d2
00-0-(*.f64 d1 d2)
00-0-20
00-0-(+.f64 (+.f64 (*.f64 d1 10) (*.f64 d1 d2)) (*.f64 d1 20))
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 81 to 47 computations (42% saved)

Precisions
Click to see histograms. Total time spent on operations: 299.0ms
Operation ival-mult, time spent: 262.0ms, 88.0% of total-time
Operation ival-add, time spent: 32.0ms, 11.0% of total-time
Operation const, time spent: 4.0ms, 1.0% of total-time

eval1.0ms (0%)

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

Compiled 7 to 5 computations (28.6% saved)

localize32.0ms (1%)

Localize:

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 12.0ms
Operation ival-add, time spent: 9.0ms, 77.0% of total-time
Operation ival-mult, time spent: 2.0ms, 17.0% of total-time
Operation const, time spent: 1.0ms, 9.0% of total-time

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d1
@0
(*.f64 d1 (+.f64 d2 30))
1.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))

rewrite365.0ms (11.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))

simplify137.0ms (4.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))

eval18.0ms (0.6%)

Compiler

Compiled 833 to 527 computations (36.7% saved)

prune10.0ms (0.3%)

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))
53.8%
(*.f64 d1 d2)
48.6%
(*.f64 d1 30)
Compiler

Compiled 25 to 17 computations (32% saved)

localize42.0ms (1.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)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
Operation ival-mult, time spent: 6.0ms, 60.0% of total-time
Operation ival-fma, time spent: 3.0ms, 30.0% of total-time
Operation const, time spent: 1.0ms, 10.0% of total-time

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
d1
@-inf
(fma.f64 d1 30 (*.f64 d1 d2))
1.0ms
d1
@inf
(fma.f64 d1 30 (*.f64 d1 d2))
1.0ms
d1
@0
(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))

rewrite68.0ms (2.2%)

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

simplify69.0ms (2.3%)

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

eval16.0ms (0.5%)

Compiler

Compiled 730 to 516 computations (29.3% saved)

prune10.0ms (0.3%)

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))
53.8%
(*.f64 d1 d2)
48.6%
(*.f64 d1 30)
Compiler

Compiled 55 to 33 computations (40% saved)

regimes13.0ms (0.4%)

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
(*.f64 d1 (+.f64 d2 30))
Calls

3 calls:

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

Compiled 19 to 13 computations (31.6% saved)

regimes44.0ms (1.4%)

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:

33.0ms
d1
10.0ms
d2
Results
AccuracySegmentsBranch
71.1%8d1
97.9%3d2
Compiler

Compiled 6 to 4 computations (33.3% saved)

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

5.0ms
d2
3.0ms
d1
Results
AccuracySegmentsBranch
48.6%1d1
48.6%1d2
Compiler

Compiled 6 to 4 computations (33.3% saved)

bsearch52.0ms (1.7%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
27.0ms
1.9966203907702623e-6
12215461.573382886
25.0ms
-31494884.64278354
-1.7241975893038706
Results
43.0ms302×0valid
0.0ms0valid
0.0ms0infinite
Compiler

Compiled 246 to 184 computations (25.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
Operation ival-mult, time spent: 10.0ms, 49.0% of total-time
Operation ival-add, time spent: 10.0ms, 49.0% of total-time
Operation const, time spent: 1.0ms, 5.0% of total-time

simplify4.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02083
12983
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.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
(*.f64 d1 (+.f64 d2 30))
(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 29 to 21 computations (27.6% saved)

soundness334.0ms (10.9%)

Rules
2540×fma-def
1282×associate-/r*
1128×fma-def
736×fma-neg
558×fma-neg
Iterations

Useful iterations: 3 (0.0ms)

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

Compiled 56 to 39 computations (30.4% saved)

end0.0ms (0%)

preprocess50.0ms (1.6%)

Remove

(negabs d1)

Compiler

Compiled 132 to 92 computations (30.3% saved)

Profiling

Loading profile data...