X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dff9e15c44ab6340d27215957c56fa72fad246a2..1189d1797cc934d847d6641d809bbe060729f064:/src/xbt/xbt_matrix.c diff --git a/src/xbt/xbt_matrix.c b/src/xbt/xbt_matrix.c index a9e13dfddc..80e60d3ca0 100644 --- a/src/xbt/xbt_matrix.c +++ b/src/xbt/xbt_matrix.c @@ -1,8 +1,7 @@ -/* $Id$ */ - /* xbt_matrix_t management functions */ -/* Copyright (c) 2006 Martin Quinson. All rights reserved. */ +/* Copyright (c) 2006, 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -109,10 +108,10 @@ void xbt_matrix_copy_values(xbt_matrix_t dst, xbt_matrix_t src, { unsigned int i, j; - DEBUG10("Copy a %dx%d submatrix from %dx%d(of %dx%d) to %dx%d (of %dx%d)", - lsize, rsize, - lpos_src, rpos_src, src->lines, src->rows, - lpos_dst, rpos_dst, dst->lines, dst->rows); + XBT_DEBUG + ("Copy a %dx%d submatrix from %dx%d(of %dx%d) to %dx%d (of %dx%d)", + lsize, rsize, lpos_src, rpos_src, src->lines, src->rows, lpos_dst, + rpos_dst, dst->lines, dst->rows); /* everybody knows that issue is between the chair and the screen (particulary in my office) */ xbt_assert(src->elmsize == dst->elmsize); @@ -129,7 +128,7 @@ void xbt_matrix_copy_values(xbt_matrix_t dst, xbt_matrix_t src, if (cpy_f) { for (j = 0; j < lsize; j++) xbt_matrix_get_as(dst, j + lpos_dst, i + rpos_dst, void *) = - (*cpy_f) (xbt_matrix_get_ptr(src, j + rpos_src, i + lpos_src)); + (*cpy_f) (xbt_matrix_get_ptr(src, j + rpos_src, i + lpos_src)); } else { memcpy(xbt_matrix_get_ptr(dst, lpos_dst, i + rpos_dst), xbt_matrix_get_ptr(src, lpos_src, i + rpos_src), @@ -171,7 +170,7 @@ xbt_matrix_t xbt_matrix_double_new_rand(int lines, int rows) return res; } -/** \brief Creates a new matrix of double randomly by subsequent numbers */ +/** \brief Creates a new matrix of double containing the sequence of numbers in order */ xbt_matrix_t xbt_matrix_double_new_seq(int lines, int rows) { xbt_matrix_t res = xbt_matrix_new(lines, rows, sizeof(double), NULL); @@ -183,6 +182,20 @@ xbt_matrix_t xbt_matrix_double_new_seq(int lines, int rows) return res; } +/** \brief Checks whether the matrix contains the sequence of numbers */ +int xbt_matrix_double_is_seq(xbt_matrix_t mat) +{ + int i; + + for (i = 0; i < mat->lines * mat->rows; i++) { + double val = xbt_matrix_get_as(mat, i, 0, double); + if (val != i) + return 0; + } + + return 1; +} + /** \brief Creates a new matrix being the multiplication of two others */ xbt_matrix_t xbt_matrix_double_new_mult(xbt_matrix_t A, xbt_matrix_t B) { @@ -198,7 +211,7 @@ void xbt_matrix_double_addmult(xbt_matrix_t A, xbt_matrix_t B, { unsigned int i, j, k; - xbt_assert2(A->lines == C->lines, + xbt_assert(A->lines == C->lines, "A->lines != C->lines (%d vs %d)", A->lines, C->lines); xbt_assert(B->rows == C->rows); @@ -206,6 +219,6 @@ void xbt_matrix_double_addmult(xbt_matrix_t A, xbt_matrix_t B, for (j = 0; j < C->rows; j++) for (k = 0; k < B->lines; k++) xbt_matrix_get_as(C, i, j, double) += - xbt_matrix_get_as(A, i, k, double) * xbt_matrix_get_as(B, k, j, - double); + xbt_matrix_get_as(A, i, k, double) * xbt_matrix_get_as(B, k, j, + double); }