LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
pfqn_cub_evals.h File Reference

Integrand-evaluation count of pfqn_cub, and the budget pfqn_nc prices it against. More...

#include <cstddef>
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/population.h"
Include dependency graph for pfqn_cub_evals.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Functions

double line::pfqn::pfqn_cub_evals (int M, int order, double Zsum)
 Integrand-evaluation count of pfqn_cub, and the budget pfqn_nc prices it against.
double line::pfqn::pfqn_cub_evals (int M, int order)
 Zero think time, i.e.

Variables

constexpr long line::pfqn::CUB_V_STEPS = 10000
 The v-quadrature grid size of pfqn_cub; must match steps in pfqn_cub.h.
constexpr double line::pfqn::CUB_MAX_EVALS = 1e7
 GlobalConstants.CubMaxEvals: the integrand-evaluation budget above which pfqn_nc lowers the cubature order (and, at order 0, prefers le over cub).

Detailed Description

Integrand-evaluation count of pfqn_cub, and the budget pfqn_nc prices it against.

Port of matlab/src/api/pfqn/pfqn_cub_evals.m.

The Grundmann-Moeller rule of degree order on the (M-1)-simplex evaluates sum_{d = 0..order} C(M-1+2d, M-1) points, and a non-zero think time makes pfqn_cub repeat the whole rule at each of its v-quadrature steps (a uniform grid of CUB_V_STEPS points, which must match the outer McKenna-Mitra integral in pfqn_cub.h).

NOTE the two DIFFERENT binomials in play. The cost model pfqn_nc uses to RAISE the order counts C(M + 2d, M-1); the count here, which pfqn_nc then uses to LOWER it again, counts C(M-1+2d, M-1). Both are reproduced as in the reference: they are not the same expression and folding one into the other would change the selected order.

Arithmetic: this is a cost model, not a numerical result. It is a plain double count and carries no number type.

Definition in file pfqn_cub_evals.h.