#ifndef HSL_MA86S_H
#define HSL_MA86S_H
#ifndef ma86_default_control
#define ma86_control ma86_control_s
#define ma86_info ma86_info_s
#define ma86_default_control ma86_default_control_s
#define ma86_analyse ma86_analyse_s
#define ma86_factor ma86_factor_s
#define ma86_factor_solve ma86_factor_solve_s
#define ma86_solve ma86_solve_s
#define ma86_finalise ma86_finalise_s
#endif
typedef float ma86pkgtype_s_;
typedef float ma86realtype_s_;
struct ma86_control_s {
int f_arrays;
int diagnostics_level;
int unit_diagnostics;
int unit_error;
int unit_warning;
int nemin;
int nb;
int action;
int nbi;
int pool_size;
ma86realtype_s_ small_;
ma86realtype_s_ static_;
ma86realtype_s_ u;
ma86realtype_s_ umin;
int scaling;
};
struct ma86_info_s {
ma86realtype_s_ detlog;
int detsign;
int flag;
int matrix_rank;
int maxdepth;
int num_delay;
long num_factor;
long num_flops;
int num_neg;
int num_nodes;
int num_nothresh;
int num_perturbed;
int num_two;
int pool_size;
int stat;
ma86realtype_s_ usmall;
};
void ma86_default_control_s(struct ma86_control_s *control);
void ma86_analyse_s(const int n, const int ptr[], const int row[], int order[],
void **keep, const struct ma86_control_s *control,
struct ma86_info_s *info);
void ma86_factor_s(const int n, const int ptr[], const int row[],
const ma86pkgtype_s_ val[], const int order[], void **keep,
const struct ma86_control_s *control, struct ma86_info_s *info,
const ma86realtype_s_ scale[]);
void ma86_factor_solve_s(const int n, const int ptr[], const int row[],
const ma86pkgtype_s_ val[], const int order[], void **keep,
const struct ma86_control_s *control, struct ma86_info_s *info,
const int nrhs, const int ldx, ma86pkgtype_s_ x[],
const ma86realtype_s_ scale[]);
void ma86_solve_s(const int job, const int nrhs, const int ldx,
ma86pkgtype_s_ *x, const int order[], void **keep,
const struct ma86_control_s *control, struct ma86_info_s *info,
const ma86realtype_s_ scale[]);
void ma86_finalise_s(void **keep, const struct ma86_control_s *control);
#endif