28 #ifndef DOXYGEN_SHOULD_SKIP_THIS 31 # define GUM_PROJECTION_PATTERN_ALLOWED 1
33 # include <agrum/tools/core/functors.h> 34 # include <agrum/tools/multidim/utils/operators/projectionRegister4MultiDim.h> 38 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimArray 39 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 40 # define GUM_MULTI_DIM_PROJECTION(x, y) 42 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 43 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 44 # undef GUM_MULTI_DIM_PROJECTION_NAME 45 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 46 # undef GUM_MULTI_DIM_PROJECTION 47 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 49 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectMaxMultiDimArray 50 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 51 # define GUM_MULTI_DIM_PROJECTION(x, y) 53 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 54 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 55 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 56 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 57 # undef GUM_MULTI_DIM_PROJECTION 58 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 60 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectMaxMultiDimArray4Pointers 61 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 62 # define GUM_MULTI_DIM_PROJECTION(x, y) 63 if (*(y) > *(x)) *(x) = *(y) 64 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 65 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 66 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 67 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 68 # undef GUM_MULTI_DIM_PROJECTION 69 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 71 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME projectMaxMultiDimArray4Pointers 72 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 73 # define GUM_MULTI_DIM_PROJECTION(x, y) 74 if (*(y) > *(x)) *(x) = *(y) 75 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 76 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 77 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 78 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 79 # undef GUM_MULTI_DIM_PROJECTION 80 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 84 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimArray 85 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 86 # define GUM_MULTI_DIM_PROJECTION(x, y) 88 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 89 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 90 # undef GUM_MULTI_DIM_PROJECTION_NAME 91 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 92 # undef GUM_MULTI_DIM_PROJECTION 93 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 95 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectMinMultiDimArray 96 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 97 # define GUM_MULTI_DIM_PROJECTION(x, y) 99 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 100 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 101 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 102 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 103 # undef GUM_MULTI_DIM_PROJECTION 104 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 106 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectMinMultiDimArray4Pointers 107 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 108 # define GUM_MULTI_DIM_PROJECTION(x, y) 109 if (*(x) > *(y)) *(x) = *(y) 110 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 111 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 112 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 113 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 114 # undef GUM_MULTI_DIM_PROJECTION 115 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 117 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME projectMinMultiDimArray4Pointers 118 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 119 # define GUM_MULTI_DIM_PROJECTION(x, y) 120 if (*(x) > *(y)) *(x) = *(y) 121 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 122 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 123 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 124 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 125 # undef GUM_MULTI_DIM_PROJECTION 126 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 130 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimArray 131 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 132 # define GUM_MULTI_DIM_PROJECTION(x, y) x += y 133 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
134 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 135 # undef GUM_MULTI_DIM_PROJECTION_NAME 136 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 137 # undef GUM_MULTI_DIM_PROJECTION 138 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 140 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectSumMultiDimArray 141 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 142 # define GUM_MULTI_DIM_PROJECTION(x, y) x += y 143 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
144 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 145 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 146 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 147 # undef GUM_MULTI_DIM_PROJECTION 148 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 150 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectSumMultiDimArray4Pointers 151 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 152 # define GUM_MULTI_DIM_PROJECTION(x, y) *(x) += *(y) 153 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
154 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 155 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 156 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 157 # undef GUM_MULTI_DIM_PROJECTION 158 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 160 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME projectSumMultiDimArray4Pointers 161 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 162 # define GUM_MULTI_DIM_PROJECTION(x, y) *(x) += *(y) 163 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
164 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 165 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 166 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 167 # undef GUM_MULTI_DIM_PROJECTION 168 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 172 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimArray 173 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 174 # define GUM_MULTI_DIM_PROJECTION(x, y) (x) *= (y) 175 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
176 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 177 # undef GUM_MULTI_DIM_PROJECTION_NAME 178 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 179 # undef GUM_MULTI_DIM_PROJECTION 180 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 182 # define GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME projectProductMultiDimArray 183 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 184 # define GUM_MULTI_DIM_PROJECTION(x, y) (x) *= (y) 185 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
186 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 187 # undef GUM_MULTI_DIM_PROJECTION_IMPL2ARRAY_NAME 188 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 189 # undef GUM_MULTI_DIM_PROJECTION 190 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 192 # define GUM_MULTI_DIM_PROJECTION_POINTER_NAME projectProductMultiDimArray4Pointers 193 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 194 # define GUM_MULTI_DIM_PROJECTION(x, y) (*x) *= (*y) 195 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
196 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 197 # undef GUM_MULTI_DIM_PROJECTION_POINTER_NAME 198 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 199 # undef GUM_MULTI_DIM_PROJECTION 200 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 202 # define GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME projectProductMultiDimArray4Pointers 203 # define GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 204 # define GUM_MULTI_DIM_PROJECTION(x, y) (*x) *= (*y) 205 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
206 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimArray.h> 207 # undef GUM_MULTI_DIM_PROJECTION_POINTER_IMPL2ARRAY_NAME 208 # undef GUM_MULTI_DIM_PROJECTION_EFFECTIVE_TYPE 209 # undef GUM_MULTI_DIM_PROJECTION 210 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 214 # define GUM_MULTI_DIM_PROJECTION_OPERATOR Maximizes 215 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (-1
* std::numeric_limits< GUM_SCALAR >::max()) 217 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimFunctionGraph 218 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 219 # undef GUM_MULTI_DIM_PROJECTION_NAME 221 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME projectMaxMultiDimFunctionGraph 222 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 223 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 225 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 226 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 230 # define GUM_MULTI_DIM_PROJECTION_OPERATOR Minimizes 231 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 233 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimFunctionGraph 234 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 235 # undef GUM_MULTI_DIM_PROJECTION_NAME 237 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME projectMinMultiDimFunctionGraph 238 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 239 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 241 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 242 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 246 # define GUM_MULTI_DIM_PROJECTION_OPERATOR std::plus 247 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
249 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimFunctionGraph 250 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 251 # undef GUM_MULTI_DIM_PROJECTION_NAME 253 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME projectSumMultiDimFunctionGraph 254 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 255 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 257 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 258 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 262 # define GUM_MULTI_DIM_PROJECTION_OPERATOR std::multiplies 263 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
265 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimFunctionGraph 266 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 267 # undef GUM_MULTI_DIM_PROJECTION_NAME 269 # define GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME projectProductMultiDimFunctionGraph 270 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimFunctionGraph.h> 271 # undef GUM_MULTI_DIM_PROJECTION_IMPL2DECISION_GRAPH_NAME 273 # undef GUM_MULTI_DIM_PROJECTION_OPERATOR 274 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 291 # define GUM_MULTI_DIM_PROJECTION_NAME projectMax 292 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "max" 293 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 294 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 295 # undef GUM_MULTI_DIM_PROJECTION_NAME 296 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 297 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 300 # define GUM_MULTI_DIM_PROJECTION_NAME projectMin 301 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "min" 302 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 303 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 304 # undef GUM_MULTI_DIM_PROJECTION_NAME 305 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 306 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 309 # define GUM_MULTI_DIM_PROJECTION_NAME projectSum 310 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "sum" 311 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 312 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 313 # undef GUM_MULTI_DIM_PROJECTION_NAME 314 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 315 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 318 # define GUM_MULTI_DIM_PROJECTION_NAME projectProduct 319 # define GUM_MULTI_DIM_PROJECTION_FUNC_NAME "product" 320 # define GUM_MULTI_DIM_SYMMETRIC_PROJECTION 321 # include <agrum/tools/multidim/utils/patterns/projectionPattern4MultiDimImplementation.h> 322 # undef GUM_MULTI_DIM_PROJECTION_NAME 323 # undef GUM_MULTI_DIM_PROJECTION_FUNC_NAME 324 # undef GUM_MULTI_DIM_SYMMETRIC_PROJECTION 328 # define GUM_MULTI_DIM_PROJECTION_NAME projectMaxMultiDimImplementation 329 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) > (y) ? (x) : (y)) 330 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::min() 331 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 332 # undef GUM_MULTI_DIM_PROJECTION_NAME 333 # undef GUM_MULTI_DIM_PROJECTION 334 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 336 # define GUM_MULTI_DIM_PROJECTION_NAME projectMinMultiDimImplementation 337 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) > (y) ? (y) : (x)) 338 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL std::numeric_limits< GUM_SCALAR >::max() 339 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 340 # undef GUM_MULTI_DIM_PROJECTION_NAME 341 # undef GUM_MULTI_DIM_PROJECTION 342 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 344 # define GUM_MULTI_DIM_PROJECTION_NAME projectSumMultiDimImplementation 345 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) + (y)) 346 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)0
347 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 348 # undef GUM_MULTI_DIM_PROJECTION_NAME 349 # undef GUM_MULTI_DIM_PROJECTION 350 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 352 # define GUM_MULTI_DIM_PROJECTION_NAME projectProductMultiDimImplementation 353 # define GUM_MULTI_DIM_PROJECTION(x, y) ((x) * (y)) 354 # define GUM_MULTI_DIM_PROJECTION_NEUTRAL (GUM_SCALAR)1
355 # include <agrum/tools/multidim/utils/patterns/projectionPattern4BaseName.h> 356 # undef GUM_MULTI_DIM_PROJECTION_NAME 357 # undef GUM_MULTI_DIM_PROJECTION 358 # undef GUM_MULTI_DIM_PROJECTION_NEUTRAL 366 template <
typename GUM_SCALAR >
368 static bool first_init =
true;
373 std::string MultiDimArrayString(
"MultiDimArray");
374 std::string MultiDimFunctionGraphString(
"MultiDimFunctionGraph");
375 std::string BaseNameString(
"MultiDimImplementation");
378 registerProjection< GUM_SCALAR >(
"max", MultiDimArrayString, &projectMaxMultiDimArray);
379 registerProjection< GUM_SCALAR >(
"min", MultiDimArrayString, &projectMinMultiDimArray);
380 registerProjection< GUM_SCALAR >(
"sum", MultiDimArrayString, &projectSumMultiDimArray);
381 registerProjection< GUM_SCALAR >(
"product",
383 &projectProductMultiDimArray);
386 registerProjection< GUM_SCALAR >(
"max",
387 MultiDimFunctionGraphString,
388 &projectMaxMultiDimFunctionGraph);
389 registerProjection< GUM_SCALAR >(
"min",
390 MultiDimFunctionGraphString,
391 &projectMinMultiDimFunctionGraph);
392 registerProjection< GUM_SCALAR >(
"sum",
393 MultiDimFunctionGraphString,
394 &projectSumMultiDimFunctionGraph);
395 registerProjection< GUM_SCALAR >(
"product",
396 MultiDimFunctionGraphString,
397 &projectProductMultiDimFunctionGraph);
400 registerProjection< GUM_SCALAR >(
"max", BaseNameString, &projectMaxMultiDimImplementation);
401 registerProjection< GUM_SCALAR >(
"min", BaseNameString, &projectMinMultiDimImplementation);
402 registerProjection< GUM_SCALAR >(
"sum", BaseNameString, &projectSumMultiDimImplementation);
403 registerProjection< GUM_SCALAR >(
"product",
405 &projectProductMultiDimImplementation);
410 template <
typename GUM_SCALAR >
412 static bool first_init =
true;
417 std::string MultiDimArrayString(
"MultiDimArray");
418 std::string BaseNameString(
"MultiDimImplementation");
421 registerProjection< GUM_SCALAR* >(
"max",
423 &projectMaxMultiDimArray4Pointers);
424 registerProjection< GUM_SCALAR* >(
"min",
426 &projectMinMultiDimArray4Pointers);
427 registerProjection< GUM_SCALAR* >(
"sum",
429 &projectSumMultiDimArray4Pointers);
430 registerProjection< GUM_SCALAR* >(
"product",
432 &projectProductMultiDimArray4Pointers);
439 # undef GUM_PROJECTION_PATTERN_ALLOWED INLINE void emplace(Args &&... args)
void projections4MultiDimInit()
the function used to register all the projection operators on multidimImplementations over non-pointe...
void pointerProjections4MultiDimInit()
the function used to register all the projections on multidimImplementations over pointers types...