X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=matrix.h;h=162f761d46bc3601bb8b41c4b9bb8e57d4de7192;hb=007d7aaf04ac690f0e6312c7d0f93240accd94c5;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=d01193ed5f4474a0f51b2b8dd809f5b39ac9b722;p=libfirm diff --git a/matrix.h b/matrix.h index e69de29bb..162f761d4 100644 --- a/matrix.h +++ b/matrix.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/** + * @file + * @brief PBQP matrix. + * @date 02.10.2008 + * @author Sebastian Buchwald + * @version $Id$ + */ +#ifndef KAPS_MATRIX_H +#define KAPS_MATRIX_H + +#include "matrix_t.h" + +pbqp_matrix *pbqp_matrix_alloc(pbqp *pbqp, unsigned rows, unsigned cols); + +/* Copy the given matrix. */ +pbqp_matrix *pbqp_matrix_copy(pbqp *pbqp, pbqp_matrix *m); + +pbqp_matrix *pbqp_matrix_copy_and_transpose(pbqp *pbqp, pbqp_matrix *m); + +void pbqp_matrix_transpose(pbqp *pbqp, pbqp_matrix *mat); + +/* sum += summand */ +void pbqp_matrix_add(pbqp_matrix *sum, pbqp_matrix *summand); + +void pbqp_matrix_set(pbqp_matrix *mat, unsigned row, unsigned col, num value); + +num pbqp_matrix_get_col_min(pbqp_matrix *matrix, unsigned col_index, vector *flags); +num pbqp_matrix_get_row_min(pbqp_matrix *matrix, unsigned row_index, vector *flags); + +unsigned pbqp_matrix_get_col_min_index(pbqp_matrix *matrix, unsigned col_index, vector *flags); +unsigned pbqp_matrix_get_row_min_index(pbqp_matrix *matrix, unsigned row_index, vector *flags); + +void pbqp_matrix_set_col_value(pbqp_matrix *mat, unsigned col, num value); +void pbqp_matrix_set_row_value(pbqp_matrix *mat, unsigned row, num value); + +void pbqp_matrix_sub_col_value(pbqp_matrix *matrix, unsigned col_index, + vector *flags, num value); +void pbqp_matrix_sub_row_value(pbqp_matrix *matrix, unsigned row_index, + vector *flags, num value); + +int pbqp_matrix_is_zero(pbqp_matrix *mat, vector *src_vec, vector *tgt_vec); + +void pbqp_matrix_add_to_all_cols(pbqp_matrix *mat, vector *vec); +void pbqp_matrix_add_to_all_rows(pbqp_matrix *mat, vector *vec); + +#endif /* KAPS_MATRIX_H */