 
 
 __global__
-void coeffs_from_previous_layer(float_type* expr_inf_coeff, float_type* expr_sup_coeff, float_type* res_inf_coeff, float_type* res_sup_coeff, float_type* aux_inf_coeff, float_type* aux_sup_coeff, const size_t num_out_neurons_last_layer, const size_t num_out_neurons_current_layer, const size_t num_in_neurons_current_layer)
+void coeffs_from_previous_layer(const float_type* __restrict__ expr_inf_coeff, const float_type* __restrict__ expr_sup_coeff, float_type* __restrict__ res_inf_coeff, float_type* __restrict__ res_sup_coeff, const float_type* __restrict__ aux_inf_coeff, const float_type* __restrict__ aux_sup_coeff, const size_t num_out_neurons_last_layer, const size_t num_out_neurons_current_layer, const size_t num_in_neurons_current_layer)
 {
     const size_t n = blockIdx.x;
     const size_t j = blockIdx.y*blockDim.x + threadIdx.x;



__global__
void compute_ub_from_expr(float_type* ub_array, float_type* inf_coeff, float_type* sup_coeff, const float_type* sup_cst, const float_type* input_inf, const float_type* input_sup, const size_t num_exprs, const size_t expr_size)
{
    const size_t n = blockIdx.x;




__global__
void uexpr_replace_relu_bounds(float_type* __restrict__ inf_coeff, float_type* __restrict__ sup_coeff, float_type* __restrict__ inf_cst, float_type* __restrict__ sup_cst, const float_type* __restrict__ lb_array, const float_type* __restrict__ ub_array, const size_t num_out_neurons_last_layer, const size_t num_out_neurons_current_layer)
{
    const size_t n = blockIdx.x;
    const size_t i = blockIdx.y*blockDim.x + threadIdx.x;
