15#include "arcane/utils/ArcanePrecomp.h"
17#include "arcane/datatype/ArrayVariant.h"
19#include "arcane/expr/ArrayExpressionImpl.h"
20#include "arcane/expr/OperatorMng.h"
21#include "arcane/expr/BadOperationException.h"
23#include "arcane/MathUtils.h"
63 res->
data()->value(res_val);
66 var_res.data()->value(var_val);
69 for(
Integer i=0 ; i<size ; ++i)
70 var_val[res_indices[i]] = res_val[i];
79 cerr <<
"** SIZE res=" << size <<
" var=" << vsize <<
" res=" << res <<
'\n';
85 VariantBase::eType type = var->type();
90 res->
data()->value(res_val);
93 var_res.data()->value(var_val);
96 for(
Integer i=0 ; i<max_size ; ++i)
97 res_val[i] = var_val[res_indices[i]];
110 switch(variant->type()){
111 case VariantBase::TReal:
112 m_op = new ArrayOperatorT<Real>();
115 throw BadOperationException(
"ArrayExpressionImpl::ArrayExpressionImpl",
116 "bad type",variant->type());
124~ArrayExpressionImpl()
134void ArrayExpressionImpl::
137 ExpressionResult result(m_variant);
138 expr->apply(&result);
144void ArrayExpressionImpl::
147 ExpressionResult result(indices);
148 result.allocate(m_variant->type());
149 expr->apply(&result);
150 m_op->assign(&result, m_variant);
156void ArrayExpressionImpl::
159 m_op->evaluate(result, m_variant);
168 return m_variant->size();
virtual Integer vectorSize() const
Nombre d'éléments du vecteur.
Operateur binaire generique pour les expressions.
Type de base polymorphe pour les tableaux (dimension 1).
Vue modifiable d'un tableau d'un type T.
constexpr const_pointer data() const noexcept
Pointeur sur le début de la vue.
Vue constante d'un tableau de type T.
Classe de base de l'implémentation d'une expression.
Type de base polymorphe d'une expression.
Interface pour les différentes implémentations d'une expression.
__host__ __device__ Real2 min(Real2 a, Real2 b)
Retourne le minimum de deux Real2.
Int32 Integer
Type représentant un entier.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.