/* myComplexMatrixCalc.h */

void mySqrCM(Complex **z, Complex **x, int n);
void mySqrtCM(Complex **z, Complex **x, int n);
void mySqrtM(Complex **z, double **x, int n);
void myExpCM(Complex **z, Complex **x, int n);
void myLogCM(Complex **z, Complex **x, int n);
void myLogM(Complex **z, double **x, int n);
void mySinCM(Complex **z, Complex **x, int n);
void myCosCM(Complex **z, Complex **x, int n);
void myTanCM(Complex **z, Complex **x, int n);
void myASinCM(Complex **z, Complex **x, int n);
void myACosCM(Complex **z, Complex **x, int n);
void myATanCM(Complex **z, Complex **x, int n);
void myASinM(Complex **z, double **x, int n);
void myACosM(Complex **z, double **x, int n);
void myATanM(Complex **z, double **x, int n);
void mySinhCM(Complex **z, Complex **x, int n);
void myCoshCM(Complex **z, Complex **x, int n);
void myTanhCM(Complex **z, Complex **x, int n);
void myASinhCM(Complex **z, Complex **x, int n);
void myACoshCM(Complex **z, Complex **x, int n);
void myATanhCM(Complex **z, Complex **x, int n);
void myASinhM(Complex **z, double **x, int n);
void myACoshM(Complex **z, double **x, int n);
void myATanhM(Complex **z, double **x, int n);
void myPowCM_C(Complex **z, Complex **x, Complex t, int n);
void myPowCM_D(Complex **z, Complex **x, double t, int n);
void myPowM_C(Complex **z, double **x, Complex t, int n);
void myPowM_D(Complex **z, double **x, double t, int n);
void myCommutatorCM_CM(Complex **z, Complex **x, Complex **y, int n);
void myCommutatorCM_M(Complex **z, Complex **x, double **y, int n);
void myCommutatorM_CM(Complex **z, double **x, Complex **y, int n);
bool myEigenvalues(Complex **x, Complex *eigenvalue, int n);
Complex myPowerCM(Complex **z, Complex **x, int m, int n);
void GaussElimD(double **z, long nr, long nc, double **x);
void GaussElimC(Complex **z, long nr, long nc, Complex **x);
void CreateUnit(double **z, long nr, long nc);
void CreateUnitD(double **z, long nr, long nc);
void RealToComplex(Complex **z, long nr, long nc, double **x);
void Reduce(Complex **z, long nr, long nc, Complex **x);
void ReduceD(double **z, long nr, long nc, double **x);
void Augment(double **z, double **x, long xnr, long xnc, double **y, long ynr, long ync);
void Augment(Complex **z, Complex **x, long xnr, long xnc, double **y, long ynr, long ync);
void Augment(Complex **z, double **x, long xnr, long xnc, Complex **y, long ynr, long ync);
void Augment(Complex **z, Complex **x, long xnr, long xnc, Complex **y, long ynr, long ync);
void unAugmentD(double **x, double **y, long xnc, long znr, long znc, double **z);
void unAugmentC(Complex **x, Complex **y, long xnc, long znr, long znc, Complex **z);
