void find_level(int *inf, int k, int m, int ell); double interp(double** u, int ell, int n0, int interp_points, int k, int m); void spr_data_to_sparse(double **u, int ell, int n0, int interp_points, double eps); void spr_sparse_to_data(double **u, int ell, int n0, int interp_points); double spr_derivXE(double** u, int ell, int n0, int interp_points, double dx, int k, int m); double spr_derivYE(double** u, int ell, int n0, int interp_points, double dx, int k, int m); void spr_refine(double** u, int ell, int n0, int interp_points); double interpEx(double** u, int ell, int n0, int interp_points, int k, int m); void spr_data_to_sparseEx(double **u, int ell, int n0, int interp_points, double eps); void spr_sparse_to_dataEx(double **u, int ell, int n0, int interp_points); void derivYEx(double** u,int ell, int n0, int interp_points, double dx, double **du, double** v); void spr_refineEx(double** u, int ell, int n0, int interp_points); void spr_refineEy(double** u, int ell, int n0, int interp_points); double spr_derivYEx(double** u, int ell, int n0, int interp_points, double dx, int k, int m); double interpEy(double** u, int ell, int n0, int interp_points, int k, int m); void spr_data_to_sparseEy(double **u, int ell, int n0, int interp_points, double eps); void spr_sparse_to_dataEy(double **u, int ell, int n0, int interp_points); void derivXEy(double** u, int ell, int n0, int interp_points, double dx, double **du, double** v); double spr_derivXEy(double** u, int ell, int n0, int interp_points, double dx, int k, int m); double interpEy(double** u, int ell, int n0, int interp_points, int k, int m); double interpH(double** u, int ell, int n0, int interp_points, int k, int m); void spr_data_to_sparseH(double** u, int ell, int n0, int interp_points, double eps); void spr_sparse_to_dataH(double **u, int ell, int n0, int interp_points); void derivXH(double** u, int ell, int n0, int interp_points, double dx, double **du, double** v); void derivYH(double** u, int ell, int n0, int interp_points, double dx, double **du, double** v); void spr_refineH(double** u, int ell, int n0, int interp_points); double spr_derivXH(double** u, int ell, int n0, int interp_points, double dx, int k, int m); double spr_derivYH(double** u, int ell, int n0, int interp_points, double dx, int k, int m); void spr_coneH(double** u, int ell, int n0, int interp_points); void spr_coneHSimp(double** u, int ell, int n0, int interp_points); int local_scalex(double** u, int k, int m, int ell, int n0); int local_scaley(double** u, int k, int m, int ell, int n0); int find_level_max(double** u, int ell, int n0, int ell_atual); int mostra_cont(); /* UTILITY ROUTINES */ void fatal(char* s); double** dvector(int nl, int nc); /* Allocates an array with {nl} rows and {nc} columns. */ void wait_for_user(void); /* Writes "Hit return to continue" and waits for user to do so. */ double get_double_from_user(char *prompt, double defval); int get_int_from_user(char *prompt, int defval); /* Writes a message "Enter {promt} [{defval}]:" to {stderr}; then waits for the user to type a number ({double} or {int}, rspectively) + 'ENTER', and returns that number. Returns {defval} if the user just types 'ENTER'. */ void libera(int nl, int nc, double **A);