FastMath repmul

Details

Time bar (total: 1.9s)

analyze0.0ms (0%)

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

Compiled 9 to 5 computations (44.4% saved)

sample711.0ms (37.6%)

Results
470.0ms5106×body256valid
230.0ms3150×body256infinite
Bogosity

preprocess203.0ms (10.8%)

Algorithm
egg-herbie
Rules
2472×sqr-pow
1372×associate-*r*
1202×cube-prod
924×associate-*l*
680×*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0619
1913
2117
3207
4357
5627
61307
74287
824247
925227
1026757
1128907
1231817
1335467
1441337
1546867
1653727
1757797
1860537
1962697
2064377
2165457
2272887
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Outputs
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
(*.f64 d1 (pow.f64 d1 3))
(pow.f64 d1 4)
Compiler

Compiled 9 to 5 computations (44.4% saved)

simplify196.0ms (10.4%)

Algorithm
egg-herbie
Rules
2472×sqr-pow
1372×associate-*r*
1202×cube-prod
924×associate-*l*
680×*-commutative
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0619
1913
2117
3207
4357
5627
61307
74287
824247
925227
1026757
1128907
1231817
1335467
1441337
1546867
1653727
1757797
1860537
1962697
2064377
2165457
2272887
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Outputs
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
(*.f64 d1 (pow.f64 d1 3))
(pow.f64 d1 4)

eval3.0ms (0.1%)

Compiler

Compiled 23 to 10 computations (56.5% saved)

prune1.0ms (0.1%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New134
Fresh011
Picked000
Done000
Total145
Accurracy
100.0%
Counts
5 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(pow.f64 d1 4)
99.9%
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
99.8%
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Compiler

Compiled 20 to 10 computations (50% saved)

localize16.0ms (0.9%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
99.8%
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Compiler

Compiled 13 to 4 computations (69.2% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite47.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
850×pow1
808×add-sqr-sqrt
796×*-un-lft-identity
782×add-exp-log
782×log1p-expm1-u
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0513
11017
212107
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Outputs
(+.f64 0 (pow.f64 d1 4))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4))) (cbrt.f64 (exp.f64 (pow.f64 d1 4))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))))
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 (cbrt.f64 (*.f64 d1 d1)) 6)
(pow.f64 (pow.f64 (*.f64 d1 d1) 6) 1/3)
(pow.f64 (pow.f64 d1 6) 2/3)
(pow.f64 (pow.f64 d1 3) 4/3)
(sqrt.f64 (pow.f64 d1 8))
(log.f64 (exp.f64 (pow.f64 d1 4)))
(cbrt.f64 (pow.f64 (*.f64 d1 d1) 6))
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(exp.f64 (*.f64 4 (log.f64 d1)))
(exp.f64 (*.f64 (log.f64 d1) 4))
(exp.f64 (*.f64 (log.f64 (*.f64 d1 (cbrt.f64 d1))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 d1 d1) 6)) 1/3))
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))

simplify54.0ms (2.8%)

Algorithm
egg-herbie
Rules
1370×log-prod
1124×fma-def
860×exp-prod
746×distribute-lft-in
706×distribute-rgt-in
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
060305
1128291
2312267
31442267
45962267
Stop Event
node limit
Counts
33 → 26
Calls
Call 1
Inputs
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(+.f64 0 (pow.f64 d1 4))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4))) (cbrt.f64 (exp.f64 (pow.f64 d1 4))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))))
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 (cbrt.f64 (*.f64 d1 d1)) 6)
(pow.f64 (pow.f64 (*.f64 d1 d1) 6) 1/3)
(pow.f64 (pow.f64 d1 6) 2/3)
(pow.f64 (pow.f64 d1 3) 4/3)
(sqrt.f64 (pow.f64 d1 8))
(log.f64 (exp.f64 (pow.f64 d1 4)))
(cbrt.f64 (pow.f64 (*.f64 d1 d1) 6))
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(exp.f64 (*.f64 4 (log.f64 d1)))
(exp.f64 (*.f64 (log.f64 d1) 4))
(exp.f64 (*.f64 (log.f64 (*.f64 d1 (cbrt.f64 d1))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 d1 d1) 6)) 1/3))
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))
Outputs
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(+.f64 0 (pow.f64 d1 4))
(pow.f64 d1 4)
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4))) (cbrt.f64 (exp.f64 (pow.f64 d1 4))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 d1 4)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))))
(*.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 d1 4)))) 2)
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 d1 4)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 d1 4)
(pow.f64 (cbrt.f64 (*.f64 d1 d1)) 6)
(pow.f64 d1 4)
(pow.f64 (pow.f64 (*.f64 d1 d1) 6) 1/3)
(pow.f64 d1 4)
(pow.f64 (pow.f64 d1 6) 2/3)
(pow.f64 d1 4)
(pow.f64 (pow.f64 d1 3) 4/3)
(pow.f64 d1 4)
(sqrt.f64 (pow.f64 d1 8))
(pow.f64 d1 4)
(log.f64 (exp.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)
(cbrt.f64 (pow.f64 (*.f64 d1 d1) 6))
(pow.f64 d1 4)
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)
(exp.f64 (*.f64 4 (log.f64 d1)))
(pow.f64 d1 4)
(exp.f64 (*.f64 (log.f64 d1) 4))
(pow.f64 d1 4)
(exp.f64 (*.f64 (log.f64 (*.f64 d1 (cbrt.f64 d1))) 3))
(pow.f64 d1 4)
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 d1 d1) 6)) 1/3))
(pow.f64 d1 4)
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)

localize19.0ms (1%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
99.9%
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
99.8%
(*.f64 (*.f64 d1 d1) d1)
Compiler

Compiled 18 to 5 computations (72.2% saved)

series1.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite56.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
964×pow1
922×add-sqr-sqrt
904×*-un-lft-identity
892×add-exp-log
892×log1p-expm1-u
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0620
112114
2136814
Stop Event
node limit
Counts
2 → 23
Calls
Call 1
Inputs
(*.f64 (*.f64 d1 d1) d1)
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Outputs
(-.f64 (+.f64 1 (pow.f64 d1 3)) 1)
(pow.f64 d1 3)
(pow.f64 (pow.f64 d1 3) 1)
(pow.f64 (pow.f64 (pow.f64 d1 3) 3) 1/3)
(pow.f64 (pow.f64 d1 3/2) 2)
(sqrt.f64 (pow.f64 d1 6))
(log.f64 (exp.f64 (pow.f64 d1 3)))
(cbrt.f64 (pow.f64 (pow.f64 d1 3) 3))
(expm1.f64 (log1p.f64 (pow.f64 d1 3)))
(exp.f64 (log.f64 (pow.f64 d1 3)))
(log1p.f64 (expm1.f64 (pow.f64 d1 3)))
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 (pow.f64 (pow.f64 d1 4) 3) 1/3)
(sqrt.f64 (pow.f64 (pow.f64 d1 4) 2))
(log.f64 (exp.f64 (pow.f64 d1 4)))
(cbrt.f64 (pow.f64 (pow.f64 d1 4) 3))
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(exp.f64 (log.f64 (pow.f64 d1 4)))
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))

simplify45.0ms (2.4%)

Algorithm
egg-herbie
Rules
1876×log-prod
1302×fma-def
886×distribute-rgt-in
870×associate-*r*
870×unswap-sqr
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052329
1116329
2424329
33143329
Stop Event
node limit
Counts
47 → 23
Calls
Call 1
Inputs
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(-.f64 (+.f64 1 (pow.f64 d1 3)) 1)
(pow.f64 d1 3)
(pow.f64 (pow.f64 d1 3) 1)
(pow.f64 (pow.f64 (pow.f64 d1 3) 3) 1/3)
(pow.f64 (pow.f64 d1 3/2) 2)
(sqrt.f64 (pow.f64 d1 6))
(log.f64 (exp.f64 (pow.f64 d1 3)))
(cbrt.f64 (pow.f64 (pow.f64 d1 3) 3))
(expm1.f64 (log1p.f64 (pow.f64 d1 3)))
(exp.f64 (log.f64 (pow.f64 d1 3)))
(log1p.f64 (expm1.f64 (pow.f64 d1 3)))
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 (pow.f64 (pow.f64 d1 4) 3) 1/3)
(sqrt.f64 (pow.f64 (pow.f64 d1 4) 2))
(log.f64 (exp.f64 (pow.f64 d1 4)))
(cbrt.f64 (pow.f64 (pow.f64 d1 4) 3))
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(exp.f64 (log.f64 (pow.f64 d1 4)))
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))
Outputs
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 d1 4)
(-.f64 (+.f64 1 (pow.f64 d1 3)) 1)
(pow.f64 d1 3)
(pow.f64 d1 3)
(pow.f64 (pow.f64 d1 3) 1)
(pow.f64 d1 3)
(pow.f64 (pow.f64 (pow.f64 d1 3) 3) 1/3)
(pow.f64 d1 3)
(pow.f64 (pow.f64 d1 3/2) 2)
(pow.f64 d1 3)
(sqrt.f64 (pow.f64 d1 6))
(pow.f64 d1 3)
(log.f64 (exp.f64 (pow.f64 d1 3)))
(pow.f64 d1 3)
(cbrt.f64 (pow.f64 (pow.f64 d1 3) 3))
(pow.f64 d1 3)
(expm1.f64 (log1p.f64 (pow.f64 d1 3)))
(pow.f64 d1 3)
(exp.f64 (log.f64 (pow.f64 d1 3)))
(pow.f64 d1 3)
(log1p.f64 (expm1.f64 (pow.f64 d1 3)))
(pow.f64 d1 3)
(-.f64 (+.f64 1 (pow.f64 d1 4)) 1)
(pow.f64 d1 4)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 d1) 2)
(pow.f64 d1 4)
(pow.f64 (pow.f64 d1 4) 1)
(pow.f64 d1 4)
(pow.f64 (*.f64 d1 (cbrt.f64 d1)) 3)
(pow.f64 d1 4)
(pow.f64 (pow.f64 (pow.f64 d1 4) 3) 1/3)
(pow.f64 d1 4)
(sqrt.f64 (pow.f64 (pow.f64 d1 4) 2))
(pow.f64 d1 4)
(log.f64 (exp.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)
(cbrt.f64 (pow.f64 (pow.f64 d1 4) 3))
(pow.f64 d1 4)
(expm1.f64 (log1p.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)
(exp.f64 (log.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)
(log1p.f64 (expm1.f64 (pow.f64 d1 4)))
(pow.f64 d1 4)

localize18.0ms (0.9%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

eval9.0ms (0.5%)

Compiler

Compiled 330 to 247 computations (25.2% saved)

prune5.0ms (0.3%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New49049
Fresh000
Picked011
Done022
Total49352
Accurracy
100.0%
Counts
52 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(pow.f64 d1 4)
99.9%
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
99.8%
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Compiler

Compiled 20 to 10 computations (50% saved)

regimes6.0ms (0.3%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
(pow.f64 d1 4)
Outputs
(pow.f64 d1 4)
Calls

2 calls:

3.0ms
d1
2.0ms
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Results
AccuracySegmentsBranch
100.0%1d1
100.0%1(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Compiler

Compiled 28 to 12 computations (57.1% saved)

regimes5.0ms (0.3%)

Accuracy

Total -0.0b remaining (-41.7%)

Threshold costs -0b (-41.7%)

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

2 calls:

3.0ms
d1
2.0ms
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Results
AccuracySegmentsBranch
99.9%1d1
99.9%1(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
Compiler

Compiled 25 to 10 computations (60% saved)

simplify10.0ms (0.5%)

Algorithm
egg-herbie
Rules
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0945
11145
Stop Event
done
saturated
Calls
Call 1
Inputs
(pow.f64 d1 4)
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Outputs
(pow.f64 d1 4)
(*.f64 (*.f64 (*.f64 d1 d1) d1) d1)
(*.f64 d1 (*.f64 d1 (*.f64 d1 d1)))
(*.f64 (*.f64 d1 d1) (*.f64 d1 d1))
Compiler

Compiled 20 to 10 computations (50% saved)

soundness448.0ms (23.7%)

Rules
2472×sqr-pow
2472×sqr-pow
1372×associate-*r*
1372×associate-*r*
1202×cube-prod
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0619
1913
2117
3207
4357
5627
61307
74287
824247
925227
1026757
1128907
1231817
1335467
1441337
1546867
1653727
1757797
1860537
1962697
2064377
2165457
2272887
0619
1913
2117
3207
4357
5627
61307
74287
824247
925227
1026757
1128907
1231817
1335467
1441337
1546867
1653727
1757797
1860537
1962697
2064377
2165457
2272887
Stop Event
node limit
node limit
Compiler

Compiled 36 to 18 computations (50% saved)

end36.0ms (1.9%)

Compiler

Compiled 60 to 28 computations (53.3% saved)

Profiling

Loading profile data...