00001 /* 00002 * COPYRIGHT (c) 2011 Science and Technology Facilities Council (STFC) 00003 * All Rights Reserved. 00004 * This code is published under the Eclipse Public License. 00005 * 00006 * Authors: Jonathan Hogg STFC 2011-02-25 00007 */ 00008 00009 #ifndef HSL_MC68I_H 00010 #define HSL_MC68I_H 00011 00012 struct mc68_control { 00013 /* Extra options for C version */ 00014 int f_array_in; /* 0 for C array indexing, 1 for Fortran indexing */ 00015 int f_array_out; /* 0 for C array indexing, 1 for Fortran indexing 00016 * NOTE: 2x2 pivot information discarded if C indexing 00017 * is used for output! */ 00018 int min_l_workspace; /* Initial size of workspace, as argument in Fortran */ 00019 /* Options from Fortran version */ 00020 int lp; /* stream number for error messages */ 00021 int wp; /* stream number for warning messages */ 00022 int mp; /* stream number for diagnostic messages */ 00023 int nemin; /* stream number for diagnostic messages */ 00024 int print_level; /* amount of informational output required */ 00025 int row_full_thresh; /* percentage threshold for full row */ 00026 int row_search; /* Number of rows searched for pivot with ord=6 */ 00027 }; 00028 00029 struct mc68_info { 00030 int flag; /* error/warning flag */ 00031 int iostat; /* holds Fortran iostat parameter */ 00032 int stat; /* holds Fortran stat parameter */ 00033 int out_range; /* holds number of out of range entries ignored */ 00034 int duplicate; /* holds number of duplicate entries */ 00035 int n_compressions; /* holds number of compressions in order */ 00036 int n_zero_eigs; /* holds the number of zero eigs from ma47 */ 00037 int l_workspace; /* holds length of workspace iw used in order */ 00038 int zb01_info; /* holds flag from zb01_expand1 call */ 00039 int n_dense_rows; /* holds number of dense rows from amdd */ 00040 }; 00041 00042 /* Set default values for control struct */ 00043 void mc68_default_control(struct mc68_control *control); 00044 /* Perform ordering */ 00045 void mc68_order(const int ord, const int n, const int ptr[], const int row[], 00046 int perm[], const struct mc68_control *control, struct mc68_info *info); 00047 00048 #endif