| | |
| | |
| | |
| |
|
| | package bits_test |
| |
|
| | import ( |
| | "fmt" |
| | "math/bits" |
| | ) |
| |
|
| | func ExampleAdd32() { |
| | |
| | n1 := []uint32{33, 12} |
| | |
| | n2 := []uint32{21, 23} |
| | |
| | d1, carry := bits.Add32(n1[1], n2[1], 0) |
| | d0, _ := bits.Add32(n1[0], n2[0], carry) |
| | nsum := []uint32{d0, d1} |
| | fmt.Printf("%v + %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| |
|
| | |
| | n1 = []uint32{1, 0x80000000} |
| | |
| | n2 = []uint32{1, 0x80000000} |
| | |
| | d1, carry = bits.Add32(n1[1], n2[1], 0) |
| | d0, _ = bits.Add32(n1[0], n2[0], carry) |
| | nsum = []uint32{d0, d1} |
| | fmt.Printf("%v + %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleAdd64() { |
| | |
| | n1 := []uint64{33, 12} |
| | |
| | n2 := []uint64{21, 23} |
| | |
| | d1, carry := bits.Add64(n1[1], n2[1], 0) |
| | d0, _ := bits.Add64(n1[0], n2[0], carry) |
| | nsum := []uint64{d0, d1} |
| | fmt.Printf("%v + %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| |
|
| | |
| | n1 = []uint64{1, 0x8000000000000000} |
| | |
| | n2 = []uint64{1, 0x8000000000000000} |
| | |
| | d1, carry = bits.Add64(n1[1], n2[1], 0) |
| | d0, _ = bits.Add64(n1[0], n2[0], carry) |
| | nsum = []uint64{d0, d1} |
| | fmt.Printf("%v + %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleSub32() { |
| | |
| | n1 := []uint32{33, 23} |
| | |
| | n2 := []uint32{21, 12} |
| | |
| | d1, carry := bits.Sub32(n1[1], n2[1], 0) |
| | d0, _ := bits.Sub32(n1[0], n2[0], carry) |
| | nsum := []uint32{d0, d1} |
| | fmt.Printf("%v - %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| |
|
| | |
| | n1 = []uint32{3, 0x7fffffff} |
| | |
| | n2 = []uint32{1, 0x80000000} |
| | |
| | d1, carry = bits.Sub32(n1[1], n2[1], 0) |
| | d0, _ = bits.Sub32(n1[0], n2[0], carry) |
| | nsum = []uint32{d0, d1} |
| | fmt.Printf("%v - %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleSub64() { |
| | |
| | n1 := []uint64{33, 23} |
| | |
| | n2 := []uint64{21, 12} |
| | |
| | d1, carry := bits.Sub64(n1[1], n2[1], 0) |
| | d0, _ := bits.Sub64(n1[0], n2[0], carry) |
| | nsum := []uint64{d0, d1} |
| | fmt.Printf("%v - %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| |
|
| | |
| | n1 = []uint64{3, 0x7fffffffffffffff} |
| | |
| | n2 = []uint64{1, 0x8000000000000000} |
| | |
| | d1, carry = bits.Sub64(n1[1], n2[1], 0) |
| | d0, _ = bits.Sub64(n1[0], n2[0], carry) |
| | nsum = []uint64{d0, d1} |
| | fmt.Printf("%v - %v = %v (carry bit was %v)\n", n1, n2, nsum, carry) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleMul32() { |
| | |
| | n1 := []uint32{0, 12} |
| | |
| | n2 := []uint32{0, 12} |
| | |
| | hi, lo := bits.Mul32(n1[1], n2[1]) |
| | nsum := []uint32{hi, lo} |
| | fmt.Printf("%v * %v = %v\n", n1[1], n2[1], nsum) |
| |
|
| | |
| | n1 = []uint32{0, 0x80000000} |
| | |
| | n2 = []uint32{0, 2} |
| | |
| | hi, lo = bits.Mul32(n1[1], n2[1]) |
| | nsum = []uint32{hi, lo} |
| | fmt.Printf("%v * %v = %v\n", n1[1], n2[1], nsum) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleMul64() { |
| | |
| | n1 := []uint64{0, 12} |
| | |
| | n2 := []uint64{0, 12} |
| | |
| | hi, lo := bits.Mul64(n1[1], n2[1]) |
| | nsum := []uint64{hi, lo} |
| | fmt.Printf("%v * %v = %v\n", n1[1], n2[1], nsum) |
| |
|
| | |
| | n1 = []uint64{0, 0x8000000000000000} |
| | |
| | n2 = []uint64{0, 2} |
| | |
| | hi, lo = bits.Mul64(n1[1], n2[1]) |
| | nsum = []uint64{hi, lo} |
| | fmt.Printf("%v * %v = %v\n", n1[1], n2[1], nsum) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleDiv32() { |
| | |
| | n1 := []uint32{0, 6} |
| | |
| | n2 := []uint32{0, 3} |
| | |
| | quo, rem := bits.Div32(n1[0], n1[1], n2[1]) |
| | nsum := []uint32{quo, rem} |
| | fmt.Printf("[%v %v] / %v = %v\n", n1[0], n1[1], n2[1], nsum) |
| |
|
| | |
| | n1 = []uint32{2, 0x80000000} |
| | |
| | n2 = []uint32{0, 0x80000000} |
| | |
| | quo, rem = bits.Div32(n1[0], n1[1], n2[1]) |
| | nsum = []uint32{quo, rem} |
| | fmt.Printf("[%v %v] / %v = %v\n", n1[0], n1[1], n2[1], nsum) |
| | |
| | |
| | |
| | } |
| |
|
| | func ExampleDiv64() { |
| | |
| | n1 := []uint64{0, 6} |
| | |
| | n2 := []uint64{0, 3} |
| | |
| | quo, rem := bits.Div64(n1[0], n1[1], n2[1]) |
| | nsum := []uint64{quo, rem} |
| | fmt.Printf("[%v %v] / %v = %v\n", n1[0], n1[1], n2[1], nsum) |
| |
|
| | |
| | n1 = []uint64{2, 0x8000000000000000} |
| | |
| | n2 = []uint64{0, 0x8000000000000000} |
| | |
| | quo, rem = bits.Div64(n1[0], n1[1], n2[1]) |
| | nsum = []uint64{quo, rem} |
| | fmt.Printf("[%v %v] / %v = %v\n", n1[0], n1[1], n2[1], nsum) |
| | |
| | |
| | |
| | } |
| |
|