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

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

?? ilupre_double_1.5.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_double.h"#include "qsort_double.h"#include "spblas.h"CompCol_ILUPreconditioner_double::CompCol_ILUPreconditioner_double(const CompCol_Mat_double &A):   l_val_(0), l_colptr_(A.dim(1) + 1), l_rowind_(0), l_nz_(0), u_val_(0),    u_colptr_(A.dim(1) + 1), u_rowind_(0), u_nz_(0){  int i, j, k, pn, qn, rn;  double multiplier;  // Copy  dim_[0] = A.dim(0);  dim_[1] = A.dim(1);  // 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]];        pn < l_colptr_[u_rowind_[j]+1] && l_rowind_[pn] <= i + 1;        pn++) {    while (qn < u_colptr_[i+2] && u_rowind_[qn] < l_rowind_[pn])      qn++;    if (l_rowind_[pn] == u_rowind_[qn])      u_val_[qn] -= multiplier * l_val_[pn];      }      for ( ; pn < l_colptr_[u_rowind_[j]+1]; pn++) {    while (rn < l_colptr_[i+2] && l_rowind_[rn] < l_rowind_[pn])      rn++;    if (l_rowind_[pn] == l_rowind_[rn])      l_val_[rn] -= multiplier * l_val_[pn];      }    }  }}CompRow_ILUPreconditioner_double::CompRow_ILUPreconditioner_double(const CompRow_Mat_double &A): l_val_(0), l_rowptr_(A.dim(1) + 1), l_colind_(0), l_nz_(0),    u_val_(0), u_rowptr_(A.dim(1) + 1), u_colind_(0), u_nz_(0){  int i, j, k, pn, qn, rn;  double multiplier;  // Copy  dim_[0] = A.dim(0);  dim_[1] = A.dim(1);  // 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++; pn < u_rowptr_[l_colind_[j]+1] && u_colind_[pn] < i; pn++) {    while (qn < l_rowptr_[i+1] && l_colind_[qn] < u_colind_[pn])      qn++;    if (u_colind_[pn] == l_colind_[qn])      l_val_[qn] -= multiplier * u_val_[pn];      }      for ( ; pn < u_rowptr_[l_colind_[j]+1]; pn++) {    while (rn < u_rowptr_[i+1] && u_colind_[rn] < u_colind_[pn])      rn++;    if (u_colind_[pn] == u_colind_[rn])      u_val_[rn] -= multiplier * u_val_[pn];      }    }  }}VECTOR_doubleCompCol_ILUPreconditioner_double::solve(const VECTOR_double &x) const {  int M = x.size();  VECTOR_double y(M);  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;} VECTOR_doubleCompCol_ILUPreconditioner_double::trans_solve(const VECTOR_double &x) const {  int M = x.size();  VECTOR_double y(M);  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;}VECTOR_doubleCompRow_ILUPreconditioner_double::solve(const VECTOR_double &x) const {  int M = x.size();  VECTOR_double y(M);  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;} VECTOR_doubleCompRow_ILUPreconditioner_double::trans_solve(const VECTOR_double &x) const {  int M = x.size();  VECTOR_double y(M);  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一区二区三区免费野_久草精品视频
国产大陆a不卡| 日韩一区二区在线观看视频播放| 欧美日韩一区中文字幕| 日韩欧美在线观看一区二区三区| 国产精品久线在线观看| 日韩主播视频在线| www.欧美色图| 精品88久久久久88久久久| 亚洲不卡一区二区三区| 大胆欧美人体老妇| 久久免费电影网| 婷婷丁香激情综合| 91亚洲国产成人精品一区二三| 精品国免费一区二区三区| 亚洲bt欧美bt精品777| 91麻豆免费看| 国产精品色呦呦| 国产精品一区久久久久| 日韩美女视频一区二区在线观看| 亚洲二区在线观看| 一本色道久久加勒比精品| 国产精品久久久久久久久免费丝袜 | 国产婷婷色一区二区三区四区| 视频一区中文字幕国产| 欧美日韩国产美| 一区二区视频在线| 91麻豆精品在线观看| 国产精品二三区| 91在线精品一区二区| 欧美精彩视频一区二区三区| 国产乱色国产精品免费视频| 精品日韩在线观看| 韩国精品在线观看| 精品剧情在线观看| 国产乱码字幕精品高清av | 日本高清不卡一区| 亚洲欧美日韩一区二区| 色视频欧美一区二区三区| 亚洲日本成人在线观看| 在线视频你懂得一区二区三区| 亚洲精品综合在线| 欧美日韩精品一区二区三区| 日精品一区二区| 欧美国产激情一区二区三区蜜月| 极品少妇xxxx偷拍精品少妇| 2023国产精品| 99re这里都是精品| 亚洲国产一区二区a毛片| 69av一区二区三区| 毛片不卡一区二区| 久久精品夜夜夜夜久久| 成人亚洲精品久久久久软件| 综合久久久久久久| 欧美日韩精品一二三区| 九九视频精品免费| 国产精品美女久久久久久久久| 91免费小视频| 奇米精品一区二区三区四区| 欧美大片免费久久精品三p| 国产传媒久久文化传媒| 伊人性伊人情综合网| 91麻豆精品国产91久久久 | 白白色 亚洲乱淫| 亚洲一区二区av在线| 精品久久久久久久久久久久久久久 | 蜜臀av一区二区三区| 国产日韩欧美a| 欧美午夜理伦三级在线观看| 久久成人免费网| 中文字幕一区二区三区蜜月| 欧美人动与zoxxxx乱| 国产精品一品视频| 亚洲成人资源在线| 亚洲国产精品成人综合| 欧美三级资源在线| 高清不卡在线观看av| 午夜久久久久久久久| 中文字幕+乱码+中文字幕一区| 欧美在线观看一二区| 国产91丝袜在线观看| 天天操天天干天天综合网| 国产午夜精品一区二区| 在线观看国产精品网站| 国产成人精品免费网站| 日韩在线观看一区二区| 亚洲美女区一区| 久久亚洲综合色| 欧美在线不卡一区| 波多野结衣在线aⅴ中文字幕不卡| 午夜精品久久久久久久| 亚洲精品网站在线观看| 国产亚洲精品bt天堂精选| 欧美精品日韩一本| 色久综合一二码| 99亚偷拍自图区亚洲| 国产不卡高清在线观看视频| 久热成人在线视频| 日韩av不卡在线观看| 亚洲一区二区精品久久av| 国产精品国产精品国产专区不蜜 | 亚洲精品国产成人久久av盗摄| 久久久不卡网国产精品二区| 宅男噜噜噜66一区二区66| 在线观看www91| 在线视频国内一区二区| 91亚洲资源网| 色综合av在线| 99r国产精品| 884aa四虎影成人精品一区| 99久久伊人网影院| 成人一二三区视频| 国产iv一区二区三区| 国产精品1024久久| 国产成a人无v码亚洲福利| 国产精品夜夜嗨| 成人午夜激情影院| av午夜一区麻豆| 色综合久久六月婷婷中文字幕| 99天天综合性| 欧美亚洲高清一区| 欧美日韩视频在线一区二区| 欧美老年两性高潮| 欧美大片一区二区| 欧美国产一区在线| 亚洲乱码国产乱码精品精可以看| 亚洲男帅同性gay1069| 午夜欧美一区二区三区在线播放| 肉色丝袜一区二区| 激情图片小说一区| 不卡视频在线看| 色婷婷av久久久久久久| 欧美夫妻性生活| 精品国产一区久久| 亚洲国产精品ⅴa在线观看| 国产精品成人在线观看| 亚洲柠檬福利资源导航| 亚洲国产你懂的| 美女任你摸久久| 丁香六月综合激情| 色综合久久中文综合久久牛| 欧美日本乱大交xxxxx| 日韩免费看网站| 国产精品少妇自拍| 天天亚洲美女在线视频| 国产精品一区二区免费不卡| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区日韩一区二区| 亚洲国产精品成人综合色在线婷婷| 亚洲激情图片一区| 极品少妇xxxx精品少妇偷拍| 一本到高清视频免费精品| 91精品国产综合久久婷婷香蕉| 久久久久久黄色| 亚洲一区在线看| 国模冰冰炮一区二区| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区成人| 国产精品久久久久久久久果冻传媒 | 国产精品亚洲成人| 欧美日韩精品一区二区天天拍小说| 久久一区二区视频| 污片在线观看一区二区| 成人精品国产免费网站| 91精品国产入口在线| 国产精品国产三级国产aⅴ无密码| 天堂资源在线中文精品| 99视频超级精品| 精品久久久网站| 五月天久久比比资源色| 91影视在线播放| 久久精品日韩一区二区三区| 午夜免费欧美电影| 91影院在线免费观看| 久久亚区不卡日本| 免费久久精品视频| 欧美日韩一区二区在线视频| 国产精品精品国产色婷婷| 国产一区二区精品在线观看| 91精品国产一区二区| 五月婷婷久久综合| 欧美婷婷六月丁香综合色| 国产精品国产三级国产a| 国产福利精品一区| 精品国产乱子伦一区| 亚洲.国产.中文慕字在线| 91在线观看免费视频| 国产精品久久久久桃色tv| 国产在线日韩欧美| 91精品国产色综合久久不卡蜜臀| 亚洲黄色免费电影| 色综合色综合色综合| 亚洲欧洲精品一区二区三区不卡| 国内精品国产三级国产a久久| 欧美一区二区网站| 午夜精品123| 在线不卡免费av| 亚洲va韩国va欧美va精品| 欧美军同video69gay| 日本人妖一区二区| 精品嫩草影院久久|