LIS_INT lis_finalize(void)
{
  LIS_DEBUG_FUNC_IN;

  lis_precon_register_free();
  /*
  if( cmd_args ) lis_args_free(cmd_args);
  */
  if( cmd_args ) 
    {
      lis_args_free(cmd_args); 
      cmd_args = NULL;
    }
  #ifdef _OPENMP
    lis_free(lis_vec_tmp);
  #endif
  #ifdef USE_QUAD_PRECISION
    lis_free(lis_quad_scalar_tmp);
    lis_quad_x87_fpu_finalize(lis_x87_fpu_cw);
  #endif

  lis_free_all();
  
  #ifdef USE_MPI
    if (!lis_mpi_initialized) MPI_Finalize();
  #endif

  LIS_DEBUG_FUNC_OUT;

  return LIS_SUCCESS;
}
LIS_INT lis_solver_set_option(char *text, LIS_SOLVER solver)
{
	LIS_ARGS	args,p;

	LIS_DEBUG_FUNC_IN;

	lis_text2args(text,&args);
	p = args->next;
	while( p!=args )
	{
		lis_solver_set_option2(p->arg1,p->arg2,solver);
		p = p->next;
	}
	lis_args_free(args);

	LIS_DEBUG_FUNC_OUT;
	return LIS_SUCCESS;
}