GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
#ifdef __cplusplus1extern "C" {2#endif345678#ifndef _MATRIX_H_9#define _MATRIX_H_1011#ifndef _CARAT_TYPEDEF_H_12#include "typedef.h"13#endif1415#ifdef __STDC__16/*--------------------------------------------------------------*\17| FILE add_mat.c18\*--------------------------------------------------------------*/19extern matrix_TYP *imat_add (matrix_TYP *L_mat, matrix_TYP *R_mat,20int Lc, int Rc);21extern matrix_TYP *imat_addeq (matrix_TYP *L_mat, matrix_TYP *R_mat,22int Lc, int Rc);23extern matrix_TYP *rmat_addeq (matrix_TYP *L_mat, matrix_TYP *R_mat,24rational L_coeff, rational R_coeff);25extern matrix_TYP *rmat_addeq (matrix_TYP *L_mat, matrix_TYP *R_mat,26rational L_coeff, rational R_coeff);27extern matrix_TYP *pmat_add (matrix_TYP *L_mat, matrix_TYP *R_mat,28int L_coeff, int R_coeff);29extern matrix_TYP *pmat_addeq (matrix_TYP *L_mat, matrix_TYP *R_mat,30int L_coeff, int R_coeff);31extern matrix_TYP *mat_add (matrix_TYP *L_mat, matrix_TYP *R_mat,32rational L_coeff, rational R_coeff);33extern matrix_TYP *mat_addeq (matrix_TYP *L_mat, matrix_TYP *R_mat,34rational L_coeff, rational R_coeff);3536/*--------------------------------------------------------------*\37| FILE col_row_ops_mat.c38\*--------------------------------------------------------------*/39extern void row_per(matrix_TYP *M, int i, int j);40extern void col_per(matrix_TYP *M, int i, int j);41extern void row_add(matrix_TYP *M, int i, int j, int fac);42extern void col_add(matrix_TYP *M, int i, int j, int fac);43extern void row_mul(matrix_TYP *M, int i, int fac);44extern void col_mul(matrix_TYP *M, int i, int fac);4546/*--------------------------------------------------------------*\47| FILE comp_mat.c48\*--------------------------------------------------------------*/49extern int cmp_mat(matrix_TYP *A, matrix_TYP *B);5051/*--------------------------------------------------------------*\52| FILE divide_by_gcd.c53\*--------------------------------------------------------------*/54extern int divide_by_gcd(matrix_TYP *A);5556/*--------------------------------------------------------------*\57| FILE construct_mat.c58\*--------------------------------------------------------------*/59extern matrix_TYP *init_mat(int rows, int cols, char *option);60extern matrix_TYP *copy_mat( matrix_TYP *old );61extern void free_mat (matrix_TYP *mat);62extern void Check_mat(matrix_TYP *mat);6364/*--------------------------------------------------------------*\65| FILE elt_div_mat.c66\*--------------------------------------------------------------*/67extern matrix_TYP *elt_div(matrix_TYP *Mat);6869/*--------------------------------------------------------------*\70| FILE find_max_entry_mat.c71\*--------------------------------------------------------------*/72extern int find_max_entry(matrix_TYP *mat);7374/*--------------------------------------------------------------*\75| FILE gauss_mat.c76\*--------------------------------------------------------------*/77extern int tgauss(matrix_TYP *mat);78extern int row_gauss(matrix_TYP *M);79extern matrix_TYP *ggauss(matrix_TYP *mat);8081/************************************************************************\82| FILE: hnf_mat.c83\************************************************************************/84extern int row_hnf_mat_trf(matrix_TYP *Mat, matrix_TYP *T);85extern int row_hnf_mat_simultaneous(matrix_TYP *Mat, matrix_TYP *T);86extern int row_hnf_mat(matrix_TYP *Mat);87extern int col_hnf_mat_trf(matrix_TYP *Mat, matrix_TYP *T);88extern int col_hnf_mat_simultaneous(matrix_TYP *Mat, matrix_TYP *T);89extern int col_hnf_mat(matrix_TYP *Mat);9091/*--------------------------------------------------------------*\92| FILE inv_mat.c93\*--------------------------------------------------------------*/94extern matrix_TYP *pmat_inv (matrix_TYP *mat);95extern matrix_TYP *mat_inv(matrix_TYP *mat);9697/*--------------------------------------------------------------*\98| FILE kernel_mat.c99\*--------------------------------------------------------------*/100extern matrix_TYP kernel_mat(matrix_TYP *mat);101102/*--------------------------------------------------------------*\103| FILE kgv2rat_mat.c104\*--------------------------------------------------------------*/105extern int kgv2rat( matrix_TYP *mat );106extern int rat2kgv( matrix_TYP *mat );107108/*--------------------------------------------------------------*\109| FILE kron_mat.c110\*--------------------------------------------------------------*/111extern matrix_TYP *kron_mat(matrix_TYP *A, matrix_TYP *B);112113/*--------------------------------------------------------------*\114| FILE modp_mat.c115\*--------------------------------------------------------------*/116extern void modp_mat(matrix_TYP *M, int prime);117118/*--------------------------------------------------------------*\119| FILE mul_mat.c120\*--------------------------------------------------------------*/121extern matrix_TYP *pmat_mul (matrix_TYP *L_mat, matrix_TYP * R_mat);122extern matrix_TYP *mat_mul (matrix_TYP *L_mat, matrix_TYP * R_mat);123extern matrix_TYP *mat_muleq(matrix_TYP *L_mat, matrix_TYP *R_mat);124extern matrix_TYP *mat_kon(matrix_TYP *L_mat, matrix_TYP *M_mat,125matrix_TYP *R_mat);126127/*--------------------------------------------------------------*\128| FILE null_mat.c129\*--------------------------------------------------------------*/130extern int null_mat(matrix_TYP *mat);131extern int save_null_mat(matrix_TYP *mat);132extern int quick_null_mat(matrix_TYP *mat);133134/*--------------------------------------------------------------*\135| FILE p_mat_det.c136\*--------------------------------------------------------------*/137extern int p_mat_det(matrix_TYP *M, int prime);138139/*--------------------------------------------------------------*\140| FILE p_gauss_mat.c141\*--------------------------------------------------------------*/142extern int p_gauss (matrix_TYP *L_mat);143144/*--------------------------------------------------------------*\145| FILE p_lse_solve.c146\*--------------------------------------------------------------*/147extern matrix_TYP **p_lse_solve(matrix_TYP *A, matrix_TYP *B, int *anz, int p);148149/*--------------------------------------------------------------*\150| FILE p_solve_mat.c151\*--------------------------------------------------------------*/152extern matrix_TYP **p_solve (int *anz, matrix_TYP **L_mat, matrix_TYP **R_mat,153int option);154155/*--------------------------------------------------------------*\156| FILE real_mat.c157\*--------------------------------------------------------------*/158extern void real_mat(matrix_TYP *mat, int rows, int cols);159160/*--------------------------------------------------------------*\161| FILE red_mat.c162\*--------------------------------------------------------------*/163extern matrix_TYP *mat_red(matrix_TYP *Mat);164extern void dec_mat(matrix_TYP *Mat, matrix_TYP *Trf);165166/*--------------------------------------------------------------*\167| FILE scal_pr_mat.c168\*--------------------------------------------------------------*/169extern matrix_TYP *scal_pr ( matrix_TYP *vectors, matrix_TYP *form,170boolean truth );171172/*--------------------------------------------------------------*\173| FILE solve_mat.c174\*--------------------------------------------------------------*/175extern int Trf_gauss(matrix_TYP *M, matrix_TYP *Trf);176extern matrix_TYP *solve_mat(matrix_TYP *M);177178/*--------------------------------------------------------------*\179| FILE tools_mat.c180\*--------------------------------------------------------------*/181extern boolean iset_entry(matrix_TYP *mat, int r, int c, int v);182extern boolean rset_entry(matrix_TYP *mat, int r, int c, rational v);183extern void iscal_mul(matrix_TYP *mat, int v);184extern void rscal_mul(matrix_TYP *mat, rational v);185extern boolean kill_row(matrix_TYP *mat, int row);186extern boolean kill_col(matrix_TYP *mat, int col);187extern boolean ins_row(matrix_TYP *mat, int row);188extern boolean ins_col(matrix_TYP *mat, int col);189extern boolean imul_row(matrix_TYP *mat, int row, int v);190extern boolean rmul_row(matrix_TYP *mat, int row, rational v);191extern boolean imul_col(matrix_TYP *mat, int col, int v);192extern boolean rmul_col( matrix_TYP *mat, int col, rational v);193extern boolean iadd_row(matrix_TYP *mat,int t_row, int d_row, int v);194extern boolean radd_row(matrix_TYP *mat, int t_row, int d_row, rational v);195extern boolean iadd_col(matrix_TYP *mat, int t_col, int d_col, int v);196extern boolean radd_col(matrix_TYP *mat, int t_col, int d_col, rational v);197extern void normal_rows(matrix_TYP *mat);198extern void normal_cols(matrix_TYP *mat);199extern matrix_TYP *mat_to_line(matrix_TYP **gen, int num);200extern matrix_TYP **line_to_mat(matrix_TYP *mat, int row, int col);201extern int normal_mat(matrix_TYP *mat);202203/*--------------------------------------------------------------*\204| FILE tr_pose_mat.c205\*--------------------------------------------------------------*/206extern matrix_TYP *tr_pose(matrix_TYP *mat);207208/*--------------------------------------------------------------*\209| FILE trace_mat.c210\*--------------------------------------------------------------*/211extern int trace( matrix_TYP *mat);212213/*--------------------------------------------------------------*\214| FILE unity_mat.c215\*--------------------------------------------------------------*/216extern matrix_TYP *einheitsmatrix( int n);217218#else219/*--------------------------------------------------------------*\220| FILE add_mat.c221\*--------------------------------------------------------------*/222extern matrix_TYP *imat_add ();223extern matrix_TYP *imat_addeq ();224extern matrix_TYP *rmat_addeq ();225extern matrix_TYP *rmat_addeq ();226extern matrix_TYP *pmat_add ();227extern matrix_TYP *pmat_addeq ();228extern matrix_TYP *mat_add ();229extern matrix_TYP *mat_addeq ();230231/*--------------------------------------------------------------*\232| FILE col_row_ops_mat.c233\*--------------------------------------------------------------*/234extern void row_per();235extern void col_per();236extern void row_add();237extern void col_add();238extern void row_mul();239extern void col_mul();240241/*--------------------------------------------------------------*\242| FILE comp_mat.c243\*--------------------------------------------------------------*/244extern int cmp_mat();245246/*--------------------------------------------------------------*\247| FILE divide_by_gcd.c248\*--------------------------------------------------------------*/249extern int divide_by_gcd();250251/*--------------------------------------------------------------*\252| FILE construct_mat.c253\*--------------------------------------------------------------*/254extern matrix_TYP *init_mat();255extern matrix_TYP *copy_mat();256extern void free_mat ();257extern void Check_mat();258259/*--------------------------------------------------------------*\260| FILE elt_div_mat.c261\*--------------------------------------------------------------*/262extern matrix_TYP *elt_div();263264/*--------------------------------------------------------------*\265| FILE find_max_entry_mat.c266\*--------------------------------------------------------------*/267extern int find_max_entry();268269/*--------------------------------------------------------------*\270| FILE gauss_mat.c271\*--------------------------------------------------------------*/272extern int tgauss();273extern int row_gauss();274extern matrix_TYP *ggauss();275276/************************************************************************\277| FILE: hnf_mat.c278\************************************************************************/279extern int row_hnf_mat_trf();280extern int row_hnf_mat_simultaneous();281extern int row_hnf_mat();282extern int col_hnf_mat_trf();283extern int col_hnf_mat_simultaneous();284extern int col_hnf_mat();285286/*--------------------------------------------------------------*\287| FILE inv_mat.c288\*--------------------------------------------------------------*/289extern matrix_TYP *pmat_inv ();290extern matrix_TYP *mat_inv();291292/*--------------------------------------------------------------*\293| FILE kernel_mat.c294\*--------------------------------------------------------------*/295extern matrix_TYP kernel_mat();296297/*--------------------------------------------------------------*\298| FILE kgv2rat_mat.c299\*--------------------------------------------------------------*/300extern int kgv2rat();301extern int rat2kgv();302303/*--------------------------------------------------------------*\304| FILE kron_mat.c305\*--------------------------------------------------------------*/306extern matrix_TYP *kron_mat();307308/*--------------------------------------------------------------*\309| FILE modp_mat.c310\*--------------------------------------------------------------*/311extern void modp_mat();312313/*--------------------------------------------------------------*\314| FILE mul_mat.c315\*--------------------------------------------------------------*/316extern matrix_TYP *pmat_mul ();317extern matrix_TYP *mat_mul ();318extern matrix_TYP *mat_muleq();319extern matrix_TYP *mat_kon();320321/*--------------------------------------------------------------*\322| FILE null_mat.c323\*--------------------------------------------------------------*/324extern int null_mat();325extern int save_null_mat();326extern int quick_null_mat();327328/*--------------------------------------------------------------*\329| FILE p_mat_det.c330\*--------------------------------------------------------------*/331extern int p_mat_det();332333/*--------------------------------------------------------------*\334| FILE p_gauss_mat.c335\*--------------------------------------------------------------*/336extern int p_gauss ();337338/*--------------------------------------------------------------*\339| FILE p_lse_solve.c340\*--------------------------------------------------------------*/341extern matrix_TYP **p_lse_solve();342343/*--------------------------------------------------------------*\344| FILE p_solve_mat.c345\*--------------------------------------------------------------*/346extern matrix_TYP **p_solve ();347348/*--------------------------------------------------------------*\349| FILE real_mat.c350\*--------------------------------------------------------------*/351extern void real_mat();352353/*--------------------------------------------------------------*\354| FILE red_mat.c355\*--------------------------------------------------------------*/356extern matrix_TYP *mat_red();357extern void dec_mat();358359/*--------------------------------------------------------------*\360| FILE scal_pr_mat.c361\*--------------------------------------------------------------*/362extern matrix_TYP *scal_pr ();363364/*--------------------------------------------------------------*\365| FILE solve_mat.c366\*--------------------------------------------------------------*/367extern int Trf_gauss();368extern matrix_TYP *solve_mat();369370/*--------------------------------------------------------------*\371| FILE tools_mat.c372\*--------------------------------------------------------------*/373extern boolean iset_entry();374extern boolean rset_entry();375extern void iscal_mul();376extern void rscal_mul();377extern boolean kill_row();378extern boolean kill_col();379extern boolean ins_row();380extern boolean ins_col();381extern boolean imul_row();382extern boolean rmul_row();383extern boolean imul_col();384extern boolean rmul_col();385extern boolean iadd_row();386extern boolean radd_row();387extern boolean iadd_col();388extern boolean radd_col();389extern void normal_rows();390extern void normal_cols();391extern matrix_TYP *mat_to_line();392extern matrix_TYP **line_to_mat();393extern int normal_mat();394395/*--------------------------------------------------------------*\396| FILE tr_pose_mat.c397\*--------------------------------------------------------------*/398extern matrix_TYP *tr_pose();399400/*--------------------------------------------------------------*\401| FILE trace_mat.c402\*--------------------------------------------------------------*/403extern int trace();404405/*--------------------------------------------------------------*\406| FILE unity_mat.c407\*--------------------------------------------------------------*/408extern matrix_TYP *einheitsmatrix();409410#endif411#endif412413414#ifdef __cplusplus415}416#endif417418419420