test22.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // Copyright (c) 2000-2002
  3. // Joerg Walter, Mathias Koch
  4. //
  5. // Distributed under the Boost Software License, Version 1.0. (See
  6. // accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt)
  8. //
  9. // The authors gratefully acknowledge the support of
  10. // GeNeSys mbH & Co. KG in producing this work.
  11. //
  12. #include "test2.hpp"
  13. template<class V, class M, std::size_t N>
  14. void test_blas_2<V, M, N>::test () {
  15. {
  16. V v1 (N), v2 (N);
  17. M m (N, N);
  18. // _t_mv
  19. initialize_vector (v1);
  20. initialize_matrix (m);
  21. ublas::blas_2::tmv (v1, m);
  22. std::cout << "tmv (v1, m) = " << v1 << std::endl;
  23. initialize_vector (v1);
  24. initialize_matrix (m);
  25. ublas::blas_2::tmv (v1, ublas::trans (m));
  26. std::cout << "tmv (v1, trans (m)) = " << v1 << std::endl;
  27. #ifdef USE_STD_COMPLEX
  28. initialize_vector (v1);
  29. initialize_matrix (m);
  30. ublas::blas_2::tmv (v1, ublas::herm (m));
  31. std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl;
  32. #endif
  33. // _t_sv
  34. initialize_vector (v1);
  35. initialize_vector (v2);
  36. initialize_matrix (m, ublas::lower_tag ());
  37. ublas::blas_2::tsv (v1, m, ublas::lower_tag ());
  38. std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl;
  39. initialize_vector (v1);
  40. initialize_vector (v2);
  41. initialize_matrix (m, ublas::upper_tag ());
  42. ublas::blas_2::tsv (v1, ublas::trans (m), ublas::lower_tag ());
  43. std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl;
  44. #ifdef USE_STD_COMPLEX
  45. initialize_vector (v1);
  46. initialize_vector (v2);
  47. initialize_matrix (m, ublas::upper_tag ());
  48. ublas::blas_2::tsv (v1, ublas::herm (m), ublas::lower_tag ());
  49. std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl;
  50. #endif
  51. initialize_vector (v1);
  52. initialize_vector (v2);
  53. initialize_matrix (m, ublas::upper_tag ());
  54. ublas::blas_2::tsv (v1, m, ublas::upper_tag ());
  55. std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod (m, v1) - v2 << std::endl;
  56. initialize_vector (v1);
  57. initialize_vector (v2);
  58. initialize_matrix (m, ublas::lower_tag ());
  59. ublas::blas_2::tsv (v1, ublas::trans (m), ublas::upper_tag ());
  60. std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod (ublas::trans (m), v1) - v2 << std::endl;
  61. #ifdef USE_STD_COMPLEX
  62. initialize_vector (v1);
  63. initialize_vector (v2);
  64. initialize_matrix (m, ublas::lower_tag ());
  65. ublas::blas_2::tsv (v1, ublas::herm (m), ublas::upper_tag ());
  66. std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod (ublas::herm (m), v1) - v2 << std::endl;
  67. #endif
  68. // _g_mv
  69. // _s_mv
  70. // _h_mv
  71. initialize_vector (v1);
  72. initialize_vector (v2);
  73. initialize_matrix (m);
  74. ublas::blas_2::gmv (v1, value_type (1), value_type (1), m, v2);
  75. std::cout << "gmv (v1, 1, 1, m, v2) = " << v1 << std::endl;
  76. ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::trans (m), v2);
  77. std::cout << "gmv (v1, 1, 1, trans (m), v2) = " << v1 << std::endl;
  78. #ifdef USE_STD_COMPLEX
  79. ublas::blas_2::gmv (v1, value_type (1), value_type (1), ublas::herm (m), v2);
  80. std::cout << "gmv (v1, 1, 1, herm (m), v2) = " << v1 << std::endl;
  81. #endif
  82. // _g_r
  83. // _g_ru
  84. // _g_rc
  85. initialize_vector (v1);
  86. initialize_vector (v2);
  87. initialize_matrix (m);
  88. ublas::blas_2::gr (m, value_type (1), v1, v2);
  89. std::cout << "gr (m, 1, v1, v2) = " << m << std::endl;
  90. ublas::blas_2::gr (m, value_type (1), v1, ublas::conj (v2));
  91. std::cout << "gr (m, 1, v1, conj (v2)) = " << m << std::endl;
  92. // _s_r
  93. initialize_vector (v1);
  94. initialize_matrix (m);
  95. ublas::blas_2::sr (m, value_type (1), v1);
  96. std::cout << "sr (m, 1, v1) = " << m << std::endl;
  97. #ifdef USE_STD_COMPLEX
  98. // _h_r
  99. initialize_vector (v1);
  100. initialize_matrix (m);
  101. ublas::blas_2::hr (m, value_type (1), v1);
  102. std::cout << "hr (m, 1, v1) = " << m << std::endl;
  103. #endif
  104. // _s_r2
  105. initialize_vector (v1);
  106. initialize_vector (v2);
  107. initialize_matrix (m);
  108. ublas::blas_2::sr2 (m, value_type (1), v1, v2);
  109. std::cout << "sr2 (m, 1, v1, v2) = " << m << std::endl;
  110. #ifdef USE_STD_COMPLEX
  111. // _h_r2
  112. initialize_vector (v1);
  113. initialize_vector (v2);
  114. initialize_matrix (m);
  115. ublas::blas_2::hr2 (m, value_type (1), v1, v2);
  116. std::cout << "hr2 (m, 1, v1, v2) = " << m << std::endl;
  117. #endif
  118. }
  119. }
  120. #ifdef USE_FLOAT
  121. template struct test_blas_2<ublas::vector<float>, ublas::matrix<float>, 3>;
  122. #endif
  123. #ifdef USE_DOUBLE
  124. template struct test_blas_2<ublas::vector<double>, ublas::matrix<double>, 3>;
  125. #endif
  126. #ifdef USE_STD_COMPLEX
  127. #ifdef USE_FLOAT
  128. template struct test_blas_2<ublas::vector<std::complex<float> >, ublas::matrix<std::complex<float> >, 3>;
  129. #endif
  130. #ifdef USE_DOUBLE
  131. template struct test_blas_2<ublas::vector<std::complex<double> >, ublas::matrix<std::complex<double> >, 3>;
  132. #endif
  133. #endif