 
         if(expr->sup_coeff[i] < 0)
         {
-            mul_expr = fp->input_uexpr[k];
+            mul_expr = input_uexpr[k];
         }
         else if(expr->inf_coeff[i] < 0)
         {
-            mul_expr = fp->input_lexpr[k];
+            mul_expr = input_lexpr[k];
         }
 
         if(mul_expr != nullptr)

}


void ffn_handle_first_layer(elina_manager_t* man, elina_abstract0_t* abs, const double** weights, const double* bias, const size_t size, const size_t num_pixels, const activation_type_t activation)
{
    //printf("start \n");
    //fflush(stdout);
    fppoly_t* res = fppoly_of_abstract0(abs);
    fppoly_alloc_first_layer(res, size, num_pixels, FFN, activation);
    fppoly_internal_t* pr = fppoly_init_from_manager(man, ELINA_FUNID_ASSIGN_LINEXPR_ARRAY);

    //for(size_t i = 0; i < num_pixels; i++)
    //{
    //    elina_interval_print(itv[i]);
    //    printf("\n");
    //}
    //fflush(stdout);
    neuron_t** neurons = res->layers[0]->neurons;

    for(size_t i = 0; i < size; i++)
    {
        neuron_t* neuron = neurons[i];
        const double* weight_i = weights[i];
        const double bias_i = bias[i];
        neuron->expr = create_dense_expr(weight_i, bias_i, num_pixels);
        neuron->lb = compute_lb_from_expr(neuron->expr, res);
        neuron->ub = compute_ub_from_expr(neuron->expr, res);
    }

    //printf("return here\n");
    //fppoly_fprint(stdout,man,res,nullptr);
    //fflush(stdout);
}



}

__device__ __host__
double compute_lb_from_expr(expr_t* expr, double* input_inf, double* input_sup, expr_t** input_lexpr, expr_t** input_uexpr)
{
        //printf("start\n");
        //fflush(stdout);
    if((input_lexpr != nullptr) && (input_uexpr != nullptr))
    {
        expr = replace_input_poly_cons_in_lexpr(expr, input_inf, input_sup, input_lexpr, input_uexpr);
    }
        //expr_print(expr);
    //fflush(stdout);
