7#include <boost/serialization/access.hpp>
35 static constexpr int Size{4};
37 static constexpr size_t size() {
return Size; }
48 for (
size_t i = 0; i <
size(); i++) {
55 for (
size_t i = 0; i <
size(); i++) {
66 for (size_t i = 0; i < size(); i++) { \
67 z[i] = (A[i] F B[i]); \
83 for (
size_t i = 0; i <
size(); i++) {
92 for (
size_t i = 0; i <
size(); i++) {
104 for (
size_t i = 0; i <
size(); i++) {
105 strm << std::setw(12) << std::setfill(
' ') << a[i] <<
' ';
112 for (
size_t i = 0; i <
size(); i++) {
123 static constexpr size_t size() {
return fmask::size(); }
131 for (
size_t i = 0; i <
size(); i++) {
138 for (
size_t i = 0; i <
size(); i++) {
145 template<
class Archive>
148 for (
size_t i = 0; i <
size(); ++i) {
163 for (
size_t i = 0; i <
size(); i++) {
172 for (size_t i = 0; i < size(); i++) { \
177#define _f2(A, B, F) \
179 for (size_t i = 0; i < size(); i++) { \
180 z[i] = F(A[i], B[i]); \
184#define _op(A, B, F) \
186 for (size_t i = 0; i < size(); i++) { \
187 z[i] = (A[i] F B[i]); \
191#define _opComp(A, B, F) \
193 for (size_t i = 0; i < size(); i++) { \
194 z[i] = (A[i] F B[i]); \
215 for (
size_t i = 0; i <
size(); i++) {
216 m[i] = std::isnan(a[i]);
224 for (
size_t i = 0; i <
size(); i++) {
225 z[i] = a[i] ? b[i] : c[i];
265 for (
size_t i = 0; i <
size(); i++) {
266 strm << std::setw(12) << std::setfill(
' ') << a[i] <<
' ';
273 for (
size_t i = 0; i <
size(); i++) {
281#define _fvecalignment __attribute__((aligned(fvec::size() * sizeof(fscal))))
friend fmask operator^(const fmask &a, const fmask &b)
friend std::ostream & operator<<(std::ostream &strm, const fmask &a)
friend fmask operator!(const fmask &a)
friend std::istream & operator>>(std::istream &strm, fmask &a)
bool & operator[](size_t i)
static constexpr int Size
bool operator[](size_t i) const
friend fmask operator|(const fmask &a, const fmask &b)
friend fmask operator||(const fmask &a, const fmask &b)
friend fmask operator&&(const fmask &a, const fmask &b)
static constexpr size_t size()
friend fmask operator&(const fmask &a, const fmask &b)
friend fvec min(const fvec &a, const fvec &b)
friend fmask operator>=(const fvec &a, const fvec &b)
friend fvec operator-(const fvec &a)
friend std::ostream & operator<<(std::ostream &strm, const fvec &a)
fscal operator[](size_t i) const
friend std::istream & operator>>(std::istream &strm, fvec &a)
static constexpr size_t size()
friend fvec sin(const fvec &a)
friend fscal max(fscal x, fscal y)
friend fvec sqrt(const fvec &a)
friend fvec operator/(const fvec &a, const fvec &b)
friend fvec max(const fvec &a, const fvec &b)
friend void operator-=(fvec &a, const fvec &b)
friend fvec operator-(const fvec &a, const fvec &b)
friend fmask operator>(const fvec &a, const fvec &b)
void serialize(Archive &ar, const unsigned int)
friend fvec iif(fmask a, fvec b, fvec c)
friend fvec sgn(const fvec &a)
friend fmask operator<(const fvec &a, const fvec &b)
friend fvec operator+(const fvec &a)
friend fvec exp(const fvec &a)
fscal & operator[](size_t i)
friend void operator/=(fvec &a, const fvec &b)
friend fvec operator+(const fvec &a, const fvec &b)
friend fvec cos(const fvec &a)
friend fmask isnan(const fvec &a)
friend void operator*=(fvec &a, const fvec &b)
friend void operator+=(fvec &a, const fvec &b)
friend class boost::serialization::access
Serialization block.
friend fscal asgnb(fscal x, fscal y)
friend fmask operator<=(const fvec &a, const fvec &b)
friend fscal min(fscal x, fscal y)
friend fmask operator==(const fvec &a, const fvec &b)
friend fvec operator*(const fvec &a, const fvec &b)
friend fvec asgnb(const fvec &a, const fvec &b)
friend fvec log(const fvec &a)
friend fscal sgn(fscal x)
class cbm::algo::kf::fvec __attribute__((aligned(16)))
constexpr auto VcMemAlign
fscal asgnb(fscal x, fscal y)
fscal min(fscal x, fscal y)
fscal max(fscal x, fscal y)