 
 
 __global__
-void create_sub_expr(float_type* inf_coeff, float_type* sup_coeff, float_type* inf_cst, float_type* sup_cst, const size_t index, const elina_dim_t y, const elina_dim_t x)
+void create_sub_expr(float_type* __restrict__ inf_coeff, float_type* __restrict__ sup_coeff, float_type* __restrict__ inf_cst, float_type* __restrict__ sup_cst, const size_t index, const elina_dim_t y, const elina_dim_t x)
 {
     inf_cst[index] = 0;
     sup_cst[index] = 0;



__global__
void print_bounds(float_type* bounds_array, const size_t num_out_neurons)
{
    for(size_t i = 0; i < num_out_neurons; i++)
    {



__global__
void csts_from_previous_layer(const float_type* __restrict__ expr_inf_coeff, const float_type* __restrict__ expr_sup_coeff, const float_type* __restrict__ expr_inf_cst, const float_type* __restrict__ expr_sup_cst, float_type* __restrict__ res_inf_cst, float_type* __restrict__ res_sup_cst, const float_type* __restrict__ aux_inf_cst, const float_type* __restrict__ aux_sup_cst, const size_t num_out_neurons_last_layer, const size_t num_out_neurons_current_layer)
{
    const size_t n = blockIdx.x;

