29bool fail(std::string &errorMessage,
const char *text)
46 const double centre = 32.0;
47 for (std::size_t y = 0u; y < field.
height(); ++y) {
48 for (std::size_t x = 0u; x < field.
width(); ++x) {
49 const double dx =
static_cast<double>(x) - centre;
50 const double dy =
static_cast<double>(y) - centre;
51 const double p = std::exp(-(dx * dx + dy * dy) / 160.0);
59 return fail(errorMessage,
"ProbabilityContours2D: linear Gaussian contours missing");
61 for (std::size_t i = 1u; i < linear.
levels.size(); ++i) {
63 return fail(errorMessage,
"ProbabilityContours2D: linear levels are not increasing");
69 if (logarithmic.
levels.size() != 8u || logarithmic.
segments.empty()) {
70 return fail(errorMessage,
"ProbabilityContours2D: logarithmic Gaussian contours missing");
72 if (!(logarithmic.
levels.front() < linear.
levels.front())) {
73 return fail(errorMessage,
"ProbabilityContours2D: logarithmic spacing did not reach faint structure");
81 return fail(errorMessage,
"ProbabilityContours2D: automatic live-view downsampling not applied");
84 return fail(errorMessage,
"ProbabilityContours2D: constant field should not produce contours");
Owning Cartesian grid of complex scalar samples.
std::size_t height() const noexcept
Returns the number of samples along Y.
void fill(const Value &value)
Assigns one complex value to every grid sample.
std::complex< float > Value
std::size_t width() const noexcept
Returns the number of samples along X.
static ProbabilityContours2DResult compute(const ComplexField2D &field, std::size_t requestedLevels, ProbabilityContourSpacing2D spacing, float logDecades=4.0f, std::size_t targetSamplesPerAxis=384u)
Performs compute.
Declares the complex scalar field container representing two-dimensional wave functions.
bool runProbabilityContours2DTests(std::string &errorMessage)
Runs probability contours2 d tests.
Declares the probabilitycontours2d physics/numerical component used by QPE experiments.
Declares regression and invariant tests for probabilitycontours2d tests.
Data record containing Probability Contours2D Result.
std::vector< float > levels
std::size_t samplingStride
std::vector< ProbabilityContourSegment2D > segments