34 assert(
tab1_[0] == 1);
35 const auto *tab1_ptr =
tab1_.addr() + 1;
36 assert(
tab1_.size_array() == nb_lignes + 1);
37 const int *tab2_ptr =
tab2_.addr();
38 const double *coeff_ptr =
coeff_.addr();
39 const double *x_ptr = x.
addr() - 1;
40 double *resu_ptr = resu.
addr() - 1;
43 double prod_scal_local = 0;
45 for (
int i = 0; i < nb_lignes; i++)
48 const int i_ligne = *(tab_lignes++);
49 assert(i_ligne >= 1 && i_ligne <= resu.
size_array());
52 const auto n_fin = *(tab1_ptr++);
53 for (; n < n_fin; n++)
55 const int colonne = *(tab2_ptr++);
56 assert(colonne >= 1 && colonne <= x.
size_array());
57 const double coef = *(coeff_ptr++);
58 const double xb = x_ptr[colonne];
61 resu_ptr[i_ligne] += r;
64 prod_scal_local += r * x_ptr[i_ligne];
66 return prod_scal_local;