diff --git a/hipparchus-ode/src/changes/changes.xml b/hipparchus-ode/src/changes/changes.xml index 494b17815..71cb42c24 100644 --- a/hipparchus-ode/src/changes/changes.xml +++ b/hipparchus-ode/src/changes/changes.xml @@ -49,6 +49,11 @@ If the output is not quite correct, check for invisible trailing spaces! Hipparchus ODE Release Notes + + + Fixes regressions with Field in event detection. + + Removed unused mapper in initializeStep. diff --git a/hipparchus-ode/src/main/java/org/hipparchus/ode/events/FieldDetectorBasedEventState.java b/hipparchus-ode/src/main/java/org/hipparchus/ode/events/FieldDetectorBasedEventState.java index 7d5dad15f..3a2163753 100644 --- a/hipparchus-ode/src/main/java/org/hipparchus/ode/events/FieldDetectorBasedEventState.java +++ b/hipparchus-ode/src/main/java/org/hipparchus/ode/events/FieldDetectorBasedEventState.java @@ -366,7 +366,7 @@ private boolean findRoot(final FieldODEStateInterpolator interpolator, // executed once if we didn't hit a special case above while ((afterRootG.isZero() || afterRootG.getReal() > 0.0 == g0Positive) && strictlyAfter(afterRootT, tb)) { - if (loopG.isZero()) { + if (loopG.getReal() == 0.0) { // ga == 0.0 and gb may or may not be 0.0 // handle the root at ta first beforeRootT = loopT; @@ -424,7 +424,7 @@ private boolean findRoot(final FieldODEStateInterpolator interpolator, } // figure out the result of root finding, and return accordingly - if (afterRootG.isZero() || afterRootG.getReal() > 0.0 == g0Positive) { + if (afterRootG.getReal() == 0.0 || afterRootG.getReal() > 0.0 == g0Positive) { // loop gave up and didn't find any crossing within this step return false; } else { diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 818e421d9..79075320f 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -50,6 +50,9 @@ If the output is not quite correct, check for invisible trailing spaces! + + Fixes regressions with Field in event detection. + Added constrained optimization.