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

📄 xgj.h

📁 基本矩阵运算 : + - *, power, transpose, trace, determinant, minor, matrix of minor, cofactor, matrix of co
💻 H
字号:
/* xcpivot.h                   freeware                   xhunga@tiscali.fr  */


/* ------------------------------------- FUNCTION --------------------------  */
/* Do    : On a fraction.                                                     */
/*                                                                            */
/* -------------------------------------------------------------------------- */
fraction jfpivotF(
PmF  m,
int      rowpivot,
int      colpivot,
int      colp,
int      rown_mns
)
{
fraction f;

fraction fn;
fraction fn_mns;

fraction fp;
fraction fpivot;

  fpivot.n =  (*(m->pb+rowpivot  *m->cols+colpivot*C2  ));
  fpivot.d =  (*(m->pb+rowpivot  *m->cols+colpivot*C2+1));

      fp.n =  (*(m->pb+rowpivot  *m->cols+colp*C2  ));
      fp.d =  (*(m->pb+rowpivot  *m->cols+colp*C2+1));

   fn_mns.n = -(*(m->pb+rown_mns *m->cols+colpivot*C2  ));
   fn_mns.d =  (*(m->pb+rown_mns *m->cols+colpivot*C2+1));

      fn.n =  (*(m->pb+rown_mns  *m->cols+colp*C2  ));
      fn.d =  (*(m->pb+rown_mns  *m->cols+colp*C2+1));


if(colpivot != colp)
{
      f = add_F( mul_F(fpivot,fn), mul_F(fp,fn_mns));
}

if(colpivot == colp)
{
 (*(m->pb+rown_mns *m->cols+colpivot*C2  )) = 0;
 (*(m->pb+rown_mns *m->cols+colpivot*C2+1)) = 1;

 f = add_F( mul_F(fpivot,fn), mul_F(fp,fn_mns));
}

  mini_F(f);
/*
if(colp<colpivot)
{
printf("fn_mns[%d,%d]   %6.0f/%.0f fn[%d,%d]       %.0f/%.0f\n",
            rown_mns, colpivot,
        fn_mns.n, fn_mns.d,
            rown_mns,    colp,
            fn.n,     fn.d);
printf("fpivot[%d,%d]   %6.0f/%.0f fp[%d,%d]       %.0f/%.0f\n",
            rowpivot, colpivot,
        fpivot.n, fpivot.d,
            rowpivot,   colp,
            fp.n,     fp.d);

printf("\n\n(fpivot*fn) + (fp*fn_mns) = f = %.0f/%.0f\n\n",
        f.n,      f.d);
printf("\n\n(%.0f/%.0f)*(%.0f/%.0f) + (%.0f/%.0f)*(%.0f/%.0f);  \n\n",
         fpivot.n, fpivot.d,
             fn.n,     fn.d,
             fp.n,     fp.d,
         fn_mns.n, fn_mns.d);

     p_mF(m);
getchar();
}
*/

 return(f);
}


/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :  On a row.                                                         */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void jrpivotF(
PmF  m,
int      rowpivot,
int      colpivot,
int      rown_mns
)
{
     int colp;
fraction f;

    if((*(m->pb+rowpivot  *m->cols+colpivot*C2)))
     {
       for(colp = (m->cols/2)-1 ; colp > -1 ; colp--)
        {
         f = jfpivotF(m, rowpivot, colpivot, colp, rown_mns);

         (*(m->pb+rown_mns  *m->cols+colp*C2  )) = f.n;
         (*(m->pb+rown_mns  *m->cols+colp*C2+1)) = f.d;

        }
     }

      frowmini_F(m,rown_mns);
      growmini_F(m,rown_mns);
}

/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :  On a row.                                                         */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void jcpivotF(
PmF  m,
int      rowpivot,
int      colpivot
)
{
int      rown_mns;

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

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

/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void jdpivotF(
PmF  m
)
{
int      rowpivot;

     for(rowpivot = (m->rows)-1; rowpivot  ; rowpivot--)
         jcpivotF(m, rowpivot,0);
}


⌨️ 快捷键说明

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