-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMinor.cpp
executable file
·64 lines (58 loc) · 1.43 KB
/
Minor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/////////////////////////////////////////////////////////////////////////
// Program : minor.cpp
// Coded by : Prof. Gang-Gyoo Jin, Korea Maritime University
// Coded on : 12/12/2003
#include "cmatrix.h"
#include "imsl.h"
/////////////////////////////////////////////////////////////////////////
// outputs a minor of a matrix at the iith row and jjth column
RMATRIX ms_Minor(const RMATRIX &a, int ii, int jj)
{
if ((ii<0) || (ii>=a.n) || (jj<0) || (jj>=a.m))
ErrorMsg ("Error in 'Minor': wrong arguments\n");
int an=a.n, am=a.m;
int s=0;
RMATRIX c(an-1,am-1);
for (int i=0; i<(an-1)*(am-1); i++)
{
if (i+s==ii*am) s+=an;
if ((i+s)%an==jj) s++;
if (i+s==ii*am) s+=an;
c(i)=a(i+s);
}
return c;
}
CMATRIX ms_Minor(const CMATRIX &a, int ii, int jj)
{
if ((ii<0) || (ii>=a.n) || (jj<0) || (jj>=a.m))
ErrorMsg ("Error in 'Minor': wrong arguments\n");
int an=a.n, am=a.m;
int s=0;
CMATRIX c(an-1,am-1);
for (int i=0; i<(an-1)*(am-1); i++)
{
if (i+s==ii*am) s+=an;
if ((i+s)%an==jj) s++;
if (i+s==ii*am) s+=an;
c(i)=a(i+s);
}
return c;
}
RMATRIX ms_Trans(const RMATRIX &a)
{
RMATRIX c(a.m,a.n);
for (int i=0;i<a.m;i++)
for (int j=0;j<a.n;j++) c(i,j)=a(j,i);
return c;
}
CMATRIX ms_Trans(const CMATRIX &a)
{
CMATRIX c(a.m,a.n);
for (int i=0;i<a.m;i++)
for (int j=0;j<a.n;j++) c(i,j)=a(j,i);
return c;
}
CMATRIX ms_Hermit(const CMATRIX &a)
{
return !a;
}