package church.primitives; import church.lang.ByteStream; public class Doubles { // Encoding to a stream public static ByteStream $encode(ByteStream stream, double a) { return Strings.encode(stream, Double.toString(a)); } // Equality public static boolean $equal(double a, double b) { return a == b; } // Value bounds public static double min_value() { return -Double.MAX_VALUE; } public static double max_value() { return +Double.MAX_VALUE; } // Ring public static double additive_identity() { return 0; } public static double $sum(double a, double b) { return a + b; } public static double $neg(double a) { return -a; } public static double $sub(double a, double b) { return a - b; } public static double multiplicative_identity() { return 1; } public static double $prd(double a, double b) { return a * b; } public static double $pow(double x, double n) { return Math.pow(x, n); } // Field public static double $rcp(double a) { return 1 / a; } public static double $div(double a, double b) { return a / b; } // Ordering public static boolean $lt(double a, double b) { return a < b; } public static boolean $gt(double a, double b) { return a > b; } public static boolean $lte(double a, double b) { return a <= b; } public static boolean $gte(double a, double b) { return a >= b; } public static double min(double a, double b) { // todo don't copy these return Math.min(a, b); } public static double max(double a, double b) { // todo don't copy these return Math.max(a, b); } }