11#ifndef FORTRAN_RUNTIME_REDUCTION_H_
12#define FORTRAN_RUNTIME_REDUCTION_H_
14#include "flang/Common/float128.h"
15#include "flang/Common/uint128.h"
16#include "flang/Runtime/cpp-type.h"
17#include "flang/Runtime/entry-names.h"
20namespace Fortran::runtime {
46std::int8_t RTDECL(SumInteger1)(
const Descriptor &,
const char *source,
47 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
48std::int16_t RTDECL(SumInteger2)(
const Descriptor &,
const char *source,
49 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
50std::int32_t RTDECL(SumInteger4)(
const Descriptor &,
const char *source,
51 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
52std::int64_t RTDECL(SumInteger8)(
const Descriptor &,
const char *source,
53 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
54#ifdef __SIZEOF_INT128__
55common::int128_t RTDECL(SumInteger16)(
const Descriptor &,
const char *source,
56 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
58std::uint8_t RTDECL(SumUnsigned1)(
const Descriptor &,
const char *source,
59 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
60std::uint16_t RTDECL(SumUnsigned2)(
const Descriptor &,
const char *source,
61 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
62std::uint32_t RTDECL(SumUnsigned4)(
const Descriptor &,
const char *source,
63 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
64std::uint64_t RTDECL(SumUnsigned8)(
const Descriptor &,
const char *source,
65 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
66#ifdef __SIZEOF_INT128__
67common::uint128_t RTDECL(SumUnsigned16)(
const Descriptor &,
const char *source,
68 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
72float RTDECL(SumReal2)(
const Descriptor &,
const char *source,
int line,
73 int dim = 0,
const Descriptor *mask =
nullptr);
74float RTDECL(SumReal3)(
const Descriptor &,
const char *source,
int line,
75 int dim = 0,
const Descriptor *mask =
nullptr);
76float RTDECL(SumReal4)(
const Descriptor &,
const char *source,
int line,
77 int dim = 0,
const Descriptor *mask =
nullptr);
78double RTDECL(SumReal8)(
const Descriptor &,
const char *source,
int line,
79 int dim = 0,
const Descriptor *mask =
nullptr);
81CppTypeFor<TypeCategory::Real, 10> RTDECL(SumReal10)(
const Descriptor &,
82 const char *source,
int line,
int dim = 0,
83 const Descriptor *mask =
nullptr);
85#if HAS_LDBL128 || HAS_FLOAT128
86CppFloat128Type RTDECL(SumReal16)(
const Descriptor &,
const char *source,
87 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
90void RTDECL(CppSumComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
91 const Descriptor &,
const char *source,
int line,
int dim = 0,
92 const Descriptor *mask =
nullptr);
93void RTDECL(CppSumComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
94 const Descriptor &,
const char *source,
int line,
int dim = 0,
95 const Descriptor *mask =
nullptr);
96void RTDECL(CppSumComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
97 const Descriptor &,
const char *source,
int line,
int dim = 0,
98 const Descriptor *mask =
nullptr);
99void RTDECL(CppSumComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
100 const Descriptor &,
const char *source,
int line,
int dim = 0,
101 const Descriptor *mask =
nullptr);
103void RTDECL(CppSumComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
104 const Descriptor &,
const char *source,
int line,
int dim = 0,
105 const Descriptor *mask =
nullptr);
107#if HAS_LDBL128 || HAS_FLOAT128
108void RTDECL(CppSumComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
109 const Descriptor &,
const char *source,
int line,
int dim = 0,
110 const Descriptor *mask =
nullptr);
113void RTDECL(SumDim)(Descriptor &result,
const Descriptor &array,
int dim,
114 const char *source,
int line,
const Descriptor *mask =
nullptr);
118std::int8_t RTDECL(ProductInteger1)(
const Descriptor &,
const char *source,
119 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
120std::int16_t RTDECL(ProductInteger2)(
const Descriptor &,
const char *source,
121 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
122std::int32_t RTDECL(ProductInteger4)(
const Descriptor &,
const char *source,
123 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
124std::int64_t RTDECL(ProductInteger8)(
const Descriptor &,
const char *source,
125 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
126#ifdef __SIZEOF_INT128__
127common::int128_t RTDECL(ProductInteger16)(
const Descriptor &,
128 const char *source,
int line,
int dim = 0,
129 const Descriptor *mask =
nullptr);
131std::uint8_t RTDECL(ProductUnsigned1)(
const Descriptor &,
const char *source,
132 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
133std::uint16_t RTDECL(ProductUnsigned2)(
const Descriptor &,
const char *source,
134 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
135std::uint32_t RTDECL(ProductUnsigned4)(
const Descriptor &,
const char *source,
136 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
137std::uint64_t RTDECL(ProductUnsigned8)(
const Descriptor &,
const char *source,
138 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
139#ifdef __SIZEOF_INT128__
140common::uint128_t RTDECL(ProductUnsigned16)(
const Descriptor &,
141 const char *source,
int line,
int dim = 0,
142 const Descriptor *mask =
nullptr);
146float RTDECL(ProductReal2)(
const Descriptor &,
const char *source,
int line,
147 int dim = 0,
const Descriptor *mask =
nullptr);
148float RTDECL(ProductReal3)(
const Descriptor &,
const char *source,
int line,
149 int dim = 0,
const Descriptor *mask =
nullptr);
150float RTDECL(ProductReal4)(
const Descriptor &,
const char *source,
int line,
151 int dim = 0,
const Descriptor *mask =
nullptr);
152double RTDECL(ProductReal8)(
const Descriptor &,
const char *source,
int line,
153 int dim = 0,
const Descriptor *mask =
nullptr);
155CppTypeFor<TypeCategory::Real, 10> RTDECL(ProductReal10)(
const Descriptor &,
156 const char *source,
int line,
int dim = 0,
157 const Descriptor *mask =
nullptr);
159#if HAS_LDBL128 || HAS_FLOAT128
160CppFloat128Type RTDECL(ProductReal16)(
const Descriptor &,
const char *source,
161 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
164void RTDECL(CppProductComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
165 const Descriptor &,
const char *source,
int line,
int dim = 0,
166 const Descriptor *mask =
nullptr);
167void RTDECL(CppProductComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
168 const Descriptor &,
const char *source,
int line,
int dim = 0,
169 const Descriptor *mask =
nullptr);
170void RTDECL(CppProductComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
171 const Descriptor &,
const char *source,
int line,
int dim = 0,
172 const Descriptor *mask =
nullptr);
173void RTDECL(CppProductComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
174 const Descriptor &,
const char *source,
int line,
int dim = 0,
175 const Descriptor *mask =
nullptr);
177void RTDECL(CppProductComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
178 const Descriptor &,
const char *source,
int line,
int dim = 0,
179 const Descriptor *mask =
nullptr);
181#if HAS_LDBL128 || HAS_FLOAT128
182void RTDECL(CppProductComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
183 const Descriptor &,
const char *source,
int line,
int dim = 0,
184 const Descriptor *mask =
nullptr);
187void RTDECL(ProductDim)(Descriptor &result,
const Descriptor &array,
int dim,
188 const char *source,
int line,
const Descriptor *mask =
nullptr);
191std::int8_t RTDECL(IAll1)(
const Descriptor &,
const char *source,
int line,
192 int dim = 0,
const Descriptor *mask =
nullptr);
193std::int16_t RTDECL(IAll2)(
const Descriptor &,
const char *source,
int line,
194 int dim = 0,
const Descriptor *mask =
nullptr);
195std::int32_t RTDECL(IAll4)(
const Descriptor &,
const char *source,
int line,
196 int dim = 0,
const Descriptor *mask =
nullptr);
197std::int64_t RTDECL(IAll8)(
const Descriptor &,
const char *source,
int line,
198 int dim = 0,
const Descriptor *mask =
nullptr);
199#ifdef __SIZEOF_INT128__
200common::int128_t RTDECL(IAll16)(
const Descriptor &,
const char *source,
201 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
203void RTDECL(IAllDim)(Descriptor &result,
const Descriptor &array,
int dim,
204 const char *source,
int line,
const Descriptor *mask =
nullptr);
206std::int8_t RTDECL(IAny1)(
const Descriptor &,
const char *source,
int line,
207 int dim = 0,
const Descriptor *mask =
nullptr);
208std::int16_t RTDECL(IAny2)(
const Descriptor &,
const char *source,
int line,
209 int dim = 0,
const Descriptor *mask =
nullptr);
210std::int32_t RTDECL(IAny4)(
const Descriptor &,
const char *source,
int line,
211 int dim = 0,
const Descriptor *mask =
nullptr);
212std::int64_t RTDECL(IAny8)(
const Descriptor &,
const char *source,
int line,
213 int dim = 0,
const Descriptor *mask =
nullptr);
214#ifdef __SIZEOF_INT128__
215common::int128_t RTDECL(IAny16)(
const Descriptor &,
const char *source,
216 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
218void RTDECL(IAnyDim)(Descriptor &result,
const Descriptor &array,
int dim,
219 const char *source,
int line,
const Descriptor *mask =
nullptr);
221std::int8_t RTDECL(IParity1)(
const Descriptor &,
const char *source,
int line,
222 int dim = 0,
const Descriptor *mask =
nullptr);
223std::int16_t RTDECL(IParity2)(
const Descriptor &,
const char *source,
int line,
224 int dim = 0,
const Descriptor *mask =
nullptr);
225std::int32_t RTDECL(IParity4)(
const Descriptor &,
const char *source,
int line,
226 int dim = 0,
const Descriptor *mask =
nullptr);
227std::int64_t RTDECL(IParity8)(
const Descriptor &,
const char *source,
int line,
228 int dim = 0,
const Descriptor *mask =
nullptr);
229#ifdef __SIZEOF_INT128__
230common::int128_t RTDECL(IParity16)(
const Descriptor &,
const char *source,
231 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
233void RTDECL(IParityDim)(Descriptor &result,
const Descriptor &array,
int dim,
234 const char *source,
int line,
const Descriptor *mask =
nullptr);
240void RTDECL(Findloc)(Descriptor &,
const Descriptor &x,
241 const Descriptor &target,
int kind,
const char *source,
int line,
242 const Descriptor *mask =
nullptr,
bool back =
false);
243void RTDECL(FindlocDim)(Descriptor &,
const Descriptor &x,
244 const Descriptor &target,
int kind,
int dim,
const char *source,
int line,
245 const Descriptor *mask =
nullptr,
bool back =
false);
246void RTDECL(MaxlocCharacter)(Descriptor &,
const Descriptor &,
int kind,
247 const char *source,
int line,
const Descriptor *mask =
nullptr,
249void RTDECL(MaxlocInteger1)(Descriptor &,
const Descriptor &,
int kind,
250 const char *source,
int line,
const Descriptor *mask =
nullptr,
252void RTDECL(MaxlocInteger2)(Descriptor &,
const Descriptor &,
int kind,
253 const char *source,
int line,
const Descriptor *mask =
nullptr,
255void RTDECL(MaxlocInteger4)(Descriptor &,
const Descriptor &,
int kind,
256 const char *source,
int line,
const Descriptor *mask =
nullptr,
258void RTDECL(MaxlocInteger8)(Descriptor &,
const Descriptor &,
int kind,
259 const char *source,
int line,
const Descriptor *mask =
nullptr,
261void RTDECL(MaxlocInteger16)(Descriptor &,
const Descriptor &,
int kind,
262 const char *source,
int line,
const Descriptor *mask =
nullptr,
264void RTDECL(MaxlocUnsigned1)(Descriptor &,
const Descriptor &,
int kind,
265 const char *source,
int line,
const Descriptor *mask =
nullptr,
267void RTDECL(MaxlocUnsigned2)(Descriptor &,
const Descriptor &,
int kind,
268 const char *source,
int line,
const Descriptor *mask =
nullptr,
270void RTDECL(MaxlocUnsigned4)(Descriptor &,
const Descriptor &,
int kind,
271 const char *source,
int line,
const Descriptor *mask =
nullptr,
273void RTDECL(MaxlocUnsigned8)(Descriptor &,
const Descriptor &,
int kind,
274 const char *source,
int line,
const Descriptor *mask =
nullptr,
276void RTDECL(MaxlocUnsigned16)(Descriptor &,
const Descriptor &,
int kind,
277 const char *source,
int line,
const Descriptor *mask =
nullptr,
279void RTDECL(MaxlocReal4)(Descriptor &,
const Descriptor &,
int kind,
280 const char *source,
int line,
const Descriptor *mask =
nullptr,
282void RTDECL(MaxlocReal8)(Descriptor &,
const Descriptor &,
int kind,
283 const char *source,
int line,
const Descriptor *mask =
nullptr,
285void RTDECL(MaxlocReal10)(Descriptor &,
const Descriptor &,
int kind,
286 const char *source,
int line,
const Descriptor *mask =
nullptr,
288void RTDECL(MaxlocReal16)(Descriptor &,
const Descriptor &,
int kind,
289 const char *source,
int line,
const Descriptor *mask =
nullptr,
291void RTDECL(MaxlocDim)(Descriptor &,
const Descriptor &x,
int kind,
int dim,
292 const char *source,
int line,
const Descriptor *mask =
nullptr,
294void RTDECL(MinlocCharacter)(Descriptor &,
const Descriptor &,
int kind,
295 const char *source,
int line,
const Descriptor *mask =
nullptr,
297void RTDECL(MinlocInteger1)(Descriptor &,
const Descriptor &,
int kind,
298 const char *source,
int line,
const Descriptor *mask =
nullptr,
300void RTDECL(MinlocInteger2)(Descriptor &,
const Descriptor &,
int kind,
301 const char *source,
int line,
const Descriptor *mask =
nullptr,
303void RTDECL(MinlocInteger4)(Descriptor &,
const Descriptor &,
int kind,
304 const char *source,
int line,
const Descriptor *mask =
nullptr,
306void RTDECL(MinlocInteger8)(Descriptor &,
const Descriptor &,
int kind,
307 const char *source,
int line,
const Descriptor *mask =
nullptr,
309void RTDECL(MinlocInteger16)(Descriptor &,
const Descriptor &,
int kind,
310 const char *source,
int line,
const Descriptor *mask =
nullptr,
312void RTDECL(MinlocUnsigned1)(Descriptor &,
const Descriptor &,
int kind,
313 const char *source,
int line,
const Descriptor *mask =
nullptr,
315void RTDECL(MinlocUnsigned2)(Descriptor &,
const Descriptor &,
int kind,
316 const char *source,
int line,
const Descriptor *mask =
nullptr,
318void RTDECL(MinlocUnsigned4)(Descriptor &,
const Descriptor &,
int kind,
319 const char *source,
int line,
const Descriptor *mask =
nullptr,
321void RTDECL(MinlocUnsigned8)(Descriptor &,
const Descriptor &,
int kind,
322 const char *source,
int line,
const Descriptor *mask =
nullptr,
324void RTDECL(MinlocUnsigned16)(Descriptor &,
const Descriptor &,
int kind,
325 const char *source,
int line,
const Descriptor *mask =
nullptr,
327void RTDECL(MinlocReal4)(Descriptor &,
const Descriptor &,
int kind,
328 const char *source,
int line,
const Descriptor *mask =
nullptr,
330void RTDECL(MinlocReal8)(Descriptor &,
const Descriptor &,
int kind,
331 const char *source,
int line,
const Descriptor *mask =
nullptr,
333void RTDECL(MinlocReal10)(Descriptor &,
const Descriptor &,
int kind,
334 const char *source,
int line,
const Descriptor *mask =
nullptr,
336void RTDECL(MinlocReal16)(Descriptor &,
const Descriptor &,
int kind,
337 const char *source,
int line,
const Descriptor *mask =
nullptr,
339void RTDECL(MinlocDim)(Descriptor &,
const Descriptor &x,
int kind,
int dim,
340 const char *source,
int line,
const Descriptor *mask =
nullptr,
344std::int8_t RTDECL(MaxvalInteger1)(
const Descriptor &,
const char *source,
345 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
346std::int16_t RTDECL(MaxvalInteger2)(
const Descriptor &,
const char *source,
347 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
348std::int32_t RTDECL(MaxvalInteger4)(
const Descriptor &,
const char *source,
349 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
350std::int64_t RTDECL(MaxvalInteger8)(
const Descriptor &,
const char *source,
351 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
352#ifdef __SIZEOF_INT128__
353common::int128_t RTDECL(MaxvalInteger16)(
const Descriptor &,
const char *source,
354 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
356std::uint8_t RTDECL(MaxvalUnsigned1)(
const Descriptor &,
const char *source,
357 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
358std::uint16_t RTDECL(MaxvalUnsigned2)(
const Descriptor &,
const char *source,
359 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
360std::uint32_t RTDECL(MaxvalUnsigned4)(
const Descriptor &,
const char *source,
361 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
362std::uint64_t RTDECL(MaxvalUnsigned8)(
const Descriptor &,
const char *source,
363 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
364#ifdef __SIZEOF_INT128__
365common::uint128_t RTDECL(MaxvalUnsigned16)(
const Descriptor &,
366 const char *source,
int line,
int dim = 0,
367 const Descriptor *mask =
nullptr);
369float RTDECL(MaxvalReal2)(
const Descriptor &,
const char *source,
int line,
370 int dim = 0,
const Descriptor *mask =
nullptr);
371float RTDECL(MaxvalReal3)(
const Descriptor &,
const char *source,
int line,
372 int dim = 0,
const Descriptor *mask =
nullptr);
373float RTDECL(MaxvalReal4)(
const Descriptor &,
const char *source,
int line,
374 int dim = 0,
const Descriptor *mask =
nullptr);
375double RTDECL(MaxvalReal8)(
const Descriptor &,
const char *source,
int line,
376 int dim = 0,
const Descriptor *mask =
nullptr);
378CppTypeFor<TypeCategory::Real, 10> RTDECL(MaxvalReal10)(
const Descriptor &,
379 const char *source,
int line,
int dim = 0,
380 const Descriptor *mask =
nullptr);
382#if HAS_LDBL128 || HAS_FLOAT128
383CppFloat128Type RTDECL(MaxvalReal16)(
const Descriptor &,
const char *source,
384 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
386void RTDECL(MaxvalCharacter)(Descriptor &,
const Descriptor &,
387 const char *source,
int line,
const Descriptor *mask =
nullptr);
389std::int8_t RTDECL(MinvalInteger1)(
const Descriptor &,
const char *source,
390 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
391std::int16_t RTDECL(MinvalInteger2)(
const Descriptor &,
const char *source,
392 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
393std::int32_t RTDECL(MinvalInteger4)(
const Descriptor &,
const char *source,
394 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
395std::int64_t RTDECL(MinvalInteger8)(
const Descriptor &,
const char *source,
396 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
397#ifdef __SIZEOF_INT128__
398common::int128_t RTDECL(MinvalInteger16)(
const Descriptor &,
const char *source,
399 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
401std::uint8_t RTDECL(MinvalUnsigned1)(
const Descriptor &,
const char *source,
402 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
403std::uint16_t RTDECL(MinvalUnsigned2)(
const Descriptor &,
const char *source,
404 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
405std::uint32_t RTDECL(MinvalUnsigned4)(
const Descriptor &,
const char *source,
406 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
407std::uint64_t RTDECL(MinvalUnsigned8)(
const Descriptor &,
const char *source,
408 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
409#ifdef __SIZEOF_INT128__
410common::uint128_t RTDECL(MinvalUnsigned16)(
const Descriptor &,
411 const char *source,
int line,
int dim = 0,
412 const Descriptor *mask =
nullptr);
414float RTDECL(MinvalReal2)(
const Descriptor &,
const char *source,
int line,
415 int dim = 0,
const Descriptor *mask =
nullptr);
416float RTDECL(MinvalReal3)(
const Descriptor &,
const char *source,
int line,
417 int dim = 0,
const Descriptor *mask =
nullptr);
418float RTDECL(MinvalReal4)(
const Descriptor &,
const char *source,
int line,
419 int dim = 0,
const Descriptor *mask =
nullptr);
420double RTDECL(MinvalReal8)(
const Descriptor &,
const char *source,
int line,
421 int dim = 0,
const Descriptor *mask =
nullptr);
423CppTypeFor<TypeCategory::Real, 10> RTDECL(MinvalReal10)(
const Descriptor &,
424 const char *source,
int line,
int dim = 0,
425 const Descriptor *mask =
nullptr);
427#if HAS_LDBL128 || HAS_FLOAT128
428CppFloat128Type RTDECL(MinvalReal16)(
const Descriptor &,
const char *source,
429 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
431void RTDECL(MinvalCharacter)(Descriptor &,
const Descriptor &,
432 const char *source,
int line,
const Descriptor *mask =
nullptr);
434void RTDECL(MaxvalDim)(Descriptor &,
const Descriptor &,
int dim,
435 const char *source,
int line,
const Descriptor *mask =
nullptr);
436void RTDECL(MinvalDim)(Descriptor &,
const Descriptor &,
int dim,
437 const char *source,
int line,
const Descriptor *mask =
nullptr);
440float RTDECL(Norm2_2)(
441 const Descriptor &,
const char *source,
int line,
int dim = 0);
442float RTDECL(Norm2_3)(
443 const Descriptor &,
const char *source,
int line,
int dim = 0);
444float RTDECL(Norm2_4)(
445 const Descriptor &,
const char *source,
int line,
int dim = 0);
446double RTDECL(Norm2_8)(
447 const Descriptor &,
const char *source,
int line,
int dim = 0);
449CppTypeFor<TypeCategory::Real, 10> RTDECL(Norm2_10)(
450 const Descriptor &,
const char *source,
int line,
int dim = 0);
452#if HAS_LDBL128 || HAS_FLOAT128
453CppFloat128Type RTDECL(Norm2_16)(
454 const Descriptor &,
const char *source,
int line,
int dim = 0);
455void RTDECL(Norm2DimReal16)(
456 Descriptor &,
const Descriptor &,
int dim,
const char *source,
int line);
458void RTDECL(Norm2Dim)(
459 Descriptor &,
const Descriptor &,
int dim,
const char *source,
int line);
462bool RTDECL(All)(
const Descriptor &,
const char *source,
int line,
int dim = 0);
463void RTDECL(AllDim)(Descriptor &result,
const Descriptor &,
int dim,
464 const char *source,
int line);
465bool RTDECL(Any)(
const Descriptor &,
const char *source,
int line,
int dim = 0);
466void RTDECL(AnyDim)(Descriptor &result,
const Descriptor &,
int dim,
467 const char *source,
int line);
468std::int64_t RTDECL(Count)(
469 const Descriptor &,
const char *source,
int line,
int dim = 0);
470void RTDECL(CountDim)(Descriptor &result,
const Descriptor &,
int dim,
int kind,
471 const char *source,
int line);
473 const Descriptor &,
const char *source,
int line,
int dim = 0);
474void RTDECL(ParityDim)(Descriptor &result,
const Descriptor &,
int dim,
475 const char *source,
int line);
478std::int8_t RTDECL(DotProductInteger1)(
const Descriptor &,
const Descriptor &,
479 const char *source =
nullptr,
int line = 0);
480std::int16_t RTDECL(DotProductInteger2)(
const Descriptor &,
const Descriptor &,
481 const char *source =
nullptr,
int line = 0);
482std::int32_t RTDECL(DotProductInteger4)(
const Descriptor &,
const Descriptor &,
483 const char *source =
nullptr,
int line = 0);
484std::int64_t RTDECL(DotProductInteger8)(
const Descriptor &,
const Descriptor &,
485 const char *source =
nullptr,
int line = 0);
486#ifdef __SIZEOF_INT128__
487common::int128_t RTDECL(DotProductInteger16)(
const Descriptor &,
488 const Descriptor &,
const char *source =
nullptr,
int line = 0);
490std::uint8_t RTDECL(DotProductUnsigned1)(
const Descriptor &,
const Descriptor &,
491 const char *source =
nullptr,
int line = 0);
492std::uint16_t RTDECL(DotProductUnsigned2)(
const Descriptor &,
493 const Descriptor &,
const char *source =
nullptr,
int line = 0);
494std::uint32_t RTDECL(DotProductUnsigned4)(
const Descriptor &,
495 const Descriptor &,
const char *source =
nullptr,
int line = 0);
496std::uint64_t RTDECL(DotProductUnsigned8)(
const Descriptor &,
497 const Descriptor &,
const char *source =
nullptr,
int line = 0);
498#ifdef __SIZEOF_INT128__
499common::uint128_t RTDECL(DotProductUnsigned16)(
const Descriptor &,
500 const Descriptor &,
const char *source =
nullptr,
int line = 0);
502float RTDECL(DotProductReal2)(
const Descriptor &,
const Descriptor &,
503 const char *source =
nullptr,
int line = 0);
504float RTDECL(DotProductReal3)(
const Descriptor &,
const Descriptor &,
505 const char *source =
nullptr,
int line = 0);
506float RTDECL(DotProductReal4)(
const Descriptor &,
const Descriptor &,
507 const char *source =
nullptr,
int line = 0);
508double RTDECL(DotProductReal8)(
const Descriptor &,
const Descriptor &,
509 const char *source =
nullptr,
int line = 0);
511CppTypeFor<TypeCategory::Real, 10> RTDECL(DotProductReal10)(
const Descriptor &,
512 const Descriptor &,
const char *source =
nullptr,
int line = 0);
514#if HAS_LDBL128 || HAS_FLOAT128
515CppFloat128Type RTDECL(DotProductReal16)(
const Descriptor &,
const Descriptor &,
516 const char *source =
nullptr,
int line = 0);
518void RTDECL(CppDotProductComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
519 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
521void RTDECL(CppDotProductComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
522 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
524void RTDECL(CppDotProductComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
525 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
527void RTDECL(CppDotProductComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
528 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
531void RTDECL(CppDotProductComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
532 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
535#if HAS_LDBL128 || HAS_FLOAT128
536void RTDECL(CppDotProductComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
537 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
540bool RTDECL(DotProductLogical)(
const Descriptor &,
const Descriptor &,
541 const char *source =
nullptr,
int line = 0);