#ifndef HSL_MA97S_H
#define HSL_MA97S_H
#ifndef ma97_default_control
#define ma97_control ma97_control_s
#define ma97_info ma97_info_s
#define ma97_default_control ma97_default_control_s
#define ma97_analyse ma97_analyse_s
#define ma97_analyse_coord ma97_analyse_coord_s
#define ma97_factor ma97_factor_s
#define ma97_factor_solve ma97_factor_solve_s
#define ma97_solve ma97_solve_s
#define ma97_free_akeep ma97_free_akeep_s
#define ma97_free_fkeep ma97_free_fkeep_s
#define ma97_finalise ma97_finalise_s
#define ma97_enquire_posdef ma97_enquire_posdef_s
#define ma97_enquire_indef ma97_enquire_indef_s
#define ma97_alter ma97_alter_s
#define ma97_solve_fredholm ma97_solve_fredholm_s
#define ma97_lmultiply ma97_lmultiply_s
#define ma97_sparse_fwd_solve ma97_sparse_fwd_solve_s
#endif
typedef float ma97pkgtype_s_;
typedef float ma97realtype_s_;
struct ma97_control_s {
int f_arrays;
int action;
int nemin;
ma97realtype_s_ multiplier;
int ordering;
int print_level;
int scaling;
ma97realtype_s_ small;
ma97realtype_s_ u;
int unit_diagnostics;
int unit_error;
int unit_warning;
long factor_min;
int solve_blas3;
long solve_min;
int solve_mf;
ma97realtype_s_ consist_tol;
int ispare[5]; ma97realtype_s_ rspare[10];
};
struct ma97_info_s {
int flag;
int flag68;
int flag77;
int matrix_dup;
int matrix_rank;
int matrix_outrange;
int matrix_missing_diag;
int maxdepth;
int maxfront;
int num_delay;
long num_factor;
long num_flops;
int num_neg;
int num_sup;
int num_two;
int ordering;
int stat;
int maxsupernode;
int ispare[4]; ma97realtype_s_ rspare[10];
};
void ma97_default_control_s(struct ma97_control_s *control);
void ma97_analyse_s(int check, int n, const int ptr[], const int row[],
ma97pkgtype_s_ val[], void **akeep, const struct ma97_control_s *control,
struct ma97_info_s *info, int order[]);
void ma97_analyse_coord_s(int n, int ne, const int row[], const int col[],
ma97pkgtype_s_ val[], void **akeep, const struct ma97_control_s *control,
struct ma97_info_s *info, int order[]);
void ma97_factor_s(int matrix_type, const int ptr[], const int row[],
const ma97pkgtype_s_ val[], void **akeep, void **fkeep,
const struct ma97_control_s *control, struct ma97_info_s *info,
ma97realtype_s_ scale[]);
void ma97_factor_solve_s(int matrix_type, const int ptr[], const int row[],
const ma97pkgtype_s_ val[], int nrhs, ma97pkgtype_s_ x[], int ldx,
void **akeep, void **fkeep, const struct ma97_control_s *control,
struct ma97_info_s *info, ma97realtype_s_ scale[]);
void ma97_solve_s(int job, int nrhs, ma97pkgtype_s_ x[], int ldx,
void **akeep, void **fkeep, const struct ma97_control_s *control,
struct ma97_info_s *info);
void ma97_free_akeep_s(void **akeep);
void ma97_free_fkeep_s(void **fkeep);
void ma97_finalise_s(void **akeep, void **fkeep);
void ma97_enquire_posdef_s(void **akeep, void **fkeep,
const struct ma97_control *control, struct ma97_info *info,
ma97realtype_s_ d[]);
void ma97_enquire_indef_s(void **akeep, void **fkeep,
const struct ma97_control *control, struct ma97_info *info,
int *piv_order, ma97pkgtype_s_ *d);
void ma97_alter_s(const ma97pkgtype_s_ d[], void **akeep, void **fkeep,
const struct ma97_control *control, struct ma97_info *info);
void ma97_solve_fredholm_s(int nrhs, int flag_out[], ma97pkgtype_s_ x[],
int ldx, void **akeep, void **fkeep, const struct ma97_control_s *control,
struct ma97_info_s *info);
void ma97_lmultiply_s(int trans, int k, const ma97pkgtype_s_ x[], int ldx,
ma97pkgtype_s_ y[], int ldy, void **akeep, void **fkeep,
const struct ma97_control_s *control, struct ma97_info_s *info);
void ma97_sparse_fwd_solve_s(int nbi, const int bindex[],
const ma97pkgtype_s_ b[], const int order[], int *nxi, int xindex[],
ma97pkgtype_s_ x[], void **akeep, void **fkeep,
const struct ma97_control_s *control, struct ma97_info_s *info);
#endif