![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Maximum of two independent MAPs, and its marked k-stage generalization. More...
#include <cstddef>#include <vector>#include "line/api/mam/map_moment.h"#include "line/api/mam/mmap_lambda.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/linalg.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mam |
Functions | |
| template<class T> | |
| Map< T > | line::mam::map_max (const Map< T > &A, const Map< T > &B) |
| MAP of the maximum of two independent MAPs. | |
| template<class T> | |
| Mmap< T > | line::mam::mmap_max (const Mmap< T > &a, const Mmap< T > &b, unsigned k) |
| MMAP of the maximum over k synchronization rounds of two independent MMAPs. | |
Maximum of two independent MAPs, and its marked k-stage generalization.
Templated port of matlab/lib/kpctoolbox/map/map_max.m and matlab/lib/m3a/m3a/mmap/mmap_max.m. These are the synchronization primitives behind a fork-join: the joined interval is the maximum of the two branch intervals, not their sum, so the phase space carries a RACE followed by the residual of whichever branch is still running.
map_max therefore has order na*nb + na + nb: the product block while both branches are alive, then one absorbing-residual block per branch. Reading the order as na*nb, as for a superposition, drops exactly the residual phases that make the maximum different from the minimum.
mmap_max keeps k rounds of the race, so its order is na*nb*(1+2k), with the marks of both branches carried through unchanged.
Definition in file map_max.h.