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

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

?? ilupre.cc

?? sparselib庫
?? CC
字號:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*             ********   ***                                 SparseLib++    *//*          *******  **  ***       ***      ***                              *//*           *****      ***     ******** ********                            *//*            *****    ***     ******** ********              R. Pozo        *//*       **  *******  ***   **   ***      ***                 K. Remington   *//*        ********   ********                                 A. Lumsdaine   *//*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*                                                                           *//*                                                                           *//*                     SparseLib++ : Sparse Matrix Library                   *//*                                                                           *//*               National Institute of Standards and Technology              *//*                        University of Notre Dame                           *//*              Authors: R. Pozo, K. Remington, A. Lumsdaine                 *//*                                                                           *//*                                 NOTICE                                    *//*                                                                           *//* Permission to use, copy, modify, and distribute this software and         *//* its documentation for any purpose and without fee is hereby granted       *//* provided that the above notice appear in all copies and supporting        *//* documentation.                                                            *//*                                                                           *//* Neither the Institutions (National Institute of Standards and Technology, *//* University of Notre Dame) nor the Authors make any representations about  *//* the suitability of this software for any purpose.  This software is       *//* provided ``as is'' without expressed or implied warranty.                 *//*                                                                           *//*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/#include <stdlib.h>#include "ilupre.h"#include "qsort.h"#include "spblas.h"CompCol_ILUPreconditioner::CompCol_ILUPreconditioner(const CompCol_MatDouble &A): l_colptr_(A.dim(1) + 1), u_colptr_(A.dim(1) + 1),   l_rowind_(0), u_rowind_(0),  l_val_(0), u_val_(0){  int i, j, k, pn, qn, rn;  double multiplier;  // Copy  dim_[0] = A.dim(0);  dim_[1] = A.dim(1);  l_nz_ = u_nz_ = 0;  // Get size of l and u  for (i = 0; i < dim_[1]; i++)    for (j = A.col_ptr(i); j < A.col_ptr(i+1); j++)      if (A.row_ind(j) > i)    l_nz_++;      else    u_nz_++;  l_val_.newsize(l_nz_);  u_val_.newsize(u_nz_);  l_rowind_.newsize(l_nz_);  u_rowind_.newsize(u_nz_);  l_colptr_(0) = u_colptr_(0) = 0;  // Split up A into l and u  for (i = 0; i < dim_[1]; i++) {    l_colptr_(i+1) = l_colptr_(i);    u_colptr_(i+1) = u_colptr_(i);        for (j = A.col_ptr(i); j < A.col_ptr(i+1); j++)      if (A.row_ind(j) > i) {    k = l_colptr_(i+1)++;    l_val_(k) = A.val(j);    l_rowind_(k) = A.row_ind(j);      } else if (A.row_ind(j) <= i) {    k = u_colptr_(i+1)++;    u_val_(k) = A.val(j);    u_rowind_(k) = A.row_ind(j);      }  }    for (i = 0; i < dim_[1]; i++) {    QSort(l_rowind_, l_val_, l_colptr_[i], l_colptr_[i+1] - l_colptr_[i]);    QSort(u_rowind_, u_val_, u_colptr_[i], u_colptr_[i+1] - u_colptr_[i]);  }  // Factor matrix  for (i = 0; i < dim_[0] - 1; i++) {    multiplier = u_val_(u_colptr_(i+1)-1);        for (j = l_colptr_[i]; j < l_colptr_[i+1]; j++)      l_val_[j] /= multiplier;        for (j = u_colptr_[i+1]; j < u_colptr_[i+2]-1; j++) {      multiplier = u_val_[j];      qn = j + 1;      rn = l_colptr_[i+1];      for (pn = l_colptr_[u_rowind_[j]];        l_rowind_[pn] <= i + 1 && pn < l_colptr_[u_rowind_[j]+1];        pn++) {    while (u_rowind_[qn] < l_rowind_[pn] && qn < u_colptr_[i+2])      qn++;    if (l_rowind_[pn] == u_rowind_[qn] && qn < u_colptr_[i+2])      u_val_[qn] -= multiplier * l_val_[pn];      }      for (; pn < l_colptr_[u_rowind_[j]+1]; pn++) {    while (l_rowind_[rn] < l_rowind_[pn] && rn < l_colptr_[i+2])      rn++;    if (l_rowind_[pn] == l_rowind_[rn] && rn < l_colptr_[i+2])      l_val_[rn] -= multiplier * l_val_[pn];      }    }  }}CompRow_ILUPreconditioner::CompRow_ILUPreconditioner(const CompRow_MatDouble &A): l_rowptr_(A.dim(1) + 1), u_rowptr_(A.dim(1) + 1),   l_colind_(0), u_colind_(0),  l_val_(0), u_val_(0){  int i, j, k, pn, qn, rn;  double multiplier;  // Copy  dim_[0] = A.dim(0);  dim_[1] = A.dim(1);  l_nz_ = u_nz_ = 0;  // Get size of l and u  for (i = 0; i < dim_[1]; i++)    for (j = A.row_ptr(i); j < A.row_ptr(i+1); j++)      if (A.col_ind(j) < i)    l_nz_++;      else    u_nz_++;  l_val_.newsize(l_nz_);  u_val_.newsize(u_nz_);  l_colind_.newsize(l_nz_);  u_colind_.newsize(u_nz_);  l_rowptr_(0) = u_rowptr_(0) = 0;  // Split up A into l and u  for (i = 0; i < dim_[1]; i++) {    l_rowptr_(i+1) = l_rowptr_(i);    u_rowptr_(i+1) = u_rowptr_(i);        for (j = A.row_ptr(i); j < A.row_ptr(i+1); j++)      if (A.col_ind(j) < i) {    k = l_rowptr_(i+1)++;    l_val_(k) = A.val(j);    l_colind_(k) = A.col_ind(j);      } else if (A.col_ind(j) >= i) {    k = u_rowptr_(i+1)++;    u_val_(k) = A.val(j);    u_colind_(k) = A.col_ind(j);      }  }  for (i = 0; i < dim_[1]; i++) {    QSort(l_colind_, l_val_, l_rowptr_[i], l_rowptr_[i+1] - l_rowptr_[i]);    QSort(u_colind_, u_val_, u_rowptr_[i], u_rowptr_[i+1] - u_rowptr_[i]);  }  // Factor matrix  for (i = 1; i < dim_[0]; i++) {    for (j = l_rowptr_[i]; j < l_rowptr_[i+1]; j++) {      pn = u_rowptr_[l_colind_[j]];      multiplier = (l_val_[j] /= u_val_[pn]);      qn = j + 1;      rn = u_rowptr_[i];      for (pn++; u_colind_[pn] < i && pn < u_rowptr_[l_colind_[j]+1]; pn++) {    while (l_colind_[qn] < u_colind_[pn] && qn < l_rowptr_[i+1])      qn++;    if (u_colind_[pn] == l_colind_[qn] && qn < l_rowptr_[i+1])      l_val_[qn] -= multiplier * u_val_[pn];      }      for (; pn < u_rowptr_[l_colind_[j]+1]; pn++) {    while (u_colind_[rn] < u_colind_[pn] && rn < u_rowptr_[i+1])      rn++;    if (u_colind_[pn] == u_colind_[rn] && rn < u_rowptr_[i+1])      u_val_[rn] -= multiplier * u_val_[pn];      }    }  }}MV_Vector<double>CompCol_ILUPreconditioner::solve(const MV_Vector<double> &x) const {  int M = x.size();  MV_Vector<double> y(M);  MV_Vector<double> work(M);  int descra[9];  descra[0] = 0;  // lower unit  descra[1] = 1;  descra[2] = 1;  F77NAME(dcscsm) (0, M, 1, 1, NULL, 1.0,           descra, &l_val_(0), &l_rowind_(0), &l_colptr_(0),           &x(0), M, 0.0, &y(1), M,           &work(0), M);  // upper diag  descra[1] = 2;  descra[2] = 0;  F77NAME(dcscsm) (0, M, 1, 1, NULL, 1.0,           descra, &u_val_(0), &u_rowind_(0), &u_colptr_(0),           &y(0), M, 0.0, &y(1), M,           &work(0), M);  return y;} MV_Vector<double>CompCol_ILUPreconditioner::trans_solve(const MV_Vector<double> &x) const {  int M = x.size();  MV_Vector<double> y(M);  MV_Vector<double> work(M);  int descra[9];  descra[0] = 0;  // upper diag transpose  descra[1] = 2;  descra[2] = 0;  F77NAME(dcscsm) (1, M, 1, 1, NULL, 1.0,           descra, &u_val_(0), &u_rowind_(0), &u_colptr_(0),           &x(0), M, 0.0, &y(1), M,           &work(0), M);  // lower unit transpose  descra[1] = 1;  descra[2] = 1;  F77NAME(dcscsm) (1, M, 1, 1, NULL, 1.0,           descra, &l_val_(0), &l_rowind_(0), &l_colptr_(0),           &y(0), M, 0.0, &y(1), M,           &work(0), M);  return y;}MV_Vector<double>CompRow_ILUPreconditioner::solve(const MV_Vector<double> &x) const {  int M = x.size();  MV_Vector<double> y(M);  MV_Vector<double> work(M);  int descra[9];  descra[0] = 0;  // lower unit  descra[1] = 1;  descra[2] = 1;  F77NAME(dcsrsm) (0, M, 1, 1, NULL, 1.0,           descra, &l_val_(0), &l_colind_(0), &l_rowptr_(0),           &x(0), M, 0.0, &y(1), M,           &work(0), M);  // upper diag  descra[1] = 2;  descra[2] = 0;  F77NAME(dcsrsm) (0, M, 1, 1, NULL, 1.0,           descra, &u_val_(0), &u_colind_(0), &u_rowptr_(0),           &y(0), M, 0.0, &y(1), M,           &work(0), M);  return y;} MV_Vector<double>CompRow_ILUPreconditioner::trans_solve(const MV_Vector<double> &x) const {  int M = x.size();  MV_Vector<double> y(M);  MV_Vector<double> work(M);  int descra[9];  descra[0] = 0;  // upper diag transpose  descra[1] = 2;  descra[2] = 0;  F77NAME(dcsrsm) (1, M, 1, 1, NULL, 1.0,           descra, &u_val_(0), &u_colind_(0), &u_rowptr_(0),           &x(0), M, 0.0, &y(1), M,           &work(0), M);  // lower unit transpose  descra[1] = 1;  descra[2] = 1;  F77NAME(dcsrsm) (1, M, 1, 1, NULL, 1.0,           descra, &l_val_(0), &l_colind_(0), &l_rowptr_(0),           &y(0), M, 0.0, &y(1), M,           &work(0), M);  return y;} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一卡二卡三乱码免费网站| 91国偷自产一区二区开放时间| 日本女人一区二区三区| 午夜电影网亚洲视频| 国产不卡高清在线观看视频| 欧美色老头old∨ideo| 国产欧美精品区一区二区三区| 丝袜美腿亚洲综合| 不卡av免费在线观看| 26uuu亚洲综合色| 亚洲午夜电影在线观看| av不卡在线观看| 国产盗摄一区二区三区| 欧美亚洲高清一区| 国产精品国产自产拍高清av| 精品一区二区三区av| 宅男在线国产精品| 一区二区三区在线观看网站| 成人性生交大合| 久久色在线观看| 精品亚洲porn| 6080国产精品一区二区| 五月综合激情日本mⅴ| 色婷婷国产精品| 亚洲蜜臀av乱码久久精品| 丁香桃色午夜亚洲一区二区三区| 欧美一级一区二区| 日本一道高清亚洲日美韩| 欧美视频一区二区在线观看| 亚洲男人的天堂在线aⅴ视频| 成人激情视频网站| 国产精品国产自产拍高清av| 99综合电影在线视频| 亚洲欧洲性图库| 99国产精品一区| 亚洲精选一二三| 日本久久电影网| 亚洲自拍偷拍图区| 色妞www精品视频| 亚洲综合成人在线| 欧美日韩大陆一区二区| 日本欧美久久久久免费播放网| 欧美久久一区二区| 久久精品99久久久| 久久久久成人黄色影片| 国产成人在线看| 中文字幕综合网| 色一情一伦一子一伦一区| 一区二区三区四区乱视频| 欧美午夜一区二区| 麻豆中文一区二区| 日本一区二区三区四区在线视频| 本田岬高潮一区二区三区| 一区二区三区在线观看视频| 51精品国自产在线| 国产精品自拍在线| 亚洲欧美日韩电影| 制服丝袜亚洲播放| 国产乱淫av一区二区三区| 国产精品国产三级国产普通话99| 日本丶国产丶欧美色综合| 亚洲成人手机在线| 久久久久久9999| 在线观看免费视频综合| 美美哒免费高清在线观看视频一区二区| 久久一夜天堂av一区二区三区| 国产成人久久精品77777最新版本| 亚洲天堂av一区| 91精品福利在线一区二区三区| 国产激情视频一区二区在线观看| 亚洲欧美电影院| 精品久久一区二区| 色婷婷av一区二区三区软件| 久久精品国产免费| ●精品国产综合乱码久久久久| 91精品国产欧美一区二区| fc2成人免费人成在线观看播放| 天堂久久久久va久久久久| 国产日产欧美一区二区三区| 欧美日本一区二区在线观看| 成人永久aaa| 蜜桃av一区二区在线观看 | 久久精品国产久精国产爱| 国产清纯白嫩初高生在线观看91| 欧美视频在线一区二区三区| 粉嫩av一区二区三区粉嫩| 蜜桃视频一区二区三区在线观看| 一区二区在线电影| 中文字幕一区二区日韩精品绯色| 欧美电影精品一区二区| 日本韩国欧美三级| 99re热视频这里只精品| 韩国成人精品a∨在线观看| 亚洲国产你懂的| 亚洲欧美一区二区三区极速播放 | 欧美日韩一本到| 成人精品在线视频观看| 精品亚洲成a人| 奇米影视在线99精品| 亚洲国产aⅴ成人精品无吗| 中文字幕一区二区三区在线播放| 2021中文字幕一区亚洲| 日韩一级黄色大片| 91麻豆精品国产无毒不卡在线观看| 91丨九色丨蝌蚪富婆spa| 国产成人精品免费视频网站| 久久97超碰色| 久久精品国产第一区二区三区| 亚洲国产综合人成综合网站| 亚洲一区二区三区精品在线| 综合欧美亚洲日本| 亚洲欧美影音先锋| 国产精品久久久久久久午夜片| 久久久久久**毛片大全| 久久精品人人做人人爽人人| 久久久久久99精品| 国产三级一区二区三区| 国产欧美精品国产国产专区| 久久久国产精品麻豆| 国产无人区一区二区三区| 久久久激情视频| 国产精品短视频| 亚洲精品你懂的| 亚洲国产你懂的| 日韩av不卡在线观看| 另类欧美日韩国产在线| 狠狠色综合播放一区二区| 国产在线播放一区三区四| 国产成人综合网站| 99riav一区二区三区| 91福利国产精品| 欧美一区二区不卡视频| 精品国产一二三| 国产精品视频看| 一区二区三区在线免费视频| 日本va欧美va精品| 韩国三级电影一区二区| 成人一区二区三区视频在线观看 | 99久久99久久免费精品蜜臀| 日本韩国欧美在线| 日韩一卡二卡三卡国产欧美| 国产欧美中文在线| 亚洲一区二区三区影院| 蜜臀久久99精品久久久久宅男| 国产成人自拍高清视频在线免费播放 | 精品中文av资源站在线观看| 国产精品一区二区三区四区| 色拍拍在线精品视频8848| 7777精品伊人久久久大香线蕉的 | 欧美日韩在线播放一区| 日韩你懂的电影在线观看| 日本一区二区三级电影在线观看| 亚洲欧美激情在线| 久久99精品久久久久久动态图| 成人国产一区二区三区精品| 欧美日韩一级黄| 国产日本欧美一区二区| 亚洲国产精品尤物yw在线观看| 国产一区在线精品| 欧美日韩一区在线| 国产日韩精品一区二区三区| 日韩精品一级二级| 91视频91自| 久久精品人人做人人爽97| 亚洲电影一区二区| 成人18视频在线播放| 日韩欧美的一区二区| 亚洲综合一区二区三区| 丁香天五香天堂综合| 日韩欧美久久一区| 亚洲韩国一区二区三区| 99久久99精品久久久久久 | 一区二区三区日韩在线观看| 国产一区三区三区| 欧美老女人在线| 亚洲嫩草精品久久| 国产成人免费高清| 精品不卡在线视频| 三级精品在线观看| 欧美在线影院一区二区| 国产精品视频一二三区| 精品在线免费视频| 欧美一区二区三区在线看| 一区二区三区在线播| 99re热视频这里只精品| 国产精品麻豆视频| 成人性生交大片免费看视频在线| 精品成人佐山爱一区二区| 久久精品国产精品亚洲精品| 欧美一区二区三区小说| 天堂一区二区在线免费观看| 91高清视频在线| 伊人婷婷欧美激情| 色呦呦国产精品| 一区二区三区在线影院| 99精品国产99久久久久久白柏| 欧美激情在线一区二区| 国产成人综合在线观看| 国产精品美女视频| 成人美女在线视频|