test22.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. #if defined(__GNUC__) && (__GNUC__ >= 9)
  13. #pragma GCC diagnostic ignored "-Wdeprecated-copy"
  14. #endif
  15. #include "test2.hpp"
  16. template <class V, class M, int N>
  17. void test_blas_2<V, M, N>::test()
  18. {
  19. {
  20. V v1(N), v2(N);
  21. M m(N, N);
  22. // _t_mv
  23. initialize_vector(v1);
  24. initialize_matrix(m);
  25. ublas::blas_2::tmv(v1, m);
  26. std::cout << "tmv (v1, m) = " << v1 << std::endl;
  27. initialize_vector(v1);
  28. initialize_matrix(m);
  29. ublas::blas_2::tmv(v1, ublas::trans(m));
  30. std::cout << "tmv (v1, trans (m)) = " << v1 << std::endl;
  31. #ifdef USE_STD_COMPLEX
  32. initialize_vector(v1);
  33. initialize_matrix(m);
  34. ublas::blas_2::tmv(v1, ublas::herm(m));
  35. std::cout << "tmv (v1, herm (m)) = " << v1 << std::endl;
  36. #endif
  37. // _t_sv
  38. initialize_vector(v1);
  39. initialize_vector(v2);
  40. initialize_matrix(m, ublas::lower_tag());
  41. ublas::blas_2::tsv(v1, m, ublas::lower_tag());
  42. std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod(m, v1) - v2 << std::endl;
  43. initialize_vector(v1);
  44. initialize_vector(v2);
  45. initialize_matrix(m, ublas::upper_tag());
  46. ublas::blas_2::tsv(v1, ublas::trans(m), ublas::lower_tag());
  47. std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod(ublas::trans(m), v1) - v2 << std::endl;
  48. #ifdef USE_STD_COMPLEX
  49. initialize_vector(v1);
  50. initialize_vector(v2);
  51. initialize_matrix(m, ublas::upper_tag());
  52. ublas::blas_2::tsv(v1, ublas::herm(m), ublas::lower_tag());
  53. std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod(ublas::herm(m), v1) - v2 << std::endl;
  54. #endif
  55. initialize_vector(v1);
  56. initialize_vector(v2);
  57. initialize_matrix(m, ublas::upper_tag());
  58. ublas::blas_2::tsv(v1, m, ublas::upper_tag());
  59. std::cout << "tsv (v1, m) = " << v1 << " " << ublas::prod(m, v1) - v2 << std::endl;
  60. initialize_vector(v1);
  61. initialize_vector(v2);
  62. initialize_matrix(m, ublas::lower_tag());
  63. ublas::blas_2::tsv(v1, ublas::trans(m), ublas::upper_tag());
  64. std::cout << "tsv (v1, trans (m)) = " << v1 << " " << ublas::prod(ublas::trans(m), v1) - v2 << std::endl;
  65. #ifdef USE_STD_COMPLEX
  66. initialize_vector(v1);
  67. initialize_vector(v2);
  68. initialize_matrix(m, ublas::lower_tag());
  69. ublas::blas_2::tsv(v1, ublas::herm(m), ublas::upper_tag());
  70. std::cout << "tsv (v1, herm (m)) = " << v1 << " " << ublas::prod(ublas::herm(m), v1) - v2 << std::endl;
  71. #endif
  72. // _g_mv
  73. // _s_mv
  74. // _h_mv
  75. initialize_vector(v1);
  76. initialize_vector(v2);
  77. initialize_matrix(m);
  78. ublas::blas_2::gmv(v1, value_type(1), value_type(1), m, v2);
  79. std::cout << "gmv (v1, 1, 1, m, v2) = " << v1 << std::endl;
  80. ublas::blas_2::gmv(v1, value_type(1), value_type(1), ublas::trans(m), v2);
  81. std::cout << "gmv (v1, 1, 1, trans (m), v2) = " << v1 << std::endl;
  82. #ifdef USE_STD_COMPLEX
  83. ublas::blas_2::gmv(v1, value_type(1), value_type(1), ublas::herm(m), v2);
  84. std::cout << "gmv (v1, 1, 1, herm (m), v2) = " << v1 << std::endl;
  85. #endif
  86. // _g_r
  87. // _g_ru
  88. // _g_rc
  89. initialize_vector(v1);
  90. initialize_vector(v2);
  91. initialize_matrix(m);
  92. ublas::blas_2::gr(m, value_type(1), v1, v2);
  93. std::cout << "gr (m, 1, v1, v2) = " << m << std::endl;
  94. ublas::blas_2::gr(m, value_type(1), v1, ublas::conj(v2));
  95. std::cout << "gr (m, 1, v1, conj (v2)) = " << m << std::endl;
  96. // _s_r
  97. initialize_vector(v1);
  98. initialize_matrix(m);
  99. ublas::blas_2::sr(m, value_type(1), v1);
  100. std::cout << "sr (m, 1, v1) = " << m << std::endl;
  101. #ifdef USE_STD_COMPLEX
  102. // _h_r
  103. initialize_vector(v1);
  104. initialize_matrix(m);
  105. ublas::blas_2::hr(m, value_type(1), v1);
  106. std::cout << "hr (m, 1, v1) = " << m << std::endl;
  107. #endif
  108. // _s_r2
  109. initialize_vector(v1);
  110. initialize_vector(v2);
  111. initialize_matrix(m);
  112. ublas::blas_2::sr2(m, value_type(1), v1, v2);
  113. std::cout << "sr2 (m, 1, v1, v2) = " << m << std::endl;
  114. #ifdef USE_STD_COMPLEX
  115. // _h_r2
  116. initialize_vector(v1);
  117. initialize_vector(v2);
  118. initialize_matrix(m);
  119. ublas::blas_2::hr2(m, value_type(1), v1, v2);
  120. std::cout << "hr2 (m, 1, v1, v2) = " << m << std::endl;
  121. #endif
  122. }
  123. }
  124. #ifdef USE_FLOAT
  125. template struct test_blas_2<ublas::vector<mp_test_type>, ublas::matrix<mp_test_type>, 3>;
  126. #endif
  127. #ifdef USE_DOUBLE
  128. template struct test_blas_2<ublas::vector<double>, ublas::matrix<double>, 3>;
  129. #endif
  130. #ifdef USE_STD_COMPLEX
  131. #ifdef USE_FLOAT
  132. template struct test_blas_2<ublas::vector<std::complex<mp_test_type> >, ublas::matrix<std::complex<mp_test_type> >, 3>;
  133. #endif
  134. #ifdef USE_DOUBLE
  135. template struct test_blas_2<ublas::vector<std::complex<double> >, ublas::matrix<std::complex<double> >, 3>;
  136. #endif
  137. #endif