[BACK]Return to sfile.h CVS log [TXT][DIR] Up to [local] / OpenXM / src / hgm / mh / src

File: [local] / OpenXM / src / hgm / mh / src / sfile.h (download)

Revision 1.17, Wed Jun 1 00:50:19 2016 UTC (8 years ago) by takayama
Branch: MAIN
CVS Tags: HEAD
Changes since 1.16: +4 -3 lines

A bug fix of the radius.

/*
   $OpenXM: OpenXM/src/hgm/mh/src/sfile.h,v 1.17 2016/06/01 00:50:19 takayama Exp $
 */
#include "oxprint.h"
struct SFILE {
  int byFile;
  char *s;
  int pt;
  int len;
  int limit;
  FILE *fp;
  int forRead;
  int copied;
};

struct MH_RESULT {
  double x;
  double *y;
  int rank;
  struct SFILE **sfpp;  /* sfpp[0], ..., spff[size-1] */
  int size;
  char *message;
  int t_success;
  double series_error;
  double recommended_abserr;
};

struct mh_token {
  int type;
  double dval;
  int ival;
};
 
struct SFILE *mh_fopen(char *name, char *mode, int byFile);
char *mh_fgets(char *str,int size,struct SFILE *sfp);
int mh_fputs(char *s,struct SFILE *sfp);
int mh_fclose(struct SFILE *sfp);
int mh_outstr(char *str,int size,struct SFILE *sfp);
void *mh_malloc(int s);
int mh_free(void *p);
int mh_exit(int n);
void mh_check_intr(int interval);
void mh_error(char *s,int code);
struct mh_token mh_getoken(char s[],int smax,struct SFILE *sfp);
void mh_print_token(struct mh_token tk,char *s);
#define MH_TOKEN_EOF -1
#define MH_TOKEN_ID  1
#define MH_TOKEN_EQ  2
#define MH_TOKEN_DOUBLE 3
#define MH_TOKEN_INT 4


#define MH_SSIZE 1024
#define MH_RESET_EXIT 0x7fffffff

#define myabs(x) ((x)<0?(-(x)):(x))
#define mymax(x,y) ((x)>(y)?(x):(y))
#define mymin(x,y) ((x)<(y)?(x):(y))

/* prototypes in wmain.c */
struct MH_RESULT *mh_main(int argc,char *argv[]);
/* prototypes in rk.c*/
struct MH_RESULT mh_rkmain(double x0,double y0[],double xn);
/* prototype in jack-n.c */
struct MH_RESULT *jk_main(int argc,char *argv[]);

/* Significant digit control used both in wmain.c and jack-n.c */
#define M_ASSIGNED_SERIES_ERROR_DEFAULT 1e-5
#define MH_RELERR_DEFAULT (1e-10)

/* The next value is heuristic */
#define SERIES_ADMISSIBLE_RADIUS_TYPE1 50.0
/* SERIES RADIUS close to 1 is not good. */
#define SERIES_ADMISSIBLE_RADIUS_TYPE2 0.77
int reset_SAR_warning(int n);