Home | History | Annotate | Download | only in ken
      1 // run
      2 
      3 // Copyright 2009 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 integer division and modulus.
      8 
      9 package main
     10 
     11 const (
     12 	// example from the spec
     13 	n1 = +5
     14 	n2 = -5
     15 	d1 = +3
     16 	d2 = -3
     17 
     18 	q1 = +1
     19 	q2 = -1
     20 	q3 = -1
     21 	q4 = +1
     22 
     23 	r1 = +2
     24 	r2 = -2
     25 	r3 = +2
     26 	r4 = -2
     27 )
     28 
     29 func main() {
     30 	/* ideals */
     31 	if n1/d1 != q1 || n1%d1 != r1 {
     32 		println("ideal-1", n1, d1, n1/d1, n1%d1)
     33 		panic("fail")
     34 	}
     35 	if n2/d1 != q2 || n2%d1 != r2 {
     36 		println("ideal-2", n2, d1, n2/d1, n2%d1)
     37 		panic("fail")
     38 	}
     39 	if n1/d2 != q3 || n1%d2 != r3 {
     40 		println("ideal-3", n1, d2, n1/d2, n1%d2)
     41 		panic("fail")
     42 	}
     43 	if n2/d2 != q4 || n2%d2 != r4 {
     44 		println("ideal-4", n2, d2, n2/d2, n2%d2)
     45 		panic("fail")
     46 	}
     47 
     48 	/* int */
     49 	var in1 int = +5
     50 	var in2 int = -5
     51 	var id1 int = +3
     52 	var id2 int = -3
     53 
     54 	if in1/id1 != q1 || in1%id1 != r1 {
     55 		println("int-1", in1, id1, in1/id1, in1%id1)
     56 		panic("fail")
     57 	}
     58 	if in2/id1 != q2 || in2%id1 != r2 {
     59 		println("int-2", in2, id1, in2/id1, in2%id1)
     60 		panic("fail")
     61 	}
     62 	if in1/id2 != q3 || in1%id2 != r3 {
     63 		println("int-3", in1, id2, in1/id2, in1%id2)
     64 		panic("fail")
     65 	}
     66 	if in2/id2 != q4 || in2%id2 != r4 {
     67 		println("int-4", in2, id2, in2/id2, in2%id2)
     68 		panic("fail")
     69 	}
     70 
     71 	/* int8 */
     72 	var bn1 int8 = +5
     73 	var bn2 int8 = -5
     74 	var bd1 int8 = +3
     75 	var bd2 int8 = -3
     76 
     77 	if bn1/bd1 != q1 || bn1%bd1 != r1 {
     78 		println("int8-1", bn1, bd1, bn1/bd1, bn1%bd1)
     79 		panic("fail")
     80 	}
     81 	if bn2/bd1 != q2 || bn2%bd1 != r2 {
     82 		println("int8-2", bn2, bd1, bn2/bd1, bn2%bd1)
     83 		panic("fail")
     84 	}
     85 	if bn1/bd2 != q3 || bn1%bd2 != r3 {
     86 		println("int8-3", bn1, bd2, bn1/bd2, bn1%bd2)
     87 		panic("fail")
     88 	}
     89 	if bn2/bd2 != q4 || bn2%bd2 != r4 {
     90 		println("int8-4", bn2, bd2, bn2/bd2, bn2%bd2)
     91 		panic("fail")
     92 	}
     93 
     94 	/* int16 */
     95 	var sn1 int16 = +5
     96 	var sn2 int16 = -5
     97 	var sd1 int16 = +3
     98 	var sd2 int16 = -3
     99 
    100 	if sn1/sd1 != q1 || sn1%sd1 != r1 {
    101 		println("int16-1", sn1, sd1, sn1/sd1, sn1%sd1)
    102 		panic("fail")
    103 	}
    104 	if sn2/sd1 != q2 || sn2%sd1 != r2 {
    105 		println("int16-2", sn2, sd1, sn2/sd1, sn2%sd1)
    106 		panic("fail")
    107 	}
    108 	if sn1/sd2 != q3 || sn1%sd2 != r3 {
    109 		println("int16-3", sn1, sd2, sn1/sd2, sn1%sd2)
    110 		panic("fail")
    111 	}
    112 	if sn2/sd2 != q4 || sn2%sd2 != r4 {
    113 		println("int16-4", sn2, sd2, sn2/sd2, sn2%sd2)
    114 		panic("fail")
    115 	}
    116 
    117 	/* int32 */
    118 	var ln1 int32 = +5
    119 	var ln2 int32 = -5
    120 	var ld1 int32 = +3
    121 	var ld2 int32 = -3
    122 
    123 	if ln1/ld1 != q1 || ln1%ld1 != r1 {
    124 		println("int32-1", ln1, ld1, ln1/ld1, ln1%ld1)
    125 		panic("fail")
    126 	}
    127 	if ln2/ld1 != q2 || ln2%ld1 != r2 {
    128 		println("int32-2", ln2, ld1, ln2/ld1, ln2%ld1)
    129 		panic("fail")
    130 	}
    131 	if ln1/ld2 != q3 || ln1%ld2 != r3 {
    132 		println("int32-3", ln1, ld2, ln1/ld2, ln1%ld2)
    133 		panic("fail")
    134 	}
    135 	if ln2/ld2 != q4 || ln2%ld2 != r4 {
    136 		println("int32-4", ln2, ld2, ln2/ld2, ln2%ld2)
    137 		panic("fail")
    138 	}
    139 
    140 	/* int64 */
    141 	var qn1 int64 = +5
    142 	var qn2 int64 = -5
    143 	var qd1 int64 = +3
    144 	var qd2 int64 = -3
    145 
    146 	if qn1/qd1 != q1 || qn1%qd1 != r1 {
    147 		println("int64-1", qn1, qd1, qn1/qd1, qn1%qd1)
    148 		panic("fail")
    149 	}
    150 	if qn2/qd1 != q2 || qn2%qd1 != r2 {
    151 		println("int64-2", qn2, qd1, qn2/qd1, qn2%qd1)
    152 		panic("fail")
    153 	}
    154 	if qn1/qd2 != q3 || qn1%qd2 != r3 {
    155 		println("int64-3", qn1, qd2, qn1/qd2, qn1%qd2)
    156 		panic("fail")
    157 	}
    158 	if qn2/qd2 != q4 || qn2%qd2 != r4 {
    159 		println("int64-4", qn2, qd2, qn2/qd2, qn2%qd2)
    160 		panic("fail")
    161 	}
    162 
    163 	if n1/qd1 != q1 || n1%qd1 != r1 {
    164 		println("mixed int64-1", n1, qd1, n1/qd1, n1%qd1)
    165 		panic("fail")
    166 	}
    167 	if n2/qd1 != q2 || n2%qd1 != r2 {
    168 		println("mixed int64-2", n2, qd1, n2/qd1, n2%qd1)
    169 		panic("fail")
    170 	}
    171 	if n1/qd2 != q3 || n1%qd2 != r3 {
    172 		println("mixed int64-3", n1, qd2, n1/qd2, n1%qd2)
    173 		panic("fail")
    174 	}
    175 	if n2/qd2 != q4 || n2%qd2 != r4 {
    176 		println("mixed int64-4", n2, qd2, n2/qd2, n2%qd2)
    177 		panic("fail")
    178 	}
    179 
    180 	if qn1/d1 != q1 || qn1%d1 != r1 {
    181 		println("mixed int64-5", qn1, d1, qn1/d1, qn1%d1)
    182 		panic("fail")
    183 	}
    184 	if qn2/d1 != q2 || qn2%d1 != r2 {
    185 		println("mixed int64-6", qn2, d1, qn2/d1, qn2%d1)
    186 		panic("fail")
    187 	}
    188 	if qn1/d2 != q3 || qn1%d2 != r3 {
    189 		println("mixed int64-7", qn1, d2, qn1/d2, qn1%d2)
    190 		panic("fail")
    191 	}
    192 	if qn2/d2 != q4 || qn2%d2 != r4 {
    193 		println("mixed int64-8", qn2, d2, qn2/d2, qn2%d2)
    194 		panic("fail")
    195 	}
    196 
    197 	/* uint */
    198 	var uin1 uint = +5
    199 	var uid1 uint = +3
    200 
    201 	if uin1/uid1 != q1 || uin1%uid1 != r1 {
    202 		println("uint", uin1, uid1, uin1/uid1, uin1%uid1)
    203 		panic("fail")
    204 	}
    205 
    206 	/* uint8 */
    207 	var ubn1 uint8 = +5
    208 	var ubd1 uint8 = +3
    209 
    210 	if ubn1/ubd1 != q1 || ubn1%ubd1 != r1 {
    211 		println("uint8", ubn1, ubd1, ubn1/ubd1, ubn1%ubd1)
    212 		panic("fail")
    213 	}
    214 
    215 	/* uint16 */
    216 	var usn1 uint16 = +5
    217 	var usd1 uint16 = +3
    218 
    219 	if usn1/usd1 != q1 || usn1%usd1 != r1 {
    220 		println("uint16", usn1, usd1, usn1/usd1, usn1%usd1)
    221 		panic("fail")
    222 	}
    223 
    224 	/* uint32 */
    225 	var uln1 uint32 = +5
    226 	var uld1 uint32 = +3
    227 
    228 	if uln1/uld1 != q1 || uln1%uld1 != r1 {
    229 		println("uint32", uln1, uld1, uln1/uld1, uln1%uld1)
    230 		panic("fail")
    231 	}
    232 
    233 	/* uint64 */
    234 	var uqn1 uint64 = +5
    235 	var uqd1 uint64 = +3
    236 
    237 	if uqn1/uqd1 != q1 || uqn1%uqd1 != r1 {
    238 		println("uint64", uqn1, uqd1, uqn1/uqd1, uqn1%uqd1)
    239 		panic("fail")
    240 	}
    241 	if n1/uqd1 != q1 || n1%uqd1 != r1 {
    242 		println("mixed uint64-1", n1, uqd1, n1/uqd1, n1%uqd1)
    243 		panic("fail")
    244 	}
    245 	if uqn1/d1 != q1 || uqn1%d1 != r1 {
    246 		println("mixed uint64-2", uqn1, d1, uqn1/d1, uqn1%d1)
    247 		panic("fail")
    248 	}
    249 }
    250