From 3d888bf4a1f9e81964266360b92212926c0b8f8d Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 30 Sep 2009 12:37:35 +0200 Subject: export isl_mat header --- Makefile.am | 2 +- include/isl_mat.h | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ isl_map_private.h | 6 ++++ isl_mat.h | 90 ------------------------------------------------------- 4 files changed, 93 insertions(+), 91 deletions(-) create mode 100644 include/isl_mat.h delete mode 100644 isl_mat.h diff --git a/Makefile.am b/Makefile.am index 808e586d..118f4de9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -68,7 +68,6 @@ libisl_la_SOURCES = \ isl_map_private.h \ isl_map_piplib.h \ isl_mat.c \ - isl_mat.h \ isl_name.c \ isl_name.h \ isl_output.c \ @@ -140,6 +139,7 @@ pkginclude_HEADERS = \ include/isl_hash.h \ include/isl_list.h \ include/isl_lp.h \ + include/isl_mat.h \ include/isl_map.h \ include/isl_map_polylib.h \ include/isl_polylib.h \ diff --git a/include/isl_mat.h b/include/isl_mat.h new file mode 100644 index 00000000..55d39b08 --- /dev/null +++ b/include/isl_mat.h @@ -0,0 +1,86 @@ +#ifndef ISL_MAT_H +#define ISL_MAT_H + +#include + +#include +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +struct isl_mat { + int ref; + + struct isl_ctx *ctx; + +#define ISL_MAT_BORROWED (1 << 0) + unsigned flags; + + unsigned n_row; + unsigned n_col; + + isl_int **row; + + /* actual size of the rows in memory; n_col <= max_col */ + unsigned max_col; + + struct isl_blk block; +}; +typedef struct isl_mat isl_mat; + +struct isl_mat *isl_mat_alloc(struct isl_ctx *ctx, + unsigned n_row, unsigned n_col); +struct isl_mat *isl_mat_dup(struct isl_mat *mat); +struct isl_mat *isl_mat_extend(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_mat *mat); +struct isl_mat *isl_mat_cow(struct isl_mat *mat); +void isl_mat_free(struct isl_mat *mat); + +struct isl_mat *isl_mat_sub_alloc(struct isl_ctx *ctx, isl_int **row, + unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col); +void isl_mat_sub_copy(struct isl_ctx *ctx, isl_int **dst, isl_int **src, + unsigned n_row, unsigned dst_col, unsigned src_col, unsigned n_col); +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_mat *mat, unsigned i, unsigned j); +struct isl_mat *isl_mat_swap_rows(struct isl_mat *mat, unsigned i, unsigned j); + +struct isl_vec *isl_mat_vec_product(struct isl_mat *mat, struct isl_vec *vec); +struct isl_vec *isl_vec_mat_product(struct isl_vec *vec, struct isl_mat *mat); +struct isl_mat *isl_mat_aff_direct_sum(struct isl_mat *left, + struct isl_mat *right); +struct isl_mat *isl_mat_left_hermite(struct isl_mat *M, + int neg, struct isl_mat **U, struct isl_mat **Q); +struct isl_mat *isl_mat_lin_to_aff(struct isl_mat *mat); +struct isl_mat *isl_mat_inverse_product(struct isl_mat *left, + struct isl_mat *right); +struct isl_mat *isl_mat_product(struct isl_mat *left, struct isl_mat *right); +struct isl_mat *isl_mat_transpose(struct isl_mat *mat); +struct isl_mat *isl_mat_right_inverse(struct isl_mat *mat); +struct isl_mat *isl_mat_right_kernel(struct isl_mat *mat); + +struct isl_mat *isl_mat_drop_cols(struct isl_mat *mat, + unsigned col, unsigned n); +struct isl_mat *isl_mat_drop_rows(struct isl_mat *mat, + unsigned row, unsigned n); + +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_mat *isl_mat_unimodular_complete(struct isl_mat *M, int row); + +void isl_mat_dump(struct isl_mat *mat, FILE *out, int indent); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/isl_map_private.h b/isl_map_private.h index bad2f58a..bbf522ad 100644 --- a/isl_map_private.h +++ b/isl_map_private.h @@ -123,3 +123,9 @@ struct isl_basic_set *isl_basic_set_recession_cone(struct isl_basic_set *bset); struct isl_basic_set *isl_basic_set_lineality_space(struct isl_basic_set *bset); struct isl_basic_set *isl_basic_set_set_rational(struct isl_basic_set *bset); + +struct isl_mat; + +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); diff --git a/isl_mat.h b/isl_mat.h deleted file mode 100644 index 6e44a96c..00000000 --- a/isl_mat.h +++ /dev/null @@ -1,90 +0,0 @@ -#ifndef ISL_MAT_H -#define ISL_MAT_H - -#include - -#include -#include -#include -#include -#include "isl_vec.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -struct isl_mat { - int ref; - - struct isl_ctx *ctx; - -#define ISL_MAT_BORROWED (1 << 0) - unsigned flags; - - unsigned n_row; - unsigned n_col; - - isl_int **row; - - /* actual size of the rows in memory; n_col <= max_col */ - unsigned max_col; - - struct isl_blk block; -}; - -struct isl_mat *isl_mat_alloc(struct isl_ctx *ctx, - unsigned n_row, unsigned n_col); -struct isl_mat *isl_mat_dup(struct isl_mat *mat); -struct isl_mat *isl_mat_extend(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_mat *mat); -struct isl_mat *isl_mat_cow(struct isl_mat *mat); -void isl_mat_free(struct isl_mat *mat); - -struct isl_mat *isl_mat_sub_alloc(struct isl_ctx *ctx, isl_int **row, - unsigned first_row, unsigned n_row, unsigned first_col, unsigned n_col); -void isl_mat_sub_copy(struct isl_ctx *ctx, isl_int **dst, isl_int **src, - unsigned n_row, unsigned dst_col, unsigned src_col, unsigned n_col); -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_mat *mat, unsigned i, unsigned j); -struct isl_mat *isl_mat_swap_rows(struct isl_mat *mat, unsigned i, unsigned j); - -struct isl_vec *isl_mat_vec_product(struct isl_mat *mat, struct isl_vec *vec); -struct isl_vec *isl_vec_mat_product(struct isl_vec *vec, struct isl_mat *mat); -struct isl_mat *isl_mat_aff_direct_sum(struct isl_mat *left, - struct isl_mat *right); -struct isl_mat *isl_mat_left_hermite(struct isl_mat *M, - int neg, struct isl_mat **U, struct isl_mat **Q); -struct isl_mat *isl_mat_lin_to_aff(struct isl_mat *mat); -struct isl_mat *isl_mat_inverse_product(struct isl_mat *left, - struct isl_mat *right); -struct isl_mat *isl_mat_product(struct isl_mat *left, struct isl_mat *right); -struct isl_mat *isl_mat_transpose(struct isl_mat *mat); -struct isl_mat *isl_mat_right_inverse(struct isl_mat *mat); -struct isl_mat *isl_mat_right_kernel(struct isl_mat *mat); - -struct isl_mat *isl_mat_drop_cols(struct isl_mat *mat, - unsigned col, unsigned n); -struct isl_mat *isl_mat_drop_rows(struct isl_mat *mat, - unsigned row, unsigned n); - -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_mat *M, int row); - -void isl_mat_dump(struct isl_mat *mat, FILE *out, int indent); - -#if defined(__cplusplus) -} -#endif - -#endif -- cgit v1.2.3