#include "isl_seq.h"

Go to the source code of this file.
Functions | |
| void | isl_seq_clr (isl_int *p, unsigned len) |
| void | isl_seq_neg (isl_int *dst, isl_int *src, unsigned len) |
| void | isl_seq_cpy (isl_int *dst, isl_int *src, unsigned len) |
| void | isl_seq_submul (isl_int *dst, isl_int f, isl_int *src, unsigned len) |
| void | isl_seq_swp_or_cpy (isl_int *dst, isl_int *src, unsigned len) |
| void | isl_seq_scale (isl_int *dst, isl_int *src, isl_int m, unsigned len) |
| void | isl_seq_scale_down (isl_int *dst, isl_int *src, isl_int m, unsigned len) |
| void | isl_seq_fdiv_q (isl_int *dst, isl_int *src, isl_int m, unsigned len) |
| void | isl_seq_fdiv_r (isl_int *dst, isl_int *src, isl_int m, unsigned len) |
| void | isl_seq_combine (isl_int *dst, isl_int m1, isl_int *src1, isl_int m2, isl_int *src2, unsigned len) |
| void | isl_seq_elim (isl_int *dst, isl_int *src, unsigned pos, unsigned len, isl_int *m) |
| int | isl_seq_eq (isl_int *p1, isl_int *p2, unsigned len) |
| int | isl_seq_cmp (isl_int *p1, isl_int *p2, unsigned len) |
| int | isl_seq_is_neg (isl_int *p1, isl_int *p2, unsigned len) |
| int | isl_seq_first_non_zero (isl_int *p, unsigned len) |
| int | isl_seq_abs_min_non_zero (isl_int *p, unsigned len) |
| void | isl_seq_gcd (isl_int *p, unsigned len, isl_int *gcd) |
| void | isl_seq_normalize (isl_int *p, unsigned len) |
| void | isl_seq_lcm (isl_int *p, unsigned len, isl_int *lcm) |
| void | isl_seq_inner_product (isl_int *p1, isl_int *p2, unsigned len, isl_int *prod) |
| uint32_t | isl_seq_hash (isl_int *p, unsigned len, uint32_t hash) |
| uint32_t | isl_seq_get_hash (isl_int *p, unsigned len) |
| uint32_t | isl_seq_get_hash_bits (isl_int *p, unsigned len, unsigned bits) |
| int isl_seq_abs_min_non_zero | ( | isl_int * | p, | |
| unsigned | len | |||
| ) |
Definition at line 156 of file isl_seq.c.
00157 { 00158 int i, min = isl_seq_first_non_zero(p, len); 00159 if (min < 0) 00160 return -1; 00161 for (i = min + 1; i < len; ++i) { 00162 if (isl_int_is_zero(p[i])) 00163 continue; 00164 if (isl_int_abs_lt(p[i], p[min])) 00165 min = i; 00166 } 00167 return min; 00168 }

| void isl_seq_clr | ( | isl_int * | p, | |
| unsigned | len | |||
| ) |
Definition at line 3 of file isl_seq.c.
00004 { 00005 int i; 00006 for (i = 0; i < len; ++i) 00007 isl_int_set_si(p[i], 0); 00008 }
Definition at line 121 of file isl_seq.c.
00122 { 00123 int i; 00124 int cmp; 00125 for (i = 0; i < len; ++i) 00126 if ((cmp = isl_int_cmp(p1[i], p2[i])) != 0) 00127 return cmp; 00128 return 0; 00129 }
| void isl_seq_combine | ( | isl_int * | dst, | |
| isl_int | m1, | |||
| isl_int * | src1, | |||
| isl_int | m2, | |||
| isl_int * | src2, | |||
| unsigned | len | |||
| ) |
Definition at line 66 of file isl_seq.c.
00068 { 00069 int i; 00070 isl_int tmp; 00071 00072 isl_int_init(tmp); 00073 for (i = 0; i < len; ++i) { 00074 isl_int_mul(tmp, m1, src1[i]); 00075 isl_int_addmul(tmp, m2, src2[i]); 00076 isl_int_set(dst[i], tmp); 00077 } 00078 isl_int_clear(tmp); 00079 }
Definition at line 17 of file isl_seq.c.
00018 { 00019 int i; 00020 for (i = 0; i < len; ++i) 00021 isl_int_set(dst[i], src[i]); 00022 }
Definition at line 85 of file isl_seq.c.
00087 { 00088 isl_int a; 00089 isl_int b; 00090 00091 if (isl_int_is_zero(dst[pos])) 00092 return; 00093 00094 isl_int_init(a); 00095 isl_int_init(b); 00096 00097 isl_int_gcd(a, src[pos], dst[pos]); 00098 isl_int_divexact(b, dst[pos], a); 00099 if (isl_int_is_pos(src[pos])) 00100 isl_int_neg(b, b); 00101 isl_int_divexact(a, src[pos], a); 00102 isl_int_abs(a, a); 00103 isl_seq_combine(dst, a, dst, b, src, len); 00104 00105 if (m) 00106 isl_int_mul(*m, *m, a); 00107 00108 isl_int_clear(a); 00109 isl_int_clear(b); 00110 }

Definition at line 112 of file isl_seq.c.
00113 { 00114 int i; 00115 for (i = 0; i < len; ++i) 00116 if (isl_int_ne(p1[i], p2[i])) 00117 return 0; 00118 return 1; 00119 }
Definition at line 52 of file isl_seq.c.
00053 { 00054 int i; 00055 for (i = 0; i < len; ++i) 00056 isl_int_fdiv_q(dst[i], src[i], m); 00057 }
Definition at line 59 of file isl_seq.c.
00060 { 00061 int i; 00062 for (i = 0; i < len; ++i) 00063 isl_int_fdiv_r(dst[i], src[i], m); 00064 }
| int isl_seq_first_non_zero | ( | isl_int * | p, | |
| unsigned | len | |||
| ) |
Definition at line 146 of file isl_seq.c.
00147 { 00148 int i; 00149 00150 for (i = 0; i < len; ++i) 00151 if (!isl_int_is_zero(p[i])) 00152 return i; 00153 return -1; 00154 }
Definition at line 170 of file isl_seq.c.
00171 { 00172 int i, min = isl_seq_abs_min_non_zero(p, len); 00173 00174 if (min < 0) { 00175 isl_int_set_si(*gcd, 0); 00176 return; 00177 } 00178 isl_int_abs(*gcd, p[min]); 00179 for (i = 0; isl_int_cmp_si(*gcd, 1) > 0 && i < len; ++i) { 00180 if (i == min) 00181 continue; 00182 if (isl_int_is_zero(p[i])) 00183 continue; 00184 isl_int_gcd(*gcd, *gcd, p[i]); 00185 } 00186 }

| uint32_t isl_seq_get_hash | ( | isl_int * | p, | |
| unsigned | len | |||
| ) |
Definition at line 240 of file isl_seq.c.
00241 { 00242 uint32_t hash = isl_hash_init(); 00243 00244 return isl_seq_hash(p, len, hash); 00245 }

| uint32_t isl_seq_get_hash_bits | ( | isl_int * | p, | |
| unsigned | len, | |||
| unsigned | bits | |||
| ) |
Definition at line 247 of file isl_seq.c.
00248 { 00249 uint32_t hash; 00250 00251 hash = isl_seq_get_hash(p, len); 00252 return isl_hash_bits(hash, bits); 00253 }

| uint32_t isl_seq_hash | ( | isl_int * | p, | |
| unsigned | len, | |||
| uint32_t | hash | |||
| ) |
Definition at line 227 of file isl_seq.c.
00228 { 00229 int i; 00230 for (i = 0; i < len; ++i) { 00231 if (isl_int_is_zero(p[i])) 00232 continue; 00233 hash *= 16777619; 00234 hash ^= (i & 0xFF); 00235 hash = isl_int_hash(p[i], hash); 00236 } 00237 return hash; 00238 }
Definition at line 214 of file isl_seq.c.
00216 { 00217 int i; 00218 if (len == 0) { 00219 isl_int_set_si(*prod, 0); 00220 return; 00221 } 00222 isl_int_mul(*prod, p1[0], p2[0]); 00223 for (i = 1; i < len; ++i) 00224 isl_int_addmul(*prod, p1[i], p2[i]); 00225 }
Definition at line 131 of file isl_seq.c.
00132 { 00133 int i; 00134 00135 for (i = 0; i < len; ++i) { 00136 if (isl_int_abs_ne(p1[i], p2[i])) 00137 return 0; 00138 if (isl_int_is_zero(p1[i])) 00139 continue; 00140 if (isl_int_eq(p1[i], p2[i])) 00141 return 0; 00142 } 00143 return 1; 00144 }
Definition at line 201 of file isl_seq.c.
00202 { 00203 int i; 00204 00205 if (len == 0) { 00206 isl_int_set_si(*lcm, 1); 00207 return; 00208 } 00209 isl_int_set(*lcm, p[0]); 00210 for (i = 1; i < len; ++i) 00211 isl_int_lcm(*lcm, *lcm, p[i]); 00212 }
Definition at line 10 of file isl_seq.c.
00011 { 00012 int i; 00013 for (i = 0; i < len; ++i) 00014 isl_int_neg(dst[i], src[i]); 00015 }
| void isl_seq_normalize | ( | isl_int * | p, | |
| unsigned | len | |||
| ) |
Definition at line 188 of file isl_seq.c.
00189 { 00190 isl_int gcd; 00191 00192 if (len == 0) 00193 return; 00194 isl_int_init(gcd); 00195 isl_seq_gcd(p, len, &gcd); 00196 if (!isl_int_is_zero(gcd)) 00197 isl_seq_scale_down(p, p, gcd, len); 00198 isl_int_clear(gcd); 00199 }

Definition at line 38 of file isl_seq.c.
00039 { 00040 int i; 00041 for (i = 0; i < len; ++i) 00042 isl_int_mul(dst[i], src[i], m); 00043 }
Definition at line 45 of file isl_seq.c.
00046 { 00047 int i; 00048 for (i = 0; i < len; ++i) 00049 isl_int_divexact(dst[i], src[i], m); 00050 }
Definition at line 24 of file isl_seq.c.
00025 { 00026 int i; 00027 for (i = 0; i < len; ++i) 00028 isl_int_submul(dst[i], f, src[i]); 00029 }
Definition at line 31 of file isl_seq.c.
00032 { 00033 int i; 00034 for (i = 0; i < len; ++i) 00035 isl_int_swap_or_set(dst[i], src[i]); 00036 }
1.5.7.1