1 #ifndef ISL_VAL_H 2 #define ISL_VAL_H 3 4 #include <isl/stdint.h> 5 #include <isl/ctx.h> 6 #include <isl/list.h> 7 #include <isl/multi.h> 8 #include <isl/printer.h> 9 #include <isl/val_type.h> 10 11 #if defined(__cplusplus) 12 extern "C" { 13 #endif 14 15 ISL_DECLARE_MULTI(val) 16 ISL_DECLARE_MULTI_NEG(val) 17 ISL_DECLARE_MULTI_DIMS(val) 18 ISL_DECLARE_MULTI_WITH_DOMAIN(val) 19 20 __isl_export 21 __isl_give isl_val *isl_val_zero(isl_ctx *ctx); 22 __isl_export 23 __isl_give isl_val *isl_val_one(isl_ctx *ctx); 24 __isl_export 25 __isl_give isl_val *isl_val_negone(isl_ctx *ctx); 26 __isl_export 27 __isl_give isl_val *isl_val_nan(isl_ctx *ctx); 28 __isl_export 29 __isl_give isl_val *isl_val_infty(isl_ctx *ctx); 30 __isl_export 31 __isl_give isl_val *isl_val_neginfty(isl_ctx *ctx); 32 __isl_constructor 33 __isl_give isl_val *isl_val_int_from_si(isl_ctx *ctx, long i); 34 __isl_give isl_val *isl_val_int_from_ui(isl_ctx *ctx, unsigned long u); 35 __isl_give isl_val *isl_val_int_from_chunks(isl_ctx *ctx, size_t n, 36 size_t size, const void *chunks); 37 38 __isl_give isl_val *isl_val_copy(__isl_keep isl_val *v); 39 __isl_null isl_val *isl_val_free(__isl_take isl_val *v); 40 41 isl_ctx *isl_val_get_ctx(__isl_keep isl_val *val); 42 uint32_t isl_val_get_hash(__isl_keep isl_val *val); 43 long isl_val_get_num_si(__isl_keep isl_val *v); 44 long isl_val_get_den_si(__isl_keep isl_val *v); 45 __isl_give isl_val *isl_val_get_den_val(__isl_keep isl_val *v); 46 double isl_val_get_d(__isl_keep isl_val *v); 47 size_t isl_val_n_abs_num_chunks(__isl_keep isl_val *v, size_t size); 48 int isl_val_get_abs_num_chunks(__isl_keep isl_val *v, size_t size, 49 void *chunks); 50 51 __isl_give isl_val *isl_val_set_si(__isl_take isl_val *v, long i); 52 53 __isl_export 54 __isl_give isl_val *isl_val_abs(__isl_take isl_val *v); 55 __isl_export 56 __isl_give isl_val *isl_val_neg(__isl_take isl_val *v); 57 __isl_export 58 __isl_give isl_val *isl_val_inv(__isl_take isl_val *v); 59 __isl_export 60 __isl_give isl_val *isl_val_floor(__isl_take isl_val *v); 61 __isl_export 62 __isl_give isl_val *isl_val_ceil(__isl_take isl_val *v); 63 __isl_export 64 __isl_give isl_val *isl_val_trunc(__isl_take isl_val *v); 65 __isl_give isl_val *isl_val_2exp(__isl_take isl_val *v); 66 __isl_export 67 __isl_give isl_val *isl_val_pow2(__isl_take isl_val *v); 68 __isl_export 69 __isl_give isl_val *isl_val_min(__isl_take isl_val *v1, __isl_take isl_val *v2); 70 __isl_export 71 __isl_give isl_val *isl_val_max(__isl_take isl_val *v1, __isl_take isl_val *v2); 72 __isl_export 73 __isl_give isl_val *isl_val_add(__isl_take isl_val *v1, __isl_take isl_val *v2); 74 __isl_give isl_val *isl_val_add_ui(__isl_take isl_val *v1, unsigned long v2); 75 __isl_export 76 __isl_give isl_val *isl_val_sub(__isl_take isl_val *v1, __isl_take isl_val *v2); 77 __isl_give isl_val *isl_val_sub_ui(__isl_take isl_val *v1, unsigned long v2); 78 __isl_export 79 __isl_give isl_val *isl_val_mul(__isl_take isl_val *v1, __isl_take isl_val *v2); 80 __isl_give isl_val *isl_val_mul_ui(__isl_take isl_val *v1, unsigned long v2); 81 __isl_export 82 __isl_give isl_val *isl_val_div(__isl_take isl_val *v1, __isl_take isl_val *v2); 83 __isl_give isl_val *isl_val_div_ui(__isl_take isl_val *v1, unsigned long v2); 84 __isl_export 85 __isl_give isl_val *isl_val_mod(__isl_take isl_val *v1, __isl_take isl_val *v2); 86 __isl_export 87 __isl_give isl_val *isl_val_gcd(__isl_take isl_val *v1, __isl_take isl_val *v2); 88 __isl_give isl_val *isl_val_gcdext(__isl_take isl_val *v1, 89 __isl_take isl_val *v2, __isl_give isl_val **x, __isl_give isl_val **y); 90 91 __isl_export 92 int isl_val_sgn(__isl_keep isl_val *v); 93 __isl_export 94 isl_bool isl_val_is_zero(__isl_keep isl_val *v); 95 __isl_export 96 isl_bool isl_val_is_one(__isl_keep isl_val *v); 97 __isl_export 98 isl_bool isl_val_is_negone(__isl_keep isl_val *v); 99 __isl_export 100 isl_bool isl_val_is_nonneg(__isl_keep isl_val *v); 101 __isl_export 102 isl_bool isl_val_is_nonpos(__isl_keep isl_val *v); 103 __isl_export 104 isl_bool isl_val_is_pos(__isl_keep isl_val *v); 105 __isl_export 106 isl_bool isl_val_is_neg(__isl_keep isl_val *v); 107 __isl_export 108 isl_bool isl_val_is_int(__isl_keep isl_val *v); 109 __isl_export 110 isl_bool isl_val_is_rat(__isl_keep isl_val *v); 111 __isl_export 112 isl_bool isl_val_is_nan(__isl_keep isl_val *v); 113 __isl_export 114 isl_bool isl_val_is_infty(__isl_keep isl_val *v); 115 __isl_export 116 isl_bool isl_val_is_neginfty(__isl_keep isl_val *v); 117 118 __isl_export 119 int isl_val_cmp_si(__isl_keep isl_val *v, long i); 120 121 __isl_export 122 isl_bool isl_val_lt(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 123 __isl_export 124 isl_bool isl_val_le(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 125 __isl_export 126 isl_bool isl_val_gt(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 127 isl_bool isl_val_gt_si(__isl_keep isl_val *v, long i); 128 __isl_export 129 isl_bool isl_val_ge(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 130 __isl_export 131 isl_bool isl_val_eq(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 132 __isl_export 133 isl_bool isl_val_ne(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 134 __isl_export 135 isl_bool isl_val_abs_eq(__isl_keep isl_val *v1, __isl_keep isl_val *v2); 136 137 __isl_export 138 isl_bool isl_val_is_divisible_by(__isl_keep isl_val *v1, 139 __isl_keep isl_val *v2); 140 141 __isl_constructor 142 __isl_give isl_val *isl_val_read_from_str(isl_ctx *ctx, const char *str); 143 __isl_give isl_printer *isl_printer_print_val(__isl_take isl_printer *p, 144 __isl_keep isl_val *v); 145 void isl_val_dump(__isl_keep isl_val *v); 146 __isl_give char *isl_val_to_str(__isl_keep isl_val *v); 147 148 __isl_give isl_multi_val *isl_multi_val_add_val(__isl_take isl_multi_val *mv, 149 __isl_take isl_val *v); 150 __isl_give isl_multi_val *isl_multi_val_mod_val(__isl_take isl_multi_val *mv, 151 __isl_take isl_val *v); 152 153 __isl_give isl_multi_val *isl_multi_val_read_from_str(isl_ctx *ctx, 154 const char *str); 155 __isl_give isl_printer *isl_printer_print_multi_val(__isl_take isl_printer *p, 156 __isl_keep isl_multi_val *mv); 157 void isl_multi_val_dump(__isl_keep isl_multi_val *mv); 158 __isl_give char *isl_multi_val_to_str(__isl_keep isl_multi_val *mv); 159 160 ISL_DECLARE_LIST_FN(val) 161 162 #if defined(__cplusplus) 163 } 164 #endif 165 166 #endif 167