Mercurial > dive4elements > river
changeset 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 | 68260e38029a |
files | flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java |
diffstat | 3 files changed, 67 insertions(+), 59 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Tue Oct 04 15:23:31 2011 +0000 +++ b/flys-artifacts/ChangeLog Tue Oct 04 15:29:39 2011 +0000 @@ -1,3 +1,9 @@ +2011-10-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java, + src/main/java/de/intevation/flys/utils/DoubleUtil.java: Moved some generic + double array code to DoubleUtil. + 2011-10-04 Sascha L. Teichmann <sascha.teichmann@intevation.de> * src/main/java/de/intevation/flys/utils/DoubleUtil.java (interpolateSorted):
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java Tue Oct 04 15:23:31 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/BackJumpCorrector.java Tue Oct 04 15:29:39 2011 +0000 @@ -17,6 +17,8 @@ import de.intevation.flys.artifacts.model.Calculation; +import de.intevation.flys.utils.DoubleUtil; + public class BackJumpCorrector implements Serializable { @@ -47,23 +49,23 @@ double [] ws, Calculation errors ) { - boolean wsUp = isIncreasing(ws); + boolean wsUp = DoubleUtil.isIncreasing(ws); if (wsUp) { - km = swapClone(km); - ws = swapClone(ws); + km = DoubleUtil.swapClone(km); + ws = DoubleUtil.swapClone(ws); } - boolean kmUp = isIncreasing(km); + boolean kmUp = DoubleUtil.isIncreasing(km); if (!kmUp) { - km = sumDiffs(km); + km = DoubleUtil.sumDiffs(km); } if (log.isDebugEnabled()) { log.debug("BackJumpCorrector.doCorrection ------- enter"); - log.debug(" km increasing: " + isIncreasing(km)); - log.debug(" ws increasing: " + isIncreasing(ws)); + log.debug(" km increasing: " + DoubleUtil.isIncreasing(km)); + log.debug(" ws increasing: " + DoubleUtil.isIncreasing(ws)); log.debug("BackJumpCorrector.doCorrection ------- leave"); } @@ -71,7 +73,7 @@ if (hasBackJumps && wsUp) { // mirror back - swap(corrected); + DoubleUtil.swap(corrected); } return hasBackJumps; @@ -245,56 +247,5 @@ return !backjumps.isEmpty(); } - - 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 :
--- 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 :