Exemple #1
0
// from mDup.c
int dup(ARMat *dest, ARMat *source) {
	int r, c;

	assert(dest->row == source->row && dest->clm == source->clm);

	for (r = 0; r < source->row; r++) {
		for (c = 0; c < source->clm; c++) {
			ARELEM0(dest, r, c) = ARELEM0(source, r, c);
		}
	}
	return 0;
}
Exemple #2
0
// from mDup.c
int dup(ARMat *dest, ARMat *source) {
    int r, c;

    if (dest->row != source->row || dest->clm != source->clm) {
        return -1;
    }
    for (r = 0; r < source->row; r++) {
        for (c = 0; c < source->clm; c++) {
            ARELEM0(dest, r, c) = ARELEM0(source, r, c);
        }
    }
    return 0;
}
Exemple #3
0
// from mMul.c
int mul(ARMat *dest, ARMat *a, ARMat *b) {
	int r, c, i;

	assert(a->clm == b->row && dest->row == a->row && dest->clm == b->clm);

	for (r = 0; r < dest->row; r++) {
		for (c = 0; c < dest->clm; c++) {
			ARELEM0(dest, r, c) = 0.0;
			for (i = 0; i < a->clm; i++) {
				ARELEM0(dest, r, c) += ARELEM0(a, r, i) * ARELEM0(b, i, c);
			}
		}
	}

	return 0;
}
Exemple #4
0
// from mMul.c
int mul(ARMat *dest, ARMat *a, ARMat *b) {
    int r, c, i;

    if (a->clm != b->row || dest->row != a->row || dest->clm != b->clm)
        return -1;

    for (r = 0; r < dest->row; r++) {
        for (c = 0; c < dest->clm; c++) {
            ARELEM0(dest, r, c) = 0.0;
            for (i = 0; i < a->clm; i++) {
                ARELEM0(dest, r, c) += ARELEM0(a, r, i) * ARELEM0(b, i, c);
            }
        }
    }

    return 0;
}
Exemple #5
0
AR_DLL_API int arMatrixUnit(ARMat *unit)
{
    int r, c;

    if(unit->row != unit->clm) return -1;

    for(r = 0; r < unit->row; r++) {
        for(c = 0; c < unit->clm; c++) {
            if(r == c) {
                ARELEM0(unit, r, c) = 1.0;
            }
            else {
                ARELEM0(unit, r, c) = 0.0;
            }
        }
    }

    return 0;
}
Exemple #6
0
int arMatrixDisp(ARMat *m)
{
	int r, c;

	printf(" === matrix (%d,%d) ===\n", m->row, m->clm);
	for(r = 0; r < m->row; r++) {
		printf(" |");
		for(c = 0; c < m->clm; c++) {
			printf(" %10g", ARELEM0(m, r, c));
		}
		printf(" |\n");
	}
	printf(" ======================\n");

	return 0;
}