*/
Love this site? Hate it? Leave us some comments.
*/

View \xdet1.h

Application of the identity matrix II. v05

Submitted By: xhunga
Rating: starstar (Rate It)


/* xdet1.h                      freeware                   [[Email Removed]]  */



/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* Call  :                                                                    */
/* Debug :                                                                    */
/* -------------------------------------------------------------------------- */
fraction detFbasic(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 copymF(mA,&mAT);

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *= pivotntzeroF(&mAT,row1,row1);           /*    Pivot row     */
   deter        =     rowminiF(&mAT,row1,deter);
                     frowminiF(&mAT,row1      );          /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
               deter = rowminiF(&mAT,row2,deter);
                      frowminiF(&mAT,row2);             /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {
                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row2);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL     );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL +1);

              deter = miniF(deter);
      }

 return(deter);
}


/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* Call  :                                                                    */
/* Debug :                                                                    */
/* -------------------------------------------------------------------------- */
fraction detFbasicT(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 transposemF(mA,&mAT);

/* copymF(mA,&mAT); */

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *= pivotntzeroF(&mAT,row1,row1);           /*    Pivot row     */
   deter        =     rowminiF(&mAT,row1,deter);
                     frowminiF(&mAT,row1      );          /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
               deter = rowminiF(&mAT,row2,deter);
                      frowminiF(&mAT,row2);             /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {
                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row2);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);

              deter = miniF(deter);
      }

 return(deter);
}


/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* Call  :                                                                    */
/* Debug :                                                                    */
/* -------------------------------------------------------------------------- */
fraction detFnumerMini(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 copymF(mA,&mAT);

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *=  pivotntzeroF(&mAT,row1,row1);          /*    Pivot row     */
   deter        =      rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */
   deter.numer *=  pivotbestFnumer(&mAT,row1,row1);
               deter = rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1      );         /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
                    deter = rowminiF(&mAT,row2,deter);
                           frowminiF(&mAT,row2);        /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {

                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row1);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);

              deter = miniF(deter);
      }

 return(deter);
}

/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* Call  :                                                                    */
/* Debug :                                                                    */
/* -------------------------------------------------------------------------- */
fraction detFnumerMiniT(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 transposemF(mA,&mAT);

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *=  pivotntzeroF(&mAT,row1,row1);          /*    Pivot row     */
   deter        =      rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */
   deter.numer *=  pivotbestFnumer(&mAT,row1,row1);
               deter = rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1      );         /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
                    deter = rowminiF(&mAT,row2,deter);
                           frowminiF(&mAT,row2);        /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {

                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row1);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);

              deter = miniF(deter);
      }

 return(deter);
}


/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* Call  :                                                                    */
/* Debug :                                                                    */
/* -------------------------------------------------------------------------- */
fraction detFdenomMini(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 copymF(mA,&mAT);

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *=  pivotntzeroF(&mAT,row1,row1);          /*    Pivot row     */
   deter        =      rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */
   deter.numer *=  pivotbestFdenom(&mAT,row1,row1);
               deter = rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
                    deter = rowminiF(&mAT,row1,deter);
                           frowminiF(&mAT,row2);        /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {

                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row1);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);

              deter = miniF(deter);
      }

 return(deter);
}


/* ------------------------------ FUNCTION ---------------------------- det() */
/*                                                                            */
/* -------------------------------------------------------------------------- */
fraction detFdenomMiniT(
pmatrix mA)
{
      int row1;
      int row2;
      int n;
   double coefnulldoNothing = 1;
 fraction deter;
 fraction tf;

double pbAT [MXR][MXC*TWOCOL];matrix mAT ={MXR,MXC*TWOCOL,&pbAT [0][0]};

 n = mA->rows;
                mAT.rows=n       ;
                mAT.cols=n*TWOCOL;

 deter.numer = 1;
 deter.denom = 1;

 transposemF(mA,&mAT);

/*--------------------------------------------------------------------  gauss */
for (row1 = 0 ; row1 < mAT.rows - 1 ; row1++)
{
   deter.numer *=  pivotntzeroF(&mAT,row1,row1);          /*    Pivot row     */
   deter        =      rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */
   deter.numer *=  pivotbestFdenom(&mAT,row1,row1);
               deter = rowminiF(&mAT,row1,deter);
                      frowminiF(&mAT,row1     );          /* a) fraction mini */

  for (row2 = row1+1 ; row2 < mAT.rows ; row2++)
    {                                                   /*    Before the work */
                    deter = rowminiF(&mAT,row1,deter);
                           frowminiF(&mAT,row2);        /* a) fraction mini   */

     coefnulldoNothing = *(mAT.pblock+row2 *mAT.cols+row1*TWOCOL);

        if(!(coefnulldoNothing==0))
        {

                pivotworkF(&mAT,row1,row2);             /*     After the work */
          deter = rowminiF(&mAT,row2,deter);
                 frowminiF(&mAT,row1);                  /*  a) fraction mini  */

          deter.numer *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);
          deter.denom *=  *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );

                 deter = miniF(deter);
      }
     }
}
/*------------------------------------------------------------------ Diagonal */
    for (row1 = 0 ; row1 < mAT.rows ; row1++)
     {
       deter.numer *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL  );
       deter.denom *= *(mAT.pblock+row1 *mAT.cols+row1*TWOCOL+1);

              deter = miniF(deter);
      }

 return(deter);
}

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.