Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java @ 1672:0b6dac664bbb
Moved some generic double array code from BackjumpCorrector to DoubleUtil
flys-artifacts/trunk@2885 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 04 Oct 2011 15:29:39 +0000 |
parents | da872168a899 |
children | 0dd58ab7e118 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java Tue Oct 04 15:23:31 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java Tue Oct 04 15:29:39 2011 +0000 @@ -81,5 +81,56 @@ ? Double.NaN : Linear.linear(x, xs[mid-1], xs[mid], ys[mid-1], ys[mid]); } + + public static final boolean isIncreasing(double [] array) { + int inc = 0; + int dec = 0; + int sweet = (array.length-1)/2; + for (int i = 1; i < array.length; ++i) { + if (array[i] > array[i-1]) { + if (++inc > sweet) { + return true; + } + } + else if (++dec > sweet) { + return false; + } + } + return inc > sweet; + } + + public static final double [] swap(double [] array) { + int lo = 0; + int hi = array.length-1; + while (hi > lo) { + double t = array[lo]; + array[lo] = array[hi]; + array[hi] = t; + ++lo; + --hi; + } + + return array; + } + + public static final double [] swapClone(double [] in) { + double [] out = new double[in.length]; + + for (int j = out.length-1, i = 0; j >= 0;) { + out[j--] = in[i++]; + } + + return out; + } + + public static final double [] sumDiffs(double [] in) { + double [] out = new double[in.length]; + + for (int i = 1; i < out.length; ++i) { + out[i] = out[i-1] + Math.abs(in[i-1] - in[i]); + } + + return out; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :