Initial commit: Go 1.23 release state
This commit is contained in:
634
test/ken/modconst.go
Normal file
634
test/ken/modconst.go
Normal file
@@ -0,0 +1,634 @@
|
||||
// run
|
||||
|
||||
// Copyright 2009 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Test integer modulus by constants.
|
||||
|
||||
package main
|
||||
|
||||
import "math/rand"
|
||||
|
||||
const Count = 1e5
|
||||
|
||||
func i64rand() int64 {
|
||||
for {
|
||||
a := int64(rand.Uint32())
|
||||
a = (a << 32) | int64(rand.Uint32())
|
||||
a >>= uint(rand.Intn(64))
|
||||
if -a != a {
|
||||
return a
|
||||
}
|
||||
}
|
||||
return 0 // impossible
|
||||
}
|
||||
|
||||
func i64test(a, b, c int64) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("i64", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func i64run() {
|
||||
var a, b int64
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = i64rand()
|
||||
|
||||
b = a % 1
|
||||
i64test(a, b, 1)
|
||||
b = a % 2
|
||||
i64test(a, b, 2)
|
||||
b = a % 3
|
||||
i64test(a, b, 3)
|
||||
b = a % 4
|
||||
i64test(a, b, 4)
|
||||
b = a % 5
|
||||
i64test(a, b, 5)
|
||||
b = a % 6
|
||||
i64test(a, b, 6)
|
||||
b = a % 7
|
||||
i64test(a, b, 7)
|
||||
b = a % 8
|
||||
i64test(a, b, 8)
|
||||
b = a % 10
|
||||
i64test(a, b, 10)
|
||||
b = a % 16
|
||||
i64test(a, b, 16)
|
||||
b = a % 20
|
||||
i64test(a, b, 20)
|
||||
b = a % 32
|
||||
i64test(a, b, 32)
|
||||
b = a % 60
|
||||
i64test(a, b, 60)
|
||||
b = a % 64
|
||||
i64test(a, b, 64)
|
||||
b = a % 128
|
||||
i64test(a, b, 128)
|
||||
b = a % 256
|
||||
i64test(a, b, 256)
|
||||
b = a % 16384
|
||||
i64test(a, b, 16384)
|
||||
|
||||
b = a % -1
|
||||
i64test(a, b, -1)
|
||||
b = a % -2
|
||||
i64test(a, b, -2)
|
||||
b = a % -3
|
||||
i64test(a, b, -3)
|
||||
b = a % -4
|
||||
i64test(a, b, -4)
|
||||
b = a % -5
|
||||
i64test(a, b, -5)
|
||||
b = a % -6
|
||||
i64test(a, b, -6)
|
||||
b = a % -7
|
||||
i64test(a, b, -7)
|
||||
b = a % -8
|
||||
i64test(a, b, -8)
|
||||
b = a % -10
|
||||
i64test(a, b, -10)
|
||||
b = a % -16
|
||||
i64test(a, b, -16)
|
||||
b = a % -20
|
||||
i64test(a, b, -20)
|
||||
b = a % -32
|
||||
i64test(a, b, -32)
|
||||
b = a % -60
|
||||
i64test(a, b, -60)
|
||||
b = a % -64
|
||||
i64test(a, b, -64)
|
||||
b = a % -128
|
||||
i64test(a, b, -128)
|
||||
b = a % -256
|
||||
i64test(a, b, -256)
|
||||
b = a % -16384
|
||||
i64test(a, b, -16384)
|
||||
}
|
||||
}
|
||||
|
||||
func u64rand() uint64 {
|
||||
a := uint64(rand.Uint32())
|
||||
a = (a << 32) | uint64(rand.Uint32())
|
||||
a >>= uint(rand.Intn(64))
|
||||
return a
|
||||
}
|
||||
|
||||
func u64test(a, b, c uint64) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("u64", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func u64run() {
|
||||
var a, b uint64
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = u64rand()
|
||||
|
||||
b = a % 1
|
||||
u64test(a, b, 1)
|
||||
b = a % 2
|
||||
u64test(a, b, 2)
|
||||
b = a % 3
|
||||
u64test(a, b, 3)
|
||||
b = a % 4
|
||||
u64test(a, b, 4)
|
||||
b = a % 5
|
||||
u64test(a, b, 5)
|
||||
b = a % 6
|
||||
u64test(a, b, 6)
|
||||
b = a % 7
|
||||
u64test(a, b, 7)
|
||||
b = a % 8
|
||||
u64test(a, b, 8)
|
||||
b = a % 10
|
||||
u64test(a, b, 10)
|
||||
b = a % 16
|
||||
u64test(a, b, 16)
|
||||
b = a % 20
|
||||
u64test(a, b, 20)
|
||||
b = a % 32
|
||||
u64test(a, b, 32)
|
||||
b = a % 60
|
||||
u64test(a, b, 60)
|
||||
b = a % 64
|
||||
u64test(a, b, 64)
|
||||
b = a % 128
|
||||
u64test(a, b, 128)
|
||||
b = a % 256
|
||||
u64test(a, b, 256)
|
||||
b = a % 16384
|
||||
u64test(a, b, 16384)
|
||||
}
|
||||
}
|
||||
|
||||
func i32rand() int32 {
|
||||
for {
|
||||
a := int32(rand.Uint32())
|
||||
a >>= uint(rand.Intn(32))
|
||||
if -a != a {
|
||||
return a
|
||||
}
|
||||
}
|
||||
return 0 // impossible
|
||||
}
|
||||
|
||||
func i32test(a, b, c int32) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("i32", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func i32run() {
|
||||
var a, b int32
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = i32rand()
|
||||
|
||||
b = a % 1
|
||||
i32test(a, b, 1)
|
||||
b = a % 2
|
||||
i32test(a, b, 2)
|
||||
b = a % 3
|
||||
i32test(a, b, 3)
|
||||
b = a % 4
|
||||
i32test(a, b, 4)
|
||||
b = a % 5
|
||||
i32test(a, b, 5)
|
||||
b = a % 6
|
||||
i32test(a, b, 6)
|
||||
b = a % 7
|
||||
i32test(a, b, 7)
|
||||
b = a % 8
|
||||
i32test(a, b, 8)
|
||||
b = a % 10
|
||||
i32test(a, b, 10)
|
||||
b = a % 16
|
||||
i32test(a, b, 16)
|
||||
b = a % 20
|
||||
i32test(a, b, 20)
|
||||
b = a % 32
|
||||
i32test(a, b, 32)
|
||||
b = a % 60
|
||||
i32test(a, b, 60)
|
||||
b = a % 64
|
||||
i32test(a, b, 64)
|
||||
b = a % 128
|
||||
i32test(a, b, 128)
|
||||
b = a % 256
|
||||
i32test(a, b, 256)
|
||||
b = a % 16384
|
||||
i32test(a, b, 16384)
|
||||
|
||||
b = a % -1
|
||||
i32test(a, b, -1)
|
||||
b = a % -2
|
||||
i32test(a, b, -2)
|
||||
b = a % -3
|
||||
i32test(a, b, -3)
|
||||
b = a % -4
|
||||
i32test(a, b, -4)
|
||||
b = a % -5
|
||||
i32test(a, b, -5)
|
||||
b = a % -6
|
||||
i32test(a, b, -6)
|
||||
b = a % -7
|
||||
i32test(a, b, -7)
|
||||
b = a % -8
|
||||
i32test(a, b, -8)
|
||||
b = a % -10
|
||||
i32test(a, b, -10)
|
||||
b = a % -16
|
||||
i32test(a, b, -16)
|
||||
b = a % -20
|
||||
i32test(a, b, -20)
|
||||
b = a % -32
|
||||
i32test(a, b, -32)
|
||||
b = a % -60
|
||||
i32test(a, b, -60)
|
||||
b = a % -64
|
||||
i32test(a, b, -64)
|
||||
b = a % -128
|
||||
i32test(a, b, -128)
|
||||
b = a % -256
|
||||
i32test(a, b, -256)
|
||||
}
|
||||
}
|
||||
|
||||
func u32rand() uint32 {
|
||||
a := uint32(rand.Uint32())
|
||||
a >>= uint(rand.Intn(32))
|
||||
return a
|
||||
}
|
||||
|
||||
func u32test(a, b, c uint32) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("u32", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func u32run() {
|
||||
var a, b uint32
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = u32rand()
|
||||
|
||||
b = a % 1
|
||||
u32test(a, b, 1)
|
||||
b = a % 2
|
||||
u32test(a, b, 2)
|
||||
b = a % 3
|
||||
u32test(a, b, 3)
|
||||
b = a % 4
|
||||
u32test(a, b, 4)
|
||||
b = a % 5
|
||||
u32test(a, b, 5)
|
||||
b = a % 6
|
||||
u32test(a, b, 6)
|
||||
b = a % 7
|
||||
u32test(a, b, 7)
|
||||
b = a % 8
|
||||
u32test(a, b, 8)
|
||||
b = a % 10
|
||||
u32test(a, b, 10)
|
||||
b = a % 16
|
||||
u32test(a, b, 16)
|
||||
b = a % 20
|
||||
u32test(a, b, 20)
|
||||
b = a % 32
|
||||
u32test(a, b, 32)
|
||||
b = a % 60
|
||||
u32test(a, b, 60)
|
||||
b = a % 64
|
||||
u32test(a, b, 64)
|
||||
b = a % 128
|
||||
u32test(a, b, 128)
|
||||
b = a % 256
|
||||
u32test(a, b, 256)
|
||||
b = a % 16384
|
||||
u32test(a, b, 16384)
|
||||
}
|
||||
}
|
||||
|
||||
func i16rand() int16 {
|
||||
for {
|
||||
a := int16(rand.Uint32())
|
||||
a >>= uint(rand.Intn(16))
|
||||
if -a != a {
|
||||
return a
|
||||
}
|
||||
}
|
||||
return 0 // impossible
|
||||
}
|
||||
|
||||
func i16test(a, b, c int16) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("i16", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func i16run() {
|
||||
var a, b int16
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = i16rand()
|
||||
|
||||
b = a % 1
|
||||
i16test(a, b, 1)
|
||||
b = a % 2
|
||||
i16test(a, b, 2)
|
||||
b = a % 3
|
||||
i16test(a, b, 3)
|
||||
b = a % 4
|
||||
i16test(a, b, 4)
|
||||
b = a % 5
|
||||
i16test(a, b, 5)
|
||||
b = a % 6
|
||||
i16test(a, b, 6)
|
||||
b = a % 7
|
||||
i16test(a, b, 7)
|
||||
b = a % 8
|
||||
i16test(a, b, 8)
|
||||
b = a % 10
|
||||
i16test(a, b, 10)
|
||||
b = a % 16
|
||||
i16test(a, b, 16)
|
||||
b = a % 20
|
||||
i16test(a, b, 20)
|
||||
b = a % 32
|
||||
i16test(a, b, 32)
|
||||
b = a % 60
|
||||
i16test(a, b, 60)
|
||||
b = a % 64
|
||||
i16test(a, b, 64)
|
||||
b = a % 128
|
||||
i16test(a, b, 128)
|
||||
b = a % 256
|
||||
i16test(a, b, 256)
|
||||
b = a % 16384
|
||||
i16test(a, b, 16384)
|
||||
|
||||
b = a % -1
|
||||
i16test(a, b, -1)
|
||||
b = a % -2
|
||||
i16test(a, b, -2)
|
||||
b = a % -3
|
||||
i16test(a, b, -3)
|
||||
b = a % -4
|
||||
i16test(a, b, -4)
|
||||
b = a % -5
|
||||
i16test(a, b, -5)
|
||||
b = a % -6
|
||||
i16test(a, b, -6)
|
||||
b = a % -7
|
||||
i16test(a, b, -7)
|
||||
b = a % -8
|
||||
i16test(a, b, -8)
|
||||
b = a % -10
|
||||
i16test(a, b, -10)
|
||||
b = a % -16
|
||||
i16test(a, b, -16)
|
||||
b = a % -20
|
||||
i16test(a, b, -20)
|
||||
b = a % -32
|
||||
i16test(a, b, -32)
|
||||
b = a % -60
|
||||
i16test(a, b, -60)
|
||||
b = a % -64
|
||||
i16test(a, b, -64)
|
||||
b = a % -128
|
||||
i16test(a, b, -128)
|
||||
b = a % -256
|
||||
i16test(a, b, -256)
|
||||
b = a % -16384
|
||||
i16test(a, b, -16384)
|
||||
}
|
||||
}
|
||||
|
||||
func u16rand() uint16 {
|
||||
a := uint16(rand.Uint32())
|
||||
a >>= uint(rand.Intn(16))
|
||||
return a
|
||||
}
|
||||
|
||||
func u16test(a, b, c uint16) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("u16", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func u16run() {
|
||||
var a, b uint16
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = u16rand()
|
||||
|
||||
b = a % 1
|
||||
u16test(a, b, 1)
|
||||
b = a % 2
|
||||
u16test(a, b, 2)
|
||||
b = a % 3
|
||||
u16test(a, b, 3)
|
||||
b = a % 4
|
||||
u16test(a, b, 4)
|
||||
b = a % 5
|
||||
u16test(a, b, 5)
|
||||
b = a % 6
|
||||
u16test(a, b, 6)
|
||||
b = a % 7
|
||||
u16test(a, b, 7)
|
||||
b = a % 8
|
||||
u16test(a, b, 8)
|
||||
b = a % 10
|
||||
u16test(a, b, 10)
|
||||
b = a % 16
|
||||
u16test(a, b, 16)
|
||||
b = a % 20
|
||||
u16test(a, b, 20)
|
||||
b = a % 32
|
||||
u16test(a, b, 32)
|
||||
b = a % 60
|
||||
u16test(a, b, 60)
|
||||
b = a % 64
|
||||
u16test(a, b, 64)
|
||||
b = a % 128
|
||||
u16test(a, b, 128)
|
||||
b = a % 256
|
||||
u16test(a, b, 256)
|
||||
b = a % 16384
|
||||
u16test(a, b, 16384)
|
||||
}
|
||||
}
|
||||
|
||||
func i8rand() int8 {
|
||||
for {
|
||||
a := int8(rand.Uint32())
|
||||
a >>= uint(rand.Intn(8))
|
||||
if -a != a {
|
||||
return a
|
||||
}
|
||||
}
|
||||
return 0 // impossible
|
||||
}
|
||||
|
||||
func i8test(a, b, c int8) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("i8", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func i8run() {
|
||||
var a, b int8
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = i8rand()
|
||||
|
||||
b = a % 1
|
||||
i8test(a, b, 1)
|
||||
b = a % 2
|
||||
i8test(a, b, 2)
|
||||
b = a % 3
|
||||
i8test(a, b, 3)
|
||||
b = a % 4
|
||||
i8test(a, b, 4)
|
||||
b = a % 5
|
||||
i8test(a, b, 5)
|
||||
b = a % 6
|
||||
i8test(a, b, 6)
|
||||
b = a % 7
|
||||
i8test(a, b, 7)
|
||||
b = a % 8
|
||||
i8test(a, b, 8)
|
||||
b = a % 10
|
||||
i8test(a, b, 10)
|
||||
b = a % 8
|
||||
i8test(a, b, 8)
|
||||
b = a % 20
|
||||
i8test(a, b, 20)
|
||||
b = a % 32
|
||||
i8test(a, b, 32)
|
||||
b = a % 60
|
||||
i8test(a, b, 60)
|
||||
b = a % 64
|
||||
i8test(a, b, 64)
|
||||
b = a % 127
|
||||
i8test(a, b, 127)
|
||||
|
||||
b = a % -1
|
||||
i8test(a, b, -1)
|
||||
b = a % -2
|
||||
i8test(a, b, -2)
|
||||
b = a % -3
|
||||
i8test(a, b, -3)
|
||||
b = a % -4
|
||||
i8test(a, b, -4)
|
||||
b = a % -5
|
||||
i8test(a, b, -5)
|
||||
b = a % -6
|
||||
i8test(a, b, -6)
|
||||
b = a % -7
|
||||
i8test(a, b, -7)
|
||||
b = a % -8
|
||||
i8test(a, b, -8)
|
||||
b = a % -10
|
||||
i8test(a, b, -10)
|
||||
b = a % -8
|
||||
i8test(a, b, -8)
|
||||
b = a % -20
|
||||
i8test(a, b, -20)
|
||||
b = a % -32
|
||||
i8test(a, b, -32)
|
||||
b = a % -60
|
||||
i8test(a, b, -60)
|
||||
b = a % -64
|
||||
i8test(a, b, -64)
|
||||
b = a % -128
|
||||
i8test(a, b, -128)
|
||||
b = a % -101
|
||||
i8test(a, b, -101)
|
||||
}
|
||||
}
|
||||
|
||||
func u8rand() uint8 {
|
||||
a := uint8(rand.Uint32())
|
||||
a >>= uint(rand.Intn(8))
|
||||
return a
|
||||
}
|
||||
|
||||
func u8test(a, b, c uint8) {
|
||||
d := a % c
|
||||
if d != b {
|
||||
println("u8", a, b, c, d)
|
||||
panic("fail")
|
||||
}
|
||||
}
|
||||
|
||||
func u8run() {
|
||||
var a, b uint8
|
||||
|
||||
for i := 0; i < Count; i++ {
|
||||
a = u8rand()
|
||||
|
||||
b = a % 1
|
||||
u8test(a, b, 1)
|
||||
b = a % 2
|
||||
u8test(a, b, 2)
|
||||
b = a % 3
|
||||
u8test(a, b, 3)
|
||||
b = a % 4
|
||||
u8test(a, b, 4)
|
||||
b = a % 5
|
||||
u8test(a, b, 5)
|
||||
b = a % 6
|
||||
u8test(a, b, 6)
|
||||
b = a % 7
|
||||
u8test(a, b, 7)
|
||||
b = a % 8
|
||||
u8test(a, b, 8)
|
||||
b = a % 10
|
||||
u8test(a, b, 10)
|
||||
b = a % 8
|
||||
u8test(a, b, 8)
|
||||
b = a % 20
|
||||
u8test(a, b, 20)
|
||||
b = a % 32
|
||||
u8test(a, b, 32)
|
||||
b = a % 60
|
||||
u8test(a, b, 60)
|
||||
b = a % 64
|
||||
u8test(a, b, 64)
|
||||
b = a % 127
|
||||
u8test(a, b, 127)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
xtest()
|
||||
i64run()
|
||||
u64run()
|
||||
i32run()
|
||||
u32run()
|
||||
i16run()
|
||||
u16run()
|
||||
i8run()
|
||||
u8run()
|
||||
}
|
||||
|
||||
func xtest() {
|
||||
}
|
||||
Reference in New Issue
Block a user