| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | // $G $D/$F.go && $L $F.$A && ./$A.out | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import	"rand" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | const	Count	= 1e6 | 
					
						
							| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("i64", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | i64run() | 
					
						
							| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	var a, b int64; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | 	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 { | 
					
						
							|  |  |  | 		panicln("u64", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("i32", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("u32", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("i16", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | u16rand() uint16 | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	a := uint16(rand.Uint32()); | 
					
						
							|  |  |  | 	a >>= uint(rand.Intn(16)); | 
					
						
							|  |  |  | 	return a; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | u16test(a,b,c uint16) | 
					
						
							| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	d := a/c; | 
					
						
							|  |  |  | 	if d != b { | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | 		panicln("u16", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							| 
									
										
										
										
											2009-08-06 22:33:12 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-10 12:46:23 -07:00
										 |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("i8", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 { | 
					
						
							|  |  |  | 		panicln("u8", a, b, c, d); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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/128;	u8test(a,b,128); | 
					
						
							|  |  |  | 		b = a/184;	u8test(a,b,184); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | func | 
					
						
							|  |  |  | main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	xtest(); | 
					
						
							|  |  |  | 	i64run(); | 
					
						
							|  |  |  | 	u64run(); | 
					
						
							|  |  |  | 	i32run(); | 
					
						
							|  |  |  | 	u32run(); | 
					
						
							|  |  |  | 	i16run(); | 
					
						
							|  |  |  | 	u16run(); | 
					
						
							| 
									
										
										
										
											2009-08-10 12:46:23 -07:00
										 |  |  | 	i8run(); | 
					
						
							|  |  |  | 	u8run(); | 
					
						
							| 
									
										
										
										
											2009-08-08 16:53:21 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | xtest() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } |