Fix compiler warning
[cloog/uuh.git] / source / int.c
blob197447edd3b8779233151fc7f93cd99df9f8d577
1 #include <stdlib.h>
2 #include "../include/cloog/cloog.h"
4 #define ALLOC(type) (type*)malloc(sizeof(type))
5 #define ALLOCN(type,n) (type*)malloc((n)*sizeof(type))
7 #if defined(CLOOG_INT_INT) || \
8 defined(CLOOG_INT_LONG) || \
9 defined(CLOOG_INT_LONG_LONG)
11 cloog_int_t cloog_gcd(cloog_int_t a, cloog_int_t b)
13 while (a) {
14 cloog_int_t t = b % a;
15 b = a;
16 a = t;
18 if (b < 0)
19 b = -b;
20 return b;
23 #endif
25 struct cloog_vec *cloog_vec_alloc(unsigned size)
27 int i;
28 struct cloog_vec *vec;
30 vec = ALLOC(struct cloog_vec);
31 if (!vec)
32 return NULL;
34 vec->p = ALLOCN(cloog_int_t, size);
35 if (!vec->p)
36 goto error;
37 vec->size = size;
39 for (i = 0; i < size; ++i)
40 cloog_int_init(vec->p[i]);
42 return vec;
43 error:
44 free(vec);
45 return NULL;
48 void cloog_vec_free(struct cloog_vec *vec)
50 int i;
52 if (!vec)
53 return;
55 for (i = 0; i < vec->size; ++i)
56 cloog_int_clear(vec->p[i]);
57 free(vec->p);
58 free(vec);
61 void cloog_seq_neg(cloog_int_t *dst, cloog_int_t *src, unsigned len)
63 int i;
64 for (i = 0; i < len; ++i)
65 cloog_int_neg(dst[i], src[i]);
68 void cloog_seq_combine(cloog_int_t *dst, cloog_int_t m1, cloog_int_t *src1,
69 cloog_int_t m2, cloog_int_t *src2, unsigned len)
71 int i;
72 cloog_int_t tmp;
74 cloog_int_init(tmp);
75 for (i = 0; i < len; ++i) {
76 cloog_int_mul(tmp, m1, src1[i]);
77 cloog_int_addmul(tmp, m2, src2[i]);
78 cloog_int_set(dst[i], tmp);
80 cloog_int_clear(tmp);