77 |
|
} |
78 |
|
} |
79 |
|
|
80 |
– |
|
80 |
|
abstract static class MatrixTree extends CountedCompleter<Void> { |
81 |
|
// maximum difference between old and new values |
82 |
|
double maxDiff; |
83 |
|
MatrixTree(CountedCompleter<?> p, int c) { super(p, c); } |
84 |
|
} |
85 |
|
|
87 |
– |
|
86 |
|
static final class LeafNode extends MatrixTree { |
87 |
|
final double[][] A; // matrix to get old values from |
88 |
|
final double[][] B; // matrix to put new values into |
156 |
|
} |
157 |
|
} |
158 |
|
|
161 |
– |
|
159 |
|
static final class TwoNode extends MatrixTree { |
160 |
|
MatrixTree q1; |
161 |
|
MatrixTree q2; |
176 |
|
q2.fork(); |
177 |
|
q1.compute(); |
178 |
|
} |
182 |
– |
|
179 |
|
} |
180 |
|
|
181 |
|
static final class Driver extends RecursiveAction { |
201 |
|
this.leafs = leafs; |
202 |
|
mat = build(null, A, B, firstRow, lastRow, firstCol, lastCol, leafs); |
203 |
|
System.out.println("Using " + nleaf + " segments"); |
208 |
– |
|
204 |
|
} |
205 |
|
|
206 |
|
MatrixTree build(MatrixTree p, |
255 |
|
System.out.println("max diff after " + steps + " steps = " + md); |
256 |
|
} |
257 |
|
} |
263 |
– |
|
264 |
– |
|
258 |
|
} |