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

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

?? algo_test.h

?? Matrix_Template_Library.rar c++矩陣模塊庫函數
?? H
?? 第 1 頁 / 共 2 頁
字號:
#ifndef MTL_ALGO_TEST_H#define MTL_ALGO_TEST_H#include "mtl/mtl.h"#include "mtl/dense1D.h"#include "fill_matrix.h"using mtl::dense1D;template <class Matrix>boolmat_algo_test(Matrix& A, std::string test_name){  typedef typename mtl::matrix_traits<Matrix>::value_type T;  typedef typename mtl::matrix_traits<Matrix>::size_type Int;  typename Matrix::iterator i;  typename Matrix::OneD::iterator j;  T s;  T sum, norm;  bool success = true;  mtl::insert_zero_matrix(A);  typename mtl::matrix<T>::type C(A.nrows(), A.ncols());  mtl::zero_matrix(C);  // set  mtl::set_value(A, T(5));  for (i = A.begin(); i != A.end(); ++i)    for (j = (*i).begin(); j != (*i).end(); ++j)      if (*j != T(5)) {        std::cerr << "**** FAILED: (matrix set) " << test_name.c_str() << " ****" << std::endl;        success = false;        break;      }  // scale  mtl::scale(A, T(5));  for (i = A.begin(); i != A.end(); ++i)    for (j = (*i).begin(); j != (*i).end(); ++j)      if (*j != T(25)) {        std::cerr << "**** FAILED: (matrix set) " << test_name.c_str() << " ****" << std::endl;        success = false;              break;      }  matrix_fill(A);  mtl::copy(A, C);  // one_norm  {    Int i, j;    s = mtl::one_norm(A);    if (C.ncols() > 0) {      i = 0; sum = T();      for (j = 0; j < Int(C.nrows()); ++j)        sum += MTL_ABS(C(j,i));      norm = sum;      ++i;    }        for (; i < Int(C.ncols()); ++i) {      sum = T();      for (j = 0; j < Int(C.nrows()); ++j)        sum += MTL_ABS(C(j,i));      norm = MTL_MAX(MTL_ABS(norm), MTL_ABS(sum));    }        if (s != norm) {      std::cout << test_name.c_str() << " failed one_norm(A) ****" << std::endl;      success = false;          }  }  {    // infinity_norm    Int i, j;    s = mtl::infinity_norm(A);        if (C.nrows() > 0) {      i = 0; sum = T();      for (j = 0; j < Int(C.ncols()); ++j)        sum += MTL_ABS(C(i,j));      norm = sum;      ++i;    }        for (; i < Int(C.nrows()); ++i) {      sum = T();      for (j = 0; j < Int(C.ncols()); ++j)        sum += MTL_ABS(C(i,j));      norm = MTL_MAX(MTL_ABS(norm), MTL_ABS(sum));    }        if (s != norm) {      std::cout << test_name.c_str() << " failed infinity_norm(A) ****" << std::endl;      success = false;          }  }  set_diagonal_test(test_name, A, success);  if (success)    std::cout << test_name.c_str() << " passed single matrix algorithms test" << std::endl;  return success;}template <class Matrix>voidset_diagonal_test(std::string test_name, Matrix& A, bool& success){  if (A.is_unit()) {    std::cout << test_name.c_str() << " skipping set_diagonal" << std::endl;    return;  }  typedef typename mtl::matrix_traits<Matrix>::value_type T;  typedef typename mtl::matrix_traits<Matrix>::size_type Int;  // set_diagnal  Int i;  mtl::set_diagonal(A, T(1));    for (i = 0; i < A.nrows() && i < A.ncols(); ++i)    if (A(i,i) != T(1)) {      std::cout << test_name.c_str() << " failed set_diagnal(A,a) *****" << std::endl;      success = false;      break;    }}template <class Mat>inline voidfill_matrix(Mat& A, int /*sub*/, int /*super*/, mtl::rectangle_tag){  typedef typename mtl::matrix_traits<Mat>::size_type Int;  typedef typename mtl::matrix_traits<Mat>::value_type T;  Int i, j;  for (i = 0; i < A.nrows(); ++i)    for (j = 0; j < A.ncols(); ++j)      A(i,j) = T(i * A.ncols() + j);}template <class Mat>inline voidfill_matrix(Mat& A, int sub, int super, mtl::banded_tag){  typedef typename mtl::matrix_traits<Mat>::size_type Int;  typedef typename mtl::matrix_traits<Mat>::value_type T;  Int i, j;  for (i = 0; i < A.nrows(); ++i) {    Int first = MTL_MAX(0, int(i) - sub);    Int last = MTL_MIN(int(A.ncols()), int(i) + super + 1);    for (j = 0; j < A.ncols(); ++j)      if (j >= first && j < last)        A(i,j) = T(i * A.ncols() + j);  }}template <class Mat>inline voidfill_matrix(Mat& A, int sub, int super, mtl::symmetric_tag){  typedef typename mtl::matrix_traits<Mat>::size_type Int;  typedef typename mtl::matrix_traits<Mat>::value_type T;  Int i, j;  for (i = 0; i < A.nrows(); ++i) {    Int first = MTL_MAX(0, int(i) - sub);    Int last = MTL_MIN(int(A.ncols()), int(i) + super + 1);    for (j = 0; j < A.ncols(); ++j)      if (j >= first && j < last)        A(i,j) = T(i + j);  }}template <class Matrix>void test_matvec_mult(std::string test, Matrix& A){  typedef typename mtl::matrix_traits<Matrix>::value_type T;  typedef typename mtl::matrix_traits<Matrix>::size_type Int;  typedef typename mtl::matrix_traits<Matrix>::shape Shape;  Int M = A.nrows();  Int N = A.ncols();  Int i, j;  dense1D<T> x(N), y(M);  typename mtl::matrix<T>::type AA(M, N);  mtl::dense1D<T> yy(M);  mtl::dense1D<T> z(M);  bool pass;  //  // mult test    y = A x + y  //  mtl::set_value(AA, T());  mtl::set_value(A, T());  fill_matrix(A, A.sub(), A.super(), Shape());  mtl::copy(A, AA);  //  fill_matrix(AA, A.sub(), A.super(), Shape());  mtl::set_value(x, T(1));  mtl::set_value(y, T(1));  mtl::set_value(yy, T());  mtl::mult(A, x, y);  for (i = 0; i < M; ++i)    for (j = 0; j < N; ++j)      yy[i] += AA(i,j) * x[j];  // compare y's  pass = std::equal(y.begin(), y.end(), yy.begin());  if (pass)    std::cout << test.c_str() << " passed matvec mult1" << std::endl;  else {    std::cout << "*** matvec mult1 " << test.c_str() << " failed" << std::endl;#if !defined(_MSVCPP_)    std::cout << "result vector ";    mtl::print_vector(y.begin(), y.end());    std::cout << "correct vector ";    mtl::print_vector(yy.begin(), yy.end());#endif  }  //  //  mult2  //    mtl::set_value(y, T(1));  mtl::set_value(yy, T(1));  mtl::set_value(z, T(9));    mtl::mult(A, x, y, z);  for (i = 0; i < M; ++i) {    T tmp = y[i];    for (j = 0; j < N; ++j)      tmp += AA(i,j) * x[j];    yy[i] = tmp;  }  pass = std::equal(z.begin(), z.end(), yy.begin());  if (pass)    std::cout << test.c_str() << " passed matvec mult2 " << std::endl;  else {    std::cout << "*** matvec mult2 " << test.c_str() << " failed" << std::endl;#if !defined(_MSVCPP_)    std::cout << "result vector ";    mtl::print_vector(z.begin(), z.end());    std::cout << "correct vector ";    mtl::print_vector(yy.begin(), yy.end());#endif  }}template <class Matrix>void test_matvec_rankone(std::string test, Matrix&, banded_tag){  std::cout << test.c_str() << " skipping rank one update" << std::endl;}template <class Matrix>void test_matvec_rankone(std::string test, Matrix& A, rectangle_tag){  typedef typename mtl::matrix_traits<Matrix>::value_type T;  typedef typename mtl::matrix_traits<Matrix>::size_type Int;  typedef typename mtl::matrix_traits<Matrix>::shape Shape;  Int M = A.nrows();  Int N = A.ncols();  typename mtl::matrix<T>::type AA(M, N);  dense1D<T> x(M), y(N);    //  mtl::set_value(x, T(1));  bool pass;  mtl::set_value(A, T());  mtl::set_value(AA, T());  fill_matrix(A, A.sub(), A.super(), Shape());  mtl::copy(A, AA);  //  fill_matrix(AA, A.sub(), A.super(), Shape());  Int i, j;  //  // rank one update test    A += x * y'  //  pass = true;  for (i = 0; i < M; ++i)    x[i] = T(i);  for (i = 0; i < N; ++i)    y[i] = T(i);  // mtl version  mtl::rank_one_update(A, x, y);  for (i = 0; i < M; ++i)    for (j = 0; j < N; ++j)      AA(i,j) += x[i] * MTL_CONJ(y[j]);  // compare A's  pass = mtl::matrix_equal(A, AA);  if (pass)    std::cout << test.c_str() << " passed matvec rank one" << std::endl;  else {    std::cout << "*** matvec rank one " << test.c_str() << " failed" << std::endl;#if !defined(_MSVCPP_)    std::cout << "result" << std::endl;    mtl::print_all_matrix(A);    std::cout << "correct" << std::endl;    mtl::print_all_matrix(AA);#endif  }}template <class Matrix>void test_matvec_rankone(std::string test, Matrix& A, symmetric_tag){  if (A.super() == int(A.nrows()) - 1)    test_matvec_rankone(test, A, rectangle_tag());  else    std::cout << test.c_str() << " skipping rank one (banded symm)" << std::endl;}template <class Matrix>void test_matvec_rankone(std::string test, Matrix& A) {  typedef typename mtl::matrix_traits<Matrix>::shape Shape;  test_matvec_rankone(test, A, Shape());}template <class Matrix>void test_ranktwo(std::string test, Matrix& A, rectangle_tag){  if (A.nrows() != A.ncols()) {    std::cout << test.c_str() << " skipping rank two (A must be N x N)" << std::endl;    return;  }  typedef typename mtl::matrix_traits<Matrix>::value_type T;  typedef typename mtl::matrix_traits<Matrix>::size_type Int;  Int M = A.nrows();  Int N = A.ncols();  typename mtl::matrix<T>::type AA(M, N); // column oriented  dense1D<T> x(M), y(M);  bool pass;  mtl::set_value(A, T());  mtl::set_value(AA, T());  // start with symmetric matrices  Int i, j;  for (i = 0; i < A.nrows(); ++++i) {    Int first = MTL_MAX(0, int(i) - int(A.sub()));    Int last = MTL_MIN(int(A.ncols()), int(i) + int(A.super()) + 1);    for (j = 0; j < A.ncols(); ++++j)      if (j >= first && j < last) {        A(i,j) = T(i + j);        AA(i, j) = T(i + j);      }  }  //  // rank two update test    A += x * y' + x' * y  //  // doing symmetric version where y == x  // perhaps need to do two versions of the test,  // one of them not symmetric  //  pass = true;  for (i = 0; i < M; ++i)    x[i] = T(i);  for (i = 0; i < N; ++i)    y[i] = T(i);  mtl::rank_two_update(A, x, y);  // a correct version  for (i = 0; i < M; ++i) {    for (j = 0; j < i; ++j) {      T tmp = x[i] * MTL_CONJ(y[j]) + MTL_CONJ(x[j]) * y[i];      AA(i, j) += tmp;      AA(j, i) += tmp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久精品国产| 精品国产电影一区二区| 国产精品综合视频| 喷白浆一区二区| 国产精品剧情在线亚洲| 天天综合色天天| 国产人伦精品一区二区| 欧美激情一区二区三区| 精品视频一区二区三区免费| 一区二区三区精品在线| 日韩亚洲欧美一区二区三区| 国产精品自拍av| 日韩欧美一级二级三级久久久| 久久精品国内一区二区三区| 亚洲一区av在线| 成人精品视频一区二区三区尤物| 亚洲日本va午夜在线电影| 国产在线播精品第三| 亚洲日本一区二区| 777久久久精品| 国产夫妻精品视频| 日韩成人伦理电影在线观看| 中文无字幕一区二区三区 | 亚洲一区二区三区在线| 一区二区三区四区五区视频在线观看| 欧美一区二区三区免费视频| 2024国产精品| 欧美色视频在线观看| 99精品黄色片免费大全| 色妹子一区二区| 在线播放91灌醉迷j高跟美女| 欧美一区国产二区| 五月婷婷综合激情| 国产精品白丝jk黑袜喷水| 91 com成人网| 国产一区二区视频在线播放| 亚洲成人免费视频| 久久午夜色播影院免费高清| 成人欧美一区二区三区小说| 亚洲图片自拍偷拍| 欧洲视频一区二区| 99视频在线观看一区三区| 久久综合九色综合97婷婷| 日本一区二区成人| 国产一区二区三区免费观看 | 久久婷婷国产综合国色天香| 欧美精品v日韩精品v韩国精品v| a美女胸又www黄视频久久| 国产麻豆欧美日韩一区| 麻豆精品在线看| 久久亚洲二区三区| 一区二区三区欧美日| 久久久久久亚洲综合| 亚洲欧洲另类国产综合| 中文字幕日本不卡| 五月天婷婷综合| 国产在线国偷精品免费看| 91在线观看免费视频| 欧美三级中文字幕在线观看| 日韩三级精品电影久久久| 亚洲国产成人一区二区三区| 亚洲精品写真福利| 精品在线一区二区三区| 91免费观看在线| 日韩片之四级片| 亚洲福中文字幕伊人影院| 久久青草欧美一区二区三区| 亚洲欧美自拍偷拍| 日韩中文字幕91| 国产91富婆露脸刺激对白| 欧美曰成人黄网| 国产精品久久久久久久久免费相片 | 日本伊人精品一区二区三区观看方式| 久久99精品久久久久| 91九色02白丝porn| 精品国产乱码久久久久久牛牛 | 欧美性感一区二区三区| 久久蜜桃一区二区| 蜜臀久久99精品久久久久宅男| 成人福利视频网站| 欧美美女一区二区| 亚洲一区二区三区小说| 成人小视频免费在线观看| 中文字幕欧美激情一区| 亚洲高清久久久| 色香蕉久久蜜桃| 亚洲国产精品黑人久久久| 国产成人亚洲综合a∨婷婷| 精品精品欲导航| 国产又粗又猛又爽又黄91精品| 日韩欧美国产高清| 五月婷婷综合激情| 欧美二区三区91| 六月丁香婷婷色狠狠久久| 欧美日韩1区2区| 日本aⅴ亚洲精品中文乱码| 91精品国产福利| 久久66热re国产| 国产午夜精品美女毛片视频| 国产传媒一区在线| 亚洲乱码精品一二三四区日韩在线| 成人国产在线观看| 一区二区三区在线视频观看| 在线观看区一区二| 日韩影院免费视频| 精品国产91乱码一区二区三区| 国产精品亚洲第一| 亚洲小说春色综合另类电影| 日韩免费电影网站| 色综合久久天天| 极品尤物av久久免费看| 亚洲免费电影在线| 欧美精品一区二区三区蜜桃视频| 国产一区二区三区在线观看免费| 日韩一区中文字幕| 日韩欧美第一区| 91无套直看片红桃| 久久超碰97中文字幕| 日本一区二区三区电影| 欧美一区二区三级| 一本久久精品一区二区| 国产在线播精品第三| 亚洲国产中文字幕| 国产精品欧美极品| 精品欧美一区二区在线观看| 欧美成人女星排行榜| 久久99国产精品尤物| 尤物在线观看一区| 中文字幕在线不卡| 欧美精品一区二区三区蜜臀| 日韩色视频在线观看| 欧美在线啊v一区| 91热门视频在线观看| 成人中文字幕合集| 国产精品一区二区三区乱码 | 精品国产三级a在线观看| 欧美日韩欧美一区二区| 色婷婷久久综合| 91色在线porny| 9色porny自拍视频一区二区| www.久久久久久久久| 99精品偷自拍| 亚洲精品视频在线观看免费| 亚洲欧洲三级电影| 亚洲免费观看高清完整版在线| 亚洲色图另类专区| 夜夜精品视频一区二区| 亚洲一区在线视频观看| 亚洲免费伊人电影| 日本色综合中文字幕| 精品一区精品二区高清| 国产传媒欧美日韩成人| 在线看不卡av| 国内精品久久久久影院一蜜桃| 亚洲成人av免费| 国产激情一区二区三区四区| 成人免费黄色大片| 欧美性大战久久久久久久| 在线播放91灌醉迷j高跟美女| 久久综合中文字幕| 亚洲人成影院在线观看| 午夜av区久久| 99久久精品国产毛片| 91精选在线观看| 亚洲色图在线播放| 久久电影网电视剧免费观看| 麻豆久久久久久久| 不卡的av电影| 久久久久久日产精品| 亚洲第一狼人社区| 成人精品国产一区二区4080| 日韩欧美一区二区免费| 亚洲一区中文日韩| 91麻豆免费观看| 久久久久久久久久久久久女国产乱| 亚洲国产精品影院| 91麻豆自制传媒国产之光| 国产嫩草影院久久久久| 国模少妇一区二区三区| 91精品国产乱码久久蜜臀| 一区二区三区免费看视频| 成人视屏免费看| 国产精品婷婷午夜在线观看| 国产精品一二三区| 国产精品婷婷午夜在线观看| 青青青伊人色综合久久| 717成人午夜免费福利电影| 亚洲一区在线免费观看| 欧美三级韩国三级日本三斤| 一区二区久久久| 在线亚洲欧美专区二区| 亚洲一二三区在线观看| 欧美老肥妇做.爰bbww视频| 亚洲电影中文字幕在线观看| 欧美精品在欧美一区二区少妇 | 国产亚洲一区二区三区四区| 国产乱码精品一区二区三| 中文乱码免费一区二区| 色偷偷久久人人79超碰人人澡| 亚洲一区免费观看|