// this matrix_h07.h file has the factorization of a non-symmetric or partitioned matrix. // the ability to handle the real-isomorph of a complex matrix is inherited from matrix_c05.cpp. // computes the ket of a non-symmetric matrix array, given its bra and diagonal. MATRIX_DLL_API int matrix_bra_diag_array_ket(MAT *bra, MAT *diag, MAT *array, MAT *ket, MAT *scratch_1, MAT *scratch_2); // factors a real square or horizontal array into its bra, diagonal, and ket. // will error-out if array is taller than wide. that is, if array->imx > array->jmx. // in such a case, use matrix_real_factor_vertical. // also will error-out on a symmetric array -- use matrix_symmetric_o_diag, instead. MATRIX_DLL_API int matrix_real_factor_horizontal(MAT *array, MAT *bra, MAT *diag, MAT *ket, unsigned long sort, MAT *scratch_1, MAT *scratch_2, MAT *scratch_3, MAT *scratch_4, MAT *scratch_5); // factors a real vertical array into its bra, diagonal, and ket. // will error-out if array is wider than tall. that is, if array->imx <= array->jmx. // also will error-out on a symmetric array -- use matrix_symmetric_o_diag, instead. MATRIX_DLL_API int matrix_real_factor_vertical(MAT *array, MAT *bra, MAT *diag, MAT *ket, unsigned long sort, MAT *scratch_1, MAT *scratch_2, MAT *scratch_3, MAT *scratch_4, MAT *scratch_5, MAT *scratch_6, MAT *scratch_7, MAT *scratch_8); // factors a real array into its bra, diagonal, and ket. // handles a symmetric array correctly. // also handles any real -- square, horizontal, or vertical -- array. // however, the specialized routines require fewer scratch arrays. MATRIX_DLL_API int matrix_real_factor(MAT *array, MAT *bra, MAT *diag, MAT *ket, unsigned long sort, MAT *scratch_1, MAT *scratch_2, MAT *scratch_3, MAT *scratch_4, MAT *scratch_5, MAT *scratch_6, MAT *scratch_7, MAT *scratch_8); // matrix inversion by the preceding routine. MATRIX_DLL_API int matrix_real_factor_inverse(MAT *array, MAT *bra, MAT *diag, MAT *ket, unsigned long sort, MAT *inverse, MAT *scratch_1, MAT *scratch_2, MAT *scratch_3, MAT *scratch_4, MAT *scratch_5, MAT *scratch_6, MAT *scratch_7, MAT *scratch_8); // copyright (c) 2003,4 by R.I. 'Scibor-Marchocki. last modified Tuesday 30-th March 2004.