hsl_mc68i.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT (c) 2011 Science and Technology Facilities Council (STFC)
3  * All Rights Reserved.
4  * This code is published under the Eclipse Public License.
5  *
6  * Authors: Jonathan Hogg STFC 2011-02-25
7  */
8 
9 #ifndef HSL_MC68I_H
10 #define HSL_MC68I_H
11 
12 struct mc68_control {
13  /* Extra options for C version */
14  int f_array_in; /* 0 for C array indexing, 1 for Fortran indexing */
15  int f_array_out; /* 0 for C array indexing, 1 for Fortran indexing
16  * NOTE: 2x2 pivot information discarded if C indexing
17  * is used for output! */
18  int min_l_workspace; /* Initial size of workspace, as argument in Fortran */
19  /* Options from Fortran version */
20  int lp; /* stream number for error messages */
21  int wp; /* stream number for warning messages */
22  int mp; /* stream number for diagnostic messages */
23  int nemin; /* stream number for diagnostic messages */
24  int print_level; /* amount of informational output required */
25  int row_full_thresh; /* percentage threshold for full row */
26  int row_search; /* Number of rows searched for pivot with ord=6 */
27 };
28 
29 struct mc68_info {
30  int flag; /* error/warning flag */
31  int iostat; /* holds Fortran iostat parameter */
32  int stat; /* holds Fortran stat parameter */
33  int out_range; /* holds number of out of range entries ignored */
34  int duplicate; /* holds number of duplicate entries */
35  int n_compressions; /* holds number of compressions in order */
36  int n_zero_eigs; /* holds the number of zero eigs from ma47 */
37  int l_workspace; /* holds length of workspace iw used in order */
38  int zb01_info; /* holds flag from zb01_expand1 call */
39  int n_dense_rows; /* holds number of dense rows from amdd */
40 };
41 
42 /* Set default values for control struct */
43 void mc68_default_control(struct mc68_control *control);
44 /* Perform ordering */
45 void mc68_order(const int ord, const int n, const int ptr[], const int row[],
46  int perm[], const struct mc68_control *control, struct mc68_info *info);
47 
48 #endif