1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
(*
** For writing ATS code
** that translates into Python
*)
(* ****** ****** *)
//
// HX-2014-08:
// prefix for external names
//
#define
ATS_EXTERN_PREFIX "ats2pypre_"
//
(* ****** ****** *)
//
fun double2int (x: double): int = "mac#%"
fun int_of_double (x: double): int = "mac#%"
//
fun int2double (x: int): double = "mac#%"
fun double_of_int (x: int): double = "mac#%"
//
(* ****** ****** *)
fun abs_double : (double) -> double = "mac#%"
fun neg_double : (double) -> double = "mac#%"
(* ****** ****** *)
overload abs with abs_double of 100
overload neg with neg_double of 100
(* ****** ****** *)
fun succ_double : (double) -> double = "mac#%"
fun pred_double : (double) -> double = "mac#%"
(* ****** ****** *)
overload succ with succ_double of 100
overload pred with pred_double of 100
(* ****** ****** *)
//
fun add_int_double
: (int, double) -<fun> double = "mac#%"
fun add_double_int
: (double, int) -<fun> double = "mac#%"
//
fun sub_int_double
: (int, double) -<fun> double = "mac#%"
fun sub_double_int
: (double, int) -<fun> double = "mac#%"
//
fun mul_int_double
: (int, double) -<fun> double = "mac#%"
fun mul_double_int
: (double, int) -<fun> double = "mac#%"
//
fun div_int_double
: (int, double) -<fun> double = "mac#%"
fun div_double_int
: (double, int) -<fun> double = "mac#%"
//
(* ****** ****** *)
overload + with add_int_double of 100
overload + with add_double_int of 100
overload - with sub_int_double of 100
overload - with sub_double_int of 100
overload * with mul_int_double of 100
overload * with mul_double_int of 100
overload / with div_int_double of 100
overload / with div_double_int of 100
(* ****** ****** *)
typedef
float_aop_type = (double, double) -> double
(* ****** ****** *)
//
fun add_double_double : float_aop_type = "mac#%"
fun sub_double_double : float_aop_type = "mac#%"
fun mul_double_double : float_aop_type = "mac#%"
fun div_double_double : float_aop_type = "mac#%"
//
(* ****** ****** *)
//
overload + with add_double_double of 100
overload - with sub_double_double of 100
overload * with mul_double_double of 100
overload / with div_double_double of 100
//
(* ****** ****** *)
//
fun lt_int_double
: (int, double) -<fun> bool = "mac#%"
fun lte_int_double
: (int, double) -<fun> bool = "mac#%"
fun gt_int_double
: (int, double) -<fun> bool = "mac#%"
fun gte_int_double
: (int, double) -<fun> bool = "mac#%"
//
fun lt_double_int
: (double, int) -<fun> bool = "mac#%"
fun lte_double_int
: (double, int) -<fun> bool = "mac#%"
fun gt_double_int
: (double, int) -<fun> bool = "mac#%"
fun gte_double_int
: (double, int) -<fun> bool = "mac#%"
//
(* ****** ****** *)
typedef
float_cmp_type = (double, double) -<fun> bool
(* ****** ****** *)
//
fun lt_double_double : float_cmp_type = "mac#%"
fun lte_double_double : float_cmp_type = "mac#%"
//
fun gt_double_double : float_cmp_type = "mac#%"
fun gte_double_double : float_cmp_type = "mac#%"
//
fun eq_double_double : float_cmp_type = "mac#%"
fun neq_double_double : float_cmp_type = "mac#%"
//
(* ****** ****** *)
//
fun
compare_double_double : (double, double) -<fun> int
//
(* ****** ****** *)
//
overload < with lt_double_double of 100
overload <= with lte_double_double of 100
overload > with gt_double_double of 100
overload >= with gte_double_double of 100
overload = with eq_double_double of 100
overload != with neq_double_double of 100
overload <> with neq_double_double of 100
//
overload compare with compare_double_double of 100
//
(* ****** ****** *)
(* end of [float.sats] *)
|