signature Real = sig (* * Types *) type real; (* * Binary Operations (infix) *) val + : real * real -> real and - : real * real -> real and * : real * real -> real and / : real * real -> real (* * Unary Operations *) and ~ : real -> real and ln : real -> real and sin : real -> real and cos : real -> real and arctan: real -> real and abs : real -> real and exp : real -> real (* * Predicates (infix) *) and < : real * real -> bool and <= : real * real -> bool and >= : real * real -> bool and > : real * real -> bool end; structure Real(* : Real *)= struct (* * Types *) type real = real; (* * Binary Operations (infix) *) val op + = op + : real * real -> real and op - = op - : real * real -> real and op * = op * : real * real -> real and op / = op / : real * real -> real (* * Unary Operations *) and ~ = ~ : real -> real and ln = ln : real -> real and sin = sin : real -> real and cos = cos : real -> real and arctan = arctan : real -> real and abs = abs : real -> real and exp = exp : real -> real (* * Predicates (infix) *) and op < = op < : real * real -> bool and op <= = op <= : real * real -> bool and op >= = op >= : real * real -> bool and op > = op > : real * real -> bool end;