Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
SimdAVXGenerated.h
1// WARNING: This file is generated. Do not edit.
2
3
4/*---------------------------------------------------------------------------*/
5/*---------------------------------------------------------------------------*/
6 // IsEmulated
7
8// Binary operation operator-
9inline AVXSimdReal operator- (AVXSimdReal a,AVXSimdReal b)
10{
11 return AVXSimdReal(
12 _mm256_sub_pd (a.v0,b.v0)
13 );
14}
15
16inline AVXSimdReal operator-(AVXSimdReal a,Real b)
17{
18 return AVXSimdReal(
19 _mm256_sub_pd (a.v0,_mm256_set1_pd(b))
20 );
21}
22
23inline AVXSimdReal operator-(Real b,AVXSimdReal a)
24{
25 return AVXSimdReal(
26 _mm256_sub_pd (_mm256_set1_pd(b), a.v0)
27 );
28}
29// Binary operation operator+
30inline AVXSimdReal operator+ (AVXSimdReal a,AVXSimdReal b)
31{
32 return AVXSimdReal(
33 _mm256_add_pd (a.v0,b.v0)
34 );
35}
36
37inline AVXSimdReal operator+(AVXSimdReal a,Real b)
38{
39 return AVXSimdReal(
40 _mm256_add_pd (a.v0,_mm256_set1_pd(b))
41 );
42}
43
44inline AVXSimdReal operator+(Real b,AVXSimdReal a)
45{
46 return AVXSimdReal(
47 _mm256_add_pd (_mm256_set1_pd(b), a.v0)
48 );
49}
50// Binary operation operator*
51inline AVXSimdReal operator* (AVXSimdReal a,AVXSimdReal b)
52{
53 return AVXSimdReal(
54 _mm256_mul_pd (a.v0,b.v0)
55 );
56}
57
58inline AVXSimdReal operator*(AVXSimdReal a,Real b)
59{
60 return AVXSimdReal(
61 _mm256_mul_pd (a.v0,_mm256_set1_pd(b))
62 );
63}
64
65inline AVXSimdReal operator*(Real b,AVXSimdReal a)
66{
67 return AVXSimdReal(
68 _mm256_mul_pd (_mm256_set1_pd(b), a.v0)
69 );
70}
71// Binary operation operator/
72inline AVXSimdReal operator/ (AVXSimdReal a,AVXSimdReal b)
73{
74 return AVXSimdReal(
75 _mm256_div_pd (a.v0,b.v0)
76 );
77}
78
79inline AVXSimdReal operator/(AVXSimdReal a,Real b)
80{
81 return AVXSimdReal(
82 _mm256_div_pd (a.v0,_mm256_set1_pd(b))
83 );
84}
85
86inline AVXSimdReal operator/(Real b,AVXSimdReal a)
87{
88 return AVXSimdReal(
89 _mm256_div_pd (_mm256_set1_pd(b), a.v0)
90 );
91}
92namespace math {
93// Binary operation min
94inline AVXSimdReal min (AVXSimdReal a,AVXSimdReal b)
95{
96 return AVXSimdReal(
97 _mm256_min_pd (a.v0,b.v0)
98 );
99}
100
101inline AVXSimdReal min(AVXSimdReal a,Real b)
102{
103 return AVXSimdReal(
104 _mm256_min_pd (a.v0,_mm256_set1_pd(b))
105 );
106}
107
108inline AVXSimdReal min(Real b,AVXSimdReal a)
109{
110 return AVXSimdReal(
111 _mm256_min_pd (_mm256_set1_pd(b), a.v0)
112 );
113}
114}
115namespace math {
116// Binary operation max
117inline AVXSimdReal max (AVXSimdReal a,AVXSimdReal b)
118{
119 return AVXSimdReal(
120 _mm256_max_pd (a.v0,b.v0)
121 );
122}
123
124inline AVXSimdReal max(AVXSimdReal a,Real b)
125{
126 return AVXSimdReal(
127 _mm256_max_pd (a.v0,_mm256_set1_pd(b))
128 );
129}
130
131inline AVXSimdReal max(Real b,AVXSimdReal a)
132{
133 return AVXSimdReal(
134 _mm256_max_pd (_mm256_set1_pd(b), a.v0)
135 );
136}
137}
138
139 // IsEmulated
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143namespace math {
144// Unary operation sqrt
145inline AVXSimdReal sqrt (AVXSimdReal a)
146{
147 return AVXSimdReal(_mm256_sqrt_pd(a.v0));
148}
149}
150
151namespace math {
152// Unary operation exp
153inline AVXSimdReal exp (AVXSimdReal a)
154{
155 Real* za = (Real*)(&a);
156 return AVXSimdReal::fromScalar(math::exp(za[0]),math::exp(za[1]),math::exp(za[2]),math::exp(za[3]));
157}
158}
159
160namespace math {
161// Unary operation log10
162inline AVXSimdReal log10 (AVXSimdReal a)
163{
164 Real* za = (Real*)(&a);
165 return AVXSimdReal::fromScalar(math::log10(za[0]),math::log10(za[1]),math::log10(za[2]),math::log10(za[3]));
166}
167}
168
__host__ __device__ Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
Definition MathUtils.h:336
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
Definition MathUtils.h:392
__host__ __device__ double sqrt(double v)
Racine carrée de v.
Definition Math.h:135
__host__ __device__ double log10(double v)
Logarithme décimal de v.
Definition Math.h:68
__host__ __device__ double exp(double v)
Exponentielle de v.
Definition Math.h:116
Real2 operator*(Real sca, const Real2Proxy &vec)
Multiplication par un scalaire.
Definition Real2Proxy.h:241
AVXSimdX4Real AVXSimdReal
Vecteur de 'double' en implémentation par SSE.
Definition SimdAVX.h:316
Real2 operator/(const Real2Proxy &vec, Real sca)
Division par un scalaire.
Definition Real2Proxy.h:263
double Real
Type représentant un réel.