⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ybpivot.h

📁 [[ Complex Matrices : Language c]]
💻 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 + -