File: modulo.go

package info (click to toggle)
golang-github-segmentio-asm 1.2.0%2Bgit20231107.1cfacc8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 932 kB
  • sloc: asm: 6,093; makefile: 32
file content (18 lines) | stat: -rw-r--r-- 396 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package internal

func MultipleOf(size, n int) bool {
	return (isPowTwo(size) && modPowTwo(n, size) == 0) || n%size == 0
}

func PairMultipleOf(size, n, m int) bool {
	return (isPowTwo(size) && modPowTwo(n, size) == 0 && modPowTwo(m, size) == 0) ||
		(n%size == 0 && m%size == 0)
}

func isPowTwo(n int) bool {
	return modPowTwo(n, n) == 0
}

func modPowTwo(n, m int) int {
	return n & (m - 1)
}