mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
consensus/eccpow: add LDPCDifficulty function
This commit is contained in:
parent
69983932fa
commit
d926a5d9f2
3 changed files with 792 additions and 0 deletions
209
consensus/eccpow/LDPCDifficulty.go
Normal file
209
consensus/eccpow/LDPCDifficulty.go
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
package eccpow
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/big"
|
||||
|
||||
"github.com/cryptoecc/ETH-ECC/core/types"
|
||||
)
|
||||
|
||||
/*
|
||||
https://ethereum.stackexchange.com/questions/5913/how-does-the-ethereum-homestead-difficulty-adjustment-algorithm-work?noredirect=1&lq=1
|
||||
https://github.com/ethereum/EIPs/issues/100
|
||||
|
||||
Ethereum difficulty adjustment
|
||||
algorithm:
|
||||
diff = (parent_diff +
|
||||
(parent_diff / 2048 * max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // 9), -99))
|
||||
) + 2^(periodCount - 2)
|
||||
|
||||
LDPC difficulty adjustment
|
||||
algorithm:
|
||||
diff = (parent_diff +
|
||||
(parent_diff / 256 * max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // BlockGenerationTime), -99)))
|
||||
|
||||
Why 8?
|
||||
This number is sensitivity of blockgeneration time
|
||||
If this number is high, difficulty is not changed much when block generation time is different from goal of block generation time
|
||||
But if this number is low, difficulty is changed much when block generatin time is different from goal of block generation time
|
||||
|
||||
*/
|
||||
|
||||
// "github.com/cryptoecc/ETH-ECC/consensus/ethash/consensus.go"
|
||||
// Some weird constants to avoid constant memory allocs for them.
|
||||
var (
|
||||
MinimumDifficulty = ProbToDifficulty(Table[0].miningProb)
|
||||
BlockGenerationTime = big.NewInt(36) // 36) // 10 ) // 36)
|
||||
Sensitivity = big.NewInt(8)
|
||||
|
||||
// BlockGenerationTime for Seoul
|
||||
BlockGenerationTimeSeoul = big.NewInt(10) // 36) // 10 ) // 36)
|
||||
SeoulDifficulty = big.NewInt(1023)
|
||||
|
||||
//initLevel int = 10
|
||||
minLevel int = 10
|
||||
diff_interval = 100
|
||||
|
||||
//count int = -1
|
||||
//init_c int = 2
|
||||
)
|
||||
|
||||
const (
|
||||
// frontierDurationLimit is for Frontier:
|
||||
// The decision boundary on the blocktime duration used to determine
|
||||
// whether difficulty should go up or down.
|
||||
frontierDurationLimit = 10
|
||||
// minimumDifficulty The minimum that the difficulty may ever be.
|
||||
minimumDifficulty = 131072
|
||||
// expDiffPeriod is the exponential difficulty period
|
||||
expDiffPeriodUint = 100000
|
||||
// difficultyBoundDivisorBitShift is the bound divisor of the difficulty (2048),
|
||||
// This constant is the right-shifts to use for the division.
|
||||
difficultyBoundDivisor = 11
|
||||
)
|
||||
|
||||
// MakeLDPCDifficultyCalculator calculate difficulty using difficulty table
|
||||
func MakeLDPCDifficultyCalculator() func(time uint64, parent *types.Header) *big.Int {
|
||||
return func(time uint64, parent *types.Header) *big.Int {
|
||||
bigTime := new(big.Int).SetUint64(time)
|
||||
bigParentTime := new(big.Int).SetUint64(parent.Time)
|
||||
|
||||
// holds intermediate values to make the algo easier to read & audit
|
||||
x := new(big.Int)
|
||||
y := new(big.Int)
|
||||
|
||||
// (2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) // BlockGenerationTime
|
||||
x.Sub(bigTime, bigParentTime)
|
||||
//fmt.Printf("block_timestamp - parent_timestamp : %v\n", x)
|
||||
|
||||
x.Div(x, BlockGenerationTime)
|
||||
//fmt.Printf("(block_timestamp - parent_timestamp) / BlockGenerationTime : %v\n", x)
|
||||
|
||||
if parent.UncleHash == types.EmptyUncleHash {
|
||||
//fmt.Printf("No uncle\n")
|
||||
x.Sub(big1, x)
|
||||
} else {
|
||||
//fmt.Printf("Uncle block exists")
|
||||
x.Sub(big2, x)
|
||||
}
|
||||
//fmt.Printf("(2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) / BlockGenerationTime : %v\n", x)
|
||||
|
||||
// max((2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) // 9, -99)
|
||||
if x.Cmp(bigMinus99) < 0 {
|
||||
x.Set(bigMinus99)
|
||||
}
|
||||
//fmt.Printf("max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
// parent_diff + (parent_diff / Sensitivity * max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // BlockGenerationTime), -99))
|
||||
y.Div(parent.Difficulty, Sensitivity)
|
||||
//fmt.Printf("parent.Difficulty / 8 : %v\n", y)
|
||||
|
||||
x.Mul(y, x)
|
||||
//fmt.Printf("parent.Difficulty / 8 * max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
x.Add(parent.Difficulty, x)
|
||||
//fmt.Printf("parent.Difficulty - parent.Difficulty / 8 * max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
// minimum difficulty can ever be (before exponential factor)
|
||||
if x.Cmp(MinimumDifficulty) < 0 {
|
||||
x.Set(MinimumDifficulty)
|
||||
}
|
||||
|
||||
//fmt.Printf("x : %v, Minimum difficulty : %v\n", x, MinimumDifficulty)
|
||||
return x
|
||||
}
|
||||
}
|
||||
|
||||
func MakeLDPCDifficultyCalculator_Seoul() func(time uint64, parent *types.Header) *big.Int {
|
||||
return func(time uint64, parent *types.Header) *big.Int {
|
||||
bigTime := new(big.Int).SetUint64(time)
|
||||
bigParentTime := new(big.Int).SetUint64(parent.Time)
|
||||
|
||||
// holds intermediate values to make the algo easier to read & audit
|
||||
x := new(big.Int)
|
||||
y := new(big.Int)
|
||||
|
||||
// (2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) // BlockGenerationTime
|
||||
x.Sub(bigTime, bigParentTime)
|
||||
//fmt.Printf("block_timestamp - parent_timestamp : %v\n", x)
|
||||
|
||||
x.Div(x, BlockGenerationTimeSeoul)
|
||||
//fmt.Printf("(block_timestamp - parent_timestamp) / BlockGenerationTime : %v\n", x)
|
||||
|
||||
if parent.UncleHash == types.EmptyUncleHash {
|
||||
//fmt.Printf("No uncle\n")
|
||||
x.Sub(big1, x)
|
||||
} else {
|
||||
//fmt.Printf("Uncle block exists")
|
||||
x.Sub(big2, x)
|
||||
}
|
||||
//fmt.Printf("(2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) / BlockGenerationTime : %v\n", x)
|
||||
|
||||
// max((2 if len(parent_uncles) else 1) - (block_timestamp - parent_timestamp) // 9, -99)
|
||||
if x.Cmp(bigMinus99) < 0 {
|
||||
x.Set(bigMinus99)
|
||||
}
|
||||
//fmt.Printf("max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
// parent_diff + (parent_diff / Sensitivity * max((2 if len(parent.uncles) else 1) - ((timestamp - parent.timestamp) // BlockGenerationTime), -99))
|
||||
y.Div(parent.Difficulty, Sensitivity)
|
||||
//fmt.Printf("parent.Difficulty / 8 : %v\n", y)
|
||||
|
||||
x.Mul(y, x)
|
||||
//fmt.Printf("parent.Difficulty / 8 * max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
x.Add(parent.Difficulty, x)
|
||||
//fmt.Printf("parent.Difficulty - parent.Difficulty / 8 * max(1 - (block_timestamp - parent_timestamp) / BlockGenerationTime, -99) : %v\n", x)
|
||||
|
||||
// minimum difficulty can ever be (before exponential factor)
|
||||
if x.Cmp(SeoulDifficulty) < 0 {
|
||||
x.Set(SeoulDifficulty)
|
||||
}
|
||||
|
||||
//fmt.Printf("x : %v, Minimum difficulty : %v\n", x, MinimumDifficulty)
|
||||
return x
|
||||
}
|
||||
}
|
||||
|
||||
// SearchLevel return next level by using currentDifficulty of header
|
||||
// Type of Ethereum difficulty is *bit.Int so arg is *big.int
|
||||
func SearchLevel(difficulty *big.Int) int {
|
||||
// foo := MakeLDPCDifficultyCalculator()
|
||||
// Next level := SearchNextLevel(foo(currentBlock's time stamp, parentBlock))
|
||||
|
||||
var currentProb = DifficultyToProb(difficulty)
|
||||
var level int
|
||||
|
||||
distance := 1.0
|
||||
for i := range Table {
|
||||
if math.Abs(currentProb-Table[i].miningProb) <= distance {
|
||||
level = Table[i].level
|
||||
distance = math.Abs(currentProb - Table[i].miningProb)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return level
|
||||
}
|
||||
|
||||
// SearchLevel return next level by using currentDifficulty of header
|
||||
// Type of Ethereum difficulty is *bit.Int so arg is *big.int
|
||||
func SearchLevel_Seoul(difficulty *big.Int) int {
|
||||
|
||||
var level int
|
||||
|
||||
difficultyf := new(big.Rat).SetInt(difficulty)
|
||||
level_prob := big.NewRat(29, 20)
|
||||
difficultyf.Quo(difficultyf, new(big.Rat).SetInt(SeoulDifficulty))
|
||||
|
||||
for {
|
||||
difficultyf.Quo(difficultyf, level_prob)
|
||||
level++
|
||||
if difficultyf.Cmp(big.NewRat(1, 1)) < 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return level
|
||||
}
|
||||
65
consensus/eccpow/LDPCDifficulty_test.go
Normal file
65
consensus/eccpow/LDPCDifficulty_test.go
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
package eccpow
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/big"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/cryptoecc/ETH-ECC/core/types"
|
||||
)
|
||||
|
||||
func TestTablePrint(t *testing.T) {
|
||||
for i := range Table {
|
||||
fmt.Printf("level : %v, n : %v, wc : %v, wr : %v, decisionFrom : %v, decisionTo : %v, decisionStep : %v, miningProb : %v \n", Table[i].level, Table[i].n, Table[i].wc, Table[i].wr, Table[i].decisionFrom, Table[i].decisionTo, Table[i].decisionStep, Table[i].miningProb)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrintReciprocal(t *testing.T) {
|
||||
for i := range Table {
|
||||
val := 1 / Table[i].miningProb
|
||||
bigInt := FloatToBigInt(val)
|
||||
fmt.Printf("Reciprocal of miningProb : %v \t big Int : %v\n", val, bigInt)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConversionFunc(t *testing.T) {
|
||||
for i := range Table {
|
||||
difficulty := ProbToDifficulty(Table[i].miningProb)
|
||||
miningProb := DifficultyToProb(difficulty)
|
||||
|
||||
// Consider only integer part.
|
||||
fmt.Printf("Difficulty : %v \t MiningProb : %v\t, probability compare : %v \n", difficulty, miningProb, math.Abs(miningProb-Table[i].miningProb) < 1)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDifficultyChange(t *testing.T) {
|
||||
var hash []byte
|
||||
currentLevel := 0
|
||||
currentBlock := new(types.Header)
|
||||
// Parent block's timestamp is 0
|
||||
// compare elapse time(timestamp) and parent block's timestamp(0)
|
||||
currentBlock.Difficulty = big.NewInt(0)
|
||||
currentBlock.Time = 0
|
||||
currentBlock.UncleHash = types.EmptyUncleHash
|
||||
for i := 0; i < 5; i++ {
|
||||
fmt.Printf("Current Difficulty : %v\n", currentBlock.Difficulty)
|
||||
|
||||
startTime := time.Now()
|
||||
|
||||
RunOptimizedConcurrencyLDPC(currentBlock, hash)
|
||||
timeStamp := uint64(time.Since(startTime).Seconds())
|
||||
fmt.Printf("Block generation time : %v\n", timeStamp)
|
||||
|
||||
difficultyCalculator := MakeLDPCDifficultyCalculator()
|
||||
nextDifficulty := difficultyCalculator(timeStamp, currentBlock)
|
||||
currentBlock.Difficulty = nextDifficulty
|
||||
nextLevel := SearchLevel(nextDifficulty)
|
||||
|
||||
fmt.Printf("Current prob : %v, Next Level : %v, Next difficulty : %v, Next difficulty from table : %v\n\n", Table[currentLevel].miningProb, Table[nextLevel].level, nextDifficulty, ProbToDifficulty(Table[nextLevel].miningProb))
|
||||
// currentBlock.ParentHash = outputWord conversion from []int to [32]byte
|
||||
currentLevel = nextLevel
|
||||
fmt.Printf("Current Level : %v\n", currentLevel)
|
||||
}
|
||||
}
|
||||
518
consensus/eccpow/LDPCDifficulty_utils.go
Normal file
518
consensus/eccpow/LDPCDifficulty_utils.go
Normal file
|
|
@ -0,0 +1,518 @@
|
|||
package eccpow
|
||||
|
||||
import (
|
||||
"math/big"
|
||||
)
|
||||
|
||||
// Table : level, n, wc, wr, decisionFrom, decisionTo, decisionStep, _, miningProb
|
||||
/*
|
||||
How to decision
|
||||
1. The number of ones in outputword % decision_step == 0
|
||||
2. The number of ones in outputword exists between decision_from to decision_to
|
||||
|
||||
How to change difficulty level
|
||||
- Reciprocal of difficulty is probability
|
||||
- Therefore We can define difficulty is reciprocal of probability
|
||||
- Find close probability
|
||||
|
||||
*/
|
||||
type difficulty struct {
|
||||
level int
|
||||
n int
|
||||
wc int
|
||||
wr int
|
||||
decisionFrom int
|
||||
decisionTo int
|
||||
decisionStep int
|
||||
_ float32
|
||||
miningProb float64
|
||||
}
|
||||
|
||||
// FloatToBigInt convert float64 to big integer
|
||||
func FloatToBigInt(val float64) *big.Int {
|
||||
// float64 -> bit float -> big int
|
||||
bigFloat := big.NewFloat(val)
|
||||
bigInt := new(big.Int)
|
||||
bigFloat.Int(bigInt)
|
||||
|
||||
return bigInt
|
||||
}
|
||||
|
||||
// BigIntToFloat convert big int to float64
|
||||
func BigIntToFloat(val *big.Int) float64 {
|
||||
// big int -> bit float -> float64
|
||||
bigFloat := new(big.Float).SetInt(val)
|
||||
floatVal, _ := bigFloat.Float64()
|
||||
|
||||
return floatVal
|
||||
}
|
||||
|
||||
// DifficultyToProb convert difficulty to probability of table
|
||||
func DifficultyToProb(difficulty *big.Int) float64 {
|
||||
//big Int -> 1/bigInt -> float64
|
||||
prob := 1 / BigIntToFloat(difficulty)
|
||||
return prob
|
||||
}
|
||||
|
||||
// ProbToDifficulty convert probability to difficulty of header
|
||||
func ProbToDifficulty(miningProb float64) *big.Int {
|
||||
// float64 -> 1/float64 -> big Int
|
||||
difficulty := FloatToBigInt(1 / miningProb)
|
||||
return difficulty
|
||||
}
|
||||
|
||||
|
||||
func getTable(level int ) difficulty {
|
||||
n := 64 + level * 4
|
||||
return difficulty{level, n, 3, 4, 1/4 * n, 3/4 * n, 1, 0, 0}
|
||||
}
|
||||
|
||||
|
||||
// Table is difficulty table slice
|
||||
var Table = []difficulty{
|
||||
{0, 32, 3, 4, 10, 22, 2, 0.329111, 3.077970e-05},
|
||||
{1, 32, 3, 4, 10, 22, 2, 0.329111, 3.077970e-05},
|
||||
{2, 32, 3, 4, 10, 16, 2, 0.329111, 2.023220e-05},
|
||||
{3, 32, 3, 4, 16, 16, 1, 0.329111, 9.684650e-06},
|
||||
{4, 32, 3, 4, 14, 14, 1, 0.329111, 6.784080e-06},
|
||||
{5, 36, 3, 4, 12, 24, 2, 0.329111, 4.830240e-06},
|
||||
{6, 36, 3, 4, 12, 18, 2, 0.369449, 3.125970e-06},
|
||||
{7, 32, 3, 4, 12, 12, 1, 0.369449, 2.862890e-06},
|
||||
{8, 44, 3, 4, 14, 30, 2, 0.369449, 1.637790e-06},
|
||||
{9, 36, 3, 4, 18, 18, 1, 0.369449, 1.421700e-06},
|
||||
{10, 36, 3, 4, 16, 16, 1, 0.369449, 1.051350e-06},
|
||||
{11, 44, 3, 4, 14, 22, 2, 0.411046, 1.029740e-06},
|
||||
{12, 40, 3, 4, 12, 28, 2, 0.411046, 7.570880e-07},
|
||||
{13, 36, 3, 4, 14, 14, 1, 0.411046, 4.865630e-07},
|
||||
{14, 40, 3, 4, 12, 20, 2, 0.411046, 4.813320e-07},
|
||||
{15, 44, 3, 4, 22, 22, 1, 0.411046, 4.216920e-07},
|
||||
{16, 44, 3, 4, 20, 20, 1, 0.411046, 3.350070e-07},
|
||||
{17, 48, 3, 4, 14, 34, 2, 0.452453, 2.677070e-07},
|
||||
{18, 40, 3, 4, 20, 20, 1, 0.452453, 2.055750e-07},
|
||||
{19, 44, 3, 4, 18, 18, 1, 0.452453, 1.788400e-07},
|
||||
{20, 48, 3, 4, 14, 24, 2, 0.452453, 1.664080e-07},
|
||||
{21, 40, 3, 4, 18, 18, 1, 0.452453, 1.583110e-07},
|
||||
{22, 40, 3, 4, 16, 16, 1, 0.452453, 7.917230e-08},
|
||||
{23, 44, 3, 4, 16, 16, 1, 0.498513, 7.103820e-08},
|
||||
{24, 48, 3, 4, 24, 24, 1, 0.498513, 6.510890e-08},
|
||||
{25, 48, 3, 4, 22, 22, 1, 0.498513, 5.300760e-08},
|
||||
{26, 52, 3, 4, 14, 40, 2, 0.498513, 4.266600e-08},
|
||||
{27, 48, 3, 4, 20, 20, 1, 0.498513, 2.990510e-08},
|
||||
{28, 40, 3, 4, 14, 14, 1, 0.498513, 2.927380e-08},
|
||||
{29, 52, 3, 4, 14, 26, 2, 0.498513, 2.626790e-08},
|
||||
{30, 60, 3, 4, 18, 42, 2, 0.498513, 1.485240e-08},
|
||||
{31, 48, 3, 4, 18, 18, 1, 0.546238, 1.267290e-08},
|
||||
{32, 52, 3, 4, 26, 26, 1, 0.546238, 9.891110e-09},
|
||||
{33, 60, 3, 4, 18, 30, 2, 0.546238, 9.019200e-09},
|
||||
{34, 48, 3, 4, 16, 32, 1, 0.546238, 8.762650e-09},
|
||||
{35, 52, 3, 4, 24, 24, 1, 0.546238, 8.213140e-09},
|
||||
{36, 56, 3, 4, 16, 42, 2, 0.546238, 6.658250e-09},
|
||||
{37, 52, 3, 4, 22, 22, 1, 0.546238, 4.856960e-09},
|
||||
{38, 48, 3, 4, 16, 16, 1, 0.546238, 4.381330e-09},
|
||||
{39, 56, 3, 4, 16, 28, 2, 0.546238, 4.068000e-09},
|
||||
{40, 60, 3, 4, 30, 30, 1, 0.546238, 3.186040e-09},
|
||||
{41, 60, 3, 4, 28, 28, 1, 0.578290, 2.725470e-09},
|
||||
{42, 64, 3, 4, 18, 46, 2, 0.578290, 2.410890e-09},
|
||||
{43, 52, 3, 4, 20, 20, 1, 0.578290, 2.181360e-09},
|
||||
{44, 60, 3, 4, 26, 26, 1, 0.578290, 1.737940e-09},
|
||||
{45, 52, 3, 4, 18, 34, 1, 0.578290, 1.595330e-09},
|
||||
{46, 56, 3, 4, 28, 28, 1, 0.578290, 1.481830e-09},
|
||||
{47, 64, 3, 4, 18, 32, 2, 0.578290, 1.454780e-09},
|
||||
{48, 56, 3, 4, 26, 26, 1, 0.578290, 1.250550e-09},
|
||||
{49, 60, 3, 4, 24, 24, 1, 0.578290, 8.614860e-10},
|
||||
{50, 52, 3, 4, 18, 18, 1, 0.578290, 7.976650e-10},
|
||||
{51, 56, 3, 4, 24, 24, 1, 0.628015, 7.700380e-10},
|
||||
{52, 60, 3, 4, 22, 38, 1, 0.628015, 6.978800e-10},
|
||||
{53, 52, 3, 4, 16, 36, 1, 0.628015, 5.069080e-10},
|
||||
{54, 64, 3, 4, 32, 32, 1, 0.628015, 4.986660e-10},
|
||||
{55, 64, 3, 4, 30, 30, 1, 0.628015, 4.315180e-10},
|
||||
{56, 68, 3, 4, 18, 50, 2, 0.628015, 3.848530e-10},
|
||||
{57, 56, 3, 4, 22, 22, 1, 0.628015, 3.643130e-10},
|
||||
{58, 60, 3, 4, 22, 22, 1, 0.628015, 3.489400e-10},
|
||||
{59, 64, 3, 4, 28, 28, 1, 0.628015, 2.836780e-10},
|
||||
{60, 56, 3, 4, 20, 36, 1, 0.628015, 2.809120e-10},
|
||||
{61, 52, 3, 4, 16, 16, 1, 0.666500, 2.534540e-10},
|
||||
{62, 60, 3, 4, 20, 40, 1, 0.666500, 2.427110e-10},
|
||||
{63, 68, 3, 4, 18, 34, 2, 0.666500, 2.309280e-10},
|
||||
{64, 64, 3, 4, 26, 26, 1, 0.666500, 1.466250e-10},
|
||||
{65, 56, 3, 4, 20, 20, 1, 0.666500, 1.404560e-10},
|
||||
{66, 76, 3, 4, 22, 54, 2, 0.666500, 1.375500e-10},
|
||||
{67, 60, 3, 4, 20, 20, 1, 0.666500, 1.213550e-10},
|
||||
{68, 56, 3, 4, 18, 38, 1, 0.666500, 9.340240e-11},
|
||||
{69, 76, 3, 4, 22, 38, 2, 0.666500, 8.174200e-11},
|
||||
{70, 68, 3, 4, 34, 34, 1, 0.666500, 7.700290e-11},
|
||||
{71, 68, 3, 4, 32, 32, 1, 0.666500, 6.729690e-11},
|
||||
{72, 64, 3, 4, 24, 24, 1, 0.706860, 6.217280e-11},
|
||||
{73, 72, 3, 4, 18, 56, 2, 0.706860, 6.056200e-11},
|
||||
{74, 56, 3, 4, 18, 18, 1, 0.706860, 4.670120e-11},
|
||||
{75, 68, 3, 4, 30, 30, 1, 0.706860, 4.543980e-11},
|
||||
{76, 64, 3, 4, 22, 42, 1, 0.706860, 4.517330e-11},
|
||||
{77, 72, 3, 4, 18, 36, 2, 0.706860, 3.615450e-11},
|
||||
{78, 76, 3, 4, 38, 38, 1, 0.706860, 2.593400e-11},
|
||||
{79, 68, 3, 4, 28, 28, 1, 0.706860, 2.438720e-11},
|
||||
{80, 76, 3, 4, 36, 36, 1, 0.706860, 2.303460e-11},
|
||||
{81, 64, 3, 4, 22, 22, 1, 0.706860, 2.258660e-11},
|
||||
{82, 80, 3, 4, 22, 58, 2, 0.706860, 2.229400e-11},
|
||||
{83, 76, 3, 4, 34, 34, 1, 0.706860, 1.626350e-11},
|
||||
{84, 64, 3, 4, 20, 40, 1, 0.706860, 1.465310e-11},
|
||||
{85, 80, 3, 4, 22, 40, 2, 0.763542, 1.319160e-11},
|
||||
{86, 72, 3, 4, 36, 36, 1, 0.763542, 1.174900e-11},
|
||||
{87, 68, 3, 4, 26, 26, 1, 0.763542, 1.078820e-11},
|
||||
{88, 72, 3, 4, 34, 34, 1, 0.763542, 1.035690e-11},
|
||||
{89, 76, 3, 4, 32, 32, 1, 0.763542, 9.311370e-12},
|
||||
{90, 68, 3, 4, 24, 44, 1, 0.763542, 8.173020e-12},
|
||||
{91, 64, 3, 4, 20, 20, 1, 0.763542, 7.326570e-12},
|
||||
{92, 72, 3, 4, 32, 32, 1, 0.763542, 7.160350e-12},
|
||||
{93, 76, 3, 4, 30, 30, 1, 0.763542, 4.440960e-12},
|
||||
{94, 80, 3, 4, 40, 40, 1, 0.763542, 4.089220e-12},
|
||||
{95, 68, 3, 4, 24, 24, 1, 0.763542, 4.086510e-12},
|
||||
{96, 72, 3, 4, 30, 30, 1, 0.763542, 3.975570e-12},
|
||||
{97, 80, 3, 4, 38, 38, 1, 0.763542, 3.656430e-12},
|
||||
{98, 76, 3, 4, 28, 48, 1, 0.763542, 3.634830e-12},
|
||||
{99, 84, 3, 4, 22, 62, 2, 0.763542, 3.566880e-12},
|
||||
{100, 68, 3, 4, 22, 46, 1, 0.783762, 2.750600e-12},
|
||||
{101, 80, 3, 4, 36, 36, 1, 0.783762, 2.630600e-12},
|
||||
{102, 84, 3, 4, 22, 42, 2, 0.783762, 2.102180e-12},
|
||||
{103, 72, 3, 4, 28, 28, 1, 0.783762, 1.828850e-12},
|
||||
{104, 76, 3, 4, 28, 28, 1, 0.783762, 1.817420e-12},
|
||||
{105, 80, 3, 4, 34, 34, 1, 0.783762, 1.548670e-12},
|
||||
{106, 72, 3, 4, 26, 46, 1, 0.783762, 1.441670e-12},
|
||||
{107, 68, 3, 4, 22, 22, 1, 0.783762, 1.375300e-12},
|
||||
{108, 76, 3, 4, 26, 50, 1, 0.783762, 1.314800e-12},
|
||||
{109, 92, 3, 4, 24, 68, 2, 0.783762, 1.296220e-12},
|
||||
{110, 68, 3, 4, 20, 48, 1, 0.783762, 8.516070e-13},
|
||||
{111, 80, 3, 4, 32, 32, 1, 0.783762, 7.636740e-13},
|
||||
{112, 92, 3, 4, 24, 46, 2, 0.783762, 7.585130e-13},
|
||||
{113, 72, 3, 4, 26, 26, 1, 0.824961, 7.208340e-13},
|
||||
{114, 76, 3, 4, 26, 26, 1, 0.824961, 6.573980e-13},
|
||||
{115, 80, 3, 4, 30, 50, 1, 0.824961, 6.475910e-13},
|
||||
{116, 84, 3, 4, 42, 42, 1, 0.824961, 6.374900e-13},
|
||||
{117, 84, 3, 4, 40, 40, 1, 0.824961, 5.734350e-13},
|
||||
{118, 88, 3, 4, 22, 66, 2, 0.824961, 5.640630e-13},
|
||||
{119, 72, 3, 4, 24, 48, 1, 0.824961, 5.032200e-13},
|
||||
{120, 76, 3, 4, 24, 52, 1, 0.824961, 4.325430e-13},
|
||||
{121, 68, 3, 4, 20, 20, 1, 0.824961, 4.258030e-13},
|
||||
{122, 84, 3, 4, 38, 38, 1, 0.824961, 4.195890e-13},
|
||||
{123, 88, 3, 4, 22, 44, 2, 0.824961, 3.312130e-13},
|
||||
{124, 80, 3, 4, 30, 30, 1, 0.824961, 3.237950e-13},
|
||||
{125, 84, 3, 4, 36, 36, 1, 0.824961, 2.533670e-13},
|
||||
{126, 72, 3, 4, 24, 24, 1, 0.824961, 2.516100e-13},
|
||||
{127, 80, 3, 4, 28, 52, 1, 0.824961, 2.424700e-13},
|
||||
{128, 92, 3, 4, 46, 46, 1, 0.865704, 2.208090e-13},
|
||||
{129, 76, 3, 4, 24, 24, 1, 0.865704, 2.162710e-13},
|
||||
{130, 96, 3, 4, 26, 72, 2, 0.865704, 2.099840e-13},
|
||||
{131, 92, 3, 4, 44, 44, 1, 0.865704, 2.006580e-13},
|
||||
{132, 72, 3, 4, 22, 50, 1, 0.865704, 1.605310e-13},
|
||||
{133, 92, 3, 4, 42, 42, 1, 0.865704, 1.511670e-13},
|
||||
{134, 84, 3, 4, 34, 34, 1, 0.865704, 1.288510e-13},
|
||||
{135, 96, 3, 4, 26, 48, 2, 0.865704, 1.224810e-13},
|
||||
{136, 80, 3, 4, 28, 28, 1, 0.865704, 1.212350e-13},
|
||||
{137, 88, 3, 4, 44, 44, 1, 0.865704, 9.836240e-14},
|
||||
{138, 92, 3, 4, 40, 40, 1, 0.865704, 9.542830e-14},
|
||||
{139, 88, 3, 4, 42, 42, 1, 0.865704, 8.895450e-14},
|
||||
{140, 80, 3, 4, 26, 54, 1, 0.865704, 8.227740e-14},
|
||||
{141, 72, 3, 4, 22, 22, 1, 0.865704, 8.026550e-14},
|
||||
{142, 88, 3, 4, 40, 40, 1, 0.865704, 6.609120e-14},
|
||||
{143, 84, 3, 4, 32, 32, 1, 0.865704, 5.648410e-14},
|
||||
{144, 92, 3, 4, 38, 38, 1, 0.908949, 5.127400e-14},
|
||||
{145, 72, 3, 4, 20, 52, 1, 0.908949, 4.822030e-14},
|
||||
{146, 84, 3, 4, 30, 54, 1, 0.908949, 4.372420e-14},
|
||||
{147, 80, 3, 4, 26, 26, 1, 0.908949, 4.113870e-14},
|
||||
{148, 88, 3, 4, 38, 38, 1, 0.908949, 4.084490e-14},
|
||||
{149, 96, 3, 4, 48, 48, 1, 0.908949, 3.497970e-14},
|
||||
{150, 100, 3, 4, 26, 76, 2, 0.908949, 3.365420e-14},
|
||||
{151, 96, 3, 4, 46, 46, 1, 0.908949, 3.192740e-14},
|
||||
{152, 80, 3, 4, 24, 56, 1, 0.908949, 2.593890e-14},
|
||||
{153, 96, 3, 4, 44, 44, 1, 0.908949, 2.435890e-14},
|
||||
{154, 72, 3, 4, 20, 20, 1, 0.908949, 2.411020e-14},
|
||||
{155, 92, 3, 4, 36, 36, 1, 0.908949, 2.388460e-14},
|
||||
{156, 84, 3, 4, 30, 30, 1, 0.908949, 2.186210e-14},
|
||||
{157, 88, 3, 4, 36, 36, 1, 0.908949, 2.137330e-14},
|
||||
{158, 92, 3, 4, 34, 58, 1, 0.908949, 1.967320e-14},
|
||||
{159, 100, 3, 4, 26, 50, 2, 0.908949, 1.957080e-14},
|
||||
{160, 96, 3, 4, 42, 42, 1, 0.908949, 1.568040e-14},
|
||||
{161, 84, 3, 4, 28, 56, 1, 0.908949, 1.529960e-14},
|
||||
{162, 80, 3, 4, 24, 24, 1, 0.954202, 1.296950e-14},
|
||||
{163, 108, 3, 4, 28, 82, 2, 0.954202, 1.237200e-14},
|
||||
{164, 92, 3, 4, 34, 34, 1, 0.954202, 9.836600e-15},
|
||||
{165, 88, 3, 4, 34, 34, 1, 0.954202, 9.667440e-15},
|
||||
{166, 96, 3, 4, 40, 40, 1, 0.954202, 8.634600e-15},
|
||||
{167, 88, 3, 4, 32, 56, 1, 0.954202, 7.725050e-15},
|
||||
{168, 84, 3, 4, 28, 28, 1, 0.954202, 7.649800e-15},
|
||||
{169, 92, 3, 4, 32, 60, 1, 0.954202, 7.305750e-15},
|
||||
{170, 108, 3, 4, 28, 54, 2, 0.954202, 7.154920e-15},
|
||||
{171, 100, 3, 4, 50, 50, 1, 0.954202, 5.487490e-15},
|
||||
{172, 104, 3, 4, 26, 78, 2, 0.954202, 5.340690e-15},
|
||||
{173, 100, 3, 4, 48, 48, 1, 0.954202, 5.028760e-15},
|
||||
{174, 84, 3, 4, 26, 58, 1, 0.954202, 4.951260e-15},
|
||||
{175, 96, 3, 4, 38, 38, 1, 0.954202, 4.134930e-15},
|
||||
{176, 100, 3, 4, 46, 46, 1, 0.954202, 3.881360e-15},
|
||||
{177, 88, 3, 4, 32, 32, 1, 0.954202, 3.862530e-15},
|
||||
{178, 92, 3, 4, 32, 32, 1, 0.954202, 3.652870e-15},
|
||||
{179, 96, 3, 4, 36, 60, 1, 0.954202, 3.505650e-15},
|
||||
{180, 104, 3, 4, 26, 52, 2, 0.993877, 3.096920e-15},
|
||||
{181, 88, 3, 4, 30, 58, 1, 0.993877, 2.785770e-15},
|
||||
{182, 100, 3, 4, 44, 44, 1, 0.993877, 2.543880e-15},
|
||||
{183, 92, 3, 4, 30, 62, 1, 0.993877, 2.493880e-15},
|
||||
{184, 84, 3, 4, 26, 26, 1, 0.993877, 2.475630e-15},
|
||||
{185, 112, 3, 4, 28, 86, 2, 0.993877, 2.003890e-15},
|
||||
{186, 108, 3, 4, 54, 54, 1, 0.993877, 1.937830e-15},
|
||||
{187, 108, 3, 4, 52, 52, 1, 0.993877, 1.788370e-15},
|
||||
{188, 96, 3, 4, 36, 36, 1, 0.993877, 1.752820e-15},
|
||||
{189, 84, 3, 4, 24, 60, 1, 0.993877, 1.514630e-15},
|
||||
{190, 100, 3, 4, 42, 42, 1, 0.993877, 1.433180e-15},
|
||||
{191, 108, 3, 4, 50, 50, 1, 0.993877, 1.408830e-15},
|
||||
{192, 88, 3, 4, 30, 30, 1, 0.993877, 1.392880e-15},
|
||||
{193, 96, 3, 4, 34, 62, 1, 0.993877, 1.339400e-15},
|
||||
{194, 92, 3, 4, 30, 30, 1, 0.993877, 1.246940e-15},
|
||||
{195, 112, 3, 4, 28, 56, 2, 0.993877, 1.155930e-15},
|
||||
{196, 108, 3, 4, 48, 48, 1, 0.993877, 9.534230e-16},
|
||||
{197, 88, 3, 4, 28, 60, 1, 0.993877, 9.258750e-16},
|
||||
{198, 104, 3, 4, 52, 52, 1, 1.035782, 8.531480e-16},
|
||||
{199, 92, 3, 4, 28, 64, 1, 1.035782, 7.972240e-16},
|
||||
{200, 104, 3, 4, 50, 50, 1, 1.035782, 7.847010e-16},
|
||||
{201, 84, 3, 4, 24, 24, 1, 1.035782, 7.573130e-16},
|
||||
{202, 100, 3, 4, 40, 40, 1, 1.035782, 7.043820e-16},
|
||||
{203, 96, 3, 4, 34, 34, 1, 1.035782, 6.696990e-16},
|
||||
{204, 100, 3, 4, 38, 62, 1, 1.035782, 6.138180e-16},
|
||||
{205, 104, 3, 4, 48, 48, 1, 1.035782, 6.121340e-16},
|
||||
{206, 108, 3, 4, 46, 46, 1, 1.035782, 5.596910e-16},
|
||||
{207, 96, 3, 4, 32, 64, 1, 1.035782, 4.694950e-16},
|
||||
{208, 88, 3, 4, 28, 28, 1, 1.035782, 4.629380e-16},
|
||||
{209, 104, 3, 4, 46, 46, 1, 1.035782, 4.079260e-16},
|
||||
{210, 92, 3, 4, 28, 28, 1, 1.035782, 3.986120e-16},
|
||||
{211, 116, 3, 4, 30, 86, 2, 1.035782, 3.215820e-16},
|
||||
{212, 112, 3, 4, 56, 56, 1, 1.035782, 3.079780e-16},
|
||||
{213, 100, 3, 4, 38, 38, 1, 1.035782, 3.069090e-16},
|
||||
{214, 88, 3, 4, 26, 62, 1, 1.035782, 2.893730e-16},
|
||||
{215, 108, 3, 4, 44, 44, 1, 1.035782, 2.884350e-16},
|
||||
{216, 112, 3, 4, 54, 54, 1, 1.035782, 2.851100e-16},
|
||||
{217, 92, 3, 4, 26, 66, 1, 1.035782, 2.429760e-16},
|
||||
{218, 100, 3, 4, 36, 64, 1, 1.083752, 2.410500e-16},
|
||||
{219, 104, 3, 4, 44, 44, 1, 1.083752, 2.347600e-16},
|
||||
{220, 96, 3, 4, 32, 32, 1, 1.083752, 2.347480e-16},
|
||||
{221, 112, 3, 4, 52, 52, 1, 1.083752, 2.266460e-16},
|
||||
{222, 116, 3, 4, 30, 58, 2, 1.083752, 1.850560e-16},
|
||||
{223, 112, 3, 4, 50, 50, 1, 1.083752, 1.555940e-16},
|
||||
{224, 96, 3, 4, 30, 66, 1, 1.083752, 1.536060e-16},
|
||||
{225, 88, 3, 4, 26, 26, 1, 1.083752, 1.446860e-16},
|
||||
{226, 108, 3, 4, 42, 42, 1, 1.083752, 1.322410e-16},
|
||||
{227, 92, 3, 4, 26, 26, 1, 1.083752, 1.214880e-16},
|
||||
{228, 100, 3, 4, 36, 36, 1, 1.083752, 1.205250e-16},
|
||||
{229, 124, 3, 4, 32, 94, 2, 1.083752, 1.192380e-16},
|
||||
{230, 104, 3, 4, 42, 42, 1, 1.083752, 1.182330e-16},
|
||||
{231, 108, 3, 4, 40, 68, 1, 1.083752, 1.093900e-16},
|
||||
{232, 112, 3, 4, 48, 48, 1, 1.083752, 9.304980e-17},
|
||||
{233, 100, 3, 4, 34, 66, 1, 1.083752, 8.672750e-17},
|
||||
{234, 88, 3, 4, 24, 64, 1, 1.083752, 8.671340e-17},
|
||||
{235, 96, 3, 4, 30, 30, 1, 1.083752, 7.680300e-17},
|
||||
{236, 124, 3, 4, 32, 62, 2, 1.083752, 6.831000e-17},
|
||||
{237, 108, 3, 4, 40, 40, 1, 1.083752, 5.469510e-17},
|
||||
{238, 104, 3, 4, 40, 40, 1, 1.083752, 5.287900e-17},
|
||||
{239, 120, 3, 4, 30, 90, 2, 1.122176, 5.116510e-17},
|
||||
{240, 112, 3, 4, 46, 46, 1, 1.122176, 4.900210e-17},
|
||||
{241, 116, 3, 4, 58, 58, 1, 1.122176, 4.853020e-17},
|
||||
{242, 96, 3, 4, 28, 68, 1, 1.122176, 4.769400e-17},
|
||||
{243, 116, 3, 4, 56, 56, 1, 1.122176, 4.505610e-17},
|
||||
{244, 100, 3, 4, 34, 34, 1, 1.122176, 4.336370e-17},
|
||||
{245, 88, 3, 4, 24, 24, 1, 1.122176, 4.335670e-17},
|
||||
{246, 104, 3, 4, 38, 66, 1, 1.122176, 4.264440e-17},
|
||||
{247, 108, 3, 4, 38, 70, 1, 1.122176, 4.139190e-17},
|
||||
{248, 116, 3, 4, 54, 54, 1, 1.122176, 3.611940e-17},
|
||||
{249, 120, 3, 4, 30, 60, 2, 1.122176, 2.937590e-17},
|
||||
{250, 100, 3, 4, 32, 68, 1, 1.122176, 2.904870e-17},
|
||||
{251, 116, 3, 4, 52, 52, 1, 1.122176, 2.512890e-17},
|
||||
{252, 96, 3, 4, 28, 28, 1, 1.122176, 2.384700e-17},
|
||||
{253, 112, 3, 4, 44, 44, 1, 1.122176, 2.300220e-17},
|
||||
{254, 104, 3, 4, 38, 38, 1, 1.122176, 2.132220e-17},
|
||||
{255, 108, 3, 4, 38, 38, 1, 1.122176, 2.069600e-17},
|
||||
{256, 112, 3, 4, 42, 70, 1, 1.122176, 1.949710e-17},
|
||||
{257, 128, 3, 4, 32, 98, 2, 1.122176, 1.931040e-17},
|
||||
{258, 124, 3, 4, 62, 62, 1, 1.122176, 1.738220e-17},
|
||||
{259, 124, 3, 4, 60, 60, 1, 1.122176, 1.622110e-17},
|
||||
{260, 104, 3, 4, 36, 68, 1, 1.165058, 1.573970e-17},
|
||||
{261, 116, 3, 4, 50, 50, 1, 1.165058, 1.529120e-17},
|
||||
{262, 108, 3, 4, 36, 72, 1, 1.165058, 1.452810e-17},
|
||||
{263, 100, 3, 4, 32, 32, 1, 1.165058, 1.452430e-17},
|
||||
{264, 124, 3, 4, 58, 58, 1, 1.165058, 1.320160e-17},
|
||||
{265, 128, 3, 4, 32, 64, 2, 1.165058, 1.103980e-17},
|
||||
{266, 112, 3, 4, 42, 42, 1, 1.165058, 9.748530e-18},
|
||||
{267, 124, 3, 4, 56, 56, 1, 1.165058, 9.408340e-18},
|
||||
{268, 100, 3, 4, 30, 70, 1, 1.165058, 9.198900e-18},
|
||||
{269, 116, 3, 4, 48, 48, 1, 1.165058, 8.218710e-18},
|
||||
{270, 104, 3, 4, 36, 36, 1, 1.165058, 7.869870e-18},
|
||||
{271, 120, 3, 4, 60, 60, 1, 1.165058, 7.586620e-18},
|
||||
{272, 112, 3, 4, 40, 72, 1, 1.165058, 7.557840e-18},
|
||||
{273, 108, 3, 4, 36, 36, 1, 1.165058, 7.264050e-18},
|
||||
{274, 120, 3, 4, 58, 58, 1, 1.165058, 7.062330e-18},
|
||||
{275, 124, 3, 4, 54, 54, 1, 1.165058, 5.908890e-18},
|
||||
{276, 120, 3, 4, 56, 56, 1, 1.165058, 5.705970e-18},
|
||||
{277, 104, 3, 4, 34, 70, 1, 1.165058, 5.397190e-18},
|
||||
{278, 108, 3, 4, 34, 74, 1, 1.165058, 4.794130e-18},
|
||||
{279, 100, 3, 4, 30, 30, 1, 1.165058, 4.599450e-18},
|
||||
{280, 120, 3, 4, 54, 54, 1, 1.165058, 4.019430e-18},
|
||||
{281, 116, 3, 4, 46, 46, 1, 1.165058, 3.945320e-18},
|
||||
{282, 112, 3, 4, 40, 40, 1, 1.165058, 3.778920e-18},
|
||||
{283, 116, 3, 4, 44, 72, 1, 1.231412, 3.423190e-18},
|
||||
{284, 124, 3, 4, 52, 52, 1, 1.231412, 3.297090e-18},
|
||||
{285, 100, 3, 4, 28, 72, 1, 1.231412, 2.795780e-18},
|
||||
{286, 128, 3, 4, 64, 64, 1, 1.231412, 2.769110e-18},
|
||||
{287, 112, 3, 4, 38, 74, 1, 1.231412, 2.714430e-18},
|
||||
{288, 104, 3, 4, 34, 34, 1, 1.231412, 2.698600e-18},
|
||||
{289, 128, 3, 4, 62, 62, 1, 1.231412, 2.590140e-18},
|
||||
{290, 120, 3, 4, 52, 52, 1, 1.231412, 2.486040e-18},
|
||||
{291, 108, 3, 4, 34, 34, 1, 1.231412, 2.397060e-18},
|
||||
{292, 128, 3, 4, 60, 60, 1, 1.231412, 2.122380e-18},
|
||||
{293, 104, 3, 4, 32, 72, 1, 1.231412, 1.744360e-18},
|
||||
{294, 116, 3, 4, 44, 44, 1, 1.231412, 1.711600e-18},
|
||||
{295, 124, 3, 4, 50, 50, 1, 1.231412, 1.649820e-18},
|
||||
{296, 128, 3, 4, 58, 58, 1, 1.231412, 1.529130e-18},
|
||||
{297, 108, 3, 4, 32, 76, 1, 1.231412, 1.506960e-18},
|
||||
{298, 100, 3, 4, 28, 28, 1, 1.231412, 1.397890e-18},
|
||||
{299, 120, 3, 4, 50, 50, 1, 1.231412, 1.362180e-18},
|
||||
{300, 116, 3, 4, 42, 74, 1, 1.231412, 1.358390e-18},
|
||||
{301, 112, 3, 4, 38, 38, 1, 1.231412, 1.357210e-18},
|
||||
{302, 128, 3, 4, 56, 56, 1, 1.231412, 9.742990e-19},
|
||||
{303, 112, 3, 4, 36, 76, 1, 1.231412, 9.147070e-19},
|
||||
{304, 104, 3, 4, 32, 32, 1, 1.231412, 8.721800e-19},
|
||||
{305, 108, 3, 4, 32, 32, 1, 1.231412, 7.534800e-19},
|
||||
{306, 124, 3, 4, 48, 48, 1, 1.273354, 7.478050e-19},
|
||||
{307, 116, 3, 4, 42, 42, 1, 1.273354, 6.791960e-19},
|
||||
{308, 120, 3, 4, 48, 48, 1, 1.273354, 6.679650e-19},
|
||||
{309, 124, 3, 4, 46, 78, 1, 1.273354, 6.204930e-19},
|
||||
{310, 120, 3, 4, 46, 74, 1, 1.273354, 5.926870e-19},
|
||||
{311, 128, 3, 4, 54, 54, 1, 1.273354, 5.530780e-19},
|
||||
{312, 104, 3, 4, 30, 74, 1, 1.273354, 5.388680e-19},
|
||||
{313, 116, 3, 4, 40, 76, 1, 1.273354, 4.990110e-19},
|
||||
{314, 112, 3, 4, 36, 36, 1, 1.273354, 4.573530e-19},
|
||||
{315, 108, 3, 4, 30, 78, 1, 1.273354, 4.570100e-19},
|
||||
{316, 124, 3, 4, 46, 46, 1, 1.273354, 3.102460e-19},
|
||||
{317, 120, 3, 4, 46, 46, 1, 1.273354, 2.963440e-19},
|
||||
{318, 112, 3, 4, 34, 78, 1, 1.273354, 2.927770e-19},
|
||||
{319, 128, 3, 4, 52, 52, 1, 1.273354, 2.821290e-19},
|
||||
{320, 104, 3, 4, 30, 30, 1, 1.273354, 2.694340e-19},
|
||||
{321, 116, 3, 4, 40, 40, 1, 1.273354, 2.495060e-19},
|
||||
{322, 120, 3, 4, 44, 76, 1, 1.273354, 2.405750e-19},
|
||||
{323, 124, 3, 4, 44, 80, 1, 1.273354, 2.381080e-19},
|
||||
{324, 108, 3, 4, 30, 30, 1, 1.273354, 2.285050e-19},
|
||||
{325, 116, 3, 4, 38, 78, 1, 1.273354, 1.717170e-19},
|
||||
{326, 104, 3, 4, 28, 76, 1, 1.273354, 1.613020e-19},
|
||||
{327, 112, 3, 4, 34, 34, 1, 1.273354, 1.463890e-19},
|
||||
{328, 128, 3, 4, 50, 50, 1, 1.273354, 1.305320e-19},
|
||||
{329, 120, 3, 4, 44, 44, 1, 1.273354, 1.202870e-19},
|
||||
{330, 124, 3, 4, 44, 44, 1, 1.273354, 1.190540e-19},
|
||||
{331, 128, 3, 4, 48, 80, 1, 1.307736, 1.106170e-19},
|
||||
{332, 120, 3, 4, 42, 78, 1, 1.307736, 9.035000e-20},
|
||||
{333, 112, 3, 4, 32, 80, 1, 1.307736, 9.008150e-20},
|
||||
{334, 116, 3, 4, 38, 38, 1, 1.307736, 8.585840e-20},
|
||||
{335, 124, 3, 4, 42, 82, 1, 1.307736, 8.539640e-20},
|
||||
{336, 104, 3, 4, 28, 28, 1, 1.307736, 8.065090e-20},
|
||||
{337, 116, 3, 4, 36, 80, 1, 1.307736, 5.599310e-20},
|
||||
{338, 128, 3, 4, 48, 48, 1, 1.307736, 5.530870e-20},
|
||||
{339, 120, 3, 4, 42, 42, 1, 1.307736, 4.517500e-20},
|
||||
{340, 112, 3, 4, 32, 32, 1, 1.307736, 4.504080e-20},
|
||||
{341, 128, 3, 4, 46, 82, 1, 1.307736, 4.334810e-20},
|
||||
{342, 124, 3, 4, 42, 42, 1, 1.307736, 4.269820e-20},
|
||||
{343, 120, 3, 4, 40, 80, 1, 1.307736, 3.174430e-20},
|
||||
{344, 124, 3, 4, 40, 84, 1, 1.307736, 2.891760e-20},
|
||||
{345, 116, 3, 4, 36, 36, 1, 1.307736, 2.799660e-20},
|
||||
{346, 112, 3, 4, 30, 82, 1, 1.307736, 2.695640e-20},
|
||||
{347, 128, 3, 4, 46, 46, 1, 1.307736, 2.167410e-20},
|
||||
{348, 116, 3, 4, 34, 82, 1, 1.307736, 1.749650e-20},
|
||||
{349, 120, 3, 4, 40, 40, 1, 1.307736, 1.587220e-20},
|
||||
{350, 128, 3, 4, 44, 84, 1, 1.307736, 1.586440e-20},
|
||||
{351, 124, 3, 4, 40, 40, 1, 1.307736, 1.445880e-20},
|
||||
{352, 112, 3, 4, 30, 30, 1, 1.307736, 1.347820e-20},
|
||||
{353, 120, 3, 4, 38, 82, 1, 1.307736, 1.054790e-20},
|
||||
{354, 124, 3, 4, 38, 86, 1, 1.307736, 9.338320e-21},
|
||||
{355, 116, 3, 4, 34, 34, 1, 1.345734, 8.748240e-21},
|
||||
{356, 128, 3, 4, 44, 44, 1, 1.345734, 7.932220e-21},
|
||||
{357, 128, 3, 4, 42, 86, 1, 1.345734, 5.474680e-21},
|
||||
{358, 116, 3, 4, 32, 84, 1, 1.345734, 5.297010e-21},
|
||||
{359, 120, 3, 4, 38, 38, 1, 1.345734, 5.273960e-21},
|
||||
{360, 124, 3, 4, 38, 38, 1, 1.345734, 4.669160e-21},
|
||||
{361, 120, 3, 4, 36, 84, 1, 1.345734, 3.349800e-21},
|
||||
{362, 124, 3, 4, 36, 88, 1, 1.345734, 2.903950e-21},
|
||||
{363, 128, 3, 4, 42, 42, 1, 1.345734, 2.737340e-21},
|
||||
{364, 116, 3, 4, 32, 32, 1, 1.345734, 2.648510e-21},
|
||||
{365, 128, 3, 4, 40, 88, 1, 1.345734, 1.798290e-21},
|
||||
{366, 120, 3, 4, 36, 36, 1, 1.345734, 1.674900e-21},
|
||||
{367, 124, 3, 4, 36, 36, 1, 1.345734, 1.451970e-21},
|
||||
{368, 120, 3, 4, 34, 86, 1, 1.345734, 1.027330e-21},
|
||||
{369, 128, 3, 4, 40, 40, 1, 1.345734, 8.991430e-22},
|
||||
{370, 124, 3, 4, 34, 90, 1, 1.345734, 8.779540e-22},
|
||||
{371, 128, 3, 4, 38, 90, 1, 1.345734, 5.674390e-22},
|
||||
{372, 120, 3, 4, 34, 34, 1, 1.345734, 5.136640e-22},
|
||||
{373, 124, 3, 4, 34, 34, 1, 1.345734, 4.389770e-22},
|
||||
{374, 120, 3, 4, 32, 88, 1, 1.345734, 3.073590e-22},
|
||||
{375, 128, 3, 4, 38, 38, 1, 1.345734, 2.837200e-22},
|
||||
{376, 128, 3, 4, 36, 92, 1, 1.345734, 1.735640e-22},
|
||||
{377, 120, 3, 4, 32, 32, 1, 1.345734, 1.536800e-22},
|
||||
{378, 128, 3, 4, 36, 36, 1, 1.345734, 8.678180e-23},
|
||||
{379, 128, 3, 4, 34, 94, 1, 1.345734, 5.192020e-23},
|
||||
{380, 128, 3, 4, 34, 34, 1, 1.345734, 2.600000e-23},
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
// Table is difficulty table slice
|
||||
var Table = []difficulty{
|
||||
{0, 32, 3, 4, 8, 24, 2, 0.329111, 3.077970e-05},
|
||||
{1, 36, 3, 4, 9, 27, 2, 0.329111, 3.077970e-05},
|
||||
{2, 40, 3, 4, 10, 30, 2, 0.329111, 2.023220e-05},
|
||||
{3, 44, 3, 4, 11, 33, 1, 0.329111, 9.684650e-06},
|
||||
{4, 48, 3, 4, 12, 36, 1, 0.329111, 6.784080e-06},
|
||||
{5, 52, 3, 4, 13, 39, 2, 0.329111, 4.830240e-06},
|
||||
{6, 56, 3, 4, 14, 42, 2, 0.369449, 3.125970e-06},
|
||||
{7, 60, 3, 4, 15, 45, 1, 0.369449, 2.862890e-06},
|
||||
{8, 64, 3, 4, 16, 48, 2, 0.369449, 1.637790e-06},
|
||||
{9, 68, 3, 4, 17, 51, 1, 0.369449, 1.421700e-06},
|
||||
{10, 72, 3, 4, 18, 54, 1, 0.369449, 1.051350e-06},
|
||||
{11, 76, 3, 4, 19, 57, 2, 0.411046, 1.029740e-06},
|
||||
{12, 80, 3, 4, 20, 60, 2, 0.411046, 7.570880e-07},
|
||||
{13, 84, 3, 4, 21, 63, 1, 0.411046, 4.865630e-07},
|
||||
{14, 88, 3, 4, 22, 66, 2, 0.411046, 4.813320e-07},
|
||||
{15, 92, 3, 4, 23, 69, 1, 0.411046, 4.216920e-07},
|
||||
{16, 96, 3, 4, 24, 72, 1, 0.411046, 3.350070e-07},
|
||||
{17, 100, 3, 4, 25, 75, 2, 0.452453, 2.677070e-07},
|
||||
{18, 104, 3, 4, 26, 78, 1, 0.452453, 2.055750e-07},
|
||||
{19, 108, 3, 4, 27, 81, 1, 0.452453, 1.788400e-07},
|
||||
{20, 112, 3, 4, 28, 84, 2, 0.452453, 1.664080e-07},
|
||||
{21, 116, 3, 4, 29, 87, 1, 0.452453, 1.583110e-07},
|
||||
{22, 120, 3, 4, 30, 90, 1, 0.452453, 7.917230e-08},
|
||||
{23, 124, 3, 4, 31, 93, 1, 0.498513, 7.103820e-08},
|
||||
{24, 128, 3, 4, 32, 96, 1, 0.498513, 6.510890e-08},
|
||||
{25, 132, 3, 4, 33, 99, 1, 0.498513, 5.300760e-08},
|
||||
{26, 136, 3, 4, 34, 102, 2, 0.498513, 4.266600e-08},
|
||||
{27, 140, 3, 4, 35, 105, 1, 0.498513, 2.990510e-08},
|
||||
{28, 144, 3, 4, 36, 108, 1, 0.498513, 2.927380e-08},
|
||||
{29, 148, 3, 4, 37, 111, 2, 0.498513, 2.626790e-08},
|
||||
{30, 152, 3, 4, 38, 114, 2, 0.498513, 1.485240e-08},
|
||||
{31, 156, 3, 4, 39, 117, 1, 0.546238, 1.267290e-08},
|
||||
{32, 160, 3, 4, 40, 120, 1, 0.546238, 9.891110e-09},
|
||||
{33, 164, 3, 4, 41, 123, 2, 0.546238, 9.019200e-09},
|
||||
{34, 168, 3, 4, 42, 126, 1, 0.546238, 8.762650e-09},
|
||||
{35, 172, 3, 4, 43, 129, 1, 0.546238, 8.213140e-09},
|
||||
{36, 176, 3, 4, 44, 132, 2, 0.546238, 6.658250e-09},
|
||||
{37, 180, 3, 4, 45, 135, 1, 0.546238, 4.856960e-09},
|
||||
{38, 184, 3, 4, 46, 138, 1, 0.546238, 4.381330e-09},
|
||||
{39, 188, 3, 4, 47, 141, 2, 0.546238, 4.068000e-09},
|
||||
{40, 192, 3, 4, 48, 144, 1, 0.546238, 3.186040e-09},
|
||||
{41, 196, 3, 4, 49, 147, 1, 0.578290, 2.725470e-09},
|
||||
{42, 200, 3, 4, 50, 150, 2, 0.578290, 2.410890e-09},
|
||||
{43, 204, 3, 4, 51, 153, 1, 0.578290, 2.181360e-09},
|
||||
{44, 208, 3, 4, 52, 156, 1, 0.578290, 1.737940e-09},
|
||||
{45, 212, 3, 4, 53, 159, 1, 0.578290, 1.595330e-09},
|
||||
{46, 216, 3, 4, 54, 162, 1, 0.578290, 1.481830e-09},
|
||||
{47, 220, 3, 4, 55, 165, 2, 0.578290, 1.454780e-09},
|
||||
{48, 224, 3, 4, 56, 168, 1, 0.578290, 1.250550e-09},
|
||||
{49, 228, 3, 4, 57, 171, 1, 0.578290, 8.614860e-10},
|
||||
{50, 232, 3, 4, 58, 174, 1, 0.578290, 7.976650e-10},
|
||||
{51, 236, 3, 4, 59, 177, 1, 0.628015, 7.700380e-10},
|
||||
{52, 240, 3, 4, 60, 180, 1, 0.628015, 6.978800e-10},
|
||||
{53, 244, 3, 4, 61, 183, 1, 0.628015, 5.069080e-10},
|
||||
{54, 248, 3, 4, 62, 186, 1, 0.628015, 4.986660e-10},
|
||||
{55, 252, 3, 4, 63, 189, 1, 0.628015, 4.315180e-10},
|
||||
{56, 256, 3, 4, 64, 192, 2, 0.628015, 3.848530e-10},
|
||||
}*/
|
||||
|
||||
Loading…
Reference in a new issue