亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tsmatrix.cpp

?? 程序簡單實現了對稀疏矩陣進行incomplete Cholesky分解的功能
?? CPP
字號:
// TSMatrix.cpp: implementation of the TSMatrix class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "multiply.h"
#include "TSMatrix.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//
//TSMatrix::TSMatrix()
//{
//
//}
//
//TSMatrix::~TSMatrix()
//{
//
// }

void TSMatrix::mulmatrix(TSMatrix &N, TSMatrix &Q)
{
    int mrow,nrow,tp,ccol;
	int* mnum = new int[mu+1];
	int* mpot = new int[mu+1];
	int* nnum = new int[N.mu+1];
	int* npot = new int[N.mu+1];
	float* a  = new float[17];
	TSMatrix TQ,MQ;
	TQ.data = new Triple[17];
	MQ.data = new Triple[16*N.nu+1];

    if(nu!=N.mu)
	{
		//MessageBox("error");
		// cerr<<"error\n"; exit(0);
	}

	Q.mu = mu;
	Q.nu = N.nu;
	Q.tu = 0;
	
	for (int i=1;i<=16;i++)
	{
		a[i] = 0;
	}

    for(mrow=1;mrow<=mu;++mrow)  
		   mnum[mrow] = 0;
	for(int t=1;t<=tu;++t)  
		   ++mnum[data[t].ii];
	mpot[1] = 1;
       //*(cpot+1)=1; //M中第一行第一個非零元在M中的序號為1
    for(mrow=2;mrow<=mu;++mrow)
		   mpot[mrow] = mpot[mrow-1] + mnum[mrow-1];

	for(nrow=1;nrow<=N.mu;++nrow)  
		   nnum[nrow] = 0;
	for(t=1;t<=N.tu;++t)  
		   ++nnum[N.data[t].ii];
	npot[1] = 1;                        //M中第一行第一個非零元在N中的序號為1
    for(nrow=2;nrow<=N.mu;++nrow)
		   npot[nrow] = npot[nrow-1] + nnum[nrow-1];
	
    
	if(tu!=0 && N.tu!=0)
	{
     for(mrow=1;mrow<=mu;++mrow)
	 {
		if(mrow<mu)
	      tp=mpot[mrow+1];
	    else
	      tp=tu+1;
		int tep = 0;
		TQ.tu = 0;
	    for(int p=mpot[mrow];p<tp;++p)
		{
			nrow=data[p].jj;
	        if(nrow<N.mu)
		        t=npot[nrow+1];
	        else
		        t=N.tu+1;
	        for(int q=npot[nrow];q<t;++q)
	           {
//				   ccol=N.data[q].jj;
//	               a[(mrow-1)*N.nu+ccol]+=data[p].e*N.data[q].e;
				   // Q.tu++;
				   TQ.tu++;
				   tep++;
				   a[tep] = N.data[q].jj;
				   TQ.data[TQ.tu].e  = data[p].e*N.data[q].e;
				   TQ.data[TQ.tu].ii = mrow;
				   TQ.data[TQ.tu].jj = a[tep];
	           }
		}

		int r,s,pt;
		Triple ft;
		for (r=1;r<tep;r++)
			for (s=1;s<=tep-r;s++)
			{
                if (a[s]>a[s+1])
                {
					ft = TQ.data[s];
					TQ.data[s] = TQ.data[s+1];
					TQ.data[s+1] = ft;
					pt = a[s];
					a[s] = a[s+1];
					a[s+1] = pt;

                }
				else 
					if (a[s]==a[s+1])
					{
						TQ.data[s].e+= TQ.data[s+1].e;
						for (int fc=s+1;fc<tep;fc++)
						{
							a[fc] = a[fc+1];
							TQ.data[fc] = TQ.data[fc+1];
						}
						tep--;
						TQ.tu--;
						s--;
					}
			}
			for (int tc=1;tc<=TQ.tu;tc++)
			{
				MQ.data[Q.tu+tc] = TQ.data[tc];
			}
			Q.tu+=TQ.tu;

//		for (ccol=1;ccol<=Q.nu;ccol++)
//		{
//			if (a[(mrow-1)*N.nu+ccol])
//			{
//				++Q.tu;
//
//				Q.data[Q.tu].e  = a[(mrow-1)*N.nu+ccol];
//				Q.data[Q.tu].ii = mrow;
//				Q.data[Q.tu].jj = ccol;
// 
//			}
//		}
	 }
	 Q.data = new Triple[Q.tu+1];
	 for (i=1;i<=Q.tu;i++)
	 {
         Q.data[i] = MQ.data[i];
	 }
	 delete MQ.data;
	}
}

void TSMatrix::FastTrMatrix(TSMatrix &R)
{
     int col,p,q,i,t;
  
   R.mu=nu;   R.nu=mu;   R.tu=tu;
   int* num  = new int[nu+1];
   int* cpot = new int[nu+1];
   R.data = new Triple[tu+1];
   if(tu)
   {
	   for(col=1;col<=nu;++col)  
		   num[col] = 0;
		   //*(num+col) = 0;
       //先置M每列非0元個數均為0
       for(t=1;t<=tu;++t)  
		   ++num[data[t].jj];
		   //++(*(num+T.data[t].jj));
       //求M中每一列非0元個數
	   cpot[1] = 1;
       //*(cpot+1)=1; //M中第一列第一個非元在T中的序號為1
       for(col=2;col<=nu;++col)
		   cpot[col] = cpot[col-1] + num[col-1];
          //*(cpot+col)=*(cpot+col-1) + *(num+col-1);
    //求M中第col列中第一個非0元在T中的序號
       for(p=1;p<=tu;++p)
	   {
		   col=data[p].jj; //記下M中第p個元素的列號
           q=cpot[col];     //該列中第一個非0元在T中的序號
           R.data[q].ii = data[p].jj;
           R.data[q].jj = data[p].ii;
           R.data[q].e  = data[p].e;//行、列交換,并賦值
           ++cpot[col];
	   } //該列下一個非0元序號=上一個序號+1
   }
		int errorr = 0;
	for (i=1;i<=tu-1;i++)
	{
		if ((R.data[i].ii==R.data[i+1].ii)&&(R.data[i].jj>=R.data[i+1].jj))
		{
			errorr =1;
		}
	}   
   
  
}

void TSMatrix::vectMulSMat(float *rp, float *result)
{
    int mrow;
	int i,tp,t;
	int* mnum = new int[mu+1];
	int* mpot = new int[mu+1];
    //result = new float[nu+1];
    for(mrow=1;mrow<=mu;++mrow)  
		   mnum[mrow] = 0;
	for( t=1;t<=tu;++t)  
		   ++mnum[data[t].ii];
	mpot[1] = 1;
       //*(cpot+1)=1; //M中第一行第一個非零元在M中的序號為1
    for(mrow=2;mrow<=mu;++mrow)
		   mpot[mrow] = mpot[mrow-1] + mnum[mrow-1];
    
	for (i=1;i<=mu;i++)
	{
		result[i]=0;
        if(i<mu)
	      tp=mpot[i+1];
	    else
	      tp=tu+1;
	    for(int p=mpot[i];p<tp;++p)
		{
			t = data[p].jj;
			result[i]+=data[p].e*rp[t];
		}
	}
	
}

void TSMatrix::addSMat(TSMatrix &N, TSMatrix &Q)
{
    Triple *Mp,*Me,*Np,*Ne,*Qh,*Qe;
	if (mu==N.mu && nu==N.nu)
	{
//		Q.mu = mu;
//		Q.nu = nu;
//		Q.data = new Triple[tu+N.tu+1];
		Mp = &data[1];         //Mp的初值指向矩陣M的非零元素首地址
		Np = &N.data[1];       //Np的初值指向矩陣N的非零元素首地址
		Me = &data[tu];        //Me的初值指向矩陣M的非零元素尾地址
		Ne = &N.data[N.tu];      //Ne的初值指向矩陣N的非零元素尾地址
		Qh = Qe = &Q.data[0];      //Qh,Qe的初值指向矩陣Q的非零元素首地址的前一地址
		while (Mp<=Me&&Np<=Ne)
		{
			Qe++;
			switch(comp(Mp->ii,Np->ii))
			{
			    case 1: *Qe = *Mp;
				        Mp++;
					    break;
				case 0: switch(comp(Mp->jj,Np->jj)) //M,N矩陣當前非零元素的行相等,繼續比較列
						{
				            case 1: *Qe = *Mp;
								    Mp++;
									break;
							case 0: *Qe = *Mp;
								     Qe->e+=Np->e;
									if (!Qe->e)
									{
										Qe--;
									}
									Mp++;
									Np++;
									break;
							case -1:*Qe = *Np;
								    Np++;
									break;
									
						}
					    break;
				case -1: *Qe = *Np;
					     Np++;
						 break;
			}
		}
    if(Mp>Me)          //矩陣M的元素全部處理完畢
		while (Np<=Ne)
		{
			Qe++;
			*Qe = *Np;
			Np++;
		}
	if(Np>Ne)         //矩陣N的元素全部處理完畢
		while (Mp<=Me)
		{
			Qe++;
			*Qe = *Mp;
			Mp++;
		}
	Q.tu = Qe - Qh; 
	}
}

int TSMatrix::comp(int c1, int c2)
{
     int i;
	if(c1<c2)
		i = 1;
	else if(c1==c2)
		i = 0;
	else
		i = -1;
	return i;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老女人第四色| 成人一区二区三区中文字幕| 欧美三级一区二区| 亚洲一二三专区| 制服视频三区第一页精品| 免费在线看成人av| 久久久久久久久一| 波多野结衣一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 99国产精品久久久久久久久久| 最新国产の精品合集bt伙计| 一本久久综合亚洲鲁鲁五月天| 一级女性全黄久久生活片免费| 欧美人妖巨大在线| 国精产品一区一区三区mba桃花| 久久久精品欧美丰满| 91网站在线播放| 亚洲va韩国va欧美va| 精品国产一区二区三区久久久蜜月 | 国产成人精品一区二区三区四区| 久久精品视频在线看| 一本色道**综合亚洲精品蜜桃冫 | 久久久久亚洲综合| 97精品国产露脸对白| 午夜欧美视频在线观看| 久久久精品免费观看| 色婷婷精品大在线视频| 美女在线一区二区| 日韩一区有码在线| 欧美成人精品二区三区99精品| 成人黄色大片在线观看| 99久久国产综合精品麻豆| 一区二区三区国产精华| 精品久久久久久久久久久院品网| 97aⅴ精品视频一二三区| 免费人成在线不卡| 国产精品家庭影院| 欧美一卡二卡三卡四卡| eeuss影院一区二区三区| 麻豆一区二区三区| 尤物在线观看一区| 精品久久一二三区| 欧美性色综合网| 豆国产96在线|亚洲| 毛片一区二区三区| 亚洲精品欧美专区| 国产欧美一区二区在线| 欧美三级资源在线| 一道本成人在线| 东方aⅴ免费观看久久av| 日本欧美肥老太交大片| 亚洲精品乱码久久久久久| 国产蜜臀97一区二区三区| 日韩午夜精品视频| 欧美三级电影网| 色综合天天综合狠狠| 国产99久久久国产精品潘金 | 91视频91自| 国产精品1024| 老司机精品视频线观看86| 午夜精品免费在线| 亚洲一卡二卡三卡四卡 | 欧美色中文字幕| 99久久精品免费看国产| 成人综合婷婷国产精品久久蜜臀| 久久99国产精品久久99果冻传媒| 丝袜诱惑亚洲看片| 亚洲成人动漫在线观看| 亚洲精品国久久99热| 亚洲欧美综合色| 亚洲欧美综合另类在线卡通| 欧美国产日韩亚洲一区| 国产日韩精品一区二区浪潮av| 精品国产人成亚洲区| 欧美成人一区二区三区在线观看| 欧美一区2区视频在线观看| 欧美一区二区视频免费观看| 5566中文字幕一区二区电影| 欧美肥妇bbw| 日韩一二在线观看| 欧美va在线播放| 精品国产麻豆免费人成网站| 精品国产91亚洲一区二区三区婷婷 | 蜜臀a∨国产成人精品| 日本中文字幕一区| 美女视频黄a大片欧美| 捆绑变态av一区二区三区| 黄色精品一二区| 日韩欧美在线影院| 欧美成人一区二区| 久久综合色8888| 国产精品超碰97尤物18| 亚洲品质自拍视频| 午夜精品久久久久久| 日本aⅴ免费视频一区二区三区| 六月婷婷色综合| 懂色av一区二区三区免费观看 | 精品美女被调教视频大全网站| 精品国产青草久久久久福利| 国产欧美精品一区二区色综合| 亚洲国产高清在线| 亚洲精品中文字幕乱码三区| 午夜电影久久久| 国产精品一区二区视频| 91在线视频播放| 717成人午夜免费福利电影| 久久精品网站免费观看| 一区二区三区中文字幕在线观看| 日韩电影一区二区三区| 国产福利电影一区二区三区| 91成人在线免费观看| 欧美成人国产一区二区| 自拍偷拍欧美精品| 美女一区二区久久| 99精品久久久久久| 欧美一级久久久| 亚洲天堂福利av| 精品无码三级在线观看视频| 91麻豆蜜桃一区二区三区| 日韩午夜在线观看视频| 亚洲视频精选在线| 久久99久久精品| 在线观看日韩精品| 久久久久久久精| 三级在线观看一区二区| 成熟亚洲日本毛茸茸凸凹| 中文字幕欧美一| 免费成人av在线| 在线亚洲高清视频| 中文无字幕一区二区三区| 视频在线观看一区二区三区| 粉嫩嫩av羞羞动漫久久久| 欧美一区国产二区| 一区二区三区中文字幕精品精品| 国产福利视频一区二区三区| 欧美理论片在线| 亚洲日韩欧美一区二区在线| 韩国欧美一区二区| 欧美一区二区免费观在线| 亚洲另类在线制服丝袜| 国产福利一区二区三区视频| 欧美一卡二卡三卡| 亚洲一区免费观看| 99久久免费视频.com| 久久久青草青青国产亚洲免观| 亚洲成人一区二区在线观看| 色综合夜色一区| 中文文精品字幕一区二区| 国产久卡久卡久卡久卡视频精品| 制服丝袜亚洲网站| 日日摸夜夜添夜夜添亚洲女人| 色诱视频网站一区| 中文字幕制服丝袜成人av | 国v精品久久久网| 欧美成人国产一区二区| 天堂蜜桃91精品| 欧美午夜理伦三级在线观看| 亚洲人123区| 91免费版pro下载短视频| 国产精品电影院| 成人综合婷婷国产精品久久| 国产午夜精品在线观看| 久久97超碰色| 亚洲男同性视频| 色婷婷综合激情| 亚洲免费观看在线视频| 一本色道久久综合精品竹菊| 亚洲日本欧美天堂| 在线观看一区二区视频| 亚洲一区二区三区免费视频| 色吊一区二区三区| 亚洲二区在线观看| 欧美日韩国产一二三| 亚洲成人先锋电影| 日韩一级免费一区| 国产乱色国产精品免费视频| 国产日产欧产精品推荐色| 福利一区在线观看| 亚洲欧美日韩一区| 欧美日韩国产另类一区| 免费在线观看成人| 久久精品视频在线免费观看| 不卡视频在线观看| 亚洲综合男人的天堂| 91麻豆精品国产91久久久久| 麻豆一区二区三| 国产精品人成在线观看免费| 91亚洲男人天堂| 日韩主播视频在线| 国产夜色精品一区二区av| av中文字幕亚洲| 亚洲va国产va欧美va观看| 日韩三级电影网址| 成人精品电影在线观看| 夜夜精品视频一区二区| 欧美电视剧免费全集观看| 成人性生交大片免费看中文网站| 亚洲视频香蕉人妖| 欧美一级国产精品| 成人精品视频一区|