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

📄 ytinprd1.h

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

/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
complexF uv_uv_zF(
PmzF mu,
PmzF mv
)
{
complexF InnerProduct;

double pbCnjv [MXR][MXC*C4];mzF mCnjv ={MXR,MXC*C4,&pbCnjv [0][0]};
double pbuCnjv[MXR][MXC*C4];mzF muCnjv={MXR,MXC*C4,&pbuCnjv[0][0]};

              mCnjv.rows = mv->rows;  mCnjv.cols = mv->cols*C4;
             muCnjv.rows =        1; muCnjv.cols =        1*C4;

  if (mu->rows != 1             ||
      mu->cols != mv->rows * C4 ||
      mv->cols != C4
     )
    {
     printf(" uv_uCnjv() error.\n\n");

     printf(" u.rows = 1\n");
     printf(" u.cols = v.rows\n");
     printf(" v.cols = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  cnj_mzF(mv,&mCnjv);
  mul_mzF(mu,&mCnjv,&muCnjv);

  InnerProduct.r.n = *(muCnjv.pb+0 *muCnjv.cols+0);
  InnerProduct.r.d = *(muCnjv.pb+0 *muCnjv.cols+1);
  InnerProduct.i.n = *(muCnjv.pb+0 *muCnjv.cols+2);
  InnerProduct.i.d = *(muCnjv.pb+0 *muCnjv.cols+3);

  return(InnerProduct);
}

/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
complexF uv_uvT_zF(
PmzF mu,
PmzF mv
)
{
complexF InnerProduct;

double pbTrpsv [MXR][MXC*C4];mzF mTrpsv  = {MXR,MXC*C4,&pbTrpsv [0][0]};
double pbuTrpsv[MXR][MXC*C4];mzF muTrpsv = {MXR,MXC*C4,&pbuTrpsv[0][0]};

                 mTrpsv.rows =mu->cols / C4;       mTrpsv.cols =  C4;
                muTrpsv.rows =1;                  muTrpsv.cols =  C4;

  if (mu->rows != mv->rows ||
      mu->cols != mv->cols ||
      mu->rows != 1
     )
    {
     printf(" uv_uvT() error.\n\n");

     printf(" u.rows = v.rows\n");
     printf(" u.cols = v.cols\n");
     printf(" u.rows = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  cnj_transpose_mzF(mv,&mTrpsv);

  mul_mzF(mu,&mTrpsv,&muTrpsv);

  InnerProduct.r.n = *(muTrpsv.pb+0 *muTrpsv.cols+0);
  InnerProduct.r.d = *(muTrpsv.pb+0 *muTrpsv.cols+1);
  InnerProduct.i.n = *(muTrpsv.pb+0 *muTrpsv.cols+2);
  InnerProduct.i.d = *(muTrpsv.pb+0 *muTrpsv.cols+3);

  return(InnerProduct);
}


/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
complexF uv_uTv_zF(
PmzF mu,
PmzF mv
)
{
complexF InnerProduct;

double pbTrpsu[MXR][MXC*C4];mzF mTrpsu ={MXR,MXC*C4,&pbTrpsu[0][0]};
double pbCnjv [MXR][MXC*C4];mzF mCnjv  ={MXR,MXC*C4,&pbCnjv [0][0]};
double pbTrpsu_Cnjv  [MXR][MXC*C4];mzF  mTrpsu_Cnjv ={MXR,MXC*C4,&pbTrpsu_Cnjv[0][0]};

             mTrpsu.rows = 1;                  mTrpsu.cols = mu->rows*C4;
              mCnjv.rows =  mv->rows ;          mCnjv.cols = 1*C4;
        mTrpsu_Cnjv.rows = 1;             mTrpsu_Cnjv.cols = 1*C4;


  if (mu->rows != mv->rows ||
      mu->cols != mv->cols ||
      mu->cols != C4
     )
    {
     printf(" uv_vTu() error.\n\n");

     printf(" u.rows = v.rows\n");
     printf(" u.cols = v.cols\n");
     printf(" u.cols = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  transpose_mzF(mu,&mTrpsu);

  cnj_mzF(mv,&mCnjv);
  mul_mzF(&mTrpsu,&mCnjv,&mTrpsu_Cnjv);

  InnerProduct.r.n = *(mTrpsu_Cnjv.pb+0 *mTrpsu_Cnjv.cols+0);
  InnerProduct.r.d = *(mTrpsu_Cnjv.pb+0 *mTrpsu_Cnjv.cols+1);
  InnerProduct.i.n = *(mTrpsu_Cnjv.pb+0 *mTrpsu_Cnjv.cols+2);
  InnerProduct.i.d = *(mTrpsu_Cnjv.pb+0 *mTrpsu_Cnjv.cols+3);

  return(InnerProduct);
}

/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
complexF uv_uTvT_zF(
PmzF mu,
PmzF mv
)
{
complexF InnerProduct;

double pbTrpsu   [MXR][MXC*C4];mzF mTrpsu    ={MXR,MXC*C4,&pbTrpsu   [0][0]};
double pbTrpsv   [MXR][MXC*C4];mzF mTrpsv    ={MXR,MXC*C4,&pbTrpsv   [0][0]};
double pbTrpsu_Trpsv[MXR][MXC*C4];mzF  mTrpsu_Trpsv ={MXR,MXC*C4,&pbTrpsu_Trpsv[0][0]};

                 mTrpsu.rows = 1;                   mTrpsu.cols = mu->rows*C4;
                 mTrpsv.rows =mv->cols / C4;        mTrpsv.cols = 1*C4;
           mTrpsu_Trpsv.rows = 1;             mTrpsu_Trpsv.cols = 1*C4;

  if (mu->rows * C4 != mv->cols ||
      mu->cols          != C4   ||
      mv->rows          != 1
     )
    {
     printf(" uv_vu() error.\n\n");

     printf(" u.rows = v.cols\n");
     printf(" u.cols = 1\n");
     printf(" v.rows = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

   transpose_mzF( mu,     &mTrpsu);
  cnj_transpose_mzF( mv,     &mTrpsv);
        mul_mzF( &mTrpsu,&mTrpsv, &mTrpsu_Trpsv);

  InnerProduct.r.n = *(mTrpsu_Trpsv.pb+0 *mTrpsu_Trpsv.cols+0);
  InnerProduct.r.d = *(mTrpsu_Trpsv.pb+0 *mTrpsu_Trpsv.cols+1);
  InnerProduct.i.n = *(mTrpsu_Trpsv.pb+0 *mTrpsu_Trpsv.cols+2);
  InnerProduct.i.d = *(mTrpsu_Trpsv.pb+0 *mTrpsu_Trpsv.cols+3);

  return(InnerProduct);
}

⌨️ 快捷键说明

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