You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2017/06/03 00:32:35 UTC
[1/2] [math] MATH-1416: Depend on "Commons Numbers".
Repository: commons-math
Updated Branches:
refs/heads/master d9979fa97 -> 6f27b4ae8
MATH-1416: Depend on "Commons Numbers".
Use utility methods now defined in module "commons-numbers-angle".
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/af7f247b
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/af7f247b
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/af7f247b
Branch: refs/heads/master
Commit: af7f247b648bb255307c87764c787c0f0fff8df9
Parents: d9979fa
Author: Gilles <er...@apache.org>
Authored: Sat Jun 3 02:29:30 2017 +0200
Committer: Gilles <er...@apache.org>
Committed: Sat Jun 3 02:29:30 2017 +0200
----------------------------------------------------------------------
pom.xml | 6 ++++++
.../commons/math4/geometry/euclidean/twod/Line.java | 10 +++++-----
.../apache/commons/math4/geometry/spherical/oned/Arc.java | 5 +++--
.../commons/math4/geometry/spherical/oned/ArcsSet.java | 7 ++++---
.../commons/math4/geometry/spherical/oned/S1Point.java | 3 ++-
.../commons/math4/geometry/spherical/twod/Edge.java | 3 ++-
.../commons/math4/fitting/HarmonicCurveFitterTest.java | 9 +++++----
.../geometry/euclidean/threed/FieldRotationDSTest.java | 4 ++--
.../geometry/euclidean/threed/FieldRotationDfpTest.java | 4 ++--
.../math4/geometry/euclidean/threed/RotationTest.java | 4 ++--
10 files changed, 33 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 43346cf..3a754a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -388,6 +388,12 @@
<dependency>
<groupId>org.apache.commons</groupId>
+ <artifactId>commons-numbers-angle</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
<artifactId>commons-rng-client-api</artifactId>
<version>1.0</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/main/java/org/apache/commons/math4/geometry/euclidean/twod/Line.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/geometry/euclidean/twod/Line.java b/src/main/java/org/apache/commons/math4/geometry/euclidean/twod/Line.java
index 076179b..c25d6fa 100644
--- a/src/main/java/org/apache/commons/math4/geometry/euclidean/twod/Line.java
+++ b/src/main/java/org/apache/commons/math4/geometry/euclidean/twod/Line.java
@@ -17,6 +17,7 @@
package org.apache.commons.math4.geometry.euclidean.twod;
import org.apache.commons.numbers.arrays.LinearCombination;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
import org.apache.commons.math4.geometry.Point;
@@ -59,7 +60,6 @@ import org.apache.commons.math4.util.MathUtils;
* @since 3.0
*/
public class Line implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D, Euclidean1D> {
-
/** Angle with respect to the abscissa axis. */
private double angle;
@@ -125,7 +125,7 @@ public class Line implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D, Euc
* @param line line to copy
*/
public Line(final Line line) {
- angle = MathUtils.normalizeAngle(line.angle, FastMath.PI);
+ angle = PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(line.angle);
cos = line.cos;
sin = line.sin;
originOffset = line.originOffset;
@@ -168,7 +168,7 @@ public class Line implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D, Euc
*/
public void reset(final Cartesian2D p, final double alpha) {
unlinkReverse();
- this.angle = MathUtils.normalizeAngle(alpha, FastMath.PI);
+ this.angle = PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(alpha);
cos = FastMath.cos(this.angle);
sin = FastMath.sin(this.angle);
originOffset = LinearCombination.value(cos, p.getY(), -sin, p.getX());
@@ -414,7 +414,7 @@ public class Line implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D, Euc
* @return the angle of the line with respect to the abscissa axis
*/
public double getAngle() {
- return MathUtils.normalizeAngle(angle, FastMath.PI);
+ return PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(angle);
}
/** Set the angle of the line.
@@ -422,7 +422,7 @@ public class Line implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D, Euc
*/
public void setAngle(final double angle) {
unlinkReverse();
- this.angle = MathUtils.normalizeAngle(angle, FastMath.PI);
+ this.angle = PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(angle);
cos = FastMath.cos(this.angle);
sin = FastMath.sin(this.angle);
}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/Arc.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/Arc.java b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/Arc.java
index 84c6c5c..ae1f3bd 100644
--- a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/Arc.java
+++ b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/Arc.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.math4.geometry.spherical.oned;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.exception.NumberIsTooLargeException;
import org.apache.commons.math4.exception.util.LocalizedFormats;
import org.apache.commons.math4.geometry.partitioning.Region.Location;
@@ -67,7 +68,7 @@ public class Arc {
this.upper = MathUtils.TWO_PI;
this.middle = FastMath.PI;
} else if (lower <= upper) {
- this.lower = MathUtils.normalizeAngle(lower, FastMath.PI);
+ this.lower = PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(lower);
this.upper = this.lower + (upper - lower);
this.middle = 0.5 * (this.lower + this.upper);
} else {
@@ -119,7 +120,7 @@ public class Arc {
* Location#INSIDE}, {@link Location#OUTSIDE} or {@link Location#BOUNDARY}
*/
public Location checkPoint(final double point) {
- final double normalizedPoint = MathUtils.normalizeAngle(point, middle);
+ final double normalizedPoint = PlaneAngleRadians.normalize(point, middle);
if (normalizedPoint < lower - tolerance || normalizedPoint > upper + tolerance) {
return Location.OUTSIDE;
} else if (normalizedPoint > lower + tolerance && normalizedPoint < upper - tolerance) {
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/ArcsSet.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/ArcsSet.java b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/ArcsSet.java
index 3e33c81..3db15a3 100644
--- a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/ArcsSet.java
+++ b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/ArcsSet.java
@@ -22,6 +22,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.exception.MathInternalError;
import org.apache.commons.math4.exception.NumberIsTooLargeException;
@@ -139,7 +140,7 @@ public class ArcsSet extends AbstractRegion<Sphere1D, Sphere1D> implements Itera
}
// this is a regular arc, covering only part of the circle
- final double normalizedLower = MathUtils.normalizeAngle(lower, FastMath.PI);
+ final double normalizedLower = PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(lower);
final double normalizedUpper = normalizedLower + (upper - lower);
final SubHyperplane<Sphere1D> lowerCut =
new LimitAngle(new S1Point(normalizedLower), false, tolerance).wholeHyperplane();
@@ -731,7 +732,7 @@ public class ArcsSet extends AbstractRegion<Sphere1D, Sphere1D> implements Itera
final double arcLength = arc.getSup() - arc.getInf();
for (final double[] a : this) {
- final double syncedStart = MathUtils.normalizeAngle(a[0], reference) - arc.getInf();
+ final double syncedStart = PlaneAngleRadians.normalize(a[0], reference) - arc.getInf();
final double arcOffset = a[0] - syncedStart;
final double syncedEnd = a[1] - arcOffset;
if (syncedStart < arcLength) {
@@ -828,7 +829,7 @@ public class ArcsSet extends AbstractRegion<Sphere1D, Sphere1D> implements Itera
for (int i = 0; i < limits.size(); ++i) {
final int j = (i + 1) % limits.size();
final double lA = limits.get(i);
- final double lB = MathUtils.normalizeAngle(limits.get(j), lA);
+ final double lB = PlaneAngleRadians.normalize(limits.get(j), lA);
if (FastMath.abs(lB - lA) <= getTolerance()) {
// the two limits are too close to each other, we remove both of them
if (j > 0) {
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/S1Point.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/S1Point.java b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/S1Point.java
index d57d02c..e308bf4 100644
--- a/src/main/java/org/apache/commons/math4/geometry/spherical/oned/S1Point.java
+++ b/src/main/java/org/apache/commons/math4/geometry/spherical/oned/S1Point.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.math4.geometry.spherical.oned;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.geometry.Point;
import org.apache.commons.math4.geometry.Space;
import org.apache.commons.math4.geometry.euclidean.twod.Cartesian2D;
@@ -48,7 +49,7 @@ public class S1Point implements Point<Sphere1D> {
* @see #getAlpha()
*/
public S1Point(final double alpha) {
- this(MathUtils.normalizeAngle(alpha, FastMath.PI),
+ this(PlaneAngleRadians.normalizeBetweenZeroAndTwoPi(alpha),
new Cartesian2D(FastMath.cos(alpha), FastMath.sin(alpha)));
}
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/main/java/org/apache/commons/math4/geometry/spherical/twod/Edge.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/geometry/spherical/twod/Edge.java b/src/main/java/org/apache/commons/math4/geometry/spherical/twod/Edge.java
index 975407d..c2139f7 100644
--- a/src/main/java/org/apache/commons/math4/geometry/spherical/twod/Edge.java
+++ b/src/main/java/org/apache/commons/math4/geometry/spherical/twod/Edge.java
@@ -18,6 +18,7 @@ package org.apache.commons.math4.geometry.spherical.twod;
import java.util.List;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.geometry.euclidean.threed.Cartesian3D;
import org.apache.commons.math4.geometry.spherical.oned.Arc;
import org.apache.commons.math4.util.FastMath;
@@ -128,7 +129,7 @@ public class Edge {
// get the inside arc, synchronizing its phase with the edge itself
final double edgeStart = circle.getPhase(start.getLocation().getVector());
final Arc arc = circle.getInsideArc(splitCircle);
- final double arcRelativeStart = MathUtils.normalizeAngle(arc.getInf(), edgeStart + FastMath.PI) - edgeStart;
+ final double arcRelativeStart = PlaneAngleRadians.normalize(arc.getInf(), edgeStart + FastMath.PI) - edgeStart;
final double arcRelativeEnd = arcRelativeStart + arc.getSize();
final double unwrappedEnd = arcRelativeEnd - MathUtils.TWO_PI;
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/test/java/org/apache/commons/math4/fitting/HarmonicCurveFitterTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/fitting/HarmonicCurveFitterTest.java b/src/test/java/org/apache/commons/math4/fitting/HarmonicCurveFitterTest.java
index e3b1959..8a79a80 100644
--- a/src/test/java/org/apache/commons/math4/fitting/HarmonicCurveFitterTest.java
+++ b/src/test/java/org/apache/commons/math4/fitting/HarmonicCurveFitterTest.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.analysis.function.HarmonicOscillator;
import org.apache.commons.math4.exception.MathIllegalStateException;
import org.apache.commons.math4.exception.NumberIsTooSmallException;
@@ -56,7 +57,7 @@ public class HarmonicCurveFitterTest {
final double[] fitted = fitter.fit(points.toList());
Assert.assertEquals(a, fitted[0], 1.0e-13);
Assert.assertEquals(w, fitted[1], 1.0e-13);
- Assert.assertEquals(p, MathUtils.normalizeAngle(fitted[2], p), 1e-13);
+ Assert.assertEquals(p, PlaneAngleRadians.normalize(fitted[2], p), 1e-13);
final HarmonicOscillator ff = new HarmonicOscillator(fitted[0], fitted[1], fitted[2]);
for (double x = -1.0; x < 1.0; x += 0.01) {
@@ -81,7 +82,7 @@ public class HarmonicCurveFitterTest {
final double[] fitted = fitter.fit(points.toList());
Assert.assertEquals(a, fitted[0], 7.6e-4);
Assert.assertEquals(w, fitted[1], 2.7e-3);
- Assert.assertEquals(p, MathUtils.normalizeAngle(fitted[2], p), 1.3e-2);
+ Assert.assertEquals(p, PlaneAngleRadians.normalize(fitted[2], p), 1.3e-2);
}
@Test
@@ -118,7 +119,7 @@ public class HarmonicCurveFitterTest {
final double[] fitted = fitter.fit(points.toList());
Assert.assertEquals(a, fitted[0], 1.2e-3);
Assert.assertEquals(w, fitted[1], 3.3e-3);
- Assert.assertEquals(p, MathUtils.normalizeAngle(fitted[2], p), 1.7e-2);
+ Assert.assertEquals(p, PlaneAngleRadians.normalize(fitted[2], p), 1.7e-2);
}
@Test
@@ -160,7 +161,7 @@ public class HarmonicCurveFitterTest {
final double[] fitted = fitter.fit(points.toList());
Assert.assertEquals(a, fitted[0], 7.6e-4);
Assert.assertEquals(w, fitted[1], 3.5e-3);
- Assert.assertEquals(p, MathUtils.normalizeAngle(fitted[2], p), 1.5e-2);
+ Assert.assertEquals(p, PlaneAngleRadians.normalize(fitted[2], p), 1.5e-2);
}
@Test(expected=MathIllegalStateException.class)
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDSTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDSTest.java b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDSTest.java
index b54e2e0..873a80a 100644
--- a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDSTest.java
+++ b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDSTest.java
@@ -17,6 +17,7 @@
package org.apache.commons.math4.geometry.euclidean.threed;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.analysis.differentiation.DerivativeStructure;
import org.apache.commons.math4.exception.MathArithmeticException;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
@@ -33,7 +34,6 @@ import org.apache.commons.math4.random.UnitSphereRandomVectorGenerator;
import org.apache.commons.rng.UniformRandomProvider;
import org.apache.commons.rng.simple.RandomSource;
import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.MathUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -1227,7 +1227,7 @@ public class FieldRotationDSTest {
}
private void checkAngle(DerivativeStructure a1, double a2) {
- Assert.assertEquals(a1.getReal(), MathUtils.normalizeAngle(a2, a1.getReal()), 1.0e-10);
+ Assert.assertEquals(a1.getReal(), PlaneAngleRadians.normalize(a2, a1.getReal()), 1.0e-10);
}
private void checkRotationDS(FieldRotation<DerivativeStructure> r, double q0, double q1, double q2, double q3) {
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDfpTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDfpTest.java b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDfpTest.java
index f4f3403..4586bad 100644
--- a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDfpTest.java
+++ b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/FieldRotationDfpTest.java
@@ -17,6 +17,7 @@
package org.apache.commons.math4.geometry.euclidean.threed;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.dfp.Dfp;
import org.apache.commons.math4.dfp.DfpField;
import org.apache.commons.math4.exception.MathArithmeticException;
@@ -32,7 +33,6 @@ import org.apache.commons.math4.random.UnitSphereRandomVectorGenerator;
import org.apache.commons.rng.UniformRandomProvider;
import org.apache.commons.rng.simple.RandomSource;
import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.MathUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -992,7 +992,7 @@ public class FieldRotationDfpTest {
}
private void checkAngle(Dfp a1, double a2) {
- Assert.assertEquals(a1.getReal(), MathUtils.normalizeAngle(a2, a1.getReal()), 1.0e-10);
+ Assert.assertEquals(a1.getReal(), PlaneAngleRadians.normalize(a2, a1.getReal()), 1.0e-10);
}
private void checkRotationDS(FieldRotation<Dfp> r, double q0, double q1, double q2, double q3) {
http://git-wip-us.apache.org/repos/asf/commons-math/blob/af7f247b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/RotationTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/RotationTest.java b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/RotationTest.java
index a02ac26..e754a51 100644
--- a/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/RotationTest.java
+++ b/src/test/java/org/apache/commons/math4/geometry/euclidean/threed/RotationTest.java
@@ -17,6 +17,7 @@
package org.apache.commons.math4.geometry.euclidean.threed;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.exception.MathArithmeticException;
import org.apache.commons.math4.exception.MathIllegalArgumentException;
import org.apache.commons.math4.geometry.euclidean.threed.CardanEulerSingularityException;
@@ -25,7 +26,6 @@ import org.apache.commons.math4.geometry.euclidean.threed.Rotation;
import org.apache.commons.math4.geometry.euclidean.threed.RotationOrder;
import org.apache.commons.math4.geometry.euclidean.threed.Cartesian3D;
import org.apache.commons.math4.util.FastMath;
-import org.apache.commons.math4.util.MathUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -813,7 +813,7 @@ public class RotationTest {
}
private void checkAngle(double a1, double a2) {
- Assert.assertEquals(a1, MathUtils.normalizeAngle(a2, a1), 1.0e-10);
+ Assert.assertEquals(a1, PlaneAngleRadians.normalize(a2, a1), 1.0e-10);
}
private void checkRotation(Rotation r, double q0, double q1, double q2, double q3) {
[2/2] [math] MATH-1416: Delete functionality available in "Commons
Numbers".
Posted by er...@apache.org.
MATH-1416: Delete functionality available in "Commons Numbers".
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/6f27b4ae
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/6f27b4ae
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/6f27b4ae
Branch: refs/heads/master
Commit: 6f27b4ae8f8ecb62698e760ab7df3973874b1f51
Parents: af7f247
Author: Gilles <er...@apache.org>
Authored: Sat Jun 3 02:31:16 2017 +0200
Committer: Gilles <er...@apache.org>
Committed: Sat Jun 3 02:31:16 2017 +0200
----------------------------------------------------------------------
.../apache/commons/math4/util/MathUtils.java | 23 -------------------
.../commons/math4/util/MathUtilsTest.java | 24 +++++---------------
2 files changed, 6 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/6f27b4ae/src/main/java/org/apache/commons/math4/util/MathUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/util/MathUtils.java b/src/main/java/org/apache/commons/math4/util/MathUtils.java
index e42f449..3031465 100644
--- a/src/main/java/org/apache/commons/math4/util/MathUtils.java
+++ b/src/main/java/org/apache/commons/math4/util/MathUtils.java
@@ -85,29 +85,6 @@ public final class MathUtils {
return Arrays.hashCode(value);
}
- /**
- * Normalize an angle in a 2π wide interval around a center value.
- * <p>This method has three main uses:</p>
- * <ul>
- * <li>normalize an angle between 0 and 2π:<br>
- * {@code a = MathUtils.normalizeAngle(a, FastMath.PI);}</li>
- * <li>normalize an angle between -π and +π<br>
- * {@code a = MathUtils.normalizeAngle(a, 0.0);}</li>
- * <li>compute the angle between two defining angular positions:<br>
- * {@code angle = MathUtils.normalizeAngle(end, start) - start;}</li>
- * </ul>
- * <p>Note that due to numerical accuracy and since π cannot be represented
- * exactly, the result interval is <em>closed</em>, it cannot be half-closed
- * as would be more satisfactory in a purely mathematical view.</p>
- * @param a angle to normalize
- * @param center center of the desired 2π interval for the result
- * @return a-2kπ with integer k and center-π <= a-2kπ <= center+π
- * @since 1.2
- */
- public static double normalizeAngle(double a, double center) {
- return a - TWO_PI * FastMath.floor((a + FastMath.PI - center) / TWO_PI);
- }
-
/** Find the maximum of two field elements.
* @param <T> the type of the field elements
* @param e1 first element
http://git-wip-us.apache.org/repos/asf/commons-math/blob/6f27b4ae/src/test/java/org/apache/commons/math4/util/MathUtilsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/math4/util/MathUtilsTest.java b/src/test/java/org/apache/commons/math4/util/MathUtilsTest.java
index 2e116a2..2536f84 100644
--- a/src/test/java/org/apache/commons/math4/util/MathUtilsTest.java
+++ b/src/test/java/org/apache/commons/math4/util/MathUtilsTest.java
@@ -13,6 +13,7 @@
*/
package org.apache.commons.math4.util;
+import org.apache.commons.numbers.angle.PlaneAngleRadians;
import org.apache.commons.math4.distribution.RealDistribution;
import org.apache.commons.math4.distribution.UniformRealDistribution;
import org.apache.commons.math4.exception.MathArithmeticException;
@@ -154,19 +155,6 @@ public final class MathUtilsTest {
}
@Test
- public void testNormalizeAngle() {
- for (double a = -15.0; a <= 15.0; a += 0.1) {
- for (double b = -15.0; b <= 15.0; b += 0.2) {
- double c = MathUtils.normalizeAngle(a, b);
- Assert.assertTrue((b - FastMath.PI) <= c);
- Assert.assertTrue(c <= (b + FastMath.PI));
- double twoK = FastMath.rint((a - c) / FastMath.PI);
- Assert.assertEquals(c, a - twoK * FastMath.PI, 1.0e-14);
- }
- }
- }
-
- @Test
public void testReduce() {
final double period = -12.222;
final double offset = 13;
@@ -220,15 +208,15 @@ public final class MathUtilsTest {
}
@Test
- public void testReduceComparedWithNormalizeAngle() {
- final double tol = Math.ulp(1d);
+ public void testReduceComparedWithNormalize() {
final double period = 2 * Math.PI;
for (double a = -15; a <= 15; a += 0.5) {
for (double center = -15; center <= 15; center += 1) {
- final double nA = MathUtils.normalizeAngle(a, center);
+ final double nA = PlaneAngleRadians.normalize(a, center);
final double offset = center - Math.PI;
- final double r = MathUtils.reduce(a, period, offset);
- Assert.assertEquals(nA, r + offset, tol);
+ final double r = MathUtils.reduce(a, period, offset) + offset;
+ Assert.assertEquals("a=" + a + " center=" + center,
+ nA, r, 52 * Math.ulp(nA));
}
}
}