mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  *  This file is part of the X10 project (http://x10-lang.org).
 | |
|  *
 | |
|  *  This file is licensed to You under the Eclipse Public License (EPL);
 | |
|  *  You may not use this file except in compliance with the License.
 | |
|  *  You may obtain a copy of the License at
 | |
|  *      http://www.opensource.org/licenses/eclipse-1.0.php
 | |
|  *
 | |
|  *  (C) Copyright IBM Corporation 2006-2014.
 | |
|  */
 | |
| 
 | |
| public class Histogram {
 | |
|     public static def compute(data:Rail[Int], numBins:Int) {
 | |
|         val bins = new Rail[Int](numBins);
 | |
|         finish for (i in data.range) async {
 | |
|            val b = data(i) % numBins;
 | |
|            atomic bins(b)++;
 | |
|         }
 | |
|         return bins;
 | |
|     }
 | |
| 
 | |
|     public static def run(N:Int, S:Int):Boolean {
 | |
|         val a = new Rail[Int](N, (i:long)=> i as int);
 | |
|         val b = compute(a, S);
 | |
|         val v = b(0);
 | |
|         var ok:Boolean = true;
 | |
|         for (x in b.range) ok &= (b(x)==v);
 | |
|         return ok;
 | |
|     }
 | |
| 
 | |
|     public static def main(args:Rail[String]) {
 | |
|         if (args.size != 2L) {
 | |
|             Console.OUT.println("Usage: Histogram SizeOfArray NumberOfBins");
 | |
|             return;
 | |
|         }
 | |
|         val N = Int.parse(args(0));
 | |
|         val S = Int.parse(args(1));
 | |
|         val ok = run(N,S);
 | |
|         if (ok) {
 | |
|             Console.OUT.println("Test ok.");
 | |
|         } else {
 | |
|             Console.OUT.println("Test failed.");
 | |
|         }
 | |
|     }
 | |
| }
 |