MathUtil { @Pure @Inline(value = "1./Math.sin($1)", imported = {Math.class}) public static double csc(double angle) { return 1. / Math.sin(angle); } private  MathUtil(); @Pure @Inline(value = "($1 == 0. || Double.isNaN($1)) ? 0 : (($1 < -0.) ? -1 : 1)") static int sign(double value); @Pure @Inline(value = "(($1 < -0.) ? -1 : 1)") static int signNoZero(double value); @Pure static double clamp(double v, double min, double max); @Pure static int clamp(int v, int min, int max); @Pure @Inline(value = "Math.abs($1) < Math.ulp($1)", imported = Math.class) static boolean isEpsilonZero(double value); @Pure @Inline(value = "Math.abs($1) < (Double.isNaN($2) ? Math.ulp($1) : ($2))", imported = Math.class) static boolean isEpsilonZero(double value, double epsilon); @Pure @Inline(value = "MathUtil.isEpsilonEqual($1, $2, Double.NaN)", imported = {MathUtil.class}) static boolean isEpsilonEqual(double v1, double v2); @Pure static boolean isEpsilonEqual(double v1, double v2, double epsilon); @Pure static int compareEpsilon(double v1, double v2); @Pure static int compareEpsilon(double v1, double v2, double epsilon); @Pure static double max(double... values); @Pure static float max(float... values); @Pure static int max(int... values); @Pure static long max(long... values); @Pure static short max(short... values); @Pure static double min(double... values); @Pure static float min(float... values); @Pure static int min(int... values); @Pure static long min(long... values); @Pure static short min(short... values); @Pure static double clampCyclic(double value, double min, double max); @Pure static double clampToNearestBounds(double value, double minBounds, double maxBounds); @Pure static int getCohenSutherlandCode(int px, int py, int rxmin, int rymin, int rxmax, int rymax); @Pure static int getCohenSutherlandCode(double px, double py, double rxmin, double rymin, double rxmax, double rymax); @Pure @SuppressWarnings("checkstyle:parameternumber") static int getCohenSutherlandCode3D(int px, int py, int pz, int rxmin, int rymin, int rzmin, int rxmax, int rymax,
            int rzmax); @Pure @SuppressWarnings("checkstyle:parameternumber") static int getCohenSutherlandCode3D(double px, double py, double pz, double rxmin, double rymin, double rzmin,
            double rxmax, double rymax, double rzmax); static DoubleRange getMinMax(double value1, double value2, double value3); @Pure @Inline(value = "1./Math.sin($1)", imported = {Math.class}) static double csc(double angle); @Pure @Inline(value = "1./Math.cos($1)", imported = {Math.class}) static double sec(double angle); @Pure @Inline(value = "1./Math.tan($1)", imported = {Math.class}) static double cot(double angle); @Pure @Inline(value = "1.-Math.cos($1)", imported = {Math.class}) static double versin(double angle); @Pure @Inline(value = "MathUtil.sec($1)-1.", imported = {MathUtil.class}) static double exsec(double angle); @Pure @Inline(value = "2.*Math.sin(($1)/2.)", imported = {Math.class}) static double crd(double angle); @Pure static double haversine(double angle);  }
@Test public void csc() { assertInlineParameterUsage(MathUtil.class, "csc", double.class); }