package jazz.lang; /////////////////////////////////////////////////////////////////////////////// // // Mathematical functions // /////////////////////////////////////////////////////////////////////////////// public abstract final class Math { public static E: float = native("double java.lang.Math.E"); public static PI: float = native("double java.lang.Math.PI"); public native static acos(x: float): float = "double java.lang.Math.acos(double)"; public native static asin(x: float): float = "double java.lang.Math.asin(double)"; public native static atan(x: float): float = "double java.lang.Math.atan(double)"; public native static ceil(x:float): float = "double java.lang.Math.ceil(double)"; public native static cos(x:float): float = "double java.lang.Math.cos(double)"; public native static exp(x:float): float = "double java.lang.Math.exp(double)"; public native static floor(x:float): float = "double java.lang.Math.floor(double)"; public native static log(x:float): float = "double java.lang.Math.log(double)"; public native static pow(x:float, e: float): float = "double java.lang.Math.pow(double, double)"; public native static random(): int = "double java.lang.Math.random()"; public native static round(x:float): int = "long java.lang.Math.round(double)"; public native static sin(x: float): float = "double java.lang.Math.sin(double)"; public native static sqrt(x: float): float = "double java.lang.Math.sqrt(double)"; public native static tan(x: float): float = "double java.lang.Math.tan(double)"; public static abs<T: float>(x: T): T; public static max<T: float>(x: T, y: T): T; public static min<T: float>(x: T, y: T): T; public static trunc(x: float): int; } /////////////////////////////////////////////////////////////////////////////// // // Implementation // /////////////////////////////////////////////////////////////////////////////// Math.abs(x) = (x < 0 ? -x : x); Math.min(x, y) = (x < y ? x : y); Math.max(x, y) = (x > y ? x : y); Math.trunc(x) = Math.round(Math.floor(x));