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

📄 ygg.h

📁 [[ Complex Matrices : Language c]]
💻 H
字号:
/* xgj.h                    freeware                   xhunga@tiscali.fr  */


/* ------------------------------------- FUNCTION --------------------------  */
/* Do    : On a complexF.                                                     */
/*                                                                            */
/* -------------------------------------------------------------------------- */
complexF gfpivot_zF(
PmzF     m,
int      rowpivot,
int      colpivot,
int      colp,
int      rown_mns
)
{
complexF f;

complexF fn;
complexF fn_mns;

complexF fp;
complexF fpivot;

  fpivot.r.n =  (*(m->pb+rowpivot  *m->cols+colpivot*C4+0));
  fpivot.r.d =  (*(m->pb+rowpivot  *m->cols+colpivot*C4+1));
  fpivot.i.n =  (*(m->pb+rowpivot  *m->cols+colpivot*C4+2));
  fpivot.i.d =  (*(m->pb+rowpivot  *m->cols+colpivot*C4+3));

      fp.r.n =  (*(m->pb+rowpivot  *m->cols+colp*C4+0));
      fp.r.d =  (*(m->pb+rowpivot  *m->cols+colp*C4+1));
      fp.i.n =  (*(m->pb+rowpivot  *m->cols+colp*C4+2));
      fp.i.d =  (*(m->pb+rowpivot  *m->cols+colp*C4+3));

   fn_mns.r.n = -(*(m->pb+rown_mns *m->cols+colpivot*C4+0));
   fn_mns.r.d =  (*(m->pb+rown_mns *m->cols+colpivot*C4+1));
   fn_mns.i.n = -(*(m->pb+rown_mns *m->cols+colpivot*C4+2));
   fn_mns.i.d =  (*(m->pb+rown_mns *m->cols+colpivot*C4+3));

      fn.r.n =  (*(m->pb+rown_mns  *m->cols+colp*C4+0));
      fn.r.d =  (*(m->pb+rown_mns  *m->cols+colp*C4+1));
      fn.i.n =  (*(m->pb+rown_mns  *m->cols+colp*C4+2));
      fn.i.d =  (*(m->pb+rown_mns  *m->cols+colp*C4+3));

  if(fn_mns.r.n || fn_mns.i.n)
     {
      f = add_zF( mul_zF(fpivot,fn), mul_zF(fp,fn_mns));
     }
  else
     {
      f.r.n =  (*(m->pb+rown_mns  *m->cols+colp*C4+0));
      f.r.d =  (*(m->pb+rown_mns  *m->cols+colp*C4+1));
      f.i.n =  (*(m->pb+rown_mns  *m->cols+colp*C4+2));
      f.i.d =  (*(m->pb+rown_mns  *m->cols+colp*C4+3));
     }

  f.r = mini_F(f.r);
  f.i = mini_F(f.i);

 return(f);
}




/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :  On a row.                                                         */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void grpivot_mzF(
PmzF  m,
int      rowpivot,
int      colpivot,
int      rown_mns
)
{
     int colp;
complexF f;

    if( (*(m->pb+rowpivot  *m->cols+colpivot*C4+0))
                           ||
        (*(m->pb+rowpivot  *m->cols+colpivot*C4+2)) )
     {
      for(colp = (m->cols/C4)-1 ; colp > -1 ; colp--)
        {
         f = gfpivot_zF(m, rowpivot, colpivot, colp, rown_mns);

         (*(m->pb+rown_mns  *m->cols+colp*C4+0)) = f.r.n;
         (*(m->pb+rown_mns  *m->cols+colp*C4+1)) = f.r.d;
         (*(m->pb+rown_mns  *m->cols+colp*C4+2)) = f.i.n;
         (*(m->pb+rown_mns  *m->cols+colp*C4+3)) = f.i.d;
        }
      }
}


/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
int gcpivotnt0_mzF(
PmzF mA,
int rowpivot,
int colpivot)
{
int rowunderp;
int coeff0 = 1;

  if(!(*(mA->pb+rowpivot *mA->cols+colpivot*C4+0))
                       &&
     !(*(mA->pb+rowpivot *mA->cols+colpivot*C4+2)) )
  {
      coeff0 = 0;
   rowunderp = rowpivot + 1;
   do
   {
    if( (*(mA->pb+rowunderp *mA->cols+colpivot*C4+0))
                         ||
        (*(mA->pb+rowunderp *mA->cols+colpivot*C4+2)) )
    {
     swaprow_mzF(mA,rowpivot,rowunderp);
     rowunderp = mA->rows;
     coeff0 = 1;
    }
    rowunderp++;
   }
   while(rowunderp < mA->rows);
  }

return(coeff0);
}

/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :  On a column.                                                      */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void gcpivot_mzF(
PmzF  m,
int   rowpivot,
int   colpivot
)
{
int      rown_mns;

     gcpivotnt0_mzF(m,rowpivot,colpivot);


     for(rown_mns = rowpivot+1; rown_mns < (m->rows); rown_mns++)
        {
          while( (!(*(m->pb+rowpivot  *m->cols+colpivot*C4+0))
                                &&
                  !(*(m->pb+rowpivot  *m->cols+colpivot*C4+2)))
                                &&
                      (colpivot < m->cols/C4)
               )
               {
                colpivot++;
               };

         grpivot_mzF(m, rowpivot, colpivot,rown_mns);
        }
}


/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :  .                                                                 */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void gdpivot_mzF(
PmzF  m
)
{
int      rowpivot;

     for(rowpivot = 0; rowpivot < (m->rows)-1  ;rowpivot++)
         gcpivot_mzF(m, rowpivot,rowpivot);

}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -