X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_mat.h;h=97cc1073f94c36a179ae5c9005b4c1363a7a57b3;hb=b3acbdec6ee87a2c00278f47556b7de0653a7687;hp=12346fa44a8878b359e4ec54ce87f821387c4bb4;hpb=177d99db8865eca40bf8baf52da173f287b8d3c5;p=platform%2Fupstream%2Fisl.git diff --git a/isl_mat.h b/isl_mat.h index 12346fa..97cc107 100644 --- a/isl_mat.h +++ b/isl_mat.h @@ -29,6 +29,8 @@ struct isl_mat { struct isl_mat *isl_mat_alloc(struct isl_ctx *ctx, unsigned n_row, unsigned n_col); +struct isl_mat *isl_mat_extend(struct isl_ctx *ctx, struct isl_mat *mat, + unsigned n_row, unsigned n_col); struct isl_mat *isl_mat_identity(struct isl_ctx *ctx, unsigned n_row); struct isl_mat *isl_mat_copy(struct isl_ctx *ctx, struct isl_mat *mat); struct isl_mat *isl_mat_cow(struct isl_ctx *ctx, struct isl_mat *mat); @@ -41,6 +43,8 @@ void isl_mat_sub_copy(struct isl_ctx *ctx, isl_int **dst, isl_int **src, void isl_mat_sub_neg(struct isl_ctx *ctx, isl_int **dst, isl_int **src, unsigned n_row, unsigned dst_col, unsigned src_col, unsigned n_col); +struct isl_mat *isl_mat_swap_cols(struct isl_ctx *ctx, + struct isl_mat *mat, unsigned i, unsigned j); struct isl_mat *isl_mat_swap_rows(struct isl_ctx *ctx, struct isl_mat *mat, unsigned i, unsigned j); @@ -49,20 +53,32 @@ struct isl_vec *isl_mat_vec_product(struct isl_ctx *ctx, struct isl_mat *isl_mat_aff_direct_sum(struct isl_ctx *ctx, struct isl_mat *left, struct isl_mat *right); struct isl_mat *isl_mat_left_hermite(struct isl_ctx *ctx, - struct isl_mat *M, struct isl_mat **U, struct isl_mat **Q); + struct isl_mat *M, int neg, struct isl_mat **U, struct isl_mat **Q); struct isl_mat *isl_mat_lin_to_aff(struct isl_ctx *ctx, struct isl_mat *mat); struct isl_mat *isl_mat_inverse_product(struct isl_ctx *ctx, struct isl_mat *left, struct isl_mat *right); struct isl_mat *isl_mat_product(struct isl_ctx *ctx, struct isl_mat *left, struct isl_mat *right); +struct isl_mat *isl_mat_transpose(struct isl_ctx *ctx, struct isl_mat *mat); +struct isl_mat *isl_mat_right_inverse(struct isl_ctx *ctx, + struct isl_mat *mat); +struct isl_mat *isl_mat_right_kernel(struct isl_ctx *ctx, struct isl_mat *mat); -struct isl_mat *isl_mat_drop_col(struct isl_ctx *ctx, struct isl_mat *mat, - unsigned col); +struct isl_mat *isl_mat_drop_cols(struct isl_ctx *ctx, struct isl_mat *mat, + unsigned col, unsigned n); struct isl_mat *isl_mat_drop_rows(struct isl_ctx *ctx, struct isl_mat *mat, unsigned row, unsigned n); -struct isl_basic_set *isl_basic_set_preimage(struct isl_ctx *ctx, - struct isl_basic_set *bset, struct isl_mat *mat); +void isl_mat_col_mul(struct isl_mat *mat, int dst_col, isl_int f, int src_col); +void isl_mat_col_submul(struct isl_mat *mat, + int dst_col, isl_int f, int src_col); + +struct isl_basic_set *isl_basic_set_preimage(struct isl_basic_set *bset, + struct isl_mat *mat); +struct isl_set *isl_set_preimage(struct isl_set *set, struct isl_mat *mat); + +struct isl_mat *isl_mat_unimodular_complete(struct isl_ctx *ctx, + struct isl_mat *M, int row); void isl_mat_dump(struct isl_ctx *ctx, struct isl_mat *mat, FILE *out, int indent);