1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- class Test {
- public static void main(String[] args) {
- Tester t = new Tester();
-
- String desc;
-
- { desc = "Sequential and Parallel solvers produce the same primes";
- int maxNum = 200000;
- Sieve sieve1 = new Sieve(maxNum);
- Sieve sieve2 = new Sieve(maxNum);
-
- Sequential s1 = new Sequential();
- Parallel s2 = new Parallel();
-
- s1.solve(sieve1);
- s2.solve(sieve2);
-
- boolean failed = false;
- for (int i = 0; i < sieve1.arr.length; ++i) {
- if (sieve1.isPrime(i) != sieve2.isPrime(i)) {
- failed = true;
- System.out.println(
- "Sequential and parallel disagree on "+i+"!");
- System.out.println(
- "Seq: "+sieve1.isPrime(i)+", par: "+sieve2.isPrime(i));
- break;
- }
- }
-
- if (failed)
- t.fail(desc);
- else
- t.pass(desc);
-
- s2.stopThreads();
- }
-
- { desc = "Sequential and parallel produces the same factors";
- int maxNum = 10000000;
- Sieve sieve = new Sieve(maxNum);
-
- Sequential s1 = new Sequential();
- Parallel s2 = new Parallel();
-
- s2.solve(sieve);
-
- boolean failed = false;
- long num = maxNum * maxNum;
- for (long i = num - 100; i < num; ++i) {
- long[] arr1 = s1.factor(sieve, i);
- long[] arr2 = s2.factor(sieve, i);
-
- if (arr1.length != arr2.length) {
- System.out.println(
- "Sequential and parallel disagree on length!");
- System.out.println("seq: "+Util.factors(i, arr1));
- System.out.println("par: "+Util.factors(i, arr2));
- failed = true;
- break;
- }
-
- for (int j = 0; j < arr1.length; ++j) {
- if (arr1[j] != arr2[j]) {
- failed = true;
- break;
- }
- }
-
- if (failed) {
- System.out.println("seq: "+Util.factors(i, arr1));
- System.out.println("par: "+Util.factors(i, arr2));
- break;
- }
- }
-
- if (failed)
- t.fail(desc);
- else
- t.pass(desc);
-
- s2.stopThreads();
- }
-
- t.printResult();
- }
- }
|