12#ifndef ARCANE_SIMDMATHUTILS_H
13#define ARCANE_SIMDMATHUTILS_H
17#include "arcane/utils/SimdOperation.h"
35 u.y * v.z - u.z * v.y,
36 u.z * v.x - u.x * v.z,
47 return (u.x * v.y - u.y * v.x);
53 return SimdReal(u.x*v.x + u.y*v.y + u.z*v.z);
57dot(
const SimdReal2& u,
const SimdReal2& v)
62ARCCORE_DEPRECATED_2021(
"Use normL2() instead")
64abs(const SimdReal3& sr)
68 Real3 r(sr.x[si],sr.y[si],sr.z[si]);
74ARCCORE_DEPRECATED_2021(
"Use normL2() instead")
76abs(const SimdReal2& sr)
80 Real2 r(sr.x[si],sr.y[si]);
87normL2(
const SimdReal3& sr)
91 Real3 r(sr.x[si],sr.y[si],sr.z[si]);
98normL2(
const SimdReal2& sr)
102 Real2 r(sr.x[si],sr.y[si]);
136 t.x.x*v.x.y+t.x.y*v.y.y+t.x.z*v.z.y,
137 t.x.x*v.x.z+t.x.y*v.y.z+t.x.z*v.z.z),
138 SimdReal3(t.y.x*v.x.x+t.y.y*v.y.x+t.y.z*v.z.x,
139 t.y.x*v.x.y+t.y.y*v.y.y+t.y.z*v.z.y,
140 t.y.x*v.x.z+t.y.y*v.y.z+t.y.z*v.z.z),
141 SimdReal3(t.z.x*v.x.x+t.z.y*v.y.x+t.z.z*v.z.x,
142 t.z.x*v.x.y+t.z.y*v.y.y+t.z.z*v.z.y,
143 t.z.x*v.x.z+t.z.y*v.y.z+t.z.z*v.z.z));
Vectorisation des réels par émulation.
Représente un Real2 vectoriel.
Représente un Real2x2 vectoriel.
Représente un Real3 vectoriel.
Représente un Real3x3 vectoriel.
SimdInfo::SimdReal SimdReal
Vecteur SIMD de réel.
#define ENUMERATE_SIMD_REAL(_iter)
Macro pour itérer sur les index d'un vecteur Simd de réel ou dérivé (Real2, Real3,...
__host__ __device__ Real dot(Real2 u, Real2 v)
Produit scalaire de u par v dans .
__host__ __device__ Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
T max(const T &a, const T &b, const T &c)
Retourne le maximum de trois éléments.
__host__ __device__ Real cross2D(Real3 u, Real3 v)
Produit vectoriel de u par v dans .
__host__ __device__ Real3 cross(Real3 v1, Real3 v2)
Produit vectoriel de deux vecteurs à 3 composantes.
Real3x3 prodTens(Real3 u, Real3 v)
Produit tensoriel de deux vecteurs Real3.
__host__ __device__ Real3x3 matrixProduct(const Real3x3 &t, const Real3x3 &v)
Produit matrice matrice entre deux tenseurs.
__host__ __device__ Real mixteMul(Real3 u, Real3 v, Real3 w)
Produit mixte de u, v et w.
__host__ __device__ Real3x3 matrixTranspose(const Real3x3 &t)
Transpose la matrice.
Espace de nom pour les fonctions mathématiques.