From 8dd8d4d2d420e472812185bdca3c351ae2adeddd Mon Sep 17 00:00:00 2001 From: Tyler Veness Date: Fri, 21 May 2021 22:29:52 -0700 Subject: [PATCH] [wpimath] Fix redundant nested math package introduced by #3316 (#3368) --- .../wpilibj/simulation/DifferentialDrivetrainSim.java | 2 +- .../edu/wpi/first/wpilibj/simulation/LinearSystemSim.java | 2 +- .../ExampleGlobalMeasurementSensor.java | 2 +- .../ExampleGlobalMeasurementSensor.java | 2 +- .../ExampleGlobalMeasurementSensor.java | 2 +- .../edu/wpi/first/math/{math => }/Discretization.java | 6 +----- .../edu/wpi/first/math/{math => }/StateSpaceUtil.java | 8 +------- .../math/controller/LinearPlantInversionFeedforward.java | 2 +- .../first/math/controller/LinearQuadraticRegulator.java | 4 ++-- .../math/estimator/DifferentialDrivePoseEstimator.java | 4 ++-- .../wpi/first/math/estimator/ExtendedKalmanFilter.java | 4 ++-- .../java/edu/wpi/first/math/estimator/KalmanFilter.java | 4 ++-- .../first/math/estimator/MecanumDrivePoseEstimator.java | 4 ++-- .../first/math/estimator/SwerveDrivePoseEstimator.java | 4 ++-- .../wpi/first/math/estimator/UnscentedKalmanFilter.java | 4 ++-- .../main/java/edu/wpi/first/math/system/LinearSystem.java | 2 +- .../java/edu/wpi/first/math/system/LinearSystemLoop.java | 2 +- .../edu/wpi/first/math/{math => }/StateSpaceUtilTest.java | 6 +----- .../first/math/estimator/ExtendedKalmanFilterTest.java | 2 +- .../first/math/estimator/UnscentedKalmanFilterTest.java | 4 ++-- 20 files changed, 28 insertions(+), 42 deletions(-) rename wpimath/src/main/java/edu/wpi/first/math/{math => }/Discretization.java (97%) rename wpimath/src/main/java/edu/wpi/first/math/{math => }/StateSpaceUtil.java (96%) rename wpimath/src/test/java/edu/wpi/first/math/{math => }/StateSpaceUtilTest.java (97%) diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSim.java index f0e5041133..219f5ad80a 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSim.java @@ -6,10 +6,10 @@ package edu.wpi.first.wpilibj.simulation; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N2; import edu.wpi.first.math.numbers.N7; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/LinearSystemSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/LinearSystemSim.java index 155ec23ca3..2b4e9a978d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/LinearSystemSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/LinearSystemSim.java @@ -6,7 +6,7 @@ package edu.wpi.first.wpilibj.simulation; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Num; -import edu.wpi.first.math.math.StateSpaceUtil; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.LinearSystem; import edu.wpi.first.wpilibj.RobotController; diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/differentialdriveposeestimator/ExampleGlobalMeasurementSensor.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/differentialdriveposeestimator/ExampleGlobalMeasurementSensor.java index eb83734f0a..4697bbad84 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/differentialdriveposeestimator/ExampleGlobalMeasurementSensor.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/differentialdriveposeestimator/ExampleGlobalMeasurementSensor.java @@ -4,10 +4,10 @@ package edu.wpi.first.wpilibj.examples.differentialdriveposeestimator; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.util.Units; /** This dummy class represents a global measurement sensor, such as a computer vision solution. */ diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumdriveposeestimator/ExampleGlobalMeasurementSensor.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumdriveposeestimator/ExampleGlobalMeasurementSensor.java index 4059768b70..8b7a635d4c 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumdriveposeestimator/ExampleGlobalMeasurementSensor.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/mecanumdriveposeestimator/ExampleGlobalMeasurementSensor.java @@ -4,10 +4,10 @@ package edu.wpi.first.wpilibj.examples.mecanumdriveposeestimator; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.util.Units; /** This dummy class represents a global measurement sensor, such as a computer vision solution. */ diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervesdriveposeestimator/ExampleGlobalMeasurementSensor.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervesdriveposeestimator/ExampleGlobalMeasurementSensor.java index 3aeceb8564..6308336379 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervesdriveposeestimator/ExampleGlobalMeasurementSensor.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/swervesdriveposeestimator/ExampleGlobalMeasurementSensor.java @@ -4,10 +4,10 @@ package edu.wpi.first.wpilibj.examples.swervesdriveposeestimator; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.util.Units; /** This dummy class represents a global measurement sensor, such as a computer vision solution. */ diff --git a/wpimath/src/main/java/edu/wpi/first/math/math/Discretization.java b/wpimath/src/main/java/edu/wpi/first/math/Discretization.java similarity index 97% rename from wpimath/src/main/java/edu/wpi/first/math/math/Discretization.java rename to wpimath/src/main/java/edu/wpi/first/math/Discretization.java index 25c85eb372..2b42b3561d 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/math/Discretization.java +++ b/wpimath/src/main/java/edu/wpi/first/math/Discretization.java @@ -2,12 +2,8 @@ // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. -package edu.wpi.first.math.math; +package edu.wpi.first.math; -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.Nat; -import edu.wpi.first.math.Num; -import edu.wpi.first.math.Pair; import org.ejml.simple.SimpleMatrix; @SuppressWarnings({"ParameterName", "MethodTypeParameterName"}) diff --git a/wpimath/src/main/java/edu/wpi/first/math/math/StateSpaceUtil.java b/wpimath/src/main/java/edu/wpi/first/math/StateSpaceUtil.java similarity index 96% rename from wpimath/src/main/java/edu/wpi/first/math/math/StateSpaceUtil.java rename to wpimath/src/main/java/edu/wpi/first/math/StateSpaceUtil.java index 3739482d9a..4536b3136f 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/math/StateSpaceUtil.java +++ b/wpimath/src/main/java/edu/wpi/first/math/StateSpaceUtil.java @@ -2,14 +2,8 @@ // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. -package edu.wpi.first.math.math; +package edu.wpi.first.math; -import edu.wpi.first.math.MathUtil; -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.Nat; -import edu.wpi.first.math.Num; -import edu.wpi.first.math.VecBuilder; -import edu.wpi.first.math.WPIMathJNI; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; diff --git a/wpimath/src/main/java/edu/wpi/first/math/controller/LinearPlantInversionFeedforward.java b/wpimath/src/main/java/edu/wpi/first/math/controller/LinearPlantInversionFeedforward.java index 8610c58c64..611f731948 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/controller/LinearPlantInversionFeedforward.java +++ b/wpimath/src/main/java/edu/wpi/first/math/controller/LinearPlantInversionFeedforward.java @@ -4,9 +4,9 @@ package edu.wpi.first.math.controller; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Num; -import edu.wpi.first.math.math.Discretization; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.LinearSystem; import org.ejml.simple.SimpleMatrix; diff --git a/wpimath/src/main/java/edu/wpi/first/math/controller/LinearQuadraticRegulator.java b/wpimath/src/main/java/edu/wpi/first/math/controller/LinearQuadraticRegulator.java index 5aa19e92ec..71631b67c5 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/controller/LinearQuadraticRegulator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/controller/LinearQuadraticRegulator.java @@ -4,13 +4,13 @@ package edu.wpi.first.math.controller; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Drake; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; import edu.wpi.first.math.Num; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.Vector; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.LinearSystem; import org.ejml.simple.SimpleMatrix; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/DifferentialDrivePoseEstimator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/DifferentialDrivePoseEstimator.java index d78d254e12..9a0aebd799 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/DifferentialDrivePoseEstimator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/DifferentialDrivePoseEstimator.java @@ -4,15 +4,15 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.MatBuilder; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.kinematics.DifferentialDriveWheelSpeeds; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.math.numbers.N5; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/ExtendedKalmanFilter.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/ExtendedKalmanFilter.java index 325159ec20..fedbb11759 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/ExtendedKalmanFilter.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/ExtendedKalmanFilter.java @@ -4,12 +4,12 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Drake; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; import edu.wpi.first.math.Num; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.NumericalIntegration; import edu.wpi.first.math.system.NumericalJacobian; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilter.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilter.java index 197bb9367e..be666c6285 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilter.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/KalmanFilter.java @@ -4,13 +4,13 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Drake; import edu.wpi.first.math.MathSharedStore; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; import edu.wpi.first.math.Num; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.LinearSystem; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/MecanumDrivePoseEstimator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/MecanumDrivePoseEstimator.java index 79dcccefb0..489d6e7645 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/MecanumDrivePoseEstimator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/MecanumDrivePoseEstimator.java @@ -4,16 +4,16 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.kinematics.MecanumDriveKinematics; import edu.wpi.first.math.kinematics.MecanumDriveWheelSpeeds; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.wpiutil.WPIUtilJNI; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/SwerveDrivePoseEstimator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/SwerveDrivePoseEstimator.java index 40afdadb5d..b03e90a7db 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/SwerveDrivePoseEstimator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/SwerveDrivePoseEstimator.java @@ -4,16 +4,16 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.geometry.Translation2d; import edu.wpi.first.math.kinematics.SwerveDriveKinematics; import edu.wpi.first.math.kinematics.SwerveModuleState; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N3; import edu.wpi.first.wpiutil.WPIUtilJNI; diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/UnscentedKalmanFilter.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/UnscentedKalmanFilter.java index c242e05ee6..0e7a80ea87 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/UnscentedKalmanFilter.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/UnscentedKalmanFilter.java @@ -4,12 +4,12 @@ package edu.wpi.first.math.estimator; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; import edu.wpi.first.math.Num; import edu.wpi.first.math.Pair; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.system.NumericalIntegration; import edu.wpi.first.math.system.NumericalJacobian; diff --git a/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystem.java b/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystem.java index 395f2bb53a..30e3a52ecd 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystem.java +++ b/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystem.java @@ -4,9 +4,9 @@ package edu.wpi.first.math.system; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Num; -import edu.wpi.first.math.math.Discretization; import edu.wpi.first.math.numbers.N1; @SuppressWarnings("ClassTypeParameterName") diff --git a/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystemLoop.java b/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystemLoop.java index ea67468cbb..d597988a65 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystemLoop.java +++ b/wpimath/src/main/java/edu/wpi/first/math/system/LinearSystemLoop.java @@ -6,10 +6,10 @@ package edu.wpi.first.math.system; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Num; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.controller.LinearPlantInversionFeedforward; import edu.wpi.first.math.controller.LinearQuadraticRegulator; import edu.wpi.first.math.estimator.KalmanFilter; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import java.util.function.Function; import org.ejml.MatrixDimensionException; diff --git a/wpimath/src/test/java/edu/wpi/first/math/math/StateSpaceUtilTest.java b/wpimath/src/test/java/edu/wpi/first/math/StateSpaceUtilTest.java similarity index 97% rename from wpimath/src/test/java/edu/wpi/first/math/math/StateSpaceUtilTest.java rename to wpimath/src/test/java/edu/wpi/first/math/StateSpaceUtilTest.java index 3c0dd01fb2..8ec37b6c2e 100644 --- a/wpimath/src/test/java/edu/wpi/first/math/math/StateSpaceUtilTest.java +++ b/wpimath/src/test/java/edu/wpi/first/math/StateSpaceUtilTest.java @@ -2,16 +2,12 @@ // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. -package edu.wpi.first.math.math; +package edu.wpi.first.math; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import edu.wpi.first.math.Matrix; -import edu.wpi.first.math.Nat; -import edu.wpi.first.math.SimpleMatrixUtils; -import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; import edu.wpi.first.math.numbers.N1; diff --git a/wpimath/src/test/java/edu/wpi/first/math/estimator/ExtendedKalmanFilterTest.java b/wpimath/src/test/java/edu/wpi/first/math/estimator/ExtendedKalmanFilterTest.java index f389c2fe5b..8e70291bee 100644 --- a/wpimath/src/test/java/edu/wpi/first/math/estimator/ExtendedKalmanFilterTest.java +++ b/wpimath/src/test/java/edu/wpi/first/math/estimator/ExtendedKalmanFilterTest.java @@ -9,10 +9,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N2; import edu.wpi.first.math.numbers.N3; diff --git a/wpimath/src/test/java/edu/wpi/first/math/estimator/UnscentedKalmanFilterTest.java b/wpimath/src/test/java/edu/wpi/first/math/estimator/UnscentedKalmanFilterTest.java index 96b137aef6..c4f5c88acc 100644 --- a/wpimath/src/test/java/edu/wpi/first/math/estimator/UnscentedKalmanFilterTest.java +++ b/wpimath/src/test/java/edu/wpi/first/math/estimator/UnscentedKalmanFilterTest.java @@ -8,13 +8,13 @@ import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import edu.wpi.first.math.Discretization; import edu.wpi.first.math.Matrix; import edu.wpi.first.math.Nat; +import edu.wpi.first.math.StateSpaceUtil; import edu.wpi.first.math.VecBuilder; import edu.wpi.first.math.geometry.Pose2d; import edu.wpi.first.math.geometry.Rotation2d; -import edu.wpi.first.math.math.Discretization; -import edu.wpi.first.math.math.StateSpaceUtil; import edu.wpi.first.math.numbers.N1; import edu.wpi.first.math.numbers.N2; import edu.wpi.first.math.numbers.N4;