University stuff.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Test.java 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. class Test {
  2. public static void main(String[] args) {
  3. Tester t = new Tester();
  4. String desc;
  5. { desc = "Sequential and Parallel solvers produce the same primes";
  6. int maxNum = 200000;
  7. Sieve sieve1 = new Sieve(maxNum);
  8. Sieve sieve2 = new Sieve(maxNum);
  9. Sequential s1 = new Sequential();
  10. Parallel s2 = new Parallel();
  11. s1.solve(sieve1);
  12. s2.solve(sieve2);
  13. boolean failed = false;
  14. for (int i = 0; i < sieve1.arr.length; ++i) {
  15. if (sieve1.isPrime(i) != sieve2.isPrime(i)) {
  16. failed = true;
  17. System.out.println(
  18. "Sequential and parallel disagree on "+i+"!");
  19. System.out.println(
  20. "Seq: "+sieve1.isPrime(i)+", par: "+sieve2.isPrime(i));
  21. break;
  22. }
  23. }
  24. if (failed)
  25. t.fail(desc);
  26. else
  27. t.pass(desc);
  28. s2.stopThreads();
  29. }
  30. { desc = "Sequential and parallel produces the same factors";
  31. int maxNum = 10000000;
  32. Sieve sieve = new Sieve(maxNum);
  33. Sequential s1 = new Sequential();
  34. Parallel s2 = new Parallel();
  35. s2.solve(sieve);
  36. boolean failed = false;
  37. long num = maxNum * maxNum;
  38. for (long i = num - 100; i < num; ++i) {
  39. long[] arr1 = s1.factor(sieve, i);
  40. long[] arr2 = s2.factor(sieve, i);
  41. if (arr1.length != arr2.length) {
  42. System.out.println(
  43. "Sequential and parallel disagree on length!");
  44. System.out.println("seq: "+Util.factors(i, arr1));
  45. System.out.println("par: "+Util.factors(i, arr2));
  46. failed = true;
  47. break;
  48. }
  49. for (int j = 0; j < arr1.length; ++j) {
  50. if (arr1[j] != arr2[j]) {
  51. failed = true;
  52. break;
  53. }
  54. }
  55. if (failed) {
  56. System.out.println("seq: "+Util.factors(i, arr1));
  57. System.out.println("par: "+Util.factors(i, arr2));
  58. break;
  59. }
  60. }
  61. if (failed)
  62. t.fail(desc);
  63. else
  64. t.pass(desc);
  65. s2.stopThreads();
  66. }
  67. t.printResult();
  68. }
  69. }