MSA/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 
18 namespace Eigen {
19 
20 namespace internal {
21 
22 //---------- float ----------
23 struct Packet2cf {
25  }
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  }
34  }
36  v = b.v;
37  return *this;
38  }
40  return Packet2cf((Packet4f)__builtin_msa_bnegi_d((v2u64)v, 63));
41  }
43  Packet4f v1, v2;
44 
45  // Get the real values of a | a1_re | a1_re | a2_re | a2_re |
46  v1 = (Packet4f)__builtin_msa_ilvev_w((v4i32)v, (v4i32)v);
47  // Get the imag values of a | a1_im | a1_im | a2_im | a2_im |
48  v2 = (Packet4f)__builtin_msa_ilvod_w((v4i32)v, (v4i32)v);
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.
56  v2 = (Packet4f)__builtin_msa_shf_w((v4i32)v2, EIGEN_MSA_SHF_I8(1, 0, 3, 2));
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);
81  s = padd(s, (Packet4f)__builtin_msa_shf_w((v4i32)s, EIGEN_MSA_SHF_I8(1, 0, 3, 2)));
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 
95 inline 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 
103 template <>
104 struct packet_traits<std::complex<float> > : default_packet_traits {
105  typedef Packet2cf type;
106  typedef Packet2cf half;
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 
127 template <>
128 struct unpacket_traits<Packet2cf> {
129  typedef std::complex<float> type;
130  enum { size = 2, alignment = Aligned16, vectorizable=true, masked_load_available=false, masked_store_available=false };
131  typedef Packet2cf half;
132 };
133 
134 template <>
135 EIGEN_STRONG_INLINE Packet2cf pset1<Packet2cf>(const std::complex<float>& from) {
137 
138  float f0 = from.real(), f1 = from.imag();
139  Packet4f v0 = { f0, f0, f0, f0 };
140  Packet4f v1 = { f1, f1, f1, f1 };
141  return Packet2cf((Packet4f)__builtin_msa_ilvr_w((Packet4i)v1, (Packet4i)v0));
142 }
143 
144 template <>
147 
148  return a + b;
149 }
150 
151 template <>
154 
155  return a - b;
156 }
157 
158 template <>
161 
162  return -a;
163 }
164 
165 template <>
168 
169  return a.conjugate();
170 }
171 
172 template <>
175 
176  return a * b;
177 }
178 
179 template <>
182 
183  return Packet2cf(pand(a.v, b.v));
184 }
185 
186 template <>
189 
190  return Packet2cf(por(a.v, b.v));
191 }
192 
193 template <>
196 
197  return Packet2cf(pxor(a.v, b.v));
198 }
199 
200 template <>
203 
204  return Packet2cf(pandnot(a.v, b.v));
205 }
206 
207 template <>
208 EIGEN_STRONG_INLINE Packet2cf pload<Packet2cf>(const std::complex<float>* from) {
210 
211  EIGEN_DEBUG_ALIGNED_LOAD return Packet2cf(pload<Packet4f>((const float*)from));
212 }
213 
214 template <>
215 EIGEN_STRONG_INLINE Packet2cf ploadu<Packet2cf>(const std::complex<float>* from) {
217 
218  EIGEN_DEBUG_UNALIGNED_LOAD return Packet2cf(ploadu<Packet4f>((const float*)from));
219 }
220 
221 template <>
222 EIGEN_STRONG_INLINE Packet2cf ploaddup<Packet2cf>(const std::complex<float>* from) {
224 
225  return pset1<Packet2cf>(*from);
226 }
227 
228 template <>
229 EIGEN_STRONG_INLINE void pstore<std::complex<float> >(std::complex<float>* to,
230  const Packet2cf& from) {
232 
233  EIGEN_DEBUG_ALIGNED_STORE pstore<float>((float*)to, from.v);
234 }
235 
236 template <>
237 EIGEN_STRONG_INLINE void pstoreu<std::complex<float> >(std::complex<float>* to,
238  const Packet2cf& from) {
240 
241  EIGEN_DEBUG_UNALIGNED_STORE pstoreu<float>((float*)to, from.v);
242 }
243 
244 template <>
245 EIGEN_DEVICE_FUNC inline Packet2cf pgather<std::complex<float>, Packet2cf>(
246  const std::complex<float>* from, Index stride) {
248 
249  return Packet2cf(from[0 * stride], from[1 * stride]);
250 }
251 
252 template <>
253 EIGEN_DEVICE_FUNC inline void pscatter<std::complex<float>, Packet2cf>(std::complex<float>* to,
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 
263 template <>
264 EIGEN_STRONG_INLINE void prefetch<std::complex<float> >(const std::complex<float>* addr) {
266 
267  prefetch(reinterpret_cast<const float*>(addr));
268 }
269 
270 template <>
271 EIGEN_STRONG_INLINE std::complex<float> pfirst<Packet2cf>(const Packet2cf& a) {
273 
274  return std::complex<float>(a.v[0], a.v[1]);
275 }
276 
277 template <>
280 
281  return Packet2cf((Packet4f)__builtin_msa_shf_w((v4i32)a.v, EIGEN_MSA_SHF_I8(2, 3, 0, 1)));
282 }
283 
284 template <>
287 
288  return Packet2cf((Packet4f)__builtin_msa_shf_w((v4i32)a.v, EIGEN_MSA_SHF_I8(1, 0, 3, 2)));
289 }
290 
291 template <>
292 EIGEN_STRONG_INLINE std::complex<float> predux<Packet2cf>(const Packet2cf& a) {
294 
296  value += a.v;
297  return std::complex<float>(value[0], value[1]);
298 }
299 
300 template <>
301 EIGEN_STRONG_INLINE std::complex<float> predux_mul<Packet2cf>(const Packet2cf& a) {
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 
310 template <>
313 
314  return a / b;
315 }
316 
317 inline 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 
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 
332 template <>
333 EIGEN_STRONG_INLINE Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket,
334  const Packet2cf& elsePacket) {
335  return (Packet2cf)(Packet4f)pblend<Packet2d>(ifPacket, (Packet2d)thenPacket.v,
336  (Packet2d)elsePacket.v);
337 }
338 
339 //---------- double ----------
340 
341 struct Packet1cd {
343  }
344  EIGEN_STRONG_INLINE explicit Packet1cd(const std::complex<double>& a) {
345  v[0] = std::real(a);
346  v[1] = std::imag(a);
347  }
348  EIGEN_STRONG_INLINE explicit Packet1cd(const Packet2d& a) : v(a) {
349  }
351  }
353  v = b.v;
354  return *this;
355  }
357  static const v2u64 p2ul_CONJ_XOR = { 0x0, 0x8000000000000000 };
358  return (Packet1cd)pxor(v, (Packet2d)p2ul_CONJ_XOR);
359  }
361  Packet2d v1, v2;
362 
363  // Get the real values of a | a1_re | a1_re
364  v1 = (Packet2d)__builtin_msa_ilvev_d((v2i64)v, (v2i64)v);
365  // Get the imag values of a | a1_im | a1_im
366  v2 = (Packet2d)__builtin_msa_ilvod_d((v2i64)v, (v2i64)v);
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.
374  v2 = (Packet2d)__builtin_msa_shf_w((v4i32)v2, EIGEN_MSA_SHF_I8(2, 3, 0, 1));
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);
399  s = padd(s, preverse<Packet2d>(s));
400  v = pdiv(v, s);
401  return *this;
402  }
404  return Packet1cd(*this) /= b;
405  }
407  return Packet1cd(pnegate(v));
408  }
409 
411 };
412 
413 inline std::ostream& operator<<(std::ostream& os, const Packet1cd& value) {
414  os << "[ (" << value.v[0] << ", " << value.v[1] << "i) ]";
415  return os;
416 }
417 
418 template <>
419 struct packet_traits<std::complex<double> > : default_packet_traits {
420  typedef Packet1cd type;
421  typedef Packet1cd half;
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 
441 template <>
443  typedef std::complex<double> type;
444  enum { size = 1, alignment = Aligned16, vectorizable=true, masked_load_available=false, masked_store_available=false };
445  typedef Packet1cd half;
446 };
447 
448 template <>
449 EIGEN_STRONG_INLINE Packet1cd pload<Packet1cd>(const std::complex<double>* from) {
451 
452  EIGEN_DEBUG_ALIGNED_LOAD return Packet1cd(pload<Packet2d>((const double*)from));
453 }
454 
455 template <>
456 EIGEN_STRONG_INLINE Packet1cd ploadu<Packet1cd>(const std::complex<double>* from) {
458 
459  EIGEN_DEBUG_UNALIGNED_LOAD return Packet1cd(ploadu<Packet2d>((const double*)from));
460 }
461 
462 template <>
463 EIGEN_STRONG_INLINE Packet1cd pset1<Packet1cd>(const std::complex<double>& from) {
465 
466  return Packet1cd(from);
467 }
468 
469 template <>
472 
473  return a + b;
474 }
475 
476 template <>
479 
480  return a - b;
481 }
482 
483 template <>
486 
487  return -a;
488 }
489 
490 template <>
493 
494  return a.conjugate();
495 }
496 
497 template <>
500 
501  return a * b;
502 }
503 
504 template <>
507 
508  return Packet1cd(pand(a.v, b.v));
509 }
510 
511 template <>
514 
515  return Packet1cd(por(a.v, b.v));
516 }
517 
518 template <>
521 
522  return Packet1cd(pxor(a.v, b.v));
523 }
524 
525 template <>
528 
529  return Packet1cd(pandnot(a.v, b.v));
530 }
531 
532 template <>
533 EIGEN_STRONG_INLINE Packet1cd ploaddup<Packet1cd>(const std::complex<double>* from) {
535 
536  return pset1<Packet1cd>(*from);
537 }
538 
539 template <>
540 EIGEN_STRONG_INLINE void pstore<std::complex<double> >(std::complex<double>* to,
541  const Packet1cd& from) {
543 
544  EIGEN_DEBUG_ALIGNED_STORE pstore<double>((double*)to, from.v);
545 }
546 
547 template <>
548 EIGEN_STRONG_INLINE void pstoreu<std::complex<double> >(std::complex<double>* to,
549  const Packet1cd& from) {
551 
552  EIGEN_DEBUG_UNALIGNED_STORE pstoreu<double>((double*)to, from.v);
553 }
554 
555 template <>
556 EIGEN_STRONG_INLINE void prefetch<std::complex<double> >(const std::complex<double>* addr) {
558 
559  prefetch(reinterpret_cast<const double*>(addr));
560 }
561 
562 template <>
563 EIGEN_DEVICE_FUNC inline Packet1cd pgather<std::complex<double>, Packet1cd>(
564  const std::complex<double>* from, Index stride __attribute__((unused))) {
566 
567  Packet1cd res;
568  res.v[0] = std::real(from[0]);
569  res.v[1] = std::imag(from[0]);
570  return res;
571 }
572 
573 template <>
574 EIGEN_DEVICE_FUNC inline void pscatter<std::complex<double>, Packet1cd>(std::complex<double>* to,
575  const Packet1cd& from,
576  Index stride
577  __attribute__((unused))) {
579 
580  pstore(to, from);
581 }
582 
583 template <>
584 EIGEN_STRONG_INLINE std::complex<double> pfirst<Packet1cd>(const Packet1cd& a) {
586 
587  return std::complex<double>(a.v[0], a.v[1]);
588 }
589 
590 template <>
593 
594  return a;
595 }
596 
597 template <>
598 EIGEN_STRONG_INLINE std::complex<double> predux<Packet1cd>(const Packet1cd& a) {
600 
601  return pfirst(a);
602 }
603 
604 template <>
605 EIGEN_STRONG_INLINE std::complex<double> predux_mul<Packet1cd>(const Packet1cd& a) {
607 
608  return pfirst(a);
609 }
610 
612 
613 template <>
616 
617  return a / b;
618 }
619 
622 
623  return Packet1cd(preverse(Packet2d(x.v)));
624 }
625 
626 inline 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
EIGEN_STRONG_INLINE Packet2cf(const std::complex< float > &a, const std::complex< float > &b)
Definition: MSA/Complex.h:26
EIGEN_STRONG_INLINE Packet1cd conjugate(void) const
Definition: MSA/Complex.h:356
EIGEN_STRONG_INLINE Packet1cd ploaddup< Packet1cd >(const std::complex< double > *from)
Definition: MSA/Complex.h:533
#define EIGEN_STRONG_INLINE
Definition: Macros.h:917
float real
Definition: datatypes.h:10
Vector v2
Scalar * b
Definition: benchVecAdd.cpp:17
EIGEN_STRONG_INLINE Packet2cf por< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Vector v1
#define EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(PACKET_CPLX, PACKET_REAL)
Definition: ConjHelper.h:14
EIGEN_STRONG_INLINE Packet1cd padd< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:470
EIGEN_STRONG_INLINE Packet8h pandnot(const Packet8h &a, const Packet8h &b)
#define EIGEN_DEBUG_UNALIGNED_LOAD
#define EIGEN_MSA_SHF_I8(a, b, c, d)
EIGEN_STRONG_INLINE Packet2cf pmul< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
Definition: MSA/Complex.h:173
EIGEN_STRONG_INLINE Packet2cf(const Packet2cf &a)
Definition: MSA/Complex.h:33
EIGEN_STRONG_INLINE Packet1cd & operator*=(const Packet1cd &b)
Definition: MSA/Complex.h:360
svint32_t PacketXi __attribute__((arm_sve_vector_bits(EIGEN_ARM64_SVE_VL)))
EIGEN_STRONG_INLINE Packet1cd pand< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:505
EIGEN_STRONG_INLINE Packet2cf ploadu< Packet2cf >(const std::complex< float > *from)
#define EIGEN_DEBUG_ALIGNED_STORE
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
__vector int Packet4i
EIGEN_STRONG_INLINE Packet1cd()
Definition: MSA/Complex.h:342
EIGEN_STRONG_INLINE Packet1cd pdiv< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:614
EIGEN_STRONG_INLINE Packet2cf pload< Packet2cf >(const std::complex< float > *from)
EIGEN_STRONG_INLINE Packet2cf pset1< Packet2cf >(const std::complex< float > &from)
EIGEN_STRONG_INLINE Packet1cd pxor< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:519
EIGEN_STRONG_INLINE std::complex< float > pfirst< Packet2cf >(const Packet2cf &a)
#define EIGEN_DEBUG_UNALIGNED_STORE
EIGEN_STRONG_INLINE Packet1cd operator*(const Packet1cd &b) const
Definition: MSA/Complex.h:379
EIGEN_STRONG_INLINE Packet1cd operator-(const Packet1cd &b) const
Definition: MSA/Complex.h:393
EIGEN_STRONG_INLINE Packet8h pxor(const Packet8h &a, const Packet8h &b)
EIGEN_STRONG_INLINE Packet2cf & operator*=(const Packet2cf &b)
Definition: MSA/Complex.h:42
EIGEN_STRONG_INLINE Packet1cd pset1< Packet1cd >(const std::complex< double > &from)
Definition: MSA/Complex.h:463
EIGEN_STRONG_INLINE void pstoreu< double >(double *to, const Packet4d &from)
#define EIGEN_DEBUG_ALIGNED_LOAD
EIGEN_STRONG_INLINE Packet2cf psub< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE Packet2cf & operator+=(const Packet2cf &b)
Definition: MSA/Complex.h:64
EIGEN_STRONG_INLINE Packet2cf operator-(void) const
Definition: MSA/Complex.h:88
EIGEN_DEVICE_FUNC Packet padd(const Packet &a, const Packet &b)
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
EIGEN_STRONG_INLINE Packet2cf(const Packet4f &a)
Definition: MSA/Complex.h:31
EIGEN_STRONG_INLINE bfloat16 pfirst(const Packet8bf &a)
EIGEN_STRONG_INLINE std::complex< double > predux< Packet1cd >(const Packet1cd &a)
Definition: MSA/Complex.h:598
EIGEN_STRONG_INLINE void pstore< double >(double *to, const Packet4d &from)
EIGEN_STRONG_INLINE Packet1cd(const Packet2d &a)
Definition: MSA/Complex.h:348
EIGEN_STRONG_INLINE Packet4f ploadu< Packet4f >(const float *from)
EIGEN_STRONG_INLINE void ptranspose(PacketBlock< Packet2cf, 2 > &kernel)
EIGEN_STRONG_INLINE Packet2cf pand< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE void pstore< float >(float *to, const Packet4f &from)
EIGEN_STRONG_INLINE Packet2cf()
Definition: MSA/Complex.h:24
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
EIGEN_STRONG_INLINE Packet2cf & operator=(const Packet2cf &b)
Definition: MSA/Complex.h:35
EIGEN_STRONG_INLINE Packet2cf conjugate(void) const
Definition: MSA/Complex.h:39
__vector float Packet4f
EIGEN_STRONG_INLINE Packet1cd pandnot< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:526
EIGEN_STRONG_INLINE Packet1cd operator+(const Packet1cd &b) const
Definition: MSA/Complex.h:386
EIGEN_STRONG_INLINE Packet1cd pload< Packet1cd >(const std::complex< double > *from)
Definition: MSA/Complex.h:449
EIGEN_STRONG_INLINE Packet1cd & operator/=(const Packet1cd &b)
Definition: MSA/Complex.h:396
RealScalar s
EIGEN_STRONG_INLINE std::complex< float > predux_mul< Packet2cf >(const Packet2cf &a)
EIGEN_STRONG_INLINE Packet8h pand(const Packet8h &a, const Packet8h &b)
EIGEN_STRONG_INLINE Packet2d ploadu< Packet2d >(const double *from)
EIGEN_STRONG_INLINE Packet2cf pconj(const Packet2cf &a)
EIGEN_STRONG_INLINE Packet2d pload< Packet2d >(const double *from)
EIGEN_STRONG_INLINE Packet1cd(const Packet1cd &a)
Definition: MSA/Complex.h:350
EIGEN_STRONG_INLINE std::complex< float > predux< Packet2cf >(const Packet2cf &a)
EIGEN_STRONG_INLINE Packet2cf ploaddup< Packet2cf >(const std::complex< float > *from)
EIGEN_STRONG_INLINE std::complex< double > predux_mul< Packet1cd >(const Packet1cd &a)
Definition: MSA/Complex.h:605
EIGEN_STRONG_INLINE void pstoreu< float >(float *to, const Packet4f &from)
EIGEN_STRONG_INLINE Packet1cd operator/(const Packet1cd &b) const
Definition: MSA/Complex.h:403
EIGEN_STRONG_INLINE Packet1cd & operator+=(const Packet1cd &b)
Definition: MSA/Complex.h:382
EIGEN_STRONG_INLINE Packet1cd & operator=(const Packet1cd &b)
Definition: MSA/Complex.h:352
EIGEN_STRONG_INLINE Packet4f pmul< Packet4f >(const Packet4f &a, const Packet4f &b)
EIGEN_DEVICE_FUNC void pstore(Scalar *to, const Packet &from)
EIGEN_STRONG_INLINE Packet4f pload< Packet4f >(const float *from)
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:976
EIGEN_STRONG_INLINE Packet1cd psub< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:477
EIGEN_STRONG_INLINE Packet2cf pnegate(const Packet2cf &a)
EIGEN_DEVICE_FUNC Packet pdiv(const Packet &a, const Packet &b)
#define EIGEN_MSA_DEBUG
EIGEN_STRONG_INLINE Packet2cf operator+(const Packet2cf &b) const
Definition: MSA/Complex.h:68
EIGEN_STRONG_INLINE Packet2cf operator-(const Packet2cf &b) const
Definition: MSA/Complex.h:75
ofstream os("timeSchurFactors.csv")
Point2 f1(const Point3 &p, OptionalJacobian< 2, 3 > H)
EIGEN_STRONG_INLINE Packet2cf & operator/=(const Packet2cf &b)
Definition: MSA/Complex.h:78
static const double v0
EIGEN_STRONG_INLINE Packet1cd pmul< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:498
EIGEN_DEVICE_FUNC Packet psub(const Packet &a, const Packet &b)
EIGEN_STRONG_INLINE Packet1cd & operator-=(const Packet1cd &b)
Definition: MSA/Complex.h:389
EIGEN_STRONG_INLINE Packet1cd ploadu< Packet1cd >(const std::complex< double > *from)
Definition: MSA/Complex.h:456
EIGEN_STRONG_INLINE Packet1cd pcplxflip(const Packet1cd &x)
Definition: MSA/Complex.h:620
EIGEN_DEVICE_FUNC const ImagReturnType imag() const
EIGEN_STRONG_INLINE Packet1cd por< Packet1cd >(const Packet1cd &a, const Packet1cd &b)
Definition: MSA/Complex.h:512
EIGEN_STRONG_INLINE Packet1cd operator-(void) const
Definition: MSA/Complex.h:406
EIGEN_STRONG_INLINE Packet2cf pxor< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE Packet8h por(const Packet8h &a, const Packet8h &b)
EIGEN_STRONG_INLINE Packet2cf pmul(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE Packet2d pmul< Packet2d >(const Packet2d &a, const Packet2d &b)
EIGEN_DEVICE_FUNC void prefetch(const Scalar *addr)
EIGEN_STRONG_INLINE Packet2cf padd< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
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
EIGEN_STRONG_INLINE Packet2cf operator*(const Packet2cf &b) const
Definition: MSA/Complex.h:61
EIGEN_STRONG_INLINE Packet2cf & operator-=(const Packet2cf &b)
Definition: MSA/Complex.h:71
EIGEN_STRONG_INLINE Packet1cd(const std::complex< double > &a)
Definition: MSA/Complex.h:344
std::ostream & operator<<(std::ostream &s, const Packet16c &v)
EIGEN_STRONG_INLINE Packet2cf operator/(const Packet2cf &b) const
Definition: MSA/Complex.h:85
EIGEN_STRONG_INLINE Packet2cf pandnot< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE Packet4i pblend(const Selector< 4 > &ifPacket, const Packet4i &thenPacket, const Packet4i &elsePacket)
EIGEN_STRONG_INLINE std::complex< double > pfirst< Packet1cd >(const Packet1cd &a)
Definition: MSA/Complex.h:584
Point2 t(10, 10)
EIGEN_STRONG_INLINE Packet2cf pdiv< Packet2cf >(const Packet2cf &a, const Packet2cf &b)
EIGEN_STRONG_INLINE Packet2cf pcplxflip< Packet2cf >(const Packet2cf &x)
EIGEN_STRONG_INLINE Packet2cf preverse(const Packet2cf &a)


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:34:02