matrix multiplication

Discussion in 'C Programming' started by robix, Nov 12, 2003.

  1. robix

    robix Guest

    Hi again. I'm now asking your help because of a smal problem i'm getting
    with my multiplication matrix code.

    I'll try to give you as many details as possible.

    My matrix structure:

    typedef struct {
    int col; /* number of colowns */
    int lin; /* number of lines*/
    double *element; /* pointer do double... this is actually, a "simulated
    multidymensional array", got the idea from the C FAQ from this newsgroup */
    } matrix;

    matrix mul_matrix(matrix mat1, matrix mat2, int lin, int col)
    matrix M;
    int i, j, k, exp;
    M = init_matrix(lin, col); /* inits M(will old the result from mat1 *
    mat2), no problem here. At this point i am sure that mat1 and mat2 all have
    their right values
    and that M has the right size*/

    /* Try to multiply */
    for (i=0; i<lin; i++) {
    for (j=0; j<col; j++) {
    exp = 0;
    for (k=0; k<col; k++) {
    exp += mat1.element[i * (mat1.col * mat1.lin) + k]*
    mat2.element[k * (mat2.col * mat2.lin) + j]; /* big problem... give me
    random results*/
    M.element[i * (lin * col) + j] = exp;
    return M;

    After 4 hours of trying to resolve this problem i'm exaust and in need for
    some sleep :p Maybe that will make me good cause i sinceriously can't
    see the problem on the code! Until now i've only used printf to assist me as
    a rudimentary debugger. I think i need something more powerfull but
    gdb don't want to work with devc++...
    Thanks to anyone who can help me out!
    robix, Nov 12, 2003
    1. Advertisements

  2. robix

    robix Guest

    Thanks for the tips. It works now!
    robix, Nov 12, 2003
    1. Advertisements

  3. Just check which two matrix elements you access when i = 1, j = 1 and k
    = 1. Then compare this with the number of elements in the matrix mat1
    and mat2, and you will see that something is very badly wrong.
    Christian Bau, Nov 12, 2003
  4. 1.
    Why "int exp"?

    Suppose A is an mxn matrix and B is a nxk matrix. Their product
    will be an mxk matrix. As you see, to multiply matrices, you need
    to specify three index ranges, m, n and k. Your mul_matrix() function
    takes only to index ranges, lin and col. Something's badly wrong
    Rouben Rostamian, Nov 13, 2003
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.