#ifndef HSL_MA77S_H
#define HSL_MA77S_H
#ifndef ma77_default_control
#define ma77_control ma77_control_s
#define ma77_info ma77_info_s
#define ma77_default_control ma77_default_control_s
#define ma77_open_nelt ma77_open_nelt_s
#define ma77_open ma77_open_s
#define ma77_input_vars ma77_input_vars_s
#define ma77_input_reals ma77_input_reals_s
#define ma77_analyse ma77_analyse_s
#define ma77_factor ma77_factor_s
#define ma77_factor_solve ma77_factor_solve_s
#define ma77_solve ma77_solve_s
#define ma77_resid ma77_resid_s
#define ma77_scale ma77_scale_s
#define ma77_enquire_posdef ma77_enquire_posdef_s
#define ma77_enquire_indef ma77_enquire_indef_s
#define ma77_alter ma77_alter_s
#define ma77_restart ma77_restart_s
#define ma77_finalise ma77_finalise_s
#define ma77_solve_fredholm ma77_solve_fredholm_s
#define ma77_lmultiply ma77_lmultiply_s
#endif
typedef float ma77pkgtype_s_;
struct ma77_control_s {
int f_arrays;
int print_level;
int unit_diagnostics;
int unit_error;
int unit_warning;
int bits;
int buffer_lpage[2];
int buffer_npage[2];
long int file_size;
long int maxstore;
long int storage[3];
int nemin;
int maxit;
int infnorm;
ma77pkgtype_s_ thresh;
int nb54;
int action;
ma77pkgtype_s_ multiplier;
int nb64;
int nbi;
ma77pkgtype_s_ small;
ma77pkgtype_s_ static_;
long int storage_indef;
ma77pkgtype_s_ u;
ma77pkgtype_s_ umin;
ma77pkgtype_s_ consist_tol;
int ispare[5]; long int lspare[5]; ma77pkgtype_s_ rspare[5];
};
struct ma77_info_s {
ma77pkgtype_s_ detlog;
int detsign;
int flag;
int iostat;
int matrix_dup;
int matrix_rank;
int matrix_outrange;
int maxdepth;
int maxfront;
long int minstore;
int ndelay;
long int nfactor;
long int nflops;
int niter;
int nsup;
int num_neg;
int num_nothresh;
int num_perturbed;
int ntwo;
int stat;
int index[4];
long int nio_read[2];
long int nio_write[2];
long int nwd_read[2];
long int nwd_write[2];
int num_file[4];
long int storage[4];
int tree_nodes;
int unit_restart;
int unused;
ma77pkgtype_s_ usmall;
int ispare[5]; long int lspare[5]; ma77pkgtype_s_ rspare[5];
};
void ma77_default_control_s(struct ma77_control_s *control);
void ma77_open_nelt_s(const int n, const char* fname1, const char* fname2,
const char *fname3, const char *fname4, void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info,
const int nelt);
void ma77_open_s(const int n, const char* fname1, const char* fname2,
const char *fname3, const char *fname4, void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_input_vars_s(const int idx, const int nvar, const int list[],
void **keep, const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_input_reals_s(const int idx, const int length,
const ma77pkgtype_s_ reals[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_analyse_s(const int order[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_factor_s(const int posdef, void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info,
const ma77pkgtype_s_ *scale);
void ma77_factor_solve_s(const int posdef, void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info,
const ma77pkgtype_s_ *scale, const int nrhs, const int lx,
ma77pkgtype_s_ rhs[]);
void ma77_solve_s(const int job, const int nrhs, const int lx, ma77pkgtype_s_ x[],
void **keep, const struct ma77_control_s *control, struct ma77_info_s *info,
const ma77pkgtype_s_ *scale);
void ma77_resid_s(const int nrhs, const int lx, const ma77pkgtype_s_ x[],
const int lresid, ma77pkgtype_s_ resid[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info,
ma77pkgtype_s_ *anorm_bnd);
void ma77_scale_s(ma77pkgtype_s_ scale[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info,
ma77pkgtype_s_ *anorm);
void ma77_enquire_posdef_s(ma77pkgtype_s_ d[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_enquire_indef_s(int piv_order[], ma77pkgtype_s_ d[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_alter_s(const ma77pkgtype_s_ d[], void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_restart_s(const char *restart_file, const char *fname1,
const char *fname2, const char *fname3, const char *fname4, void **keep,
const struct ma77_control_s *control, struct ma77_info_s *info);
void ma77_solve_fredholm_s(int nrhs, int flag_out[], int lx, ma77pkgtype_s_ x[],
void **keep, const struct ma77_control_s *control,
struct ma77_info_s *info, const ma77pkgtype_s_ *scale);
void ma77_lmultiply_s(int trans, int k, int lx, ma77pkgtype_s_ x[], int ly,
ma77pkgtype_s_ y[], void **keep, const struct ma77_control_s *control,
struct ma77_info_s *info, const ma77pkgtype_s_ *scale);
void ma77_finalise_s(void **keep, const struct ma77_control_s *control,
struct ma77_info_s *info);
#endif