Gan_Matrix mA, mB, mC; /* declare matrices x, y and z */
Gan_Matrix *pmC; /* declare matrix z alternatively as pointer */
/* ... create and fill mA & mB, create mC ... */
gan_mat_sub_q ( &mA, &mB, &mC ); /* compute C = A - B */
pmC = gan_mat_sub_s ( &mA, &mB ); /* compute C = A - B */
gan_mat_sub_i1 ( &mA, &mB ); /* replace A = A - B */
gan_mat_sub_i2 ( &mA, &mB ); /* replace B = A - B */
gan_mat_decrement ( &mA, &mB ); /* replace A = A - B */
If one of the input matrices is to be implicitly transposed, use instead
Gan_Matrix mA, mB, mC; /* declare matrices x, y and z */
Gan_Matrix *pmC; /* declare matrix z alternatively as pointer */
/* ... create and fill mA & mB, create mC ... */
/* here B must have the same number of columns as A has rows, and vice versa */
gan_mat_subT_q ( &mA, &mB, &mC ); /* compute C = A - B^T */
pmC = gan_mat_subT_s ( &mA, &mB ); /* compute C = A - B^T */
gan_mat_decrementT ( &mA, &mB ); /* replace A = A - B^T */
There are equivalent functions for square matrices. Firstly the simple routines for subtracting two matrices:
Gan_SquMatrix smA, smB, smC, *psmC; /* declare matrices A, B & C */
/* ... create and fill smA & smB, create smC ... */
gan_squmat_sub_q ( &smA, &smB, &smC ); /* compute C = A - B, OR */
gan_squmat_sub_i1 ( &smA, &smB ); /* replace A = A - B, OR */
gan_squmat_sub_i2 ( &smA, &smB ); /* replace B = A - B, OR */
gan_squmat_decrement ( &smA, &smB ); /* replace A = A - B, OR */
psmC = gan_squmat_sub_s ( &smA, &smB ); /* compute C = A - B as new matrix */
Other routines implicitly transpose one of the input matrices:
Gan_SquMatrix smA, smB, smC, *psmC; /* declare matrices A, B & C */
/* ... create and fill smA & smB, create smC ... */
gan_squmat_subT_q ( &smA, &smB, &smC ); /* compute C = A - B^T, OR */
gan_squmat_decrementT ( &smA, &smB ); /* replace A = A - B^T, OR */
psmC = gan_squmat_subT_s ( &smA, &smB ); /* compute C = A - B^T as new matrix */
Error detection: NULL is returned and the Gandalf error handler invoked if the matrix addition fails. The most likely failure modes are failing to create/set the result matrix, or size/type incompatibility between the input matrices.