📄 ybpivot.h
字号:
/* xrndf.h free ware xhunga@tiscali.fr */
/* --------------------------------- FUNCTION ------------------------------ */
/* Do : */
/* */
/* -------------------------------------------------------------------------- */
complexF pivotnt0_mzF(
PmzF mA,
int r1)
{
complexF sign;
int rT;
double pivot_r;
double pivot_i;
double t_r;
double t_i;
sign = initD_zF(1,1,0,1);
pivot_r = *(mA->pb+r1 *mA->cols+ r1*C4 );
pivot_i = *(mA->pb+r1 *mA->cols+(r1*C4)+C2);
if(!pivot_r && !pivot_i && ((r1+1)<mA->rows) )
{
rT = r1+1;
do
{
t_r = *(mA->pb+rT *mA->cols+ r1*C4 );
t_i = *(mA->pb+rT *mA->cols+(r1*C4)+C2);
if(t_r || t_i)
{
swaprow_mzF(mA,r1,rT);
rT = mA->rows;
sign = initD_zF(-1,1,0,1);
}
rT++;
}
while(rT < mA->rows);
}
return(sign);
}
/* --------------------------------- FUNCTION ------------------------------ */
/* Do : */
/* */
/* -------------------------------------------------------------------------- */
complexF pivotwork_mzF(
PmzF mA,
int row1,
int row2,
complexF z_deter)
{
int j;
complexF z_pivot;
complexF z_under;
complexF z_p;
complexF z_u;
complexF z;
z_pivot.r.n = (*(mA->pb+row1 *mA->cols+row1*C4+0));
z_pivot.r.d = (*(mA->pb+row1 *mA->cols+row1*C4+1));
z_pivot.i.n = (*(mA->pb+row1 *mA->cols+row1*C4+2));
z_pivot.i.d = (*(mA->pb+row1 *mA->cols+row1*C4+3));
z_under.r.n = -(*(mA->pb+row2 *mA->cols+row1*C4+0));
z_under.r.d = (*(mA->pb+row2 *mA->cols+row1*C4+1));
z_under.i.n = -(*(mA->pb+row2 *mA->cols+row1*C4+2));
z_under.i.d = (*(mA->pb+row2 *mA->cols+row1*C4+3));
if(z_under.r.n || z_under.i.n)
{
z_deter = mul_zF(z_deter,inv_zF(z_pivot));
/* printf("Pivot"); p_zF(z_pivot); getchar(); */
for( j=0 ; (j*C4)<mA->cols; j++)
{
z_p.r.n = (*(mA->pb+row1 *mA->cols+j*C4+0));
z_p.r.d = (*(mA->pb+row1 *mA->cols+j*C4+1));
z_p.i.n = (*(mA->pb+row1 *mA->cols+j*C4+2));
z_p.i.d = (*(mA->pb+row1 *mA->cols+j*C4+3));
z_u.r.n = (*(mA->pb+row2 *mA->cols+j*C4+0));
z_u.r.d = (*(mA->pb+row2 *mA->cols+j*C4+1));
z_u.i.n = (*(mA->pb+row2 *mA->cols+j*C4+2));
z_u.i.d = (*(mA->pb+row2 *mA->cols+j*C4+3));
z = add_zF(mul_zF(z_u,z_pivot),
mul_zF(z_p,z_under));
(*(mA->pb+row2 *mA->cols+j*C4+0)) = z.r.n;
(*(mA->pb+row2 *mA->cols+j*C4+1)) = z.r.d;
(*(mA->pb+row2 *mA->cols+j*C4+2)) = z.i.n;
(*(mA->pb+row2 *mA->cols+j*C4+3)) = z.i.d;
}
}
return(z_deter);
}
/* ------------------------------------- FUNCTION -------------------------- */
/* Do : All pivot = 1. */
/* */
/* -------------------------------------------------------------------------- */
void pivot1_mzF(
PmzF m
)
{
int i;
int j;
complexF f;
for ( i=0 ; i<m->rows ; i++)
for ( j=0 ; j<m->cols; j+=C4)
if( (*(m->pb+i *m->cols+j+0))
||
(*(m->pb+i *m->cols+j+C2))
)
{
f.r.n = *(m->pb+i *m->cols+j+0);
f.r.d = *(m->pb+i *m->cols+j+1);
f.i.n = *(m->pb+i *m->cols+j+2);
f.i.d = *(m->pb+i *m->cols+j+3);
f = inv_zF(f);
mulrow_mzF(m,i,f);
j = m->cols;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -