### Question:
MathUtil { public static double powRetainingSign(double d, double power) { if (Math.abs(d) < 1e-14) { return 0; } return Math.copySign(Math.pow(Math.abs(d), power), d); }  static double angleWrap(double angle); static double clamp(double d); static double clampAbove(double d, double threshold); static double cutOffBelow(double d, double threshold); static double powRetainingSign(double d, double power); static double deadZone(double d, double thresh); static Pose relativeOdometryUpdate(Pose fieldPose, Pose robotPoseDelta); static boolean approxEquals(double d1, double d2); static Point lineSegmentCircleIntersection(Point ul1, Point ul2, Point o, double radius); static boolean between(double r1, double r2, double val, double threshold); static final double EPSILON; }### Answer:
@Test void powRetainingSign() { assertEquals(4, MathUtil.powRetainingSign(2, 2)); assertEquals(-4, MathUtil.powRetainingSign(-2, 2)); double EXPECTED_1_5_POWER = Math.sqrt(Math.pow(2, 3)); assertEquals(EXPECTED_1_5_POWER, MathUtil.powRetainingSign(2, 1.5)); assertEquals(-EXPECTED_1_5_POWER, MathUtil.powRetainingSign(-2, 1.5)); }