1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "ra/ra.hh"
- #include <iostream>
- using std::cout, std::endl, std::flush;
- template <class T, int rank> using Array = ra::Big<T, rank>;
- template <class T, int ... sizes> using Small = ra::Small<T, sizes ...>;
- int main()
- {
- cout << "\nexplode\n" << endl;
- {
- Array<int, 2> A({2, 3}, ra::_0 - ra::_1);
- auto B = ra::explode<Small<int, 3>>(A);
- cout << "B(0): " << B(0) << endl;
- cout << "B(1): " << B(1) << endl;
- B(1) = 9;
- cout << "A after: " << A << endl;
- }
- cout << "\ncollapse\n" << endl;
- {
- Array<Small<int, 3>, 1> A = {{0, -1, -2}, {1, 0, -1}, {2, 1, -1}};
- auto B = ra::collapse<int>(A);
- cout << "B before: " << B << endl;
- B(ra::all, 0) = 9;
- B(ra::all, 1) = 7;
- B(ra::all, 2) = 3;
- cout << "B after: " << B << endl;
- cout << "A after: " << A << endl;
- }
- cout << "\nreal/imag views\n" << endl;
- {
- using complex = std::complex<double>;
- Array<complex, 2> A({2, 2}, 0.);
- auto B = ra::collapse<double>(A);
- auto Bre = B(ra::all, ra::all, 0);
- auto Bim = B(ra::all, ra::all, 1);
- Bre = ra::_0-ra::_1;
- Bim = -3;
- cout << "Aa: " << A << endl;
- imag_part(A) = 7.;
- cout << "Ab: " << A << endl;
- double * re_ptr = Bre.data();
- double * im_ptr = Bim.data();
- re_ptr[0] = 77;
- im_ptr[0] = 99;
- cout << "Ac: " << A << endl;
- }
- return 0;
- }
|