TR-mbed 1.0
Loading...
Searching...
No Matches
Complex.h
Go to the documentation of this file.
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2018 Wave Computing, Inc.
5// Written by:
6// Chris Larsen
7// Alexey Frunze (afrunze@wavecomp.com)
8//
9// This Source Code Form is subject to the terms of the Mozilla
10// Public License v. 2.0. If a copy of the MPL was not distributed
11// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
12
13#ifndef EIGEN_COMPLEX_MSA_H
14#define EIGEN_COMPLEX_MSA_H
15
16#include <iostream>
17
18namespace Eigen {
19
20namespace internal {
21
22//---------- float ----------
23struct Packet2cf {
26 EIGEN_STRONG_INLINE explicit Packet2cf(const std::complex<float>& a,
27 const std::complex<float>& b) {
28 Packet4f t = { std::real(a), std::imag(a), std::real(b), std::imag(b) };
29 v = t;
30 }
31 EIGEN_STRONG_INLINE explicit Packet2cf(const Packet4f& a) : v(a) {
32 }
36 v = b.v;
37 return *this;
38 }
43 Packet4f v1, v2;
44
45 // Get the real values of a | a1_re | a1_re | a2_re | a2_re |
47 // Get the imag values of a | a1_im | a1_im | a2_im | a2_im |
49 // Multiply the real a with b
50 v1 = pmul(v1, b.v);
51 // Multiply the imag a with b
52 v2 = pmul(v2, b.v);
53 // Conjugate v2
54 v2 = Packet2cf(v2).conjugate().v;
55 // Swap real/imag elements in v2.
57 // Add and return the result
58 v = padd(v1, v2);
59 return *this;
60 }
62 return Packet2cf(*this) *= b;
63 }
65 v = padd(v, b.v);
66 return *this;
67 }
69 return Packet2cf(*this) += b;
70 }
72 v = psub(v, b.v);
73 return *this;
74 }
76 return Packet2cf(*this) -= b;
77 }
79 *this *= b.conjugate();
80 Packet4f s = pmul<Packet4f>(b.v, b.v);
82 v = pdiv(v, s);
83 return *this;
84 }
86 return Packet2cf(*this) /= b;
87 }
89 return Packet2cf(pnegate(v));
90 }
91
92 Packet4f v;
93};
94
95inline std::ostream& operator<<(std::ostream& os, const Packet2cf& value) {
96 os << "[ (" << value.v[0] << ", " << value.v[1]
97 << "i),"
98 " ("
99 << value.v[2] << ", " << value.v[3] << "i) ]";
100 return os;
101}
102
103template <>
104struct packet_traits<std::complex<float> > : default_packet_traits {
107 enum {
108 Vectorizable = 1,
109 AlignedOnScalar = 1,
110 size = 2,
111 HasHalfPacket = 0,
112
113 HasAdd = 1,
114 HasSub = 1,
115 HasMul = 1,
116 HasDiv = 1,
117 HasNegate = 1,
118 HasAbs = 0,
119 HasAbs2 = 0,
120 HasMin = 0,
121 HasMax = 0,
122 HasSetLinear = 0,
123 HasBlend = 1
124 };
125};
126
127template <>
128struct unpacket_traits<Packet2cf> {
129 typedef std::complex<float> type;
132};
133
134template <>
137
138 float f0 = from.real(), f1 = from.imag();
139 Packet4f v0 = { f0, f0, f0, f0 };
140 Packet4f v1 = { f1, f1, f1, f1 };
142}
143
144template <>
147
148 return a + b;
149}
150
151template <>
154
155 return a - b;
156}
157
158template <>
161
162 return -a;
163}
164
165template <>
168
169 return a.conjugate();
170}
171
172template <>
175
176 return a * b;
177}
178
179template <>
185
186template <>
192
193template <>
199
200template <>
206
207template <>
210
212}
213
214template <>
220
221template <>
224
225 return pset1<Packet2cf>(*from);
226}
227
228template <>
230 const Packet2cf& from) {
232
234}
235
236template <>
243
244template <>
246 const std::complex<float>* from, Index stride) {
248
249 return Packet2cf(from[0 * stride], from[1 * stride]);
250}
251
252template <>
254 const Packet2cf& from,
255 Index stride) {
257
258 *to = std::complex<float>(from.v[0], from.v[1]);
259 to += stride;
260 *to = std::complex<float>(from.v[2], from.v[3]);
261}
262
263template <>
264EIGEN_STRONG_INLINE void prefetch<std::complex<float> >(const std::complex<float>* addr) {
266
267 prefetch(reinterpret_cast<const float*>(addr));
268}
269
270template <>
273
274 return std::complex<float>(a.v[0], a.v[1]);
275}
276
277template <>
283
284template <>
290
291template <>
294
295 Packet4f value = (Packet4f)preverse((Packet2d)a.v);
296 value += a.v;
297 return std::complex<float>(value[0], value[1]);
298}
299
300template <>
303
304 return std::complex<float>((a.v[0] * a.v[2]) - (a.v[1] * a.v[3]),
305 (a.v[0] * a.v[3]) + (a.v[1] * a.v[2]));
306}
307
309
310template <>
313
314 return a / b;
315}
316
317inline std::ostream& operator<<(std::ostream& os, const PacketBlock<Packet2cf, 2>& value) {
318 os << "[ " << value.packet[0] << ", " << std::endl << " " << value.packet[1] << " ]";
319 return os;
320}
321
322EIGEN_DEVICE_FUNC inline void ptranspose(PacketBlock<Packet2cf, 2>& kernel) {
324
325 Packet4f tmp =
326 (Packet4f)__builtin_msa_ilvl_d((v2i64)kernel.packet[1].v, (v2i64)kernel.packet[0].v);
327 kernel.packet[0].v =
328 (Packet4f)__builtin_msa_ilvr_d((v2i64)kernel.packet[1].v, (v2i64)kernel.packet[0].v);
329 kernel.packet[1].v = tmp;
330}
331
332template <>
338
339//---------- double ----------
340
341struct Packet1cd {
344 EIGEN_STRONG_INLINE explicit Packet1cd(const std::complex<double>& a) {
345 v[0] = std::real(a);
346 v[1] = std::imag(a);
347 }
349 }
353 v = b.v;
354 return *this;
355 }
357 static const v2u64 p2ul_CONJ_XOR = { 0x0, 0x8000000000000000 };
359 }
361 Packet2d v1, v2;
362
363 // Get the real values of a | a1_re | a1_re
365 // Get the imag values of a | a1_im | a1_im
367 // Multiply the real a with b
368 v1 = pmul(v1, b.v);
369 // Multiply the imag a with b
370 v2 = pmul(v2, b.v);
371 // Conjugate v2
372 v2 = Packet1cd(v2).conjugate().v;
373 // Swap real/imag elements in v2.
375 // Add and return the result
376 v = padd(v1, v2);
377 return *this;
378 }
380 return Packet1cd(*this) *= b;
381 }
383 v = padd(v, b.v);
384 return *this;
385 }
387 return Packet1cd(*this) += b;
388 }
390 v = psub(v, b.v);
391 return *this;
392 }
394 return Packet1cd(*this) -= b;
395 }
397 *this *= b.conjugate();
398 Packet2d s = pmul<Packet2d>(b.v, b.v);
400 v = pdiv(v, s);
401 return *this;
402 }
404 return Packet1cd(*this) /= b;
405 }
407 return Packet1cd(pnegate(v));
408 }
409
411};
412
413inline std::ostream& operator<<(std::ostream& os, const Packet1cd& value) {
414 os << "[ (" << value.v[0] << ", " << value.v[1] << "i) ]";
415 return os;
416}
417
418template <>
419struct packet_traits<std::complex<double> > : default_packet_traits {
422 enum {
423 Vectorizable = 1,
424 AlignedOnScalar = 0,
425 size = 1,
426 HasHalfPacket = 0,
427
428 HasAdd = 1,
429 HasSub = 1,
430 HasMul = 1,
431 HasDiv = 1,
432 HasNegate = 1,
433 HasAbs = 0,
434 HasAbs2 = 0,
435 HasMin = 0,
436 HasMax = 0,
437 HasSetLinear = 0
438 };
439};
440
441template <>
443 typedef std::complex<double> type;
446};
447
448template <>
451
453}
454
455template <>
458
460}
461
462template <>
465
466 return Packet1cd(from);
467}
468
469template <>
472
473 return a + b;
474}
475
476template <>
479
480 return a - b;
481}
482
483template <>
486
487 return -a;
488}
489
490template <>
493
494 return a.conjugate();
495}
496
497template <>
500
501 return a * b;
502}
503
504template <>
510
511template <>
517
518template <>
524
525template <>
531
532template <>
535
536 return pset1<Packet1cd>(*from);
537}
538
539template <>
541 const Packet1cd& from) {
543
545}
546
547template <>
549 const Packet1cd& from) {
551
553}
554
555template <>
556EIGEN_STRONG_INLINE void prefetch<std::complex<double> >(const std::complex<double>* addr) {
558
559 prefetch(reinterpret_cast<const double*>(addr));
560}
561
562template <>
564 const std::complex<double>* from, Index stride __attribute__((unused))) {
566
568 res.v[0] = std::real(from[0]);
569 res.v[1] = std::imag(from[0]);
570 return res;
571}
572
573template <>
575 const Packet1cd& from,
576 Index stride
579
580 pstore(to, from);
581}
582
583template <>
584EIGEN_STRONG_INLINE std::complex<double> pfirst<Packet1cd>(const Packet1cd& a) {
586
587 return std::complex<double>(a.v[0], a.v[1]);
588}
589
590template <>
596
597template <>
598EIGEN_STRONG_INLINE std::complex<double> predux<Packet1cd>(const Packet1cd& a) {
600
601 return pfirst(a);
602}
603
604template <>
607
608 return pfirst(a);
609}
610
612
613template <>
616
617 return a / b;
618}
619
622
623 return Packet1cd(preverse(Packet2d(x.v)));
624}
625
626inline std::ostream& operator<<(std::ostream& os, const PacketBlock<Packet1cd, 2>& value) {
627 os << "[ " << value.packet[0] << ", " << std::endl << " " << value.packet[1] << " ]";
628 return os;
629}
630
633
634 Packet2d v1, v2;
635
636 v1 = (Packet2d)__builtin_msa_ilvev_d((v2i64)kernel.packet[0].v, (v2i64)kernel.packet[1].v);
637 // Get the imag values of a
638 v2 = (Packet2d)__builtin_msa_ilvod_d((v2i64)kernel.packet[0].v, (v2i64)kernel.packet[1].v);
639
640 kernel.packet[0].v = v1;
641 kernel.packet[1].v = v2;
642}
643
644} // end namespace internal
645
646} // end namespace Eigen
647
648#endif // EIGEN_COMPLEX_MSA_H
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
#define EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(PACKET_CPLX, PACKET_REAL)
Definition ConjHelper.h:14
#define EIGEN_DEBUG_ALIGNED_STORE
Definition GenericPacketMath.h:35
#define EIGEN_DEBUG_ALIGNED_LOAD
Definition GenericPacketMath.h:27
#define EIGEN_DEBUG_UNALIGNED_STORE
Definition GenericPacketMath.h:39
#define EIGEN_DEBUG_UNALIGNED_LOAD
Definition GenericPacketMath.h:31
#define EIGEN_MSA_SHF_I8(a, b, c, d)
Definition PacketMath.h:48
#define EIGEN_MSA_DEBUG
Definition PacketMath.h:45
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9;Map< RowVectorXf > v1(M1.data(), M1.size())
Map< RowVectorXf > v2(M2.data(), M2.size())
Scalar * b
Definition benchVecAdd.cpp:17
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Definition gnuplot_common_settings.hh:12
@ Aligned16
Definition Constants.h:235
RealScalar s
Definition level1_cplx_impl.h:126
v2f64 Packet2d
Definition PacketMath.h:820
EIGEN_STRONG_INLINE void pstoreu< double >(double *to, const Packet4d &from)
Definition PacketMath.h:627
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
Definition Complex.h:167
EIGEN_STRONG_INLINE std::complex< float > predux_mul< Packet2cf >(const Packet2cf &a)
Definition Complex.h:199
EIGEN_STRONG_INLINE std::complex< float > predux< Packet2cf >(const Packet2cf &a)
Definition Complex.h:191
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:215
__vector int Packet4i
Definition PacketMath.h:31
EIGEN_STRONG_INLINE std::complex< double > predux_mul< Packet1cd >(const Packet1cd &a)
Definition Complex.h:605
EIGEN_STRONG_INLINE Packet2cf pandnot< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:172
EIGEN_STRONG_INLINE void ptranspose(PacketBlock< Packet2cf, 2 > &kernel)
Definition Complex.h:224
EIGEN_STRONG_INLINE Packet2cf ploaddup< Packet2cf >(const std::complex< float > *from)
Definition Complex.h:125
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:244
EIGEN_STRONG_INLINE Packet2cf pmul< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:173
EIGEN_DEVICE_FUNC void prefetch(const Scalar *addr)
Definition GenericPacketMath.h:719
EIGEN_STRONG_INLINE Packet4f pmul< Packet4f >(const Packet4f &a, const Packet4f &b)
Definition PacketMath.h:795
EIGEN_STRONG_INLINE Packet4i pblend(const Selector< 4 > &ifPacket, const Packet4i &thenPacket, const Packet4i &elsePacket)
Definition PacketMath.h:2107
EIGEN_STRONG_INLINE Packet1cd pmul< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:498
EIGEN_STRONG_INLINE std::complex< float > pfirst< Packet2cf >(const Packet2cf &a)
Definition Complex.h:176
EIGEN_STRONG_INLINE Packet1cd ploadu< Packet1cd >(const std::complex< double > *from)
Definition Complex.h:456
EIGEN_STRONG_INLINE Packet2cf por< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:170
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1042
EIGEN_STRONG_INLINE Packet2cf pset1< Packet2cf >(const std::complex< float > &from)
Definition Complex.h:112
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)
Definition Complex.h:184
EIGEN_STRONG_INLINE void pstore< double >(double *to, const Packet4d &from)
Definition PacketMath.h:623
EIGEN_DEVICE_FUNC Packet pmul(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:237
EIGEN_STRONG_INLINE Packet1cd pcplxflip(const Packet1cd &x)
Definition Complex.h:620
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1053
EIGEN_STRONG_INLINE Packet2d pmul< Packet2d >(const Packet2d &a, const Packet2d &b)
Definition PacketMath.h:916
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
Definition Complex.h:166
EIGEN_STRONG_INLINE Packet1cd pxor< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:519
EIGEN_STRONG_INLINE Packet2cf pdiv< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:211
EIGEN_STRONG_INLINE Packet1cd padd< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:470
EIGEN_STRONG_INLINE Packet2cf ploadu< Packet2cf >(const std::complex< float > *from)
Definition Complex.h:124
EIGEN_STRONG_INLINE Packet1cd ploaddup< Packet1cd >(const std::complex< double > *from)
Definition Complex.h:533
EIGEN_STRONG_INLINE void pstore< float >(float *to, const Packet4f &from)
Definition PacketMath.h:491
EIGEN_STRONG_INLINE Packet2cf pload< Packet2cf >(const std::complex< float > *from)
Definition Complex.h:123
std::ostream & operator<<(std::ostream &s, const Packet16c &v)
Definition PacketMath.h:371
EIGEN_STRONG_INLINE bfloat16 pfirst(const Packet8bf &a)
Definition PacketMath.h:1429
EIGEN_STRONG_INLINE std::complex< double > predux< Packet1cd >(const Packet1cd &a)
Definition Complex.h:598
EIGEN_DEVICE_FUNC void pstore(Scalar *to, const Packet &from)
Definition GenericPacketMath.h:696
EIGEN_STRONG_INLINE Packet1cd pload< Packet1cd >(const std::complex< double > *from)
Definition Complex.h:449
EIGEN_STRONG_INLINE Packet2cf pcplxflip< Packet2cf >(const Packet2cf &x)
Definition Complex.h:219
EIGEN_STRONG_INLINE Packet1cd pand< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:505
EIGEN_STRONG_INLINE Packet2cf pand< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:169
EIGEN_STRONG_INLINE Packet1cd pandnot< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:526
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1050
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
Definition PacketMath.h:1047
EIGEN_STRONG_INLINE Packet2cf pxor< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:171
EIGEN_STRONG_INLINE Packet2cf psub< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:165
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
Definition GenericPacketMath.h:222
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
Definition PacketMath.h:33
EIGEN_STRONG_INLINE Packet2cf padd< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:164
EIGEN_STRONG_INLINE Packet1cd por< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:512
__vector float Packet4f
Definition PacketMath.h:30
EIGEN_STRONG_INLINE Packet1cd pset1< Packet1cd >(const std::complex< double > &from)
Definition Complex.h:463
EIGEN_STRONG_INLINE std::complex< double > pfirst< Packet1cd >(const Packet1cd &a)
Definition Complex.h:584
EIGEN_STRONG_INLINE void pstoreu< float >(float *to, const Packet4f &from)
Definition PacketMath.h:1088
EIGEN_STRONG_INLINE Packet1cd pdiv< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:614
EIGEN_STRONG_INLINE Packet1cd psub< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition Complex.h:477
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
Definition BandTriangularSolver.h:13
Definition BFloat16.h:88
Definition Complex.h:341
EIGEN_STRONG_INLINE Packet1cd operator-(void) const
Definition Complex.h:406
EIGEN_STRONG_INLINE Packet1cd operator+(const Packet1cd &b) const
Definition Complex.h:386
EIGEN_STRONG_INLINE Packet1cd operator/(const Packet1cd &b) const
Definition Complex.h:403
EIGEN_STRONG_INLINE Packet1cd(const Packet2d &a)
Definition Complex.h:348
EIGEN_STRONG_INLINE Packet1cd operator-(const Packet1cd &b) const
Definition Complex.h:393
EIGEN_STRONG_INLINE Packet1cd()
Definition Complex.h:342
EIGEN_STRONG_INLINE Packet1cd(const Packet1cd &a)
Definition Complex.h:350
EIGEN_STRONG_INLINE Packet1cd & operator=(const Packet1cd &b)
Definition Complex.h:352
EIGEN_STRONG_INLINE Packet1cd & operator/=(const Packet1cd &b)
Definition Complex.h:396
EIGEN_STRONG_INLINE Packet1cd & operator+=(const Packet1cd &b)
Definition Complex.h:382
Packet2d v
Definition Complex.h:410
EIGEN_STRONG_INLINE Packet1cd & operator*=(const Packet1cd &b)
Definition Complex.h:360
EIGEN_STRONG_INLINE Packet1cd & operator-=(const Packet1cd &b)
Definition Complex.h:389
EIGEN_STRONG_INLINE Packet1cd operator*(const Packet1cd &b) const
Definition Complex.h:379
EIGEN_STRONG_INLINE Packet1cd(const std::complex< double > &a)
Definition Complex.h:344
EIGEN_STRONG_INLINE Packet1cd conjugate(void) const
Definition Complex.h:356
Definition Complex.h:31
EIGEN_STRONG_INLINE Packet2cf & operator=(const Packet2cf &b)
Definition Complex.h:35
Packet4f v
Definition Complex.h:80
EIGEN_STRONG_INLINE Packet2cf(const Packet2cf &a)
Definition Complex.h:33
EIGEN_STRONG_INLINE Packet2cf & operator*=(const Packet2cf &b)
Definition Complex.h:42
EIGEN_STRONG_INLINE Packet2cf operator/(const Packet2cf &b) const
Definition Complex.h:85
EIGEN_STRONG_INLINE Packet2cf operator*(const Packet2cf &b) const
Definition Complex.h:61
EIGEN_STRONG_INLINE Packet2cf operator-(void) const
Definition Complex.h:88
EIGEN_STRONG_INLINE Packet2cf()
Definition Complex.h:24
EIGEN_STRONG_INLINE Packet2cf & operator/=(const Packet2cf &b)
Definition Complex.h:78
EIGEN_STRONG_INLINE Packet2cf operator-(const Packet2cf &b) const
Definition Complex.h:75
EIGEN_STRONG_INLINE Packet2cf(const Packet4f &a)
Definition Complex.h:31
EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf &a, const Packet2cf &b)
Definition Complex.h:35
EIGEN_STRONG_INLINE Packet2cf conjugate(void) const
Definition Complex.h:39
EIGEN_STRONG_INLINE Packet2cf(const std::complex< float > &a, const std::complex< float > &b)
Definition Complex.h:26
EIGEN_STRONG_INLINE Packet2cf & operator+=(const Packet2cf &b)
Definition Complex.h:64
EIGEN_STRONG_INLINE Packet2cf & operator-=(const Packet2cf &b)
Definition Complex.h:71
EIGEN_STRONG_INLINE Packet2cf operator+(const Packet2cf &b) const
Definition Complex.h:68
@ HasBlend
Definition GenericPacketMath.h:60
@ HasDiv
Definition GenericPacketMath.h:65
@ HasSub
Definition GenericPacketMath.h:118
@ HasMax
Definition GenericPacketMath.h:124
@ HasNegate
Definition GenericPacketMath.h:120
@ HasMul
Definition GenericPacketMath.h:119
@ HasAdd
Definition GenericPacketMath.h:117
@ HasSetLinear
Definition GenericPacketMath.h:126
@ HasMin
Definition GenericPacketMath.h:123
@ HasAbs2
Definition GenericPacketMath.h:122
@ HasAbs
Definition GenericPacketMath.h:121
@ HasHalfPacket
Definition GenericPacketMath.h:114
@ size
Definition GenericPacketMath.h:112
@ AlignedOnScalar
Definition GenericPacketMath.h:113
@ Vectorizable
Definition GenericPacketMath.h:111
Definition ForwardDeclarations.h:17
Packet1cd half
Definition Complex.h:445
std::complex< double > type
Definition Complex.h:443
std::complex< float > type
Definition Complex.h:129
Packet2cf half
Definition Complex.h:131
Definition GenericPacketMath.h:133
@ masked_load_available
Definition GenericPacketMath.h:141
@ size
Definition GenericPacketMath.h:138
@ masked_store_available
Definition GenericPacketMath.h:142
@ vectorizable
Definition GenericPacketMath.h:140
@ alignment
Definition GenericPacketMath.h:139
Definition datatypes.h:12