File: sparse.cc

package info (click to toggle)
purify 5.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 186,836 kB
  • sloc: cpp: 17,731; python: 510; xml: 182; makefile: 7; sh: 6
file content (29 lines) | stat: -rw-r--r-- 976 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "purify/config.h"
#include "purify/types.h"
#include <iostream>
#include "catch2/catch_all.hpp"
#include "purify/directories.h"
#include "purify/logging.h"
using namespace purify;

TEST_CASE("sparse [iterator]", "[iterator]") {
  t_int NZnum = 40;
  std::vector<t_tripletList> entries;
  entries.reserve(NZnum);
  Vector<t_int> rows = Vector<t_int>::LinSpaced(NZnum, 0, 2 * NZnum);
  Vector<t_int> cols = Vector<t_int>::LinSpaced(NZnum, 0, 3 * NZnum);

  for (t_int i = 0; i < NZnum; ++i) {
    entries.emplace_back(rows(i), cols(i), i);
  }
  const t_int total_rows = 5 * NZnum;
  const t_int total_cols = 4 * NZnum;
  Sparse<t_complex> G(total_rows, total_cols);
  G.setFromTriplets(entries.begin(), entries.end());
  for (t_int i = 0; i < total_cols; ++i) {
    for (Sparse<t_complex>::InnerIterator pix(G, i); pix; ++pix) {
      PURIFY_HIGH_LOG("{} {} {}", pix.row(), pix.col(), std::real(pix.value()));
    }
  }
  // CHECK(expected.isApprox(output, 1e-13));
}