]> Cypherpunks.ru repositories - gostls13.git/blob - test/divide.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / divide.go
1 // run
2
3 // Copyright 2011 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 // Test divide corner cases.
8
9 package main
10
11 import "fmt"
12
13 func f8(x, y, q, r int8) {
14         if t := x / y; t != q {
15                 fmt.Printf("%d/%d = %d, want %d\n", x, y, t, q)
16                 panic("divide")
17         }
18         if t := x % y; t != r {
19                 fmt.Printf("%d%%%d = %d, want %d\n", x, y, t, r)
20                 panic("divide")
21         }
22 }
23
24 func f16(x, y, q, r int16) {
25         if t := x / y; t != q {
26                 fmt.Printf("%d/%d = %d, want %d\n", x, y, t, q)
27                 panic("divide")
28         }
29         if t := x % y; t != r {
30                 fmt.Printf("%d%%%d = %d, want %d\n", x, y, t, r)
31                 panic("divide")
32         }
33 }
34
35 func f32(x, y, q, r int32) {
36         if t := x / y; t != q {
37                 fmt.Printf("%d/%d = %d, want %d\n", x, y, t, q)
38                 panic("divide")
39         }
40         if t := x % y; t != r {
41                 fmt.Printf("%d%%%d = %d, want %d\n", x, y, t, r)
42                 panic("divide")
43         }
44 }
45
46 func f64(x, y, q, r int64) {
47         if t := x / y; t != q {
48                 fmt.Printf("%d/%d = %d, want %d\n", x, y, t, q)
49                 panic("divide")
50         }
51         if t := x % y; t != r {
52                 fmt.Printf("%d%%%d = %d, want %d\n", x, y, t, r)
53                 panic("divide")
54         }
55 }
56
57 func main() {
58         f8(-1<<7, -1, -1<<7, 0)
59         f16(-1<<15, -1, -1<<15, 0)
60         f32(-1<<31, -1, -1<<31, 0)
61         f64(-1<<63, -1, -1<<63, 0)
62 }