mirror of
https://github.com/codex-storage/nim-poseidon2.git
synced 2025-02-23 08:18:05 +00:00
Remove if statement at compile time
This commit is contained in:
parent
a311828b9e
commit
cce9c13a04
@ -15,28 +15,28 @@ func merkleRoot(xs: openArray[F], isBottomLayer: static bool) : F =
|
||||
let b = high(xs)
|
||||
let m = b-a+1
|
||||
|
||||
if m==1 and not isBottomLayer:
|
||||
return xs[a]
|
||||
when not isBottomLayer:
|
||||
if m==1:
|
||||
return xs[a]
|
||||
|
||||
let halfn : int = m div 2
|
||||
let n : int = 2*halfn
|
||||
let isOdd : bool = (n != m)
|
||||
|
||||
var ys : seq[F]
|
||||
if not isOdd:
|
||||
ys = newSeq[F](halfn)
|
||||
else:
|
||||
let halfn : int = m div 2
|
||||
let n : int = 2*halfn
|
||||
let isOdd : bool = (n != m)
|
||||
ys = newSeq[F](halfn+1)
|
||||
|
||||
var ys : seq[F]
|
||||
if not isOdd:
|
||||
ys = newSeq[F](halfn)
|
||||
else:
|
||||
ys = newSeq[F](halfn+1)
|
||||
for i in 0..<halfn:
|
||||
const key = when isBottomLayer: KeyBottomLayer else: KeyNone
|
||||
ys[i] = compress( xs[a+2*i], xs[a+2*i+1], key = key )
|
||||
if isOdd:
|
||||
const key = when isBottomLayer: KeyOddAndBottomLayer else: KeyOdd
|
||||
ys[halfn] = compress( xs[n], zero, key = key )
|
||||
|
||||
for i in 0..<halfn:
|
||||
const key = when isBottomLayer: KeyBottomLayer else: KeyNone
|
||||
ys[i] = compress( xs[a+2*i], xs[a+2*i+1], key = key )
|
||||
if isOdd:
|
||||
const key = when isBottomLayer: KeyOddAndBottomLayer else: KeyOdd
|
||||
ys[halfn] = compress( xs[n], zero, key = key )
|
||||
|
||||
return merkleRoot(ys, isBottomLayer = false)
|
||||
return merkleRoot(ys, isBottomLayer = false)
|
||||
|
||||
func merkleRoot*(xs: openArray[F]) : F =
|
||||
merkleRoot(xs, isBottomLayer = true)
|
||||
|
Loading…
x
Reference in New Issue
Block a user