# HG changeset patch # User Sascha L. Teichmann # Date 1346834292 0 # Node ID 171db4d5d3cbeeaedc5042f458255372afc0d18e # Parent 83c0735092a39013dc699aae471a14c45df04d1c FixA: AT export: prevent some numerical problems with steep functions around zero. flys-artifacts/trunk@5363 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 83c0735092a3 -r 171db4d5d3cb flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Sep 05 08:23:56 2012 +0000 +++ b/flys-artifacts/ChangeLog Wed Sep 05 08:38:12 2012 +0000 @@ -1,3 +1,9 @@ +2012-09-05 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java: + Only goto down to Q = 0.0001 to circumvent some numerial issues + with steep functions around zero. + 2012-09-05 Sascha L. Teichmann * src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java: diff -r 83c0735092a3 -r 171db4d5d3cb flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java Wed Sep 05 08:23:56 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixATWriter.java Wed Sep 05 08:38:12 2012 +0000 @@ -32,6 +32,7 @@ private static final int MAX_ITERATIONS = 10000; private static final double EPSILON = 1e-8; + private static final double MIN_Q = 1e-4; protected Function function; protected Parameters parameters; @@ -166,7 +167,7 @@ double w = lastW - stepWidth; double q = function.value(w); - if (Double.isNaN(q) || q > lastQ || q < 0d) { + if (Double.isNaN(q) || q > lastQ || q < MIN_Q) { if (stepWidth < EPSILON) { break; }