16 #define ARGS_MACRO(NAME, ARGN, VALUE, TYPE) \ 
   18       static_cast<TYPE>((nargs > ARGN) ? std::stod(static_cast<std::string>(args[ARGN])) : VALUE); 
   26   auto const oversample_ratio = 2;
 
   27   auto const power_iters = 1000;
 
   28   auto const power_tol = 1e-6;
 
   31   auto const imsizex = imsize;
 
   32   auto const imsizey = imsize;
 
   33   const t_real wval = w;
 
   34   const t_int total = 10;
 
   36   std::vector<t_real> M(10);
 
   37   std::vector<t_real> ctor_mop_wr(10);
 
   38   std::vector<t_real> ctor_mop_w2d(10);
 
   39   std::vector<t_real> ctor_mop(10);
 
   40   std::vector<t_real> diff_wr_w2d(10);
 
   41   std::vector<t_real> diff_mop_w2d(10);
 
   42   for (t_int i = 1; i < M.size() + 1; i++) {
 
   43     t_uint 
const number_of_vis = 100 * i;
 
   45     M[i - 1] = number_of_vis;
 
   47     while (trial < total) {
 
   50       uv_vis.units = utilities::vis_units::radians;
 
   52       auto start = std::chrono::high_resolution_clock::now();
 
   53       auto mop_radial = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
 
   54           uv_vis, imsizey, imsizex, cell, cell, oversample_ratio,
 
   56           dde_type::wkernel_radial);
 
   57       auto end = std::chrono::high_resolution_clock::now();
 
   59           std::chrono::duration_cast<std::chrono::duration<double>>(end - start).count() / total;
 
   61       mop_radial = std::get<2>(sopt::algorithm::normalise_operator<Vector<t_complex>>(
 
   62           mop_radial, power_iters, power_tol, Vector<t_complex>::Random(imsizex * imsizey)));
 
   64       start = std::chrono::high_resolution_clock::now();
 
   65       auto mop_2d = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
 
   66           uv_vis, imsizey, imsizex, cell, cell, oversample_ratio,
 
   68       end = std::chrono::high_resolution_clock::now();
 
   69       ctor_mop_w2d[i - 1] +=
 
   70           std::chrono::duration_cast<std::chrono::duration<double>>(end - start).count() / total;
 
   72       mop_2d = std::get<2>(sopt::algorithm::normalise_operator<Vector<t_complex>>(
 
   73           mop_2d, power_iters, power_tol, Vector<t_complex>::Random(imsizex * imsizey)));
 
   75       start = std::chrono::high_resolution_clock::now();
 
   76       auto mop = measurementoperator::init_degrid_operator_2d<Vector<t_complex>>(
 
   77           uv_vis, imsizey, imsizex, cell, cell, oversample_ratio,
 
   79       end = std::chrono::high_resolution_clock::now();
 
   81           std::chrono::duration_cast<std::chrono::duration<double>>(end - start).count() / total;
 
   83       mop = std::get<2>(sopt::algorithm::normalise_operator<Vector<t_complex>>(
 
   84           mop, power_iters, power_tol, Vector<t_complex>::Random(imsizex * imsizey)));
 
   86           std::get<0>(sopt::algorithm::power_method<Vector<t_complex>>(
 
   87               {[=](Vector<t_complex> &out, 
const Vector<t_complex> &x) {
 
   88                  out = ((*mop_radial) * x) - ((*mop_2d) * x);
 
   91                [=](Vector<t_complex> &out, 
const Vector<t_complex> &x) {
 
   92                  out = (mop_radial->adjoint() * x) - (mop_2d->adjoint() * x);
 
   94                mop_radial->adjoint().sizes()},
 
   95               power_iters, power_tol, Vector<t_complex>::Random(imsizex * imsizey))) /
 
   97       diff_mop_w2d[i - 1] +=
 
   98           std::get<0>(sopt::algorithm::power_method<Vector<t_complex>>(
 
   99               {[=](Vector<t_complex> &out, 
const Vector<t_complex> &x) {
 
  100                  out = ((*mop_2d) * x) - ((*mop) * x);
 
  103                [=](Vector<t_complex> &out, 
const Vector<t_complex> &x) {
 
  104                  out = (mop_2d->adjoint() * x) - (mop->adjoint() * x);
 
  106                mop_2d->adjoint().sizes()},
 
  107               power_iters, power_tol, Vector<t_complex>::Random(imsizex * imsizey))) /
 
  112   for (t_uint i = 0; i < M.size(); i++)
 
  113     std::cout << M.at(i) << 
" " << ctor_mop_wr.at(i) << 
" " << ctor_mop_w2d.at(i) << 
" " 
  114               << ctor_mop.at(i) << 
" " << diff_wr_w2d.at(i) << 
" " << diff_mop_w2d.at(i)
 
#define ARGS_MACRO(NAME, ARGN, VALUE, TYPE)
 
const t_real pi
mathematical constant
 
const std::map< std::string, kernel > kernel_from_string
 
void set_level(const std::string &level)
Method to set the logging level of the default Log object.
 
utilities::vis_params random_sample_density(const t_int vis_num, const t_real mean, const t_real standard_deviation, const t_real rms_w)
Generates a random visibility coverage.