is this even right?

This commit is contained in:
brent s. 2021-05-23 04:49:08 -04:00
parent a31d50359a
commit 4eb554aa38
Signed by: bts
GPG Key ID: 8C004C2F93481F6B
3 changed files with 53 additions and 8 deletions

1
dh/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
moduli.c

View File

@ -30,11 +30,3 @@ const (

var (
)

// Bit* functions operate on 32-bit words
func BitClear(a []uint32, n uint32) (i uint32) {

i = a[n >> ShiftWord] &= ~(uint32(1) << (n & 31))

return
}

52
dh/func_utils.go Normal file
View File

@ -0,0 +1,52 @@
package dh

func bitShiftWord(a []uint32, n uint32) (i uint32) {

i = a[n>>ShiftWord]

return
}

// Bit* functions operate on 32-bit words
func BitClear(a []uint32, n uint32) (i uint32) {

/*
#define BIT_CLEAR(a,n) ((a)[(n)>>SHIFT_WORD] &= ~(1L << ((n) & 31)))
*/

var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)
var z uint32 = ^y

i = x & z

return
}

func BitSet(a []uint32, n uint32) (i uint32) {

/*
#define BIT_SET(a,n) ((a)[(n)>>SHIFT_WORD] |= (1L << ((n) & 31)))
*/

var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)

i = x | y

return
}

func BitTest(a []uint32, n uint32) (i uint32) {

/*
#define BIT_TEST(a,n) ((a)[(n)>>SHIFT_WORD] & (1L << ((n) & 31)))
*/

var x uint32 = bitShiftWord(a, n)
var y uint32 = uint32(1) << (n & 31)

i = x & y

return
}