Program Listing for File lowpass_oracle.hpp¶
↰ Return to documentation for file (ellcpp/oracles/lowpass_oracle.hpp)
// -*- coding: utf-8 -*-
#pragma once
#include <limits>
#include <xtensor/xarray.hpp>
// from itertools import chain
class lowpass_oracle
{
using Arr = xt::xarray<double, xt::layout_type::row_major>;
using ParallelCut = std::tuple<Arr, Arr>;
private:
mutable size_t _i_Anr {};
mutable size_t _i_As {};
mutable size_t _i_Ap {};
// mutable unsigned int _count{};
const Arr& _Ap;
const Arr& _As;
const Arr& _Anr;
double _Lpsq;
double _Upsq;
public:
lowpass_oracle(
const Arr& Ap, const Arr& As, const Arr& Anr, double Lpsq, double Upsq)
: _Ap {Ap}
, _As {As}
, _Anr {Anr}
, _Lpsq {Lpsq}
, _Upsq {Upsq}
{
}
auto operator()(const Arr& x, double& Spsq) const
-> std::tuple<ParallelCut, bool>;
};