LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
registry.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2026, QORE Lab, Imperial College London
3 * All rights reserved.
4 */
5#ifndef LINE_REG_REGISTRY_H
6#define LINE_REG_REGISTRY_H
7
8/**
9 * @file
10 * @ingroup line_reg
11 * Coverage registry of the C++ port.
12 *
13 * The port is incremental across hundreds of API functions, so what is and is not
14 * available has to be legible at runtime rather than inferred from the source
15 * tree. Every ported function registers its name, its domain and the
16 * arithmetic modes it supports; the CLI prints this for --list-api and refuses
17 * anything absent from it, naming the function rather than failing obscurely.
18 */
19
20#include <algorithm>
21#include <string>
22#include <vector>
23
24namespace line {
25
26enum class Arith { Double, Exact, Real };
27
28inline const char* arith_name(Arith a) {
29 switch (a) {
30 case Arith::Double: return "double";
31 case Arith::Exact: return "exact";
32 case Arith::Real: return "real";
33 }
34 return "?";
35}
36
37struct ApiEntry {
38 std::string name; ///< MATLAB-compatible function name, e.g. "pfqn_ca"
39 std::string domain; ///< api domain, e.g. "pfqn"
40 std::vector<Arith> arith;///< arithmetic modes this function is instantiated for
41 std::string reference; ///< the implementation it was ported from
42};
43
44/**
45 * The registry is a function-local static, not a global object, so there is no
46 * static-initialization order issue and no mutable global state to guard when
47 * the library is called from Python with the GIL released.
48 */
49inline const std::vector<ApiEntry>& api_registry() {
50 static const std::vector<ApiEntry> entries = {
51 {"pfqn_ca", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
52 "matlab/src/api/pfqn/pfqn_ca.m; mp_pfqn/ca"},
53 {"pfqn_cyclet_ofree", "pfqn", {Arith::Double},
54 "matlab/src/api/pfqn/pfqn_cyclet_ofree.m"},
55 // Rational throughout: the series is built from the demands by addition,
56 // multiplication and division by a small integer, and G is one of its
57 // coefficients rather than a ratio, so only lG is transcendental.
58 {"pfqn_manjunath", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
59 "matlab/src/api/pfqn/pfqn_manjunath.m"},
60 {"pfqn_mva", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
61 "matlab/src/api/pfqn/pfqn_mva.m; mp_pfqn/mva"},
62 {"pfqn_marie", "pfqn", {Arith::Double, Arith::Real},
63 "matlab/src/api/pfqn/pfqn_marie.m"},
64 {"pfqn_stdf", "pfqn", {Arith::Double, Arith::Real},
65 "matlab/src/api/pfqn/pfqn_stdf.m"},
66 {"pfqn_stdf_heur", "pfqn", {Arith::Double, Arith::Real},
67 "matlab/src/api/pfqn/pfqn_stdf_heur.m"},
68 // Registered but NOT exposed over --api: it takes a NetworkStruct, not
69 // matrices, so it has no named-JSON-argument form. `api_invoke` reports
70 // that distinction for itself.
71 {"sn_get_product_form_params", "sn", {Arith::Double, Arith::Exact, Arith::Real},
72 "matlab/src/api/sn/sn_get_product_form_params.m"},
73 {"ctmc_makeinfgen", "mc", {Arith::Double, Arith::Exact, Arith::Real},
74 "matlab/lib/kpctoolbox/mc/ctmc_makeinfgen.m"},
75 {"ctmc_solve", "mc", {Arith::Double, Arith::Exact, Arith::Real},
76 "matlab/lib/kpctoolbox/mc/ctmc_solve.m"},
77 {"ctmc_stochcomp", "mc", {Arith::Double, Arith::Exact, Arith::Real},
78 "matlab/src/api/mc/ctmc_stochcomp.m"},
79 {"dtmc_solve", "mc", {Arith::Double, Arith::Exact, Arith::Real},
80 "matlab/lib/kpctoolbox/mc/dtmc_solve.m"},
81 {"pfqn_recal", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
82 "matlab/src/api/pfqn/pfqn_recal.m; mp_pfqn/recal"},
83 {"ctmc_uniformization", "mc", {Arith::Double, Arith::Real},
84 "matlab/src/api/mc/ctmc_uniformization.m"},
85 {"ctmc_timeaverage", "mc", {Arith::Double, Arith::Real},
86 "matlab/src/api/mc/ctmc_timeaverage.m"},
87 {"moment_stirling1", "moment", {Arith::Double, Arith::Exact, Arith::Real},
88 "matlab/src/api/moment/moment_stirling1.m"},
89 {"moment_stirling2", "moment", {Arith::Double, Arith::Exact, Arith::Real},
90 "matlab/src/api/moment/moment_stirling2.m"},
91 {"moment_stirlingcycle", "moment", {Arith::Double, Arith::Exact, Arith::Real},
92 "matlab/src/api/moment/moment_stirlingcycle.m"},
93 {"moment_lah", "moment", {Arith::Double, Arith::Exact, Arith::Real},
94 "matlab/src/api/moment/moment_lah.m"},
95 {"moment_raw_from_central", "moment", {Arith::Double, Arith::Exact, Arith::Real},
96 "matlab/src/api/moment/moment_raw_from_central.m"},
97 {"moment_central_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
98 "matlab/src/api/moment/moment_central_from_raw.m"},
99 {"moment_binotrans", "moment", {Arith::Double, Arith::Exact, Arith::Real},
100 "matlab/src/api/moment/moment_binotrans.m"},
101 {"moment_binotransinv", "moment", {Arith::Double, Arith::Exact, Arith::Real},
102 "matlab/src/api/moment/moment_binotransinv.m"},
103 {"moment_factorial_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
104 "matlab/src/api/moment/moment_factorial_from_raw.m"},
105 {"moment_raw_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
106 "matlab/src/api/moment/moment_raw_from_factorial.m"},
107 {"moment_upfactorial_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
108 "matlab/src/api/moment/moment_upfactorial_from_raw.m"},
109 {"moment_raw_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
110 "matlab/src/api/moment/moment_raw_from_upfactorial.m"},
111 {"moment_factorial_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
112 "matlab/src/api/moment/moment_factorial_from_upfactorial.m"},
113 {"moment_upfactorial_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
114 "matlab/src/api/moment/moment_upfactorial_from_factorial.m"},
115 {"moment_binomial_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
116 "matlab/src/api/moment/moment_binomial_from_factorial.m"},
117 {"moment_factorial_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
118 "matlab/src/api/moment/moment_factorial_from_binomial.m"},
119 {"moment_negbinomial_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
120 "matlab/src/api/moment/moment_negbinomial_from_upfactorial.m"},
121 {"moment_upfactorial_from_negbinomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
122 "matlab/src/api/moment/moment_upfactorial_from_negbinomial.m"},
123 {"moment_binomial_from_negbinomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
124 "matlab/src/api/moment/moment_binomial_from_negbinomial.m"},
125 {"moment_negbinomial_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
126 "matlab/src/api/moment/moment_negbinomial_from_binomial.m"},
127 {"qsys_mm1", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
128 "matlab/src/api/qsys/qsys_mm1.m"},
129 {"qsys_mapd1", "qsys", {Arith::Double, Arith::Real},
130 "matlab/src/api/qsys/qsys_mapd1.m"},
131 {"qsys_mapm1", "qsys", {Arith::Double, Arith::Real},
132 "matlab/src/api/qsys/qsys_mapm1.m"},
133 {"qsys_mapmap1", "qsys", {Arith::Double, Arith::Real},
134 "matlab/src/api/qsys/qsys_mapmap1.m"},
135 {"qsys_mapmc", "qsys", {Arith::Double, Arith::Real},
136 "matlab/src/api/qsys/qsys_mapmc.m"},
137 {"qsys_mapph1", "qsys", {Arith::Double, Arith::Real},
138 "matlab/src/api/qsys/qsys_mapph1.m"},
139 {"qsys_phph1", "qsys", {Arith::Double, Arith::Real},
140 "matlab/src/api/qsys/qsys_phph1.m"},
141 {"qsys_mapdc", "qsys", {Arith::Double, Arith::Real},
142 "matlab/src/api/qsys/qsys_mapdc.m"},
143 {"qsys_mmcc_retrial_fp", "qsys", {Arith::Double, Arith::Real},
144 "matlab/src/api/qsys/qsys_mmcc_retrial_fp.m"},
145 {"qsys_mmk", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
146 "matlab/src/api/qsys/qsys_mmk.m"},
147 {"qsys_mg1", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
148 "matlab/src/api/qsys/qsys_mg1.m"},
149 {"qsys_gm1", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
150 "matlab/src/api/qsys/qsys_gm1.m"},
151 {"qsys_gig1_approx_allencunneen", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
152 "matlab/src/api/qsys/qsys_gig1_approx_allencunneen.m"},
153 {"qsys_gig1_approx_heyman", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
154 "matlab/src/api/qsys/qsys_gig1_approx_heyman.m"},
155 {"qsys_gig1_approx_kimura", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
156 "matlab/src/api/qsys/qsys_gig1_approx_kimura.m"},
157 {"qsys_gig1_approx_marchal", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
158 "matlab/src/api/qsys/qsys_gig1_approx_marchal.m"},
159 {"qsys_gig1_ubnd_kingman", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
160 "matlab/src/api/qsys/qsys_gig1_ubnd_kingman.m"},
161 {"qsys_gig1_lbnd", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
162 "matlab/src/api/qsys/qsys_gig1_lbnd.m"},
163 {"qsys_gigk_approx_kingman", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
164 "matlab/src/api/qsys/qsys_gigk_approx_kingman.m"},
165 {"qsys_mginf", "qsys", {Arith::Double, Arith::Real},
166 "matlab/src/api/qsys/qsys_mginf.m"},
167 {"qsys_gig1_approx_kobayashi", "qsys", {Arith::Double, Arith::Real},
168 "matlab/src/api/qsys/qsys_gig1_approx_kobayashi.m"},
169 {"qsys_gig1_approx_klb", "qsys", {Arith::Double, Arith::Real},
170 "matlab/src/api/qsys/qsys_gig1_approx_klb.m"},
171 {"qsys_gig1_approx_gelenbe", "qsys", {Arith::Double, Arith::Real},
172 "matlab/src/api/qsys/qsys_gig1_approx_gelenbe.m"},
173 {"qsys_gigk_approx", "qsys", {Arith::Double, Arith::Real},
174 "matlab/src/api/qsys/qsys_gigk_approx.m"},
175 {"qsys_gigk_approx_cosmetatos", "qsys", {Arith::Double, Arith::Real},
176 "matlab/src/api/qsys/qsys_gigk_approx_cosmetatos.m"},
177 {"qsys_gigk_approx_whitt", "qsys", {Arith::Double, Arith::Real},
178 "matlab/src/api/qsys/qsys_gigk_approx_whitt.m"},
179 {"pfqn_gld", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
180 "matlab/src/api/pfqn/pfqn_gld.m"},
181 {"pfqn_mvams", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
182 "matlab/src/api/pfqn/pfqn_mvams.m"},
183 {"pfqn_mvald", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
184 "matlab/src/api/pfqn/pfqn_mvald.m"},
185 {"pfqn_mvamx", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
186 "matlab/src/api/pfqn/pfqn_mvamx.m"},
187 {"pfqn_mvaldmx", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
188 "matlab/src/api/pfqn/pfqn_mvaldmx.m"},
189 {"pfqn_mvaldms", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
190 "matlab/src/api/pfqn/pfqn_mvaldms.m"},
191 {"pfqn_xzabalow", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
192 "matlab/src/api/pfqn/pfqn_xzabalow.m"},
193 {"pfqn_xzabaup", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
194 "matlab/src/api/pfqn/pfqn_xzabaup.m"},
195 {"pfqn_qzgblow", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
196 "matlab/src/api/pfqn/pfqn_qzgblow.m"},
197 {"pfqn_qzgbup", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
198 "matlab/src/api/pfqn/pfqn_qzgbup.m"},
199 {"pfqn_ssd", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
200 "matlab/src/api/pfqn/pfqn_ssd.m"},
201 {"pfqn_xzgsblow", "pfqn", {Arith::Double, Arith::Real},
202 "matlab/src/api/pfqn/pfqn_xzgsblow.m"},
203 {"pfqn_xzgsbup", "pfqn", {Arith::Double, Arith::Real},
204 "matlab/src/api/pfqn/pfqn_xzgsbup.m"},
205 {"map_infgen", "mam", {Arith::Double, Arith::Exact, Arith::Real},
206 "matlab/lib/kpctoolbox/map/map_infgen.m"},
207 {"map_prob", "mam", {Arith::Double, Arith::Exact, Arith::Real},
208 "matlab/lib/kpctoolbox/map/map_prob.m"},
209 {"map_lambda", "mam", {Arith::Double, Arith::Exact, Arith::Real},
210 "matlab/lib/kpctoolbox/map/map_lambda.m"},
211 {"map_pie", "mam", {Arith::Double, Arith::Exact, Arith::Real},
212 "matlab/lib/kpctoolbox/map/map_pie.m"},
213 {"map_mean", "mam", {Arith::Double, Arith::Exact, Arith::Real},
214 "matlab/lib/kpctoolbox/map/map_mean.m"},
215 {"map_embedded", "mam", {Arith::Double, Arith::Exact, Arith::Real},
216 "matlab/lib/kpctoolbox/map/map_embedded.m"},
217 {"map_moment", "mam", {Arith::Double, Arith::Exact, Arith::Real},
218 "matlab/lib/kpctoolbox/map/map_moment.m"},
219 {"map_var", "mam", {Arith::Double, Arith::Exact, Arith::Real},
220 "matlab/lib/kpctoolbox/map/map_var.m"},
221 {"map_scv", "mam", {Arith::Double, Arith::Exact, Arith::Real},
222 "matlab/lib/kpctoolbox/map/map_scv.m"},
223 {"map_acf", "mam", {Arith::Double, Arith::Exact, Arith::Real},
224 "matlab/lib/kpctoolbox/map/map_acf.m"},
225 {"map_idc", "mam", {Arith::Double, Arith::Exact, Arith::Real},
226 "matlab/lib/kpctoolbox/map/map_idc.m"},
227 {"polling_qsys_1limited", "polling", {Arith::Double, Arith::Exact, Arith::Real},
228 "matlab/src/api/polling/polling_qsys_1limited.m"},
229 {"polling_qsys_decrementing", "polling", {Arith::Double, Arith::Exact, Arith::Real},
230 "matlab/src/api/polling/polling_qsys_decrementing.m"},
231 {"polling_qsys_exhaustive", "polling", {Arith::Double, Arith::Exact, Arith::Real},
232 "matlab/src/api/polling/polling_qsys_exhaustive.m"},
233 {"polling_qsys_gated", "polling", {Arith::Double, Arith::Exact, Arith::Real},
234 "matlab/src/api/polling/polling_qsys_gated.m"},
235 {"npfqn_traffic_idc", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
236 "matlab/src/api/npfqn/npfqn_traffic_idc.m"},
237 {"npfqn_traffic_idc_at", "npfqn", {Arith::Double, Arith::Real},
238 "matlab/src/api/npfqn/npfqn_traffic_idc.m"},
239 {"npfqn_traffic_split_cs", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
240 "matlab/src/api/npfqn/npfqn_traffic_split_cs.m"},
241 {"npfqn_rqna_weight", "npfqn", {Arith::Double, Arith::Real},
242 "matlab/src/api/npfqn/npfqn_rqna_weight.m"},
243 {"npfqn_traffic_rqt", "npfqn", {Arith::Double, Arith::Real},
244 "matlab/src/api/npfqn/npfqn_traffic_rqt.m"},
245 {"npfqn_bnd_bpt", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
246 "matlab/src/api/npfqn/npfqn_bnd_bpt.m"},
247 {"npfqn_bnd_bgt", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
248 "matlab/src/api/npfqn/npfqn_bnd_bgt.m"},
249 // Stochastic network calculus. DOUBLE ONLY, and that is structural: every
250 // entry point is an exp/log expression minimized numerically over the
251 // Chernoff parameter, so there is no exact instantiation to offer and a
252 // multiprecision one would buy digits the theta search does not have.
253 {"snc_env_poisson", "snc", {Arith::Double},
254 "matlab/src/api/snc/snc_env_poisson.m"},
255 {"snc_env_cpoisson", "snc", {Arith::Double},
256 "matlab/src/api/snc/snc_env_cpoisson.m"},
257 {"snc_env_tokenbucket", "snc", {Arith::Double},
258 "matlab/src/api/snc/snc_env_tokenbucket.m"},
259 {"snc_env_map", "snc", {Arith::Double},
260 "matlab/src/api/snc/snc_env_map.m"},
261 {"snc_srv_rate", "snc", {Arith::Double},
262 "matlab/src/api/snc/snc_srv_rate.m"},
263 {"snc_srv_exp", "snc", {Arith::Double},
264 "matlab/src/api/snc/snc_srv_exp.m"},
265 {"snc_leftover", "snc", {Arith::Double},
266 "matlab/src/api/snc/snc_leftover.m"},
267 {"snc_conv", "snc", {Arith::Double},
268 "matlab/src/api/snc/snc_conv.m"},
269 {"snc_output", "snc", {Arith::Double},
270 "matlab/src/api/snc/snc_output.m"},
271 {"snc_thetaopt", "snc", {Arith::Double},
272 "matlab/src/api/snc/snc_thetaopt.m"},
273 {"snc_bound_backlog", "snc", {Arith::Double},
274 "matlab/src/api/snc/snc_bound_backlog.m"},
275 {"snc_bound_delay", "snc", {Arith::Double},
276 "matlab/src/api/snc/snc_bound_delay.m"},
277 {"snc_perc_backlog", "snc", {Arith::Double},
278 "matlab/src/api/snc/snc_perc_backlog.m"},
279 {"snc_perc_delay", "snc", {Arith::Double},
280 "matlab/src/api/snc/snc_perc_delay.m"},
281 {"snc_mean_delay", "snc", {Arith::Double},
282 "matlab/src/api/snc/snc_mean_delay.m"},
283 {"snc_mean_backlog", "snc", {Arith::Double},
284 "matlab/src/api/snc/snc_mean_backlog.m"},
285 {"npfqn_nonexp_approx", "npfqn", {Arith::Double, Arith::Real},
286 "matlab/src/api/npfqn/npfqn_nonexp_approx.m"},
287 {"npfqn_sqd", "npfqn", {Arith::Double, Arith::Real},
288 "matlab/src/api/npfqn/npfqn_sqd.m"},
289 // Morrison's heavy-usage expansion: the exponentials and the cube root of
290 // eq. (4.12) need transcendental arithmetic, so no exact mode.
291 {"npfqn_dps_morrison", "npfqn", {Arith::Double, Arith::Real},
292 "matlab/src/api/npfqn/npfqn_dps_morrison.m"},
293 {"ljd_linearize", "fes", {Arith::Double, Arith::Exact, Arith::Real},
294 "matlab/src/api/pfqn/ljd_linearize.m"},
295 {"fes_compute_throughputs", "fes", {Arith::Double, Arith::Exact, Arith::Real},
296 "matlab/src/api/fes/fes_compute_throughputs.m"},
297 {"fes_beta_handle", "fes", {Arith::Double, Arith::Exact, Arith::Real},
298 "matlab/src/api/fes/fes_beta_handle.m"},
299 {"cache_erec", "cache", {Arith::Double, Arith::Exact, Arith::Real},
300 "matlab/src/api/cache/cache_erec.m"},
301 {"cache_cost", "cache", {Arith::Double, Arith::Exact, Arith::Real},
302 "matlab/src/api/cache/cache_cost.m"},
303 {"cache_cost_pathcheck", "cache", {Arith::Double, Arith::Exact, Arith::Real},
304 "matlab/src/api/cache/cache_cost_pathcheck.m"},
305 // cache_spm_size is a Laplace approximation over logs/exps: transcendental-gated, no Exact
306 {"cache_spm_size", "cache", {Arith::Double, Arith::Real},
307 "matlab/src/api/cache/cache_spm_size.m"},
308 {"cache_gamma_lp", "cache", {Arith::Double, Arith::Exact, Arith::Real},
309 "matlab/src/api/cache/cache_gamma_lp.m"},
310 {"cache_gamma", "cache", {Arith::Double, Arith::Exact, Arith::Real},
311 "matlab/src/api/cache/cache_gamma.m"},
312 {"cache_miss_asy", "cache", {Arith::Double, Arith::Real},
313 "matlab/src/api/cache/cache_miss_asy.m"},
314 {"cache_miss", "cache", {Arith::Double, Arith::Exact, Arith::Real},
315 "matlab/src/api/cache/cache_miss.m"},
316 {"cache_miss_rmf", "cache", {Arith::Double, Arith::Real},
317 "matlab/src/api/cache/cache_miss_rmf.m"},
318 {"cache_rrm_meanfield", "cache", {Arith::Double, Arith::Real},
319 "matlab/src/api/cache/cache_rrm_meanfield.m"},
320 {"cache_miss_fpi", "cache", {Arith::Double, Arith::Real},
321 "matlab/src/api/cache/cache_miss_fpi.m"},
322 {"cache_miss_spm", "cache", {Arith::Double, Arith::Real},
323 "matlab/src/api/cache/cache_miss_spm.m"},
324 {"cache_mva", "cache", {Arith::Double, Arith::Exact, Arith::Real},
325 "matlab/src/api/cache/cache_mva.m"},
326 {"cache_mva_miss", "cache", {Arith::Double, Arith::Exact, Arith::Real},
327 "matlab/src/api/cache/cache_mva_miss.m"},
328 {"cache_prob_erec", "cache", {Arith::Double, Arith::Exact, Arith::Real},
329 "matlab/src/api/cache/cache_prob_erec.m"},
330 {"cache_prob_fpi", "cache", {Arith::Double, Arith::Real},
331 "matlab/src/api/cache/cache_prob_fpi.m"},
332 {"cache_prob_spm", "cache", {Arith::Double, Arith::Real},
333 "matlab/src/api/cache/cache_prob_spm.m"},
334 {"cache_rrm_meanfield_ode", "cache", {Arith::Double, Arith::Exact, Arith::Real},
335 "matlab/src/api/cache/cache_rrm_meanfield_ode.m"},
336 {"cache_spm", "cache", {Arith::Double, Arith::Real},
337 "matlab/src/api/cache/cache_spm.m"},
338 {"cache_t_hlru", "cache", {Arith::Double, Arith::Real},
339 "matlab/src/api/cache/cache_t_hlru.m"},
340 {"cache_ttl_hlru", "cache", {Arith::Double, Arith::Real},
341 "matlab/src/api/cache/cache_ttl_hlru.m"},
342 {"cache_xi_fp", "cache", {Arith::Double, Arith::Real},
343 "matlab/src/api/cache/cache_xi_fp.m"},
344 {"cache_xi_iter", "cache", {Arith::Double, Arith::Real},
345 "matlab/src/api/cache/cache_xi_iter.m"},
346 {"fj_amva", "fj", {Arith::Double, Arith::Exact, Arith::Real},
347 "matlab/src/api/fj/fj_amva.m"},
348 {"fj_bounds", "fj", {Arith::Double, Arith::Exact, Arith::Real},
349 "matlab/src/api/fj/fj_bounds.m"},
350 {"fj_char_max", "fj", {Arith::Double, Arith::Real},
351 "matlab/src/api/fj/fj_char_max.m"},
352 {"fj_char_max_blom", "fj", {Arith::Double, Arith::Exact, Arith::Real},
353 "matlab/src/api/fj/fj_char_max_blom.m"},
354 {"fj_char_max_discrete", "fj", {Arith::Double, Arith::Real},
355 "matlab/src/api/fj/fj_char_max_discrete.m"},
356 {"fj_cox_fit", "fj", {Arith::Double, Arith::Exact, Arith::Real},
357 "matlab/src/api/fj/fj_cox_fit.m"},
358 {"fj_dag_makespan", "fj", {Arith::Double, Arith::Exact, Arith::Real},
359 "matlab/src/api/fj/fj_dag_makespan.m"},
360 {"fj_delay_opt", "fj", {Arith::Double, Arith::Real},
361 "matlab/src/api/fj/fj_delay_opt.m"},
362 {"fj_dispersion", "fj", {Arith::Double, Arith::Real},
363 "matlab/src/api/fj/fj_dispersion.m"},
364 {"fj_gk_bound", "fj", {Arith::Double, Arith::Real},
365 "matlab/src/api/fj/fj_gk_bound.m"},
366 {"fj_harmonic", "fj", {Arith::Double, Arith::Exact, Arith::Real},
367 "matlab/src/api/fj/fj_harmonic.m"},
368 {"fj_ism_green", "fj", {Arith::Double, Arith::Exact, Arith::Real},
369 "matlab/src/api/fj/fj_ism_green.m"},
370 {"fj_lst_max_het", "fj", {Arith::Double, Arith::Exact, Arith::Real},
371 "matlab/src/api/fj/fj_lst_max_het.m"},
372 {"fj_order_stat", "fj", {Arith::Double, Arith::Real},
373 "matlab/src/api/fj/fj_order_stat.m"},
374 {"fj_ordstat_exp", "fj", {Arith::Double, Arith::Exact, Arith::Real},
375 "matlab/src/api/fj/fj_ordstat_exp.m"},
376 {"fj_qgb", "fj", {Arith::Double, Arith::Exact, Arith::Real},
377 "matlab/src/api/fj/fj_qgb.m"},
378 {"fj_quantile", "fj", {Arith::Double, Arith::Real},
379 "matlab/src/api/fj/fj_quantile.m"},
380 {"fj_quorum_moments", "fj", {Arith::Double, Arith::Real},
381 "matlab/src/api/fj/fj_quorum_moments.m"},
382 {"fj_respt_2way", "fj", {Arith::Double, Arith::Exact, Arith::Real},
383 "matlab/src/api/fj/fj_respt_2way.m"},
384 {"fj_respt_bulk", "fj", {Arith::Double, Arith::Exact, Arith::Real},
385 "matlab/src/api/fj/fj_respt_bulk.m"},
386 {"fj_respt_closed", "fj", {Arith::Double, Arith::Exact, Arith::Real},
387 "matlab/src/api/fj/fj_respt_closed.m"},
388 {"fj_respt_nosplit", "fj", {Arith::Double, Arith::Exact, Arith::Real},
389 "matlab/src/api/fj/fj_respt_nosplit.m"},
390 {"fj_respt_nt", "fj", {Arith::Double, Arith::Exact, Arith::Real},
391 "matlab/src/api/fj/fj_respt_nt.m"},
392 {"fj_respt_varki", "fj", {Arith::Double, Arith::Exact, Arith::Real},
393 "matlab/src/api/fj/fj_respt_varki.m"},
394 {"fj_respt_vm", "fj", {Arith::Double, Arith::Exact, Arith::Real},
395 "matlab/src/api/fj/fj_respt_vm.m"},
396 {"fj_rmax", "fj", {Arith::Double, Arith::Exact, Arith::Real},
397 "matlab/src/api/fj/fj_rmax.m"},
398 {"fj_rmax_erlang", "fj", {Arith::Double, Arith::Real},
399 "matlab/src/api/fj/fj_rmax_erlang.m"},
400 {"fj_rmax_evd", "fj", {Arith::Double, Arith::Real},
401 "matlab/src/api/fj/fj_rmax_evd.m"},
402 {"fj_serialization", "fj", {Arith::Double, Arith::Exact, Arith::Real},
403 "matlab/src/api/fj/fj_serialization.m"},
404 {"fj_sm_tput", "fj", {Arith::Double, Arith::Exact, Arith::Real},
405 "matlab/src/api/fj/fj_sm_tput.m"},
406 {"fj_synch_delay", "fj", {Arith::Double, Arith::Exact, Arith::Real},
407 "matlab/src/api/fj/fj_synch_delay.m"},
408 {"fj_tsm_capacity", "fj", {Arith::Double, Arith::Exact, Arith::Real},
409 "matlab/src/api/fj/fj_tsm_capacity.m"},
410 {"fj_xmax_2", "fj", {Arith::Double, Arith::Exact, Arith::Real},
411 "matlab/src/api/fj/fj_xmax_2.m"},
412 {"fj_xmax_approx", "fj", {Arith::Double, Arith::Real},
413 "matlab/src/api/fj/fj_xmax_approx.m"},
414 {"fj_xmax_coxian", "fj", {Arith::Double, Arith::Exact, Arith::Real},
415 "matlab/src/api/fj/fj_xmax_coxian.m"},
416 {"fj_xmax_emma", "fj", {Arith::Double, Arith::Real},
417 "matlab/src/api/fj/fj_xmax_emma.m"},
418 {"fj_xmax_erlang", "fj", {Arith::Double, Arith::Real},
419 "matlab/src/api/fj/fj_xmax_erlang.m"},
420 {"fj_xmax_exp", "fj", {Arith::Double, Arith::Exact, Arith::Real},
421 "matlab/src/api/fj/fj_xmax_exp.m"},
422 {"fj_xmax_het", "fj", {Arith::Double, Arith::Exact, Arith::Real},
423 "matlab/src/api/fj/fj_xmax_het.m"},
424 {"fj_xmax_hyperexp", "fj", {Arith::Double, Arith::Exact, Arith::Real},
425 "matlab/src/api/fj/fj_xmax_hyperexp.m"},
426 {"fj_xmax_hz", "fj", {Arith::Double, Arith::Exact, Arith::Real},
427 "matlab/src/api/fj/fj_xmax_hz.m"},
428 {"fj_xmax_hz_het", "fj", {Arith::Double, Arith::Real},
429 "matlab/src/api/fj/fj_xmax_hz_het.m"},
430 {"fj_xmax_moments_het", "fj", {Arith::Double, Arith::Exact, Arith::Real},
431 "matlab/src/api/fj/fj_xmax_moments_het.m"},
432 {"fj_xmax_normal", "fj", {Arith::Double, Arith::Real},
433 "matlab/src/api/fj/fj_xmax_normal.m"},
434 {"fj_xmax_pareto", "fj", {Arith::Double, Arith::Real},
435 "matlab/src/api/fj/fj_xmax_pareto.m"},
436 {"aoi_fcfs_dm1", "aoi", {Arith::Double, Arith::Real},
437 "matlab/src/api/aoi/aoi_fcfs_dm1.m"},
438 {"aoi_fcfs_gim1", "aoi", {Arith::Double, Arith::Real},
439 "matlab/src/api/aoi/aoi_fcfs_gim1.m"},
440 {"aoi_fcfs_md1", "aoi", {Arith::Double, Arith::Real},
441 "matlab/src/api/aoi/aoi_fcfs_md1.m"},
442 {"aoi_fcfs_mgi1", "aoi", {Arith::Double, Arith::Real},
443 "matlab/src/api/aoi/aoi_fcfs_mgi1.m"},
444 {"aoi_fcfs_mm1", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
445 "matlab/src/api/aoi/aoi_fcfs_mm1.m"},
446 {"aoi_lcfsd_gim1", "aoi", {Arith::Double, Arith::Real},
447 "matlab/src/api/aoi/aoi_lcfsd_gim1.m"},
448 {"aoi_lcfsd_mgi1", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
449 "matlab/src/api/aoi/aoi_lcfsd_mgi1.m"},
450 {"aoi_lcfspr_dm1", "aoi", {Arith::Double, Arith::Real},
451 "matlab/src/api/aoi/aoi_lcfspr_dm1.m"},
452 {"aoi_lcfspr_gim1", "aoi", {Arith::Double, Arith::Real},
453 "matlab/src/api/aoi/aoi_lcfspr_gim1.m"},
454 {"aoi_lcfspr_md1", "aoi", {Arith::Double, Arith::Real},
455 "matlab/src/api/aoi/aoi_lcfspr_md1.m"},
456 {"aoi_lcfspr_mgi1", "aoi", {Arith::Double, Arith::Real},
457 "matlab/src/api/aoi/aoi_lcfspr_mgi1.m"},
458 {"aoi_lcfspr_mm1", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
459 "matlab/src/api/aoi/aoi_lcfspr_mm1.m"},
460 {"aoi_lcfss_gim1", "aoi", {Arith::Double, Arith::Real},
461 "matlab/src/api/aoi/aoi_lcfss_gim1.m"},
462 {"aoi_lcfss_mgi1", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
463 "matlab/src/api/aoi/aoi_lcfss_mgi1.m"},
464 {"aoi_lst_det", "aoi", {Arith::Double, Arith::Real},
465 "matlab/src/api/aoi/aoi_lst_det.m"},
466 {"aoi_lst_erlang", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
467 "matlab/src/api/aoi/aoi_lst_erlang.m"},
468 {"aoi_lst_exp", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
469 "matlab/src/api/aoi/aoi_lst_exp.m"},
470 {"aoi_lst_ph", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
471 "matlab/src/api/aoi/aoi_lst_ph.m"},
472 {"da_fpi", "da", {Arith::Double, Arith::Real},
473 "matlab/src/api/da/da_fpi.m"},
474 {"lossn_erlangfp", "lossn", {Arith::Double, Arith::Real},
475 "matlab/src/api/lossn/lossn_erlangfp.m"},
476 // The only one of the three that is rational throughout: the series is
477 // built from nu^n/n! and the metrics are ratios of series values.
478 {"lossn_manjunath", "lossn", {Arith::Double, Arith::Exact, Arith::Real},
479 "matlab/src/api/lossn/lossn_manjunath.m"},
480 {"lossn_mci", "lossn", {Arith::Double, Arith::Real},
481 "matlab/src/api/lossn/lossn_mci.m"},
482 // Rational throughout, like lossn_manjunath: the normalizing constant is
483 // summed EXACTLY over the reachable set by one memoised walk of the
484 // decision diagram that holds it, with no integrality demand on the
485 // residue transform.
486 {"lossn_rec", "lossn", {Arith::Double, Arith::Exact, Arith::Real},
487 "matlab/src/api/lossn/lossn_rec.m"},
488 {"pfqn_unique", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
489 "matlab/src/api/pfqn/pfqn_unique.m"},
490 {"pfqn_expand", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
491 "matlab/src/api/pfqn/pfqn_expand.m"},
492 // The closed-form normalizing constants of Casale, Eq. (16) and its
493 // load-dependent twin. No exact arm: both static_assert on
494 // has_transcendental, G being carried as a signed log-sum-exp.
495 {"pfqn_explicit", "pfqn", {Arith::Double, Arith::Real},
496 "matlab/src/api/pfqn/pfqn_explicit.m"},
497 {"pfqn_explicit_ld", "pfqn", {Arith::Double, Arith::Real},
498 "matlab/src/api/pfqn/pfqn_explicit_ld.m"},
499 {"pfqn_mushift", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
500 "matlab/src/api/pfqn/pfqn_mushift.m"},
501 {"mmap_lambda", "mam", {Arith::Double, Arith::Exact, Arith::Real},
502 "matlab/lib/m3a/m3a/mmap/mmap_lambda.m"},
503 {"mmap_count_lambda", "mam", {Arith::Double, Arith::Exact, Arith::Real},
504 "matlab/lib/m3a/m3a/mmap/mmap_count_lambda.m"},
505 {"mmap_pc", "mam", {Arith::Double, Arith::Exact, Arith::Real},
506 "matlab/lib/m3a/m3a/mmap/mmap_pc.m"},
507 {"mmap_isfeasible", "mam", {Arith::Double, Arith::Exact, Arith::Real},
508 "matlab/lib/m3a/m3a/mmap/mmap_isfeasible.m"},
509 {"mmap_normalize", "mam", {Arith::Double, Arith::Exact, Arith::Real},
510 "matlab/lib/m3a/m3a/mmap/mmap_normalize.m"},
511 {"mmap_scale", "mam", {Arith::Double, Arith::Exact, Arith::Real},
512 "matlab/lib/m3a/m3a/mmap/mmap_scale.m"},
513 {"mmap_mark", "mam", {Arith::Double, Arith::Exact, Arith::Real},
514 "matlab/lib/m3a/m3a/mmap/mmap_mark.m"},
515 {"mmap_super", "mam", {Arith::Double, Arith::Exact, Arith::Real},
516 "matlab/lib/m3a/m3a/mmap/mmap_super.m"},
517 {"pfqn_bs", "pfqn", {Arith::Double, Arith::Real},
518 "matlab/src/api/pfqn/pfqn_bs.m"},
519 {"pfqn_cntol", "pfqn", {Arith::Double, Arith::Real},
520 "matlab/src/api/pfqn/pfqn_cntol.m"},
521 {"pfqn_aql", "pfqn", {Arith::Double, Arith::Real},
522 "matlab/src/api/pfqn/pfqn_aql.m"},
523 {"pfqn_qsa", "pfqn", {Arith::Double, Arith::Real},
524 "matlab/src/api/pfqn/pfqn_qsa.m"},
525 {"pfqn_linearizer", "pfqn", {Arith::Double, Arith::Real},
526 "matlab/src/api/pfqn/pfqn_linearizer.m"},
527 {"pfqn_linearizerms", "pfqn", {Arith::Double, Arith::Real},
528 "matlab/src/api/pfqn/pfqn_linearizerms.m"},
529 {"pfqn_linearizermx", "pfqn", {Arith::Double, Arith::Real},
530 "matlab/src/api/pfqn/pfqn_linearizermx.m"},
531 // The QUEUE-DEPENDENT arms of the two above: qdamva is Bard-Schweitzer
532 // and qdlin Linearizer, each carrying a per-station rate multiplier mu.
533 // No exact arm, and refused at compile time rather than detoured through
534 // double: both static_assert on has_transcendental, the wait factor
535 // being an exponential of a log-sum.
536 {"pfqn_qdamva", "pfqn", {Arith::Double, Arith::Real},
537 "matlab/src/api/pfqn/pfqn_qdamva.m"},
538 {"pfqn_qdlin", "pfqn", {Arith::Double, Arith::Real},
539 "matlab/src/api/pfqn/pfqn_qdlin.m"},
540 {"pfqn_gflinearizer", "pfqn", {Arith::Double, Arith::Real},
541 "matlab/src/api/pfqn/pfqn_gflinearizer.m"},
542 {"pfqn_egflinearizer", "pfqn", {Arith::Double, Arith::Real},
543 "matlab/src/api/pfqn/pfqn_egflinearizer.m"},
544 {"pfqn_conwayms", "pfqn", {Arith::Double, Arith::Real},
545 "matlab/src/api/pfqn/pfqn_conwayms.m"},
546 {"pfqn_schmidt", "pfqn", {Arith::Double, Arith::Real},
547 "matlab/src/api/pfqn/pfqn_schmidt.m"},
548 {"pfqn_cdfun", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
549 "matlab/src/api/pfqn/pfqn_cdfun.m"},
550 {"pfqn_lldfun", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
551 "matlab/src/api/pfqn/pfqn_lldfun.m"},
552 {"autocov", "trace", {Arith::Double, Arith::Exact, Arith::Real},
553 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
554 {"mtrace_backward_moment", "trace", {Arith::Double, Arith::Exact, Arith::Real},
555 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
556 {"mtrace_count", "trace", {Arith::Double, Arith::Exact, Arith::Real},
557 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
558 {"mtrace_cov", "trace", {Arith::Double, Arith::Exact, Arith::Real},
559 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
560 {"mtrace_cross_moment", "trace", {Arith::Double, Arith::Exact, Arith::Real},
561 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
562 {"mtrace_forward_moment", "trace", {Arith::Double, Arith::Exact, Arith::Real},
563 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
564 {"mtrace_iat2counts", "trace", {Arith::Double, Arith::Exact, Arith::Real},
565 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
566 {"mtrace_joint", "trace", {Arith::Double, Arith::Exact, Arith::Real},
567 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
568 {"mtrace_mean", "trace", {Arith::Double, Arith::Exact, Arith::Real},
569 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
570 {"mtrace_merge", "trace", {Arith::Double, Arith::Exact, Arith::Real},
571 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
572 {"mtrace_moment", "trace", {Arith::Double, Arith::Exact, Arith::Real},
573 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
574 {"mtrace_moment_simple", "trace", {Arith::Double, Arith::Exact, Arith::Real},
575 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
576 {"mtrace_pc", "trace", {Arith::Double, Arith::Exact, Arith::Real},
577 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
578 {"mtrace_sigma", "trace", {Arith::Double, Arith::Exact, Arith::Real},
579 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
580 {"mtrace_sigma2", "trace", {Arith::Double, Arith::Exact, Arith::Real},
581 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
582 {"mtrace_split", "trace", {Arith::Double, Arith::Exact, Arith::Real},
583 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
584 {"mtrace_summary", "trace", {Arith::Double, Arith::Exact, Arith::Real},
585 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
586 {"trace_acf", "trace", {Arith::Double, Arith::Exact, Arith::Real},
587 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
588 {"trace_bicov", "trace", {Arith::Double, Arith::Exact, Arith::Real},
589 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
590 {"trace_gamma", "trace", {Arith::Double, Arith::Exact, Arith::Real},
591 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
592 {"trace_iat2bins", "trace", {Arith::Double, Arith::Exact, Arith::Real},
593 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
594 {"trace_iat2counts", "trace", {Arith::Double, Arith::Exact, Arith::Real},
595 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
596 {"trace_idc", "trace", {Arith::Double, Arith::Exact, Arith::Real},
597 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
598 {"trace_idi", "trace", {Arith::Double, Arith::Exact, Arith::Real},
599 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
600 {"trace_joint", "trace", {Arith::Double, Arith::Exact, Arith::Real},
601 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
602 {"trace_mean", "trace", {Arith::Double, Arith::Exact, Arith::Real},
603 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
604 {"trace_pmf", "trace", {Arith::Double, Arith::Exact, Arith::Real},
605 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
606 {"trace_scv", "trace", {Arith::Double, Arith::Exact, Arith::Real},
607 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
608 {"trace_skew", "trace", {Arith::Double, Arith::Real},
609 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
610 {"trace_summary", "trace", {Arith::Double, Arith::Real},
611 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
612 {"trace_var", "trace", {Arith::Double, Arith::Exact, Arith::Real},
613 "matlab/lib/m3a/m3a/mtrace/ and jar/src/main/java/jline/api/trace/"},
614 {"me_cqn", "me", {Arith::Double, Arith::Real},
615 "matlab/src/api/me/"},
616 {"me_mqn", "me", {Arith::Double, Arith::Real},
617 "matlab/src/api/me/"},
618 {"me_oqn", "me", {Arith::Double, Arith::Real},
619 "matlab/src/api/me/"},
620 {"dqsys_geogeo1", "dqsys", {Arith::Double, Arith::Exact, Arith::Real},
621 "matlab/src/api/dqsys/dqsys_geogeo1.m"},
622 {"dqsys_bernoulli1", "dqsys", {Arith::Double, Arith::Exact, Arith::Real},
623 "matlab/src/api/dqsys/dqsys_bernoulli1.m"},
624 {"dpfqn_nc", "dpfqn", {Arith::Double, Arith::Exact, Arith::Real},
625 "matlab/src/api/dpfqn/dpfqn_nc.m"},
626 {"dpfqn_ncld", "dpfqn", {Arith::Double, Arith::Exact, Arith::Real},
627 "matlab/src/api/dpfqn/dpfqn_ncld.m"},
628 {"map_normalize", "mam", {Arith::Double, Arith::Exact, Arith::Real},
629 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
630 {"map_scale", "mam", {Arith::Double, Arith::Exact, Arith::Real},
631 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
632 {"map_exponential_mean", "mam", {Arith::Double, Arith::Exact, Arith::Real},
633 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
634 {"map_erlang", "mam", {Arith::Double, Arith::Exact, Arith::Real},
635 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
636 {"map_sum", "mam", {Arith::Double, Arith::Exact, Arith::Real},
637 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
638 {"map_sumind", "mam", {Arith::Double, Arith::Exact, Arith::Real},
639 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
640 {"map_mixture", "mam", {Arith::Double, Arith::Exact, Arith::Real},
641 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
642 {"map_renewal", "mam", {Arith::Double, Arith::Exact, Arith::Real},
643 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
644 {"map2ph", "mam", {Arith::Double, Arith::Exact, Arith::Real},
645 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
646 {"ph2map", "mam", {Arith::Double, Arith::Exact, Arith::Real},
647 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
648 {"map_stochcomp", "mam", {Arith::Double, Arith::Exact, Arith::Real},
649 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
650 {"map_kurt", "mam", {Arith::Double, Arith::Exact, Arith::Real},
651 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
652 {"map_joint", "mam", {Arith::Double, Arith::Exact, Arith::Real},
653 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
654 {"map_isfeasible", "mam", {Arith::Double, Arith::Exact, Arith::Real},
655 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
656 {"qbd_pi", "mam", {Arith::Double, Arith::Exact, Arith::Real},
657 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
658 {"qbd_R_residual", "mam", {Arith::Double, Arith::Exact, Arith::Real},
659 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
660 {"qbd_G_residual", "mam", {Arith::Double, Arith::Exact, Arith::Real},
661 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
662 {"qbd_mapmap1_blocks", "mam", {Arith::Double, Arith::Exact, Arith::Real},
663 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
664 {"qbd_qlen_factmoment", "mam", {Arith::Double, Arith::Exact, Arith::Real},
665 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
666 {"qbd_qlen_moment", "mam", {Arith::Double, Arith::Exact, Arith::Real},
667 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
668 {"qbd_R", "mam", {Arith::Double, Arith::Real},
669 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
670 {"qbd_R_logred", "mam", {Arith::Double, Arith::Real},
671 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
672 {"qbd_fundmat", "mam", {Arith::Double, Arith::Real},
673 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
674 {"qbd_caudal", "mam", {Arith::Double, Arith::Real},
675 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
676 {"qbd_rg", "mam", {Arith::Double, Arith::Real},
677 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
678 {"qbd_mapmap1", "mam", {Arith::Double, Arith::Real},
679 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
680 {"qbd_mapmap1_qlen_truncated", "mam", {Arith::Double, Arith::Real},
681 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
682 {"map_hyperexp", "mam", {Arith::Double, Arith::Real},
683 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
684 {"map_skew", "mam", {Arith::Double, Arith::Real},
685 "matlab/src/api/mam/, matlab/lib/kpctoolbox/map/"},
686 {"retrieval_fpi", "retrieval", {Arith::Double, Arith::Real},
687 "matlab/src/api/retrieval/"},
688 {"retrieval_fpi_latency", "retrieval", {Arith::Double, Arith::Real},
689 "matlab/src/api/retrieval/"},
690 {"retrieval_metrics", "retrieval", {Arith::Double, Arith::Exact, Arith::Real},
691 "matlab/src/api/retrieval/"},
692 {"retrieval_mva", "retrieval", {Arith::Double, Arith::Exact, Arith::Real},
693 "matlab/src/api/retrieval/"},
694 {"retrieval_nc", "retrieval", {Arith::Double, Arith::Exact, Arith::Real},
695 "matlab/src/api/retrieval/"},
696 {"sum_closed", "sum", {Arith::Double, Arith::Real},
697 "matlab/src/api/sum/"},
698 {"sum_closing", "sum", {Arith::Double, Arith::Real},
699 "matlab/src/api/sum/"},
700 {"infer_compute_ql_at_arrival", "infer", {Arith::Double, Arith::Exact, Arith::Real},
701 "matlab/src/api/infer/"},
702 {"infer_get_qlen_arrival", "infer", {Arith::Double, Arith::Exact, Arith::Real},
703 "matlab/src/api/infer/"},
704 {"infer_lqn_jacobian", "infer", {Arith::Double, Arith::Exact, Arith::Real},
705 "matlab/src/api/infer/"},
706 {"infer_lqn_findbyname", "infer", {Arith::Double, Arith::Exact, Arith::Real},
707 "matlab/src/api/infer/"},
708 {"infer_lqn_getobs", "infer", {Arith::Double, Arith::Exact, Arith::Real},
709 "matlab/src/api/infer/"},
710 {"infer_lqn_ekf", "infer", {Arith::Double, Arith::Real},
711 "matlab/src/api/infer/"},
712 {"infer_gibbs", "infer", {Arith::Double},
713 "matlab/src/api/infer/"},
714 {"infer_qmle", "infer", {Arith::Double, Arith::Exact, Arith::Real},
715 "matlab/src/api/infer/"},
716 {"infer_rps", "infer", {Arith::Double, Arith::Exact, Arith::Real},
717 "matlab/src/api/infer/"},
718 {"lsn_max_multiplicity", "lqn", {Arith::Double, Arith::Exact, Arith::Real},
719 "matlab/src/api/lsn/"},
720 // The recursion interpolates response tables at fractional populations, so
721 // the arithmetic is done in double whatever T; T is carried by the interface.
722 {"mapqn_amva", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
723 "matlab/src/api/mapqn/mapqn_amva.m"},
724 {"mapqn_bnd_lr", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
725 "matlab/lib/qrf/mapqn_bnd_lr.m"},
726 {"mapqn_bnd_lr_mva", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
727 "matlab/lib/qrf/mapqn_bnd_lr_mva.m"},
728 {"mapqn_bnd_qr", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
729 "matlab/lib/qrf/mapqn_bnd_qr.m"},
730 {"mapqn_bnd_qr_ld", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
731 "matlab/lib/qrf/mapqn_bnd_qr_ld.m"},
732 {"mapqn_bnd_qr_delay", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
733 "matlab/lib/qrf/mapqn_bnd_qr_delay.m"},
734 {"mapqn_qr_bounds_bas", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
735 "matlab/lib/qrf/qrf_bas.m"},
736 {"mapqn_qr_bounds_rsrd", "mapqn", {Arith::Double, Arith::Exact, Arith::Real},
737 "matlab/lib/qrf/qrf_rsrd.m"},
738 {"qsys_dmc", "qsys", {Arith::Double, Arith::Real},
739 "matlab/src/api/qsys/qsys_dmc.m"},
740 {"dqsys_geoxgeo1", "dqsys", {Arith::Double, Arith::Exact, Arith::Real},
741 "matlab/src/api/dqsys/dqsys_geoxgeo1.m"},
742 {"qsys_gg1", "qsys", {Arith::Double, Arith::Real},
743 "matlab/src/api/qsys/qsys_gg1.m"},
744 {"qsys_gig1_approx_myskja", "qsys", {Arith::Double, Arith::Real},
745 "matlab/src/api/qsys/qsys_gig1_approx_myskja.m"},
746 {"qsys_gig1_approx_myskja2", "qsys", {Arith::Double, Arith::Real},
747 "matlab/src/api/qsys/qsys_gig1_approx_myskja2.m"},
748 {"qsys_gig1_rq", "qsys", {Arith::Double, Arith::Real},
749 "matlab/src/api/qsys/qsys_gig1_rq.m"},
750 {"qsys_gigk_rqt", "qsys", {Arith::Double, Arith::Real},
751 "matlab/src/api/qsys/qsys_gigk_rqt.m"},
752 {"qsys_gig1_rqt", "qsys", {Arith::Double, Arith::Real},
753 "matlab/src/api/qsys/qsys_gig1_rqt.m"},
754 {"qsys_gigk_rqt_gamma", "qsys", {Arith::Double, Arith::Real},
755 "matlab/src/api/qsys/qsys_gigk_rqt_gamma.m"},
756 {"qsys_mg1_fb", "qsys", {Arith::Double, Arith::Real},
757 "matlab/src/api/qsys/qsys_mg1_fb.m"},
758 {"qsys_mg1_lrpt", "qsys", {Arith::Double, Arith::Real},
759 "matlab/src/api/qsys/qsys_mg1_lrpt.m"},
760 {"qsys_mg1_prio", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
761 "matlab/src/api/qsys/qsys_mg1_prio.m"},
762 {"qsys_mg1_psjf", "qsys", {Arith::Double, Arith::Real},
763 "matlab/src/api/qsys/qsys_mg1_psjf.m"},
764 {"qsys_mg1_setf", "qsys", {Arith::Double, Arith::Real},
765 "matlab/src/api/qsys/qsys_mg1_setf.m"},
766 {"qsys_mg1_srpt", "qsys", {Arith::Double, Arith::Real},
767 "matlab/src/api/qsys/qsys_mg1_srpt.m"},
768 {"qsys_mg1k_loss", "qsys", {Arith::Double, Arith::Real},
769 "matlab/src/api/qsys/qsys_mg1k_loss.m"},
770 {"qsys_mg1k_loss_mgs", "qsys", {Arith::Double, Arith::Real},
771 "matlab/src/api/qsys/qsys_mg1k_loss_mgs.m"},
772 {"qsys_mm1_dps", "qsys", {Arith::Double, Arith::Real},
773 "matlab/src/api/qsys/qsys_mm1_dps.m"},
774 {"qsys_mm1k_loss", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
775 "matlab/src/api/qsys/qsys_mm1k_loss.m"},
776 {"qsys_mmck", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
777 "matlab/src/api/qsys/qsys_mmck.m"},
778 {"qsys_mxm1", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
779 "matlab/src/api/qsys/qsys_mxm1.m"},
780 {"qsys_phm1", "qsys", {Arith::Double, Arith::Real},
781 "matlab/src/api/qsys/qsys_phm1.m"},
782 {"qsys_phmc", "qsys", {Arith::Double, Arith::Real},
783 "matlab/src/api/qsys/qsys_phmc.m"},
784 {"da_cache_isolate", "da", {Arith::Double, Arith::Exact, Arith::Real},
785 "matlab/src/api/da/"},
786 {"da_traffic_superpos", "da", {Arith::Double, Arith::Exact, Arith::Real},
787 "matlab/src/api/da/"},
788 {"wf_branch_detector", "wf", {Arith::Double, Arith::Real},
789 "jar/src/main/java/jline/api/wf/"},
790 {"wf_loop_detector", "wf", {Arith::Double, Arith::Exact, Arith::Real},
791 "jar/src/main/java/jline/api/wf/"},
792 {"wf_parallel_detector", "wf", {Arith::Double, Arith::Exact, Arith::Real},
793 "jar/src/main/java/jline/api/wf/"},
794 {"wf_sequence_detector", "wf", {Arith::Double, Arith::Exact, Arith::Real},
795 "jar/src/main/java/jline/api/wf/"},
796 {"amap2_adjust_gamma", "mam", {Arith::Double, Arith::Real},
797 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
798 {"amap2_assemble", "mam", {Arith::Double, Arith::Exact, Arith::Real},
799 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
800 {"amap2_fit_gamma", "mam", {Arith::Double, Arith::Real},
801 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
802 {"amap2_fitall_gamma", "mam", {Arith::Double, Arith::Real},
803 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
804 {"aph2_adjust", "mam", {Arith::Double, Arith::Real},
805 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
806 {"aph2_assemble", "mam", {Arith::Double, Arith::Exact, Arith::Real},
807 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
808 {"aph2_fit", "mam", {Arith::Double, Arith::Real},
809 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
810 {"aph2_fitall", "mam", {Arith::Double, Arith::Real},
811 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
812 {"aph_fit", "mam", {Arith::Double, Arith::Real},
813 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
814 {"m3pp_rand", "mam", {Arith::Double, Arith::Real},
815 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
816 {"m3pp_superpos_fitc", "mam", {Arith::Double, Arith::Real},
817 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
818 {"m3pp22_fitc_approx_cov", "mam", {Arith::Double, Arith::Real},
819 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
820 {"m3pp2m_fitc", "mam", {Arith::Double, Arith::Real},
821 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
822 {"m3pp2m_fitc_approx", "mam", {Arith::Double, Arith::Real},
823 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
824 {"m3pp2m_fitc_approx_ag", "mam", {Arith::Double, Arith::Real},
825 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
826 {"m3pp2m_fitc_trace", "mam", {Arith::Double, Arith::Real},
827 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
828 {"map2_fit", "mam", {Arith::Double, Arith::Real},
829 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
830 {"map2mmpp", "mam", {Arith::Double, Arith::Exact, Arith::Real},
831 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
832 {"map_mark", "mam", {Arith::Double, Arith::Exact, Arith::Real},
833 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
834 {"map_transform", "mam", {Arith::Double, Arith::Real},
835 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
836 {"mmpp2_fit", "mam", {Arith::Double, Arith::Real},
837 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
838 {"mmpp2_fit1", "mam", {Arith::Double, Arith::Real},
839 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
840 {"mmpp2_fit2", "mam", {Arith::Double, Arith::Real},
841 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
842 {"mmpp2_fit3", "mam", {Arith::Double, Arith::Real},
843 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
844 {"mmpp2_fit4", "mam", {Arith::Double, Arith::Real},
845 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
846 {"mmpp2_fitc", "mam", {Arith::Double, Arith::Real},
847 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
848 {"mmpp2_fitc_approx", "mam", {Arith::Double, Arith::Real},
849 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
850 {"mmpp2_fitc_theoretical", "mam", {Arith::Double, Arith::Real},
851 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
852 {"qbd_r", "mam", {Arith::Double, Arith::Real},
853 "matlab/lib/m3a/, matlab/lib/kpctoolbox/map/"},
854 {"ctmc_courtois", "mc", {Arith::Double, Arith::Real},
855 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
856 {"ctmc_bicgstab", "mc", {Arith::Double, Arith::Real},
857 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
858 {"ctmc_bicgstab_multi", "mc", {Arith::Double, Arith::Real},
859 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
860 {"ctmc_fau", "mc", {Arith::Double, Arith::Real},
861 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
862 {"ctmc_foxglynn", "mc", {Arith::Double, Arith::Real},
863 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
864 {"ctmc_gmres", "mc", {Arith::Double, Arith::Real},
865 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
866 {"ctmc_gmres_multi", "mc", {Arith::Double, Arith::Real},
867 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
868 {"ctmc_kms", "mc", {Arith::Double, Arith::Real},
869 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
870 {"ctmc_multi", "mc", {Arith::Double, Arith::Real},
871 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
872 {"ctmc_rand", "mc", {Arith::Double, Arith::Exact, Arith::Real},
873 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
874 {"ctmc_randomization", "mc", {Arith::Double, Arith::Exact, Arith::Real},
875 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
876 {"ctmc_saddlepoint", "mc", {Arith::Double, Arith::Real},
877 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
878 {"ctmc_sens", "mc", {Arith::Double, Arith::Exact, Arith::Real},
879 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
880 {"ctmc_solve_reducible", "mc", {Arith::Double, Arith::Exact, Arith::Real},
881 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
882 {"ctmc_solve_reducible_blkdecomp", "mc", {Arith::Double, Arith::Exact, Arith::Real},
883 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
884 {"ctmc_takahashi", "mc", {Arith::Double, Arith::Real},
885 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
886 {"ctmc_transient", "mc", {Arith::Double, Arith::Real},
887 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
888 {"ctmc_transient_sens", "mc", {Arith::Double, Arith::Real},
889 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
890 {"dtmc_makestochastic", "mc", {Arith::Double, Arith::Exact, Arith::Real},
891 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
892 {"dtmc_solve_reducible", "mc", {Arith::Double, Arith::Exact, Arith::Real},
893 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
894 {"stronglyconncomp", "mc", {Arith::Double, Arith::Exact, Arith::Real},
895 "matlab/src/api/mc/, matlab/lib/kpctoolbox/mc/"},
896 {"pfqn_comomrm", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
897 "matlab/src/api/pfqn/pfqn_comomrm.m"},
898 {"pfqn_comomrm_ld", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
899 "matlab/src/api/pfqn/pfqn_comomrm_ld.m"},
900 {"pfqn_comomrm_ms", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
901 "matlab/src/api/pfqn/pfqn_comomrm_ms.m"},
902 {"pfqn_conv", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
903 "matlab/src/api/pfqn/pfqn_conv.m"},
904 {"pfqn_gldsingle", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
905 "matlab/src/api/pfqn/pfqn_gldsingle.m"},
906 {"pfqn_joint", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
907 "matlab/src/api/pfqn/pfqn_joint.m"},
908 {"pfqn_lcfsqn_ca", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
909 "matlab/src/api/pfqn/pfqn_lcfsqn_ca.m"},
910 {"pfqn_lcfsqn_mva", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
911 "matlab/src/api/pfqn/pfqn_lcfsqn_mva.m"},
912 {"pfqn_lcfsqn_nc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
913 "matlab/src/api/pfqn/pfqn_lcfsqn_nc.m"},
914 {"pfqn_ldmx_ec", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
915 "matlab/src/api/pfqn/pfqn_ldmx_ec.m"},
916 {"pfqn_lldsingle", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
917 "matlab/src/api/pfqn/pfqn_lldsingle.m"},
918 {"pfqn_mu_ms", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
919 "matlab/src/api/pfqn/pfqn_mu_ms.m"},
920 {"pfqn_nc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
921 "matlab/src/api/pfqn/pfqn_nc.m"},
922 {"pfqn_nc_sanitize", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
923 "matlab/src/api/pfqn/pfqn_nc_sanitize.m"},
924 {"pfqn_ncld", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
925 "matlab/src/api/pfqn/pfqn_ncld.m"},
926 {"pfqn_ncldmx", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
927 "matlab/src/api/pfqn/pfqn_ncldmx.m"},
928 {"pfqn_ncoi", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
929 "matlab/src/api/pfqn/pfqn_ncoi.m"},
930 {"pfqn_pas_nc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
931 "matlab/src/api/pfqn/pfqn_pas_nc.m"},
932 // perm naming rationale: see _kb/14-cpp-multiprecision.md
933 {"pfqn_perm", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
934 "matlab/util/perm.m"},
935 {"cd_peak_scaling", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
936 "matlab/src/api/pfqn/cd_peak_scaling.m"},
937 {"infradius_h", "pfqn", {Arith::Double, Arith::Real},
938 "matlab/src/api/pfqn/infradius_h.m"},
939 {"laplaceapprox", "pfqn", {Arith::Double, Arith::Real},
940 "matlab/src/api/pfqn/laplaceapprox.m"},
941 {"pfqn_cbh", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
942 "matlab/src/api/pfqn/pfqn_cbh.m"},
943 {"pfqn_cub", "pfqn", {Arith::Double, Arith::Real},
944 "matlab/src/api/pfqn/pfqn_cub.m"},
945 {"pfqn_dac", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
946 "matlab/src/api/pfqn/pfqn_dac.m"},
947 {"pfqn_fnc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
948 "matlab/src/api/pfqn/pfqn_fnc.m"},
949 {"pfqn_grnmol", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
950 "matlab/src/api/pfqn/pfqn_grnmol.m"},
951 {"pfqn_kt", "pfqn", {Arith::Double, Arith::Real},
952 "matlab/src/api/pfqn/pfqn_kt.m"},
953 {"pfqn_bkt", "pfqn", {Arith::Double, Arith::Real},
954 "matlab/src/api/pfqn/pfqn_bkt.m"},
955 {"pfqn_lekt", "pfqn", {Arith::Double, Arith::Real},
956 "matlab/src/api/pfqn/pfqn_lekt.m"},
957 {"pfqn_lap", "pfqn", {Arith::Double, Arith::Real},
958 "matlab/src/api/pfqn/pfqn_lap.m"},
959 {"pfqn_ldbcmp", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
960 "matlab/src/api/pfqn/pfqn_ldbcmp.m"},
961 {"pfqn_le", "pfqn", {Arith::Double, Arith::Real},
962 "matlab/src/api/pfqn/pfqn_le.m"},
963 {"pfqn_ble", "pfqn", {Arith::Double, Arith::Real},
964 "matlab/src/api/pfqn/pfqn_ble.m"},
965 {"pfqn_aghq", "pfqn", {Arith::Double, Arith::Real},
966 "matlab/src/api/pfqn/pfqn_aghq.m"},
967 {"pfqn_mcub", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
968 "matlab/src/api/pfqn/pfqn_mcub.m"},
969 {"pfqn_mmint2", "pfqn", {Arith::Double, Arith::Real},
970 "matlab/src/api/pfqn/pfqn_mmint2.m"},
971 {"pfqn_mwrbb", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
972 "matlab/src/api/pfqn/pfqn_mwrbb.m"},
973 {"pfqn_nre", "pfqn", {Arith::Double, Arith::Real},
974 "matlab/src/api/pfqn/pfqn_nre.m"},
975 {"pfqn_nrl", "pfqn", {Arith::Double, Arith::Real},
976 "matlab/src/api/pfqn/pfqn_nrl.m"},
977 // Ported in pfqn_nrl.h beside its logistic twin: the two differ only in
978 // the change of variable, so one header carries both.
979 {"pfqn_nrp", "pfqn", {Arith::Double, Arith::Real},
980 "matlab/src/api/pfqn/pfqn_nrp.m"},
981 {"pfqn_oi_fnc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
982 "matlab/src/api/pfqn/pfqn_oi_fnc.m"},
983 {"pfqn_oi_insvc", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
984 "matlab/src/api/pfqn/pfqn_oi_insvc.m"},
985 {"pfqn_panacea", "pfqn", {Arith::Double, Arith::Real},
986 "matlab/src/api/pfqn/pfqn_panacea.m"},
987 {"pfqn_panaceald", "pfqn", {Arith::Double, Arith::Real},
988 "matlab/src/api/pfqn/pfqn_panaceald.m"},
989 {"pfqn_pbh", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
990 "matlab/src/api/pfqn/pfqn_pbh.m"},
991 {"pfqn_propfair", "pfqn", {Arith::Double, Arith::Real},
992 "matlab/src/api/pfqn/pfqn_propfair.m"},
993 {"pfqn_sens", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
994 "matlab/src/api/pfqn/pfqn_sens.m"},
995 {"pfqn_sens_ldmx_ec", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
996 "matlab/src/api/pfqn/pfqn_sens_ldmx_ec.m"},
997 {"pfqn_sens_linearizer", "pfqn", {Arith::Double, Arith::Real},
998 "matlab/src/api/pfqn/pfqn_sens_linearizer.m"},
999 {"pfqn_sens_mom", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1000 "matlab/src/api/pfqn/pfqn_sens_mom.m"},
1001 {"pfqn_sens_mva", "pfqn", {Arith::Double, Arith::Real},
1002 "matlab/src/api/pfqn/pfqn_sens_mva.m"},
1003 {"pfqn_sens_mvaldmx", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1004 "matlab/src/api/pfqn/pfqn_sens_mvaldmx.m"},
1005 {"pfqn_sens_respt", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1006 "matlab/src/api/pfqn/pfqn_sens_respt.m"},
1007 {"pfqn_scb", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1008 "matlab/src/api/pfqn/pfqn_scb.m"},
1009 {"pfqn_scbgap", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1010 "matlab/src/api/pfqn/pfqn_scbgap.m"},
1011 {"pfqn_usumbound", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1012 "matlab/src/api/pfqn/pfqn_usumbound.m"},
1013 {"pfqn_minclasses", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1014 "matlab/src/api/pfqn/pfqn_minclasses.m"},
1015 {"pfqn_sib", "pfqn", {Arith::Double, Arith::Real},
1016 "matlab/src/api/pfqn/pfqn_sib.m"},
1017 {"pfqn_sqni", "pfqn", {Arith::Double, Arith::Real},
1018 "matlab/src/api/pfqn/pfqn_sqni.m"},
1019 {"cache_is", "cache", {Arith::Double, Arith::Real},
1020 "matlab/src/api/cache/cache_is.m"},
1021 {"cache_miss_is", "cache", {Arith::Double, Arith::Real},
1022 "matlab/src/api/cache/cache_miss_is.m"},
1023 {"cache_prob_is", "cache", {Arith::Double, Arith::Real},
1024 "matlab/src/api/cache/cache_prob_is.m"},
1025 {"map_acfc", "mam", {Arith::Double, Arith::Real},
1026 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1027 {"map_cdf", "mam", {Arith::Double, Arith::Real},
1028 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1029 {"map_count_mean", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1030 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1031 {"map_count_moment", "mam", {Arith::Double, Arith::Real},
1032 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1033 {"map_count_var", "mam", {Arith::Double, Arith::Real},
1034 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1035 {"map_pdf", "mam", {Arith::Double, Arith::Real},
1036 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1037 {"map_varcount", "mam", {Arith::Double, Arith::Real},
1038 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1039 {"mmap_count_var", "mam", {Arith::Double, Arith::Real},
1040 "matlab/lib/kpctoolbox/map/, matlab/lib/m3a/"},
1041 {"cache_lrum_map_levelstats", "cache", {Arith::Double, Arith::Real},
1042 "matlab/src/api/cache/"},
1043 {"cache_t_lrum_map", "cache", {Arith::Double, Arith::Real},
1044 "matlab/src/api/cache/"},
1045 {"cache_ttl_lrua", "cache", {Arith::Double, Arith::Real},
1046 "matlab/src/api/cache/"},
1047 {"cache_ttl_lrum_map", "cache", {Arith::Double, Arith::Real},
1048 "matlab/src/api/cache/"},
1049 {"pfqn_ab_amva", "pfqn", {Arith::Double, Arith::Real},
1050 "matlab/src/api/pfqn/"},
1051 {"pfqn_cftp", "pfqn", {Arith::Double, Arith::Real},
1052 "matlab/src/api/pfqn/"},
1053 {"pfqn_is", "pfqn", {Arith::Double, Arith::Real},
1054 "matlab/src/api/pfqn/"},
1055 {"pfqn_ld_is", "pfqn", {Arith::Double, Arith::Real},
1056 "matlab/src/api/pfqn/"},
1057 {"pfqn_ls", "pfqn", {Arith::Double, Arith::Real},
1058 "matlab/src/api/pfqn/"},
1059 {"pfqn_mcmc", "pfqn", {Arith::Double, Arith::Real},
1060 "matlab/src/api/pfqn/"},
1061 {"pfqn_mci", "pfqn", {Arith::Double, Arith::Real},
1062 "matlab/src/api/pfqn/"},
1063 {"pfqn_mmsample2", "pfqn", {Arith::Double, Arith::Real},
1064 "matlab/src/api/pfqn/"},
1065 {"pfqn_oi_is", "pfqn", {Arith::Double, Arith::Real},
1066 "matlab/src/api/pfqn/"},
1067 {"pfqn_pas_is", "pfqn", {Arith::Double, Arith::Real},
1068 "matlab/src/api/pfqn/"},
1069 {"pfqn_rd", "pfqn", {Arith::Double, Arith::Real},
1070 "matlab/src/api/pfqn/"},
1071 {"pfqn_rgf", "pfqn", {Arith::Double, Arith::Real},
1072 "matlab/src/api/pfqn/pfqn_rgf.m"},
1073 // Multiclass RGF: the residue elimination is carried in the log domain,
1074 // so it is gated on transcendental arithmetic exactly as pfqn_rgf is.
1075 {"pfqn_rgfmc", "pfqn", {Arith::Double, Arith::Real},
1076 "matlab/src/api/pfqn/pfqn_rgfmc.m"},
1077 {"pfqn_schmidt_ext", "pfqn", {Arith::Double, Arith::Real},
1078 "matlab/src/api/pfqn/"},
1079 {"qsys_mapg1k", "qsys", {Arith::Double, Arith::Real},
1080 "matlab/src/api/qsys/qsys_mapg1k.m"},
1081 {"qsys_mmapg1k", "qsys", {Arith::Double, Arith::Real},
1082 "matlab/src/api/qsys/qsys_mmapg1k.m"},
1083 {"qsys_mapg1k_perflow", "qsys", {Arith::Double, Arith::Real},
1084 "matlab/src/api/qsys/qsys_mapg1k_perflow.m"},
1085 {"qsys_ldps_workload", "qsys", {Arith::Double, Arith::Real},
1086 "matlab/src/api/qsys/qsys_ldps_workload.m"},
1087 {"mfq_sojourn", "mam", {Arith::Double, Arith::Real},
1088 "matlab/src/api/mam/mfq_sojourn.m"},
1089 {"mfq_fluflu_sojourn", "mam", {Arith::Double, Arith::Real},
1090 "matlab/src/api/mam/mfq_fluflu_sojourn.m"},
1091 {"mfq_ld_mean", "mam", {Arith::Double, Arith::Real},
1092 "matlab/src/api/mam/mfq_ld_mean.m"},
1093 // Real-capable-despite-LAPACK rationale: see _kb/14-cpp-multiprecision.md
1094 {"mfq_ld_distr", "mam", {Arith::Double, Arith::Real},
1095 "matlab/src/api/mam/mfq_ld_distr.m"},
1096 // Double-only rationale: see _kb/14-cpp-multiprecision.md
1097 {"mfq_multiregime", "mam", {Arith::Double},
1098 "matlab/src/api/mam/mfq_multiregime.m"},
1099 {"mfq_prio_queue", "mam", {Arith::Double},
1100 "matlab/src/api/mam/mfq_prio_queue.m"},
1101 {"qsys_mapg1", "qsys", {Arith::Double, Arith::Real},
1102 "matlab/src/api/qsys/qsys_mapg1.m"},
1103 {"qsys_mapphc", "qsys", {Arith::Double, Arith::Real},
1104 "matlab/src/api/qsys/qsys_mapphc.m"},
1105 // Registered but NOT dispatched, for the same reason as qsys_mmapg1k:
1106 // its per-type service laws are Distrib objects, general by design and
1107 // reachable through a transform, so they have no named-JSON form.
1108 {"qsys_mmapgk1", "qsys", {Arith::Double, Arith::Real},
1109 "matlab/src/api/qsys/qsys_mmapgk1.m"},
1110 {"qsys_bmapphnn_retrial", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1111 "matlab/src/api/qsys/qsys_bmapphnn_retrial.m"},
1112 {"pfqn_comom", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1113 "matlab/src/api/pfqn/pfqn_comom.m"},
1114 {"pfqn_comomrm_orig", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1115 "matlab/src/api/pfqn/pfqn_comomrm.m"},
1116 {"pfqn_procomom", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1117 "matlab/src/api/pfqn/pfqn_procomom.m"},
1118 // api/sim: EXACT IS ABSENT FROM EVERY ROW BY CONSTRUCTION, not by
1119 // omission. The delivered numbers are a t quantile times a square root,
1120 // and the STS areas carry the irrational weight sqrt(12)/(m sqrt(m)), so
1121 // an exact field has nothing to preserve; the family refuses it with a
1122 // static_assert and this gate reports that before the call.
1123 {"sim_vonneumann", "sim", {Arith::Double, Arith::Real},
1124 "matlab/src/api/sim/sim_vonneumann.m"},
1125 {"sim_shapirowilk", "sim", {Arith::Double, Arith::Real},
1126 "matlab/src/api/sim/sim_shapirowilk.m"},
1127 {"sim_sts_quantile_areas", "sim", {Arith::Double, Arith::Real},
1128 "matlab/src/api/sim/sim_sts_quantile_areas.m"},
1129 {"sim_fquest", "sim", {Arith::Double, Arith::Real},
1130 "matlab/src/api/sim/sim_fquest.m"},
1131 {"sim_firquest", "sim", {Arith::Double, Arith::Real},
1132 "matlab/src/api/sim/sim_firquest.m"},
1133 // api/sn and api/lqn: REGISTERED, NEVER DISPATCHED. Every one of these
1134 // takes a NetworkStruct or a LqnStruct, not matrices, so none has a
1135 // named-JSON-argument form and `api_invoke` refuses each by name, as it
1136 // already does for sn_get_product_form_params. They are listed anyway
1137 // because this registry is the port's coverage manifest -- it is what
1138 // --list-api prints -- and a ported function missing from it reads as
1139 // not ported at all, which is the more damaging of the two errors.
1140 // Reach a model-level answer through `-s <solver> -a <analysis>`.
1141 {"lqn_boxbounds", "lqn", {Arith::Double, Arith::Exact, Arith::Real},
1142 "matlab/src/api/lqn/lqn_boxbounds.m"},
1143 // Method of layers. No exact arm: static_asserts on has_transcendental.
1144 {"lqn_mol", "lqn", {Arith::Double, Arith::Real},
1145 "matlab/src/api/lqn/lqn_mol.m"},
1146 {"sn_compat_rate", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1147 "matlab/src/api/sn/sn_compat_rate.m"},
1148 {"sn_has_bursty_arrival", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1149 "matlab/src/api/sn/sn_has_bursty_arrival.m"},
1150 {"sn_has_classdep_routing", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1151 "matlab/src/api/sn/sn_has_classdep_routing.m"},
1152 {"sn_join_droprate", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1153 "matlab/src/api/fj/sn_join_droprate.m"},
1154 {"sn_is_phasetype", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1155 "matlab/src/api/sn/sn_is_phasetype.m"},
1156 {"sn_map_modulation", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1157 "matlab/src/api/sn/sn_map_modulation.m"},
1158 {"sn_get_node_arvr_from_tput", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1159 "matlab/src/api/sn/sn_get_node_arvr_from_tput.m"},
1160 {"sn_get_node_tput_from_tput", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1161 "matlab/src/api/sn/sn_get_node_arvr_from_tput.m"},
1162 {"sn_get_buffer_size", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1163 "matlab/src/api/sn/sn_get_buffer_size.m"},
1164 {"sn_pn_firing_rates", "sn", {Arith::Double},
1165 "matlab/src/api/sn/sn_pn_firing_rates.m"},
1166 {"sn_pn_avg_rates", "sn", {Arith::Double},
1167 "matlab/src/api/sn/sn_pn_firing_rates.m"},
1168 {"sn_has_dps", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1169 "line/api/sn/sn_predicates.h"},
1170 {"sn_has_dps_prio", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1171 "line/api/sn/sn_predicates.h"},
1172 {"sn_has_fcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1173 "line/api/sn/sn_predicates.h"},
1174 {"sn_has_gps", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1175 "line/api/sn/sn_predicates.h"},
1176 {"sn_has_gps_prio", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1177 "line/api/sn/sn_predicates.h"},
1178 {"sn_has_hol", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1179 "line/api/sn/sn_predicates.h"},
1180 {"sn_has_inf", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1181 "line/api/sn/sn_predicates.h"},
1182 {"sn_has_lcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1183 "line/api/sn/sn_predicates.h"},
1184 {"sn_has_lcfs_pi", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1185 "line/api/sn/sn_predicates.h"},
1186 {"sn_has_lcfs_pr", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1187 "line/api/sn/sn_predicates.h"},
1188 {"sn_has_lept", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1189 "line/api/sn/sn_predicates.h"},
1190 {"sn_has_ljf", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1191 "line/api/sn/sn_predicates.h"},
1192 {"sn_has_lps", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1193 "line/api/sn/sn_predicates.h"},
1194 {"sn_has_ps", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1195 "line/api/sn/sn_predicates.h"},
1196 {"sn_has_ps_prio", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1197 "line/api/sn/sn_predicates.h"},
1198 {"sn_has_sept", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1199 "line/api/sn/sn_predicates.h"},
1200 {"sn_has_setf", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1201 "line/api/sn/sn_predicates.h"},
1202 {"sn_has_siro", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1203 "line/api/sn/sn_predicates.h"},
1204 {"sn_has_sjf", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1205 "line/api/sn/sn_predicates.h"},
1206 {"sn_has_homogeneous_scheduling", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1207 "line/api/sn/sn_predicates.h"},
1208 {"sn_has_open_classes", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1209 "line/api/sn/sn_predicates.h"},
1210 {"sn_has_closed_classes", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1211 "line/api/sn/sn_predicates.h"},
1212 {"sn_has_multiple_closed_classes", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1213 "line/api/sn/sn_predicates.h"},
1214 {"sn_has_mixed_classes", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1215 "line/api/sn/sn_predicates.h"},
1216 {"sn_has_multi_chain", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1217 "line/api/sn/sn_predicates.h"},
1218 {"sn_has_single_chain", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1219 "line/api/sn/sn_predicates.h"},
1220 {"sn_has_multi_class", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1221 "line/api/sn/sn_predicates.h"},
1222 {"sn_has_single_class", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1223 "line/api/sn/sn_predicates.h"},
1224 {"sn_has_class_switching", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1225 "line/api/sn/sn_predicates.h"},
1226 {"sn_is_open_model", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1227 "line/api/sn/sn_predicates.h"},
1228 {"sn_is_closed_model", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1229 "line/api/sn/sn_predicates.h"},
1230 {"sn_is_mixed_model", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1231 "line/api/sn/sn_predicates.h"},
1232 {"sn_has_priorities", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1233 "line/api/sn/sn_predicates.h"},
1234 {"sn_has_multi_server", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1235 "line/api/sn/sn_predicates.h"},
1236 {"sn_has_fractional_populations", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1237 "line/api/sn/sn_predicates.h"},
1238 {"sn_has_load_dependence", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1239 "line/api/sn/sn_predicates.h"},
1240 {"sn_has_fork_join", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1241 "line/api/sn/sn_predicates.h"},
1242 {"sn_has_sd_routing", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1243 "line/api/sn/sn_predicates.h"},
1244 {"sn_has_multi_class_fcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1245 "line/api/sn/sn_predicates.h"},
1246 {"sn_has_multi_class_heter_fcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1247 "line/api/sn/sn_predicates.h"},
1248 {"sn_has_multi_class_heter_exp_fcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1249 "line/api/sn/sn_predicates.h"},
1250 {"sn_sched_is_product_form", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1251 "line/api/sn/sn_predicates.h"},
1252 {"sn_has_blocking", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1253 "line/api/sn/sn_predicates.h"},
1254 {"sn_has_product_form", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1255 "line/api/sn/sn_predicates.h"},
1256 {"sn_has_product_form_not_het_fcfs", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1257 "line/api/sn/sn_predicates.h"},
1258 {"sn_is_population_model", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1259 "line/api/sn/sn_predicates.h"},
1260 {"sn_is_bas_model", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1261 "line/api/sn/sn_predicates.h"},
1262 {"sn_is_mm1k_loss", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1263 "line/api/sn/sn_predicates.h"},
1264 {"sn_print", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1265 "matlab/src/api/sn/sn_print.m"},
1266 {"sn_print_routing_matrix", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1267 "matlab/src/api/sn/sn_print_routing_matrix.m"},
1268 {"sn_region_members", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1269 "matlab/src/api/sn/sn_region_members.m"},
1270 {"sn_region_member_list", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1271 "matlab/src/api/sn/sn_region_members.m"},
1272 {"sn_rt_stations", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1273 "matlab/src/api/sn/sn_rt_stations.m"},
1274 {"sn_rtnodes_to_rtorig", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1275 "matlab/src/api/sn/sn_rtnodes_to_rtorig.m"},
1276 {"sn_has_schedule", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1277 "matlab/src/api/sn/sn_schedule_nominal.m"},
1278 {"sn_schedule_nominal", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1279 "matlab/src/api/sn/sn_schedule_nominal.m"},
1280 {"sn_refresh_process_fields", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1281 "line/api/sn/sn_setters.h"},
1282 {"sn_set_service", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1283 "line/api/sn/sn_setters.h"},
1284 {"sn_set_arrival", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1285 "line/api/sn/sn_setters.h"},
1286 {"sn_set_service_batch", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1287 "line/api/sn/sn_setters.h"},
1288 {"sn_set_population", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1289 "line/api/sn/sn_setters.h"},
1290 {"sn_set_servers", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1291 "line/api/sn/sn_setters.h"},
1292 {"sn_set_priority", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1293 "line/api/sn/sn_setters.h"},
1294 {"sn_set_fork_fanout", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1295 "line/api/sn/sn_setters.h"},
1296 {"sn_set_routing", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1297 "line/api/sn/sn_setters.h"},
1298 {"sn_set_routing_prob", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1299 "line/api/sn/sn_setters.h"},
1300 {"sn_get_state_aggr", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1301 "matlab/src/api/sn/sn_get_state_aggr.m"},
1302 {"sn_state_counts_valid", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1303 "matlab/src/api/sn/sn_get_state_aggr.m"},
1304 {"sn_is_state_valid", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1305 "matlab/src/api/sn/sn_get_state_aggr.m"},
1306 {"ctmc_memory_gate", "mc", {Arith::Double, Arith::Real},
1307 "matlab/src/api/mc/ctmc_memory_gate.m"},
1308 {"ctmc_state_space_logsize", "mc", {Arith::Double, Arith::Real},
1309 "matlab/src/api/mc/ctmc_state_space_logsize.m"},
1310 // Ported and reachable from the library; --api exposure follows separately.
1311 // Arith::Exact is omitted where the algorithm needs transcendentals.
1312 {"fes_validate", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1313 "matlab/src/api/fes/fes_validate.m"},
1314 {"fes_compute_metrics", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1315 "matlab/src/api/fes/fes_compute_metrics.m"},
1316 {"fj_mg1_respt_moments", "fj", {Arith::Double, Arith::Exact, Arith::Real},
1317 "matlab/src/api/fj/fj_mg1_respt_moments.m"},
1318 {"fj_tail_forktail", "fj", {Arith::Double, Arith::Real},
1319 "matlab/src/api/fj/fj_tail_forktail.m"},
1320 {"fj_tail_ordstat", "fj", {Arith::Double, Arith::Real},
1321 "matlab/src/api/fj/fj_tail_ordstat.m"},
1322 {"infer_lqn", "infer", {Arith::Double, Arith::Exact, Arith::Real},
1323 "matlab/src/api/infer/infer_lqn.m"},
1324 {"infer_lqn_setparams", "infer", {Arith::Double, Arith::Exact, Arith::Real},
1325 "matlab/src/api/infer/infer_lqn_setparams.m"},
1326 // Arith::Exact omitted: the variational updates are exp/log/lgamma.
1327 {"infer_variational", "infer", {Arith::Double, Arith::Real},
1328 "matlab/src/api/infer/infer_variational.m"},
1329 {"ctmc_isfeasible", "mc", {Arith::Double, Arith::Exact, Arith::Real},
1330 "matlab/src/api/mc/ctmc_isfeasible.m"},
1331 {"ctmc_hitting_time", "mc", {Arith::Double, Arith::Real},
1332 "matlab/src/api/mc/ctmc_hitting_time.m"},
1333 {"ctmc_passage_lst", "mc", {Arith::Double, Arith::Real},
1334 "matlab/src/api/mc/ctmc_passage_lst.m"},
1335 {"ctmc_passage_moments", "mc", {Arith::Double, Arith::Real},
1336 "matlab/src/api/mc/ctmc_passage_moments.m"},
1337 {"ctmc_passage_ph", "mc", {Arith::Double, Arith::Exact, Arith::Real},
1338 "matlab/src/api/mc/ctmc_passage_ph.m"},
1339 {"ctmc_passage_time", "mc", {Arith::Double, Arith::Real},
1340 "matlab/src/api/mc/ctmc_passage_time.m"},
1341 {"dtmc_hitting_time", "mc", {Arith::Double, Arith::Exact, Arith::Real},
1342 "matlab/src/api/mc/dtmc_hitting_time.m"},
1343 {"smp_passage_lst", "mc", {Arith::Double, Arith::Real},
1344 "matlab/src/api/mc/smp_passage_lst.m"},
1345 {"smp_passage_moments", "mc", {Arith::Double, Arith::Exact, Arith::Real},
1346 "matlab/src/api/mc/smp_passage_moments.m"},
1347 {"smp_passage_time", "mc", {Arith::Double, Arith::Real},
1348 "matlab/src/api/mc/smp_passage_time.m"},
1349 {"dtmc_transient", "mc", {Arith::Double, Arith::Exact, Arith::Real},
1350 "matlab/src/api/mc/dtmc_transient.m"},
1351 {"moment_cumulant_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1352 "matlab/src/api/moment/moment_cumulant_from_raw.m"},
1353 {"moment_factcumulant_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1354 "matlab/src/api/moment/moment_factcumulant_from_factorial.m"},
1355 {"moment_factorial_from_factcumulant", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1356 "matlab/src/api/moment/moment_factorial_from_factcumulant.m"},
1357 {"moment_raw_from_cumulant", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1358 "matlab/src/api/moment/moment_raw_from_cumulant.m"},
1359 {"moment_housematrix", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1360 "matlab/src/api/moment/moment_housematrix.m"},
1361 {"moment_joint_aggregate", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1362 "matlab/src/api/moment/moment_joint_aggregate.m"},
1363 {"moment_joint_binomial_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1364 "matlab/src/api/moment/moment_joint_binomial_from_factorial.m"},
1365 {"moment_joint_binomial_from_negbinomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1366 "matlab/src/api/moment/moment_joint_binomial_from_negbinomial.m"},
1367 {"moment_joint_binomial_from_tail", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1368 "matlab/src/api/moment/moment_joint_binomial_from_tail.m"},
1369 {"moment_joint_central_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1370 "matlab/src/api/moment/moment_joint_central_from_raw.m"},
1371 {"moment_joint_central_from_raw_mean", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1372 "matlab/src/api/moment/moment_joint_central_from_raw_mean.m"},
1373 {"moment_joint_central_from_tail", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1374 "matlab/src/api/moment/moment_joint_central_from_tail.m"},
1375 {"moment_joint_cumulant_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1376 "matlab/src/api/moment/moment_joint_cumulant_from_raw.m"},
1377 {"moment_joint_factcumulant_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1378 "matlab/src/api/moment/moment_joint_factcumulant_from_factorial.m"},
1379 {"moment_joint_factorial_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1380 "matlab/src/api/moment/moment_joint_factorial_from_binomial.m"},
1381 {"moment_joint_factorial_from_factcumulant", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1382 "matlab/src/api/moment/moment_joint_factorial_from_factcumulant.m"},
1383 {"moment_joint_factorial_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1384 "matlab/src/api/moment/moment_joint_factorial_from_raw.m"},
1385 {"moment_joint_factorial_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1386 "matlab/src/api/moment/moment_joint_factorial_from_upfactorial.m"},
1387 {"moment_joint_marking", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1388 "matlab/src/api/moment/moment_joint_marking.m"},
1389 {"moment_joint_negbinomial_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1390 "matlab/src/api/moment/moment_joint_negbinomial_from_binomial.m"},
1391 {"moment_joint_negbinomial_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1392 "matlab/src/api/moment/moment_joint_negbinomial_from_upfactorial.m"},
1393 {"moment_joint_raw_from_central", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1394 "matlab/src/api/moment/moment_joint_raw_from_central.m"},
1395 {"moment_joint_raw_from_cumulant", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1396 "matlab/src/api/moment/moment_joint_raw_from_cumulant.m"},
1397 {"moment_joint_raw_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1398 "matlab/src/api/moment/moment_joint_raw_from_factorial.m"},
1399 {"moment_joint_raw_from_upfactorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1400 "matlab/src/api/moment/moment_joint_raw_from_upfactorial.m"},
1401 {"moment_joint_tail_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1402 "matlab/src/api/moment/moment_joint_tail_from_binomial.m"},
1403 {"moment_joint_upfactorial_from_factorial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1404 "matlab/src/api/moment/moment_joint_upfactorial_from_factorial.m"},
1405 {"moment_joint_upfactorial_from_negbinomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1406 "matlab/src/api/moment/moment_joint_upfactorial_from_negbinomial.m"},
1407 {"moment_joint_upfactorial_from_raw", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1408 "matlab/src/api/moment/moment_joint_upfactorial_from_raw.m"},
1409 {"moment_binomial_from_tail", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1410 "matlab/src/api/moment/moment_binomial_from_tail.m"},
1411 {"moment_tail_from_binomial", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1412 "matlab/src/api/moment/moment_tail_from_binomial.m"},
1413 {"moment_jointtrans", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1414 "matlab/src/api/moment/moment_jointtrans.m"},
1415 {"moment_tensorsize", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1416 "matlab/src/api/moment/moment_tensorsize.m"},
1417 {"moment_tensortrans", "moment", {Arith::Double, Arith::Exact, Arith::Real},
1418 "matlab/src/api/moment/moment_tensortrans.m"},
1419 {"pfqn_cub_evals", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1420 "matlab/src/api/pfqn/pfqn_cub_evals.m"},
1421 {"pfqn_dnc", "pfqn", {Arith::Double, Arith::Real},
1422 "matlab/src/api/pfqn/pfqn_dnc.m"},
1423 {"pfqn_hst", "pfqn", {Arith::Double, Arith::Real},
1424 "matlab/src/api/pfqn/pfqn_hst.m"},
1425 {"pfqn_jdfun", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1426 "matlab/src/api/pfqn/pfqn_jdfun.m"},
1427 {"pfqn_nintmva", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1428 "matlab/src/api/pfqn/pfqn_nintmva.m"},
1429 {"pfqn_qlen_joint_moments", "pfqn", {Arith::Double, Arith::Real},
1430 "matlab/src/api/pfqn/pfqn_qlen_joint_moments.m"},
1431 {"pfqn_respt_ps_moments", "pfqn", {Arith::Double, Arith::Real},
1432 "matlab/src/api/pfqn/pfqn_respt_ps_moments.m"},
1433 {"qsys_hh1_lindley", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1434 "matlab/src/api/qsys/qsys_hh1_lindley.m"},
1435 {"qsys_lindley_moment", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1436 "matlab/src/api/qsys/qsys_lindley_moment.m"},
1437 {"qsys_mm1_lindley", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1438 "matlab/src/api/qsys/qsys_mm1_lindley.m"},
1439 {"qsys_mm1_ps", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1440 "matlab/src/api/qsys/qsys_mm1_ps.m"},
1441 {"qsys_mm1_tandem_lindley", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1442 "matlab/src/api/qsys/qsys_mm1_tandem_lindley.m"},
1443 {"qsys_tandem_lindley", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1444 "matlab/src/api/qsys/qsys_tandem_lindley.m"},
1445 {"qsys_tandem_ub_ciucu", "qsys", {Arith::Double, Arith::Real},
1446 "matlab/src/api/qsys/qsys_tandem_ub_ciucu.m"},
1447 // Direct same-name ports that predated their coverage metadata. These
1448 // entries close the active matlab/src/api <-> C++ header registry audit;
1449 // MDD itself is a class and is deliberately not an API function entry.
1450 {"aoi_dist2ph", "aoi", {Arith::Double, Arith::Exact, Arith::Real},
1451 "matlab/src/api/aoi/aoi_dist2ph.m"},
1452 {"cache_retrieval_inputs", "cache", {Arith::Double, Arith::Exact, Arith::Real},
1453 "matlab/src/api/retrieval/cache_retrieval_inputs.m"},
1454 {"da_cacheqn", "da", {Arith::Double, Arith::Real},
1455 "matlab/src/api/da/da_cacheqn.m"},
1456 {"fes_build_isolated", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1457 "matlab/src/api/fes/fes_build_isolated.m"},
1458 {"fes_map_interdeparture", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1459 "matlab/src/api/fes/fes_map_interdeparture.m"},
1460 {"fes_map_interp", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1461 "matlab/src/api/fes/fes_map_interp.m"},
1462 {"fes_map_levels", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1463 "matlab/src/api/fes/fes_map_levels.m"},
1464 {"fes_map_moments", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1465 "matlab/src/api/fes/fes_map_moments.m"},
1466 {"fes_map_solve", "fes", {Arith::Double, Arith::Exact, Arith::Real},
1467 "matlab/src/api/fes/fes_map_solve.m"},
1468 {"fj_branch_members", "fj", {Arith::Double, Arith::Exact, Arith::Real},
1469 "matlab/src/api/fj/fj_branch_members.m"},
1470 {"fj_dist2fj", "fj", {Arith::Double, Arith::Exact, Arith::Real},
1471 "matlab/src/api/fj/fj_dist2fj.m"},
1472 {"ldqbd", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1473 "matlab/src/api/mam/ldqbd.m"},
1474 {"ldqbd_mphc", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1475 "matlab/src/api/mam/ldqbd_mphc.m"},
1476 {"ph_multisets", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1477 "matlab/src/api/mam/ph_multisets.m"},
1478 {"mdd_closedqn", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1479 "matlab/src/api/mdd/mdd_closedqn.m"},
1480 {"mdd_descriptor", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1481 "matlab/src/api/mdd/mdd_descriptor.m"},
1482 {"mdd_mcd", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1483 "matlab/src/api/mdd/mdd_mcd.m"},
1484 {"mdd_ps", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1485 "matlab/src/api/mdd/mdd_ps.m"},
1486 {"mdd_reachset", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1487 "matlab/src/api/mdd/mdd_reachset.m"},
1488 {"mdd_rec", "mdd", {Arith::Double, Arith::Exact, Arith::Real},
1489 "matlab/src/api/mdd/mdd_rec.m"},
1490 {"mmdp_isfeasible", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1491 "matlab/src/api/mam/mmdp_isfeasible.m"},
1492 {"npfqn_traffic_merge_cs", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
1493 "matlab/src/api/npfqn/npfqn_traffic_merge_cs.m"},
1494 {"npfqn_traffic_split_rr", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
1495 "matlab/src/api/npfqn/npfqn_traffic_split_rr.m"},
1496 {"pas_placement", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1497 "matlab/src/api/pfqn/pas_placement.m"},
1498 {"pas_swap2order", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1499 "matlab/src/api/pfqn/pas_swap2order.m"},
1500 {"pfqn_chow", "pfqn", {Arith::Double, Arith::Real},
1501 "matlab/src/api/pfqn/pfqn_chow.m"},
1502 {"pfqn_clust", "pfqn", {Arith::Double, Arith::Real},
1503 "matlab/src/api/pfqn/pfqn_clust.m"},
1504 {"pfqn_dmlin", "pfqn", {Arith::Double, Arith::Real},
1505 "matlab/src/api/pfqn/pfqn_dmlin.m"},
1506 {"pfqn_gerasimov", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1507 "matlab/src/api/pfqn/pfqn_gerasimov.m"},
1508 {"pfqn_jointmarg", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1509 "matlab/src/api/pfqn/pfqn_jointmarg.m"},
1510 {"pfqn_lcp", "pfqn", {Arith::Double, Arith::Real},
1511 "matlab/src/api/pfqn/pfqn_lcp.m"},
1512 {"pfqn_looping", "pfqn", {Arith::Double, Arith::Real},
1513 "matlab/src/api/pfqn/pfqn_looping.m"},
1514 {"pfqn_momlin", "pfqn", {Arith::Double, Arith::Real},
1515 "matlab/src/api/pfqn/pfqn_momlin.m"},
1516 {"pfqn_mva_interval", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1517 "matlab/src/api/pfqn/pfqn_mva_interval.m"},
1518 {"pfqn_mvac", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1519 "matlab/src/api/pfqn/pfqn_mvac.m"},
1520 {"pfqn_mvacld", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1521 "matlab/src/api/pfqn/pfqn_mvacld.m"},
1522 {"pfqn_mvajd", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1523 "matlab/src/api/pfqn/pfqn_mvajd.m"},
1524 {"pfqn_mvaoi", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1525 "matlab/src/api/pfqn/pfqn_mvaoi.m"},
1526 {"pfqn_mvaoi_marg", "pfqn", {Arith::Double, Arith::Real},
1527 "matlab/src/api/pfqn/pfqn_mvaoi_marg.m"},
1528 {"pfqn_ncjd", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1529 "matlab/src/api/pfqn/pfqn_ncjd.m"},
1530 {"pfqn_pam", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1531 "matlab/src/api/pfqn/pfqn_pam.m"},
1532 {"pfqn_scat", "pfqn", {Arith::Double, Arith::Real},
1533 "matlab/src/api/pfqn/pfqn_scat.m"},
1534 {"pfqn_sdr", "pfqn", {Arith::Double, Arith::Exact, Arith::Real},
1535 "matlab/src/api/pfqn/pfqn_sdr.m"},
1536 {"qbd_bmapbmap1", "mam", {Arith::Double, Arith::Exact, Arith::Real},
1537 "matlab/src/api/mam/qbd_bmapbmap1.m"},
1538 {"sn_fj_visits_spn", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1539 "matlab/src/api/sn/sn_fj_visits_spn.m"},
1540 {"sn_gd_balance", "sn", {Arith::Double, Arith::Real},
1541 "matlab/src/api/sn/sn_gd_balance.m"},
1542 {"sn_is_discrete_time", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1543 "matlab/src/api/sn/sn_is_discrete_time.m"},
1544 {"spn_conv", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1545 "matlab/src/api/spn/spn_conv.m"},
1546 // The LP moment relaxation. T is carried only by the sn it reads: the
1547 // brackets themselves are doubles, the simplex being a double one.
1548 {"spn_lpbnd", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1549 "matlab/src/api/spn/spn_lpbnd.m"},
1550 {"spn_mdd", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1551 "matlab/src/api/spn/spn_mdd.m"},
1552 {"spn_metrics", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1553 "matlab/src/api/spn/spn_metrics.m"},
1554 // NO EXACT ARM, and refused by name rather than silently detoured through
1555 // double: y is the exponential of a least-squares solution of the
1556 // log-complex-balance equations, so deriving it needs a transcendental
1557 // field. What CONSUMES the g_l afterwards stays rational.
1558 {"spn_pf", "spn", {Arith::Double, Arith::Real},
1559 "matlab/src/api/spn/spn_pf.m"},
1560 {"spn_rec_enabled", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1561 "matlab/src/api/spn/spn_rec_enabled.m"},
1562 {"spn_sinvariants", "spn", {Arith::Double, Arith::Exact, Arith::Real},
1563 "matlab/src/api/spn/spn_sinvariants.m"},
1564 {"infer_fmlps", "infer", {Arith::Double},
1565 "matlab/src/api/infer/infer_fmlps.m"},
1566 {"infer_minps_setup", "infer", {Arith::Double},
1567 "matlab/src/api/infer/infer_minps_setup.m"},
1568 {"infer_mlps", "infer", {Arith::Double},
1569 "matlab/src/api/infer/infer_mlps.m"},
1570 {"laplace_invert", "lti", {Arith::Double},
1571 "matlab/src/api/lti/laplace_invert.m"},
1572 {"pfqn_busyp", "pfqn", {Arith::Double},
1573 "matlab/src/api/pfqn/pfqn_busyp.m"},
1574 {"pfqn_busyp_clw", "pfqn", {Arith::Double},
1575 "matlab/src/api/pfqn/pfqn_busyp_clw.m"},
1576 {"pfqn_busyp_multiclass", "pfqn", {Arith::Double},
1577 "matlab/src/api/pfqn/pfqn_busyp_multiclass.m"},
1578 {"qsys_mg1_ps", "qsys", {Arith::Double},
1579 "matlab/src/api/qsys/qsys_mg1_ps.m"},
1580 {"sim_quest_options", "sim", {Arith::Double},
1581 "matlab/src/api/sim/sim_quest_options.m"},
1582 {"ctmc_simulate", "mc", {Arith::Double, Arith::Real},
1583 "matlab/src/api/mc/ctmc_simulate.m"},
1584 {"da_cacheqn_retrieval", "da", {Arith::Double, Arith::Real},
1585 "matlab/src/api/da/da_cacheqn_retrieval.m"},
1586 {"fes_map_aggregate", "fes", {Arith::Double, Arith::Real},
1587 "matlab/src/api/fes/fes_map_aggregate.m"},
1588 {"map2_fit_idc", "mam", {Arith::Double, Arith::Real},
1589 "matlab/src/api/mam/map2_fit_idc.m"},
1590 {"me_gegec_mql", "me", {Arith::Double, Arith::Real},
1591 "matlab/src/api/me/me_gegec_mql.m"},
1592 {"me_gegecn", "me", {Arith::Double, Arith::Real},
1593 "matlab/src/api/me/me_gegecn.m"},
1594 {"me_gegecn_pb", "me", {Arith::Double, Arith::Real},
1595 "matlab/src/api/me/me_gegecn_pb.m"},
1596 {"me_oqn_blk", "me", {Arith::Double, Arith::Real},
1597 "matlab/src/api/me/me_oqn_blk.m"},
1598 {"mfq_ld_solve", "mam", {Arith::Double, Arith::Real},
1599 "matlab/src/api/mam/mfq_ld_solve.m"},
1600 {"mmap_compress", "mam", {Arith::Double, Arith::Real},
1601 "matlab/src/api/mam/mmap_compress.m"},
1602 {"npfqn_traffic_merge", "npfqn", {Arith::Double, Arith::Real},
1603 "matlab/src/api/npfqn/npfqn_traffic_merge.m"},
1604 {"pfqn_bk", "pfqn", {Arith::Double, Arith::Real},
1605 "matlab/src/api/pfqn/pfqn_bk.m"},
1606 {"pfqn_clw", "pfqn", {Arith::Double, Arith::Real},
1607 "matlab/src/api/pfqn/pfqn_clw.m"},
1608 {"pfqn_clwjd", "pfqn", {Arith::Double, Arith::Real},
1609 "matlab/src/api/pfqn/pfqn_clwjd.m"},
1610 {"pfqn_clwoi", "pfqn", {Arith::Double, Arith::Real},
1611 "matlab/src/api/pfqn/pfqn_clwoi.m"},
1612 {"pfqn_harel_bounds", "pfqn", {Arith::Double, Arith::Real},
1613 "matlab/src/api/pfqn/pfqn_harel_bounds.m"},
1614 {"pfqn_tay", "pfqn", {Arith::Double, Arith::Real},
1615 "matlab/src/api/pfqn/pfqn_tay.m"},
1616 {"pfqn_xia", "pfqn", {Arith::Double, Arith::Real},
1617 "matlab/src/api/pfqn/pfqn_xia.m"},
1618 {"qbd_rap", "mam", {Arith::Double, Arith::Real},
1619 "matlab/src/api/mam/qbd_rap.m"},
1620 {"qbd_setupdelayoff", "mam", {Arith::Double, Arith::Real},
1621 "matlab/src/api/mam/qbd_setupdelayoff.m"},
1622 {"qbd_setupdelayoff_closed", "mam", {Arith::Double, Arith::Real},
1623 "matlab/src/api/mam/qbd_setupdelayoff_closed.m"},
1624 {"qsys_bmapm1", "qsys", {Arith::Double, Arith::Real},
1625 "matlab/src/api/qsys/qsys_bmapm1.m"},
1626 {"sim_quest_heuristic_ci", "sim", {Arith::Double, Arith::Real},
1627 "matlab/src/api/sim/sim_quest_heuristic_ci.m"},
1628 {"sn_nonmarkov_toph", "sn", {Arith::Double, Arith::Real},
1629 "matlab/src/api/sn/sn_nonmarkov_toph.m"},
1630 {"hyperexp_fit_longtail", "mam", {Arith::Double, Arith::Real},
1631 "matlab/src/api/mam/hyperexp_fit_longtail.m"},
1632 {"infer_nhpp_ks", "infer", {Arith::Double, Arith::Real},
1633 "matlab/src/api/infer/infer_nhpp_ks.m"},
1634 // Only a linear solve, so this instantiates at Rational too.
1635 {"npfqn_feedback_elim", "npfqn", {Arith::Double, Arith::Exact, Arith::Real},
1636 "matlab/src/api/npfqn/npfqn_feedback_elim.m"},
1637 {"qsys_ggingi_tga", "qsys", {Arith::Double, Arith::Real},
1638 "matlab/src/api/qsys/qsys_ggingi_tga.m"},
1639 {"qsys_ggisgi_fluid", "qsys", {Arith::Double, Arith::Real},
1640 "matlab/src/api/qsys/qsys_ggisgi_fluid.m"},
1641 {"qsys_ggnm_diffusion", "qsys", {Arith::Double, Arith::Real},
1642 "matlab/src/api/qsys/qsys_ggnm_diffusion.m"},
1643 {"qsys_gig1_bnds_extremal", "qsys", {Arith::Double, Arith::Real},
1644 "matlab/src/api/qsys/qsys_gig1_bnds_extremal.m"},
1645 {"qsys_gtmtst_fluid", "qsys", {Arith::Double, Arith::Real},
1646 "matlab/src/api/qsys/qsys_gtmtst_fluid.m"},
1647 {"qsys_maxima_twomoment", "qsys", {Arith::Double, Arith::Real},
1648 "matlab/src/api/qsys/qsys_maxima_twomoment.m"},
1649 // The birth-death leg and the moments are field operations, so this
1650 // entry point compiles at Rational; only its ccdf form needs a log.
1651 {"qsys_mgisrgi_whitt", "qsys", {Arith::Double, Arith::Exact, Arith::Real},
1652 "matlab/src/api/qsys/qsys_mgisrgi_whitt.m"},
1653 {"qsys_mmk_qed", "qsys", {Arith::Double, Arith::Real},
1654 "matlab/src/api/qsys/qsys_mmk_qed.m"},
1655 {"qsys_mtginf", "qsys", {Arith::Double, Arith::Real},
1656 "matlab/src/api/qsys/qsys_mtginf.m"},
1657 {"qsys_mtgs0_mol", "qsys", {Arith::Double, Arith::Real},
1658 "matlab/src/api/qsys/qsys_mtgs0_mol.m"},
1659 {"retrieval_rayint", "retrieval", {Arith::Double, Arith::Real},
1660 "matlab/src/api/retrieval/retrieval_rayint.m"},
1661 {"sim_runlength", "sim", {Arith::Double, Arith::Real},
1662 "matlab/src/api/sim/sim_runlength.m"},
1663 {"sn_arrival_rate_fun", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1664 "matlab/src/api/sn/sn_arrival_rate_fun.m"},
1665 {"sn_patience_handles", "sn", {Arith::Double, Arith::Real},
1666 "matlab/src/api/sn/sn_patience_handles.m"},
1667 // Derives a double scaling, so T is carried only by the sn it reads.
1668 {"sn_to_qrf_alpha", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1669 "matlab/src/api/sn/sn_to_qrf_alpha.m"},
1670 // Derives integer tables, so T is carried only by the sn it reads.
1671 {"sn_to_qrf_blocking", "sn", {Arith::Double, Arith::Exact, Arith::Real},
1672 "matlab/src/api/sn/sn_to_qrf_blocking.m; matlab/src/api/sn/sn_to_qrf_capacity.m"},
1673 };
1674 return entries;
1675}
1676
1677inline const ApiEntry* find_api(const std::string& name) {
1678 const auto& reg = api_registry();
1679 auto it = std::find_if(reg.begin(), reg.end(),
1680 [&](const ApiEntry& e) { return e.name == name; });
1681 return it == reg.end() ? nullptr : &*it;
1682}
1683
1684inline bool api_supports(const ApiEntry& e, Arith a) {
1685 return std::find(e.arith.begin(), e.arith.end(), a) != e.arith.end();
1686}
1687
1688} // namespace line
1689
1690#endif // LINE_REG_REGISTRY_H
Arith
Definition registry.h:26
const char * arith_name(Arith a)
Definition registry.h:28
const ApiEntry * find_api(const std::string &name)
Definition registry.h:1677
const std::vector< ApiEntry > & api_registry()
The registry is a function-local static, not a global object, so there is no static-initialization or...
Definition registry.h:49
boost::multiprecision::number< boost::multiprecision::cpp_bin_float< Digits10 > > Real
Definition number.h:80
bool api_supports(const ApiEntry &e, Arith a)
Definition registry.h:1684
std::vector< Arith > arith
arithmetic modes this function is instantiated for
Definition registry.h:40
std::string name
MATLAB-compatible function name, e.g. "pfqn_ca".
Definition registry.h:38
std::string reference
the implementation it was ported from
Definition registry.h:41
std::string domain
api domain, e.g. "pfqn"
Definition registry.h:39