 
 
 __device__ __host__
-void compute_ub_from_expr(double* ub, expr_t* expr, double* input_inf, double* input_sup, expr_t** input_lexpr, expr_t** input_uexpr)
-{
-    if((input_lexpr != nullptr) && (input_uexpr != nullptr))
-    {
-        expr_t** expr_ptr = &expr;
-        replace_input_poly_cons_in_uexpr(expr_ptr, input_inf, input_sup, input_lexpr, input_uexpr);
-    }
+void compute_ub_from_expr(double* ub, expr_t** expr_ptr, double* input_inf, double* input_sup, expr_t** input_lexpr, expr_t** input_uexpr)
+{
+    expr_t* expr= *expr_ptr;
 
     double res_sup = expr->sup_cst;
+
     if((expr->inf_coeff == nullptr) || (expr->sup_coeff == nullptr))
     {
         *ub = 0;


    for(size_t i = 0; i < num_out_neurons; i++)
    {
        compute_lb_from_expr(&(out_neurons[i]->lb), lexpr[i], fp->input_inf, fp->input_sup, fp->input_lexpr, fp->input_uexpr);
        compute_ub_from_expr(&(out_neurons[i]->ub), uexpr[i], fp->input_inf, fp->input_sup, fp->input_lexpr, fp->input_uexpr);
    }

    if(fp->out != nullptr)

    }

    double lb;

    if((fp->input_lexpr != nullptr) && (fp->input_uexpr != nullptr))
    {
        replace_input_poly_cons_in_lexpr(lexpr_ptr, fp->input_inf, fp->input_sup, fp->input_lexpr, fp->input_uexpr);
    }

    compute_lb_from_expr(&lb, lexpr_ptr, fp->input_inf, fp->input_sup, fp->input_lexpr, fp->input_uexpr);

    return lb;
}
