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"
23namespace Fortran::runtime {
49std::int8_t RTDECL(SumInteger1)(
const Descriptor &,
const char *source,
50 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
51std::int16_t RTDECL(SumInteger2)(
const Descriptor &,
const char *source,
52 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
53std::int32_t RTDECL(SumInteger4)(
const Descriptor &,
const char *source,
54 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
55std::int64_t RTDECL(SumInteger8)(
const Descriptor &,
const char *source,
56 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
57#ifdef __SIZEOF_INT128__
58common::int128_t RTDECL(SumInteger16)(
const Descriptor &,
const char *source,
59 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
61std::uint8_t RTDECL(SumUnsigned1)(
const Descriptor &,
const char *source,
62 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
63std::uint16_t RTDECL(SumUnsigned2)(
const Descriptor &,
const char *source,
64 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
65std::uint32_t RTDECL(SumUnsigned4)(
const Descriptor &,
const char *source,
66 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
67std::uint64_t RTDECL(SumUnsigned8)(
const Descriptor &,
const char *source,
68 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
69#ifdef __SIZEOF_INT128__
70common::uint128_t RTDECL(SumUnsigned16)(
const Descriptor &,
const char *source,
71 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
75float RTDECL(SumReal2)(
const Descriptor &,
const char *source,
int line,
76 int dim = 0,
const Descriptor *mask =
nullptr);
77float RTDECL(SumReal3)(
const Descriptor &,
const char *source,
int line,
78 int dim = 0,
const Descriptor *mask =
nullptr);
79float RTDECL(SumReal4)(
const Descriptor &,
const char *source,
int line,
80 int dim = 0,
const Descriptor *mask =
nullptr);
81double RTDECL(SumReal8)(
const Descriptor &,
const char *source,
int line,
82 int dim = 0,
const Descriptor *mask =
nullptr);
84CppTypeFor<TypeCategory::Real, 10> RTDECL(SumReal10)(
const Descriptor &,
85 const char *source,
int line,
int dim = 0,
86 const Descriptor *mask =
nullptr);
88#if HAS_LDBL128 || HAS_FLOAT128
89CppFloat128Type RTDECL(SumReal16)(
const Descriptor &,
const char *source,
90 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
93void RTDECL(CppSumComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
94 const Descriptor &,
const char *source,
int line,
int dim = 0,
95 const Descriptor *mask =
nullptr);
96void RTDECL(CppSumComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
97 const Descriptor &,
const char *source,
int line,
int dim = 0,
98 const Descriptor *mask =
nullptr);
99void RTDECL(CppSumComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
100 const Descriptor &,
const char *source,
int line,
int dim = 0,
101 const Descriptor *mask =
nullptr);
102void RTDECL(CppSumComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
103 const Descriptor &,
const char *source,
int line,
int dim = 0,
104 const Descriptor *mask =
nullptr);
106void RTDECL(CppSumComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
107 const Descriptor &,
const char *source,
int line,
int dim = 0,
108 const Descriptor *mask =
nullptr);
110#if HAS_LDBL128 || HAS_FLOAT128
111void RTDECL(CppSumComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
112 const Descriptor &,
const char *source,
int line,
int dim = 0,
113 const Descriptor *mask =
nullptr);
116void RTDECL(SumDim)(Descriptor &result,
const Descriptor &array,
int dim,
117 const char *source,
int line,
const Descriptor *mask =
nullptr);
121std::int8_t RTDECL(ProductInteger1)(
const Descriptor &,
const char *source,
122 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
123std::int16_t RTDECL(ProductInteger2)(
const Descriptor &,
const char *source,
124 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
125std::int32_t RTDECL(ProductInteger4)(
const Descriptor &,
const char *source,
126 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
127std::int64_t RTDECL(ProductInteger8)(
const Descriptor &,
const char *source,
128 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
129#ifdef __SIZEOF_INT128__
130common::int128_t RTDECL(ProductInteger16)(
const Descriptor &,
131 const char *source,
int line,
int dim = 0,
132 const Descriptor *mask =
nullptr);
134std::uint8_t RTDECL(ProductUnsigned1)(
const Descriptor &,
const char *source,
135 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
136std::uint16_t RTDECL(ProductUnsigned2)(
const Descriptor &,
const char *source,
137 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
138std::uint32_t RTDECL(ProductUnsigned4)(
const Descriptor &,
const char *source,
139 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
140std::uint64_t RTDECL(ProductUnsigned8)(
const Descriptor &,
const char *source,
141 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
142#ifdef __SIZEOF_INT128__
143common::uint128_t RTDECL(ProductUnsigned16)(
const Descriptor &,
144 const char *source,
int line,
int dim = 0,
145 const Descriptor *mask =
nullptr);
149float RTDECL(ProductReal2)(
const Descriptor &,
const char *source,
int line,
150 int dim = 0,
const Descriptor *mask =
nullptr);
151float RTDECL(ProductReal3)(
const Descriptor &,
const char *source,
int line,
152 int dim = 0,
const Descriptor *mask =
nullptr);
153float RTDECL(ProductReal4)(
const Descriptor &,
const char *source,
int line,
154 int dim = 0,
const Descriptor *mask =
nullptr);
155double RTDECL(ProductReal8)(
const Descriptor &,
const char *source,
int line,
156 int dim = 0,
const Descriptor *mask =
nullptr);
158CppTypeFor<TypeCategory::Real, 10> RTDECL(ProductReal10)(
const Descriptor &,
159 const char *source,
int line,
int dim = 0,
160 const Descriptor *mask =
nullptr);
162#if HAS_LDBL128 || HAS_FLOAT128
163CppFloat128Type RTDECL(ProductReal16)(
const Descriptor &,
const char *source,
164 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
167void RTDECL(CppProductComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
168 const Descriptor &,
const char *source,
int line,
int dim = 0,
169 const Descriptor *mask =
nullptr);
170void RTDECL(CppProductComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
171 const Descriptor &,
const char *source,
int line,
int dim = 0,
172 const Descriptor *mask =
nullptr);
173void RTDECL(CppProductComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
174 const Descriptor &,
const char *source,
int line,
int dim = 0,
175 const Descriptor *mask =
nullptr);
176void RTDECL(CppProductComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
177 const Descriptor &,
const char *source,
int line,
int dim = 0,
178 const Descriptor *mask =
nullptr);
180void RTDECL(CppProductComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
181 const Descriptor &,
const char *source,
int line,
int dim = 0,
182 const Descriptor *mask =
nullptr);
184#if HAS_LDBL128 || HAS_FLOAT128
185void RTDECL(CppProductComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
186 const Descriptor &,
const char *source,
int line,
int dim = 0,
187 const Descriptor *mask =
nullptr);
190void RTDECL(ProductDim)(Descriptor &result,
const Descriptor &array,
int dim,
191 const char *source,
int line,
const Descriptor *mask =
nullptr);
194std::int8_t RTDECL(IAll1)(
const Descriptor &,
const char *source,
int line,
195 int dim = 0,
const Descriptor *mask =
nullptr);
196std::int16_t RTDECL(IAll2)(
const Descriptor &,
const char *source,
int line,
197 int dim = 0,
const Descriptor *mask =
nullptr);
198std::int32_t RTDECL(IAll4)(
const Descriptor &,
const char *source,
int line,
199 int dim = 0,
const Descriptor *mask =
nullptr);
200std::int64_t RTDECL(IAll8)(
const Descriptor &,
const char *source,
int line,
201 int dim = 0,
const Descriptor *mask =
nullptr);
202#ifdef __SIZEOF_INT128__
203common::int128_t RTDECL(IAll16)(
const Descriptor &,
const char *source,
204 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
206void RTDECL(IAllDim)(Descriptor &result,
const Descriptor &array,
int dim,
207 const char *source,
int line,
const Descriptor *mask =
nullptr);
209std::int8_t RTDECL(IAny1)(
const Descriptor &,
const char *source,
int line,
210 int dim = 0,
const Descriptor *mask =
nullptr);
211std::int16_t RTDECL(IAny2)(
const Descriptor &,
const char *source,
int line,
212 int dim = 0,
const Descriptor *mask =
nullptr);
213std::int32_t RTDECL(IAny4)(
const Descriptor &,
const char *source,
int line,
214 int dim = 0,
const Descriptor *mask =
nullptr);
215std::int64_t RTDECL(IAny8)(
const Descriptor &,
const char *source,
int line,
216 int dim = 0,
const Descriptor *mask =
nullptr);
217#ifdef __SIZEOF_INT128__
218common::int128_t RTDECL(IAny16)(
const Descriptor &,
const char *source,
219 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
221void RTDECL(IAnyDim)(Descriptor &result,
const Descriptor &array,
int dim,
222 const char *source,
int line,
const Descriptor *mask =
nullptr);
224std::int8_t RTDECL(IParity1)(
const Descriptor &,
const char *source,
int line,
225 int dim = 0,
const Descriptor *mask =
nullptr);
226std::int16_t RTDECL(IParity2)(
const Descriptor &,
const char *source,
int line,
227 int dim = 0,
const Descriptor *mask =
nullptr);
228std::int32_t RTDECL(IParity4)(
const Descriptor &,
const char *source,
int line,
229 int dim = 0,
const Descriptor *mask =
nullptr);
230std::int64_t RTDECL(IParity8)(
const Descriptor &,
const char *source,
int line,
231 int dim = 0,
const Descriptor *mask =
nullptr);
232#ifdef __SIZEOF_INT128__
233common::int128_t RTDECL(IParity16)(
const Descriptor &,
const char *source,
234 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
236void RTDECL(IParityDim)(Descriptor &result,
const Descriptor &array,
int dim,
237 const char *source,
int line,
const Descriptor *mask =
nullptr);
243void RTDECL(Findloc)(Descriptor &,
const Descriptor &x,
244 const Descriptor &target,
int kind,
const char *source,
int line,
245 const Descriptor *mask =
nullptr,
bool back =
false);
246void RTDECL(FindlocDim)(Descriptor &,
const Descriptor &x,
247 const Descriptor &target,
int kind,
int dim,
const char *source,
int line,
248 const Descriptor *mask =
nullptr,
bool back =
false);
249void RTDECL(MaxlocCharacter)(Descriptor &,
const Descriptor &,
int kind,
250 const char *source,
int line,
const Descriptor *mask =
nullptr,
252void RTDECL(MaxlocInteger1)(Descriptor &,
const Descriptor &,
int kind,
253 const char *source,
int line,
const Descriptor *mask =
nullptr,
255void RTDECL(MaxlocInteger2)(Descriptor &,
const Descriptor &,
int kind,
256 const char *source,
int line,
const Descriptor *mask =
nullptr,
258void RTDECL(MaxlocInteger4)(Descriptor &,
const Descriptor &,
int kind,
259 const char *source,
int line,
const Descriptor *mask =
nullptr,
261void RTDECL(MaxlocInteger8)(Descriptor &,
const Descriptor &,
int kind,
262 const char *source,
int line,
const Descriptor *mask =
nullptr,
264void RTDECL(MaxlocInteger16)(Descriptor &,
const Descriptor &,
int kind,
265 const char *source,
int line,
const Descriptor *mask =
nullptr,
267void RTDECL(MaxlocUnsigned1)(Descriptor &,
const Descriptor &,
int kind,
268 const char *source,
int line,
const Descriptor *mask =
nullptr,
270void RTDECL(MaxlocUnsigned2)(Descriptor &,
const Descriptor &,
int kind,
271 const char *source,
int line,
const Descriptor *mask =
nullptr,
273void RTDECL(MaxlocUnsigned4)(Descriptor &,
const Descriptor &,
int kind,
274 const char *source,
int line,
const Descriptor *mask =
nullptr,
276void RTDECL(MaxlocUnsigned8)(Descriptor &,
const Descriptor &,
int kind,
277 const char *source,
int line,
const Descriptor *mask =
nullptr,
279void RTDECL(MaxlocUnsigned16)(Descriptor &,
const Descriptor &,
int kind,
280 const char *source,
int line,
const Descriptor *mask =
nullptr,
282void RTDECL(MaxlocReal4)(Descriptor &,
const Descriptor &,
int kind,
283 const char *source,
int line,
const Descriptor *mask =
nullptr,
285void RTDECL(MaxlocReal8)(Descriptor &,
const Descriptor &,
int kind,
286 const char *source,
int line,
const Descriptor *mask =
nullptr,
288void RTDECL(MaxlocReal10)(Descriptor &,
const Descriptor &,
int kind,
289 const char *source,
int line,
const Descriptor *mask =
nullptr,
291void RTDECL(MaxlocReal16)(Descriptor &,
const Descriptor &,
int kind,
292 const char *source,
int line,
const Descriptor *mask =
nullptr,
294void RTDECL(MaxlocDim)(Descriptor &,
const Descriptor &x,
int kind,
int dim,
295 const char *source,
int line,
const Descriptor *mask =
nullptr,
297void RTDECL(MinlocCharacter)(Descriptor &,
const Descriptor &,
int kind,
298 const char *source,
int line,
const Descriptor *mask =
nullptr,
300void RTDECL(MinlocInteger1)(Descriptor &,
const Descriptor &,
int kind,
301 const char *source,
int line,
const Descriptor *mask =
nullptr,
303void RTDECL(MinlocInteger2)(Descriptor &,
const Descriptor &,
int kind,
304 const char *source,
int line,
const Descriptor *mask =
nullptr,
306void RTDECL(MinlocInteger4)(Descriptor &,
const Descriptor &,
int kind,
307 const char *source,
int line,
const Descriptor *mask =
nullptr,
309void RTDECL(MinlocInteger8)(Descriptor &,
const Descriptor &,
int kind,
310 const char *source,
int line,
const Descriptor *mask =
nullptr,
312void RTDECL(MinlocInteger16)(Descriptor &,
const Descriptor &,
int kind,
313 const char *source,
int line,
const Descriptor *mask =
nullptr,
315void RTDECL(MinlocUnsigned1)(Descriptor &,
const Descriptor &,
int kind,
316 const char *source,
int line,
const Descriptor *mask =
nullptr,
318void RTDECL(MinlocUnsigned2)(Descriptor &,
const Descriptor &,
int kind,
319 const char *source,
int line,
const Descriptor *mask =
nullptr,
321void RTDECL(MinlocUnsigned4)(Descriptor &,
const Descriptor &,
int kind,
322 const char *source,
int line,
const Descriptor *mask =
nullptr,
324void RTDECL(MinlocUnsigned8)(Descriptor &,
const Descriptor &,
int kind,
325 const char *source,
int line,
const Descriptor *mask =
nullptr,
327void RTDECL(MinlocUnsigned16)(Descriptor &,
const Descriptor &,
int kind,
328 const char *source,
int line,
const Descriptor *mask =
nullptr,
330void RTDECL(MinlocReal4)(Descriptor &,
const Descriptor &,
int kind,
331 const char *source,
int line,
const Descriptor *mask =
nullptr,
333void RTDECL(MinlocReal8)(Descriptor &,
const Descriptor &,
int kind,
334 const char *source,
int line,
const Descriptor *mask =
nullptr,
336void RTDECL(MinlocReal10)(Descriptor &,
const Descriptor &,
int kind,
337 const char *source,
int line,
const Descriptor *mask =
nullptr,
339void RTDECL(MinlocReal16)(Descriptor &,
const Descriptor &,
int kind,
340 const char *source,
int line,
const Descriptor *mask =
nullptr,
342void RTDECL(MinlocDim)(Descriptor &,
const Descriptor &x,
int kind,
int dim,
343 const char *source,
int line,
const Descriptor *mask =
nullptr,
347std::int8_t RTDECL(MaxvalInteger1)(
const Descriptor &,
const char *source,
348 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
349std::int16_t RTDECL(MaxvalInteger2)(
const Descriptor &,
const char *source,
350 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
351std::int32_t RTDECL(MaxvalInteger4)(
const Descriptor &,
const char *source,
352 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
353std::int64_t RTDECL(MaxvalInteger8)(
const Descriptor &,
const char *source,
354 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
355#ifdef __SIZEOF_INT128__
356common::int128_t RTDECL(MaxvalInteger16)(
const Descriptor &,
const char *source,
357 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
359std::uint8_t RTDECL(MaxvalUnsigned1)(
const Descriptor &,
const char *source,
360 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
361std::uint16_t RTDECL(MaxvalUnsigned2)(
const Descriptor &,
const char *source,
362 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
363std::uint32_t RTDECL(MaxvalUnsigned4)(
const Descriptor &,
const char *source,
364 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
365std::uint64_t RTDECL(MaxvalUnsigned8)(
const Descriptor &,
const char *source,
366 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
367#ifdef __SIZEOF_INT128__
368common::uint128_t RTDECL(MaxvalUnsigned16)(
const Descriptor &,
369 const char *source,
int line,
int dim = 0,
370 const Descriptor *mask =
nullptr);
372float RTDECL(MaxvalReal2)(
const Descriptor &,
const char *source,
int line,
373 int dim = 0,
const Descriptor *mask =
nullptr);
374float RTDECL(MaxvalReal3)(
const Descriptor &,
const char *source,
int line,
375 int dim = 0,
const Descriptor *mask =
nullptr);
376float RTDECL(MaxvalReal4)(
const Descriptor &,
const char *source,
int line,
377 int dim = 0,
const Descriptor *mask =
nullptr);
378double RTDECL(MaxvalReal8)(
const Descriptor &,
const char *source,
int line,
379 int dim = 0,
const Descriptor *mask =
nullptr);
381CppTypeFor<TypeCategory::Real, 10> RTDECL(MaxvalReal10)(
const Descriptor &,
382 const char *source,
int line,
int dim = 0,
383 const Descriptor *mask =
nullptr);
385#if HAS_LDBL128 || HAS_FLOAT128
386CppFloat128Type RTDECL(MaxvalReal16)(
const Descriptor &,
const char *source,
387 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
389void RTDECL(MaxvalCharacter)(Descriptor &,
const Descriptor &,
390 const char *source,
int line,
const Descriptor *mask =
nullptr);
392std::int8_t RTDECL(MinvalInteger1)(
const Descriptor &,
const char *source,
393 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
394std::int16_t RTDECL(MinvalInteger2)(
const Descriptor &,
const char *source,
395 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
396std::int32_t RTDECL(MinvalInteger4)(
const Descriptor &,
const char *source,
397 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
398std::int64_t RTDECL(MinvalInteger8)(
const Descriptor &,
const char *source,
399 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
400#ifdef __SIZEOF_INT128__
401common::int128_t RTDECL(MinvalInteger16)(
const Descriptor &,
const char *source,
402 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
404std::uint8_t RTDECL(MinvalUnsigned1)(
const Descriptor &,
const char *source,
405 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
406std::uint16_t RTDECL(MinvalUnsigned2)(
const Descriptor &,
const char *source,
407 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
408std::uint32_t RTDECL(MinvalUnsigned4)(
const Descriptor &,
const char *source,
409 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
410std::uint64_t RTDECL(MinvalUnsigned8)(
const Descriptor &,
const char *source,
411 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
412#ifdef __SIZEOF_INT128__
413common::uint128_t RTDECL(MinvalUnsigned16)(
const Descriptor &,
414 const char *source,
int line,
int dim = 0,
415 const Descriptor *mask =
nullptr);
417float RTDECL(MinvalReal2)(
const Descriptor &,
const char *source,
int line,
418 int dim = 0,
const Descriptor *mask =
nullptr);
419float RTDECL(MinvalReal3)(
const Descriptor &,
const char *source,
int line,
420 int dim = 0,
const Descriptor *mask =
nullptr);
421float RTDECL(MinvalReal4)(
const Descriptor &,
const char *source,
int line,
422 int dim = 0,
const Descriptor *mask =
nullptr);
423double RTDECL(MinvalReal8)(
const Descriptor &,
const char *source,
int line,
424 int dim = 0,
const Descriptor *mask =
nullptr);
426CppTypeFor<TypeCategory::Real, 10> RTDECL(MinvalReal10)(
const Descriptor &,
427 const char *source,
int line,
int dim = 0,
428 const Descriptor *mask =
nullptr);
430#if HAS_LDBL128 || HAS_FLOAT128
431CppFloat128Type RTDECL(MinvalReal16)(
const Descriptor &,
const char *source,
432 int line,
int dim = 0,
const Descriptor *mask =
nullptr);
434void RTDECL(MinvalCharacter)(Descriptor &,
const Descriptor &,
435 const char *source,
int line,
const Descriptor *mask =
nullptr);
437void RTDECL(MaxvalDim)(Descriptor &,
const Descriptor &,
int dim,
438 const char *source,
int line,
const Descriptor *mask =
nullptr);
439void RTDECL(MinvalDim)(Descriptor &,
const Descriptor &,
int dim,
440 const char *source,
int line,
const Descriptor *mask =
nullptr);
443float RTDECL(Norm2_2)(
444 const Descriptor &,
const char *source,
int line,
int dim = 0);
445float RTDECL(Norm2_3)(
446 const Descriptor &,
const char *source,
int line,
int dim = 0);
447float RTDECL(Norm2_4)(
448 const Descriptor &,
const char *source,
int line,
int dim = 0);
449double RTDECL(Norm2_8)(
450 const Descriptor &,
const char *source,
int line,
int dim = 0);
452CppTypeFor<TypeCategory::Real, 10> RTDECL(Norm2_10)(
453 const Descriptor &,
const char *source,
int line,
int dim = 0);
455#if HAS_LDBL128 || HAS_FLOAT128
456CppFloat128Type RTDECL(Norm2_16)(
457 const Descriptor &,
const char *source,
int line,
int dim = 0);
458void RTDECL(Norm2DimReal16)(
459 Descriptor &,
const Descriptor &,
int dim,
const char *source,
int line);
461void RTDECL(Norm2Dim)(
462 Descriptor &,
const Descriptor &,
int dim,
const char *source,
int line);
465bool RTDECL(All)(
const Descriptor &,
const char *source,
int line,
int dim = 0);
466void RTDECL(AllDim)(Descriptor &result,
const Descriptor &,
int dim,
467 const char *source,
int line);
468bool RTDECL(Any)(
const Descriptor &,
const char *source,
int line,
int dim = 0);
469void RTDECL(AnyDim)(Descriptor &result,
const Descriptor &,
int dim,
470 const char *source,
int line);
471std::int64_t RTDECL(Count)(
472 const Descriptor &,
const char *source,
int line,
int dim = 0);
473void RTDECL(CountDim)(Descriptor &result,
const Descriptor &,
int dim,
int kind,
474 const char *source,
int line);
476 const Descriptor &,
const char *source,
int line,
int dim = 0);
477void RTDECL(ParityDim)(Descriptor &result,
const Descriptor &,
int dim,
478 const char *source,
int line);
481std::int8_t RTDECL(DotProductInteger1)(
const Descriptor &,
const Descriptor &,
482 const char *source =
nullptr,
int line = 0);
483std::int16_t RTDECL(DotProductInteger2)(
const Descriptor &,
const Descriptor &,
484 const char *source =
nullptr,
int line = 0);
485std::int32_t RTDECL(DotProductInteger4)(
const Descriptor &,
const Descriptor &,
486 const char *source =
nullptr,
int line = 0);
487std::int64_t RTDECL(DotProductInteger8)(
const Descriptor &,
const Descriptor &,
488 const char *source =
nullptr,
int line = 0);
489#ifdef __SIZEOF_INT128__
490common::int128_t RTDECL(DotProductInteger16)(
const Descriptor &,
491 const Descriptor &,
const char *source =
nullptr,
int line = 0);
493std::uint8_t RTDECL(DotProductUnsigned1)(
const Descriptor &,
const Descriptor &,
494 const char *source =
nullptr,
int line = 0);
495std::uint16_t RTDECL(DotProductUnsigned2)(
const Descriptor &,
496 const Descriptor &,
const char *source =
nullptr,
int line = 0);
497std::uint32_t RTDECL(DotProductUnsigned4)(
const Descriptor &,
498 const Descriptor &,
const char *source =
nullptr,
int line = 0);
499std::uint64_t RTDECL(DotProductUnsigned8)(
const Descriptor &,
500 const Descriptor &,
const char *source =
nullptr,
int line = 0);
501#ifdef __SIZEOF_INT128__
502common::uint128_t RTDECL(DotProductUnsigned16)(
const Descriptor &,
503 const Descriptor &,
const char *source =
nullptr,
int line = 0);
505float RTDECL(DotProductReal2)(
const Descriptor &,
const Descriptor &,
506 const char *source =
nullptr,
int line = 0);
507float RTDECL(DotProductReal3)(
const Descriptor &,
const Descriptor &,
508 const char *source =
nullptr,
int line = 0);
509float RTDECL(DotProductReal4)(
const Descriptor &,
const Descriptor &,
510 const char *source =
nullptr,
int line = 0);
511double RTDECL(DotProductReal8)(
const Descriptor &,
const Descriptor &,
512 const char *source =
nullptr,
int line = 0);
514CppTypeFor<TypeCategory::Real, 10> RTDECL(DotProductReal10)(
const Descriptor &,
515 const Descriptor &,
const char *source =
nullptr,
int line = 0);
517#if HAS_LDBL128 || HAS_FLOAT128
518CppFloat128Type RTDECL(DotProductReal16)(
const Descriptor &,
const Descriptor &,
519 const char *source =
nullptr,
int line = 0);
521void RTDECL(CppDotProductComplex2)(CppTypeFor<TypeCategory::Complex, 4> &,
522 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
524void RTDECL(CppDotProductComplex3)(CppTypeFor<TypeCategory::Complex, 4> &,
525 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
527void RTDECL(CppDotProductComplex4)(CppTypeFor<TypeCategory::Complex, 4> &,
528 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
530void RTDECL(CppDotProductComplex8)(CppTypeFor<TypeCategory::Complex, 8> &,
531 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
534void RTDECL(CppDotProductComplex10)(CppTypeFor<TypeCategory::Complex, 10> &,
535 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
538#if HAS_LDBL128 || HAS_FLOAT128
539void RTDECL(CppDotProductComplex16)(CppTypeFor<TypeCategory::Complex, 16> &,
540 const Descriptor &,
const Descriptor &,
const char *source =
nullptr,
543bool RTDECL(DotProductLogical)(
const Descriptor &,
const Descriptor &,
544 const char *source =
nullptr,
int line = 0);