#ifndef HSL_MA86D_H
#define HSL_MA86D_H
#ifndef ma86_default_control
#define ma86_control ma86_control_d
#define ma86_info ma86_info_d
#define ma86_default_control ma86_default_control_d
#define ma86_analyse ma86_analyse_d
#define ma86_factor ma86_factor_d
#define ma86_factor_solve ma86_factor_solve_d
#define ma86_solve ma86_solve_d
#define ma86_finalise ma86_finalise_d
#endif
typedef double ma86pkgtype_d_;
typedef double ma86realtype_d_;
struct ma86_control_d {
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_d_ small_;
ma86realtype_d_ static_;
ma86realtype_d_ u;
ma86realtype_d_ umin;
int scaling;
};
struct ma86_info_d {
ma86realtype_d_ 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_d_ usmall;
};
void ma86_default_control_d(struct ma86_control_d *control);
void ma86_analyse_d(const int n, const int ptr[], const int row[], int order[],
void **keep, const struct ma86_control_d *control,
struct ma86_info_d *info);
void ma86_factor_d(const int n, const int ptr[], const int row[],
const ma86pkgtype_d_ val[], const int order[], void **keep,
const struct ma86_control_d *control, struct ma86_info_d *info,
const ma86realtype_d_ scale[]);
void ma86_factor_solve_d(const int n, const int ptr[], const int row[],
const ma86pkgtype_d_ val[], const int order[], void **keep,
const struct ma86_control_d *control, struct ma86_info_d *info,
const int nrhs, const int ldx, ma86pkgtype_d_ x[],
const ma86realtype_d_ scale[]);
void ma86_solve_d(const int job, const int nrhs, const int ldx,
ma86pkgtype_d_ *x, const int order[], void **keep,
const struct ma86_control_d *control, struct ma86_info_d *info,
const ma86realtype_d_ scale[]);
void ma86_finalise_d(void **keep, const struct ma86_control_d *control);
#endif