1 /* lsodes.h 2 3 Copyright (c) 1993-2017 Free Software Foundation, Inc. 4 5 This file is part of GNU MCSim. 6 7 GNU MCSim is free software; you can redistribute it and/or 8 modify it under the terms of the GNU General Public License 9 as published by the Free Software Foundation; either version 3 10 of the License, or (at your option) any later version. 11 12 GNU MCSim is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GNU MCSim; if not, see <http://www.gnu.org/licenses/> 19 20 lsodes.c was translated from lsodes.f by the utility f2c in bea. 21 To make lsodes.c a stand alone C routine, the following modifications were 22 made: 23 1. the options -lF77 -lI77 were removed from the link command line 24 2. a function d_sign was written and added at the beginning of 25 the function body 26 3. lsodes was split into two files 27 28 This is the header file for the two parts 29 */ 30 31 /* ---------------------------------------------------------------------------- 32 Inclusions */ 33 34 #include <float.h> /* should define DBL_EPSILON */ 35 #include <stdio.h> 36 #include <stdlib.h> 37 #include <math.h> 38 39 40 /* ---------------------------------------------------------------------------- 41 Macros */ 42 43 #define mymin(a,b) ((a) <= (b) ? (a) : (b)) 44 #define mymax(a,b) ((a) >= (b) ? (a) : (b)) 45 #define mydmin(a,b) (double)mymin(a,b) 46 #define mydmax(a,b) (double)mymax(a,b) 47 48 49 /* ---------------------------------------------------------------------------- 50 Type defs */ 51 52 53 /* ---------------------------------------------------------------------------- 54 Prototypes */ 55 56 int lsodes_(long *, double *, double *, double *, long *, 57 double *, double *, long *, long *, long *, 58 double *, long *, long *, long *, long *); 59 60 61 /* ---------------------------------------------------------------------------- 62 Prototypes private to lsodes */ 63 64 int adjlr_(long *n, long *isp, long *ldif); 65 66 int cdrv_(long *n, long *r, long *c, long *ic, 67 long *ia, long *ja, double *a, double *b, double *z, 68 long *nsp, long *isp, double *rsp, long *esp, 69 long path, long *flag_); 70 71 int cfode_(long *meth, double *elco, double * tesco); 72 73 int cntnzu_(long *n, long *ia, long *ja, 74 long *nzsut); 75 76 double d_sign(double *pa1, double *pa2); 77 78 int ewset_(long *, long *, double *, double *, double *, double *); 79 80 int intdy_(double *, long, double *, long *, double *, long *); 81 82 int iprep_(long *, double *, double *, long *, long *, long *); 83 84 int jgroup_(long *n, long *ia, long *ja, long * 85 maxg, long *ngrp, long *igp, long *jgp, 86 long *incl, long *jdone, long *ier); 87 88 int md_(long *n, long *ia, long *ja, long *max_, 89 long *v, long *l, long *head, long *last, 90 long *next, long *mark, long *flag_); 91 92 int mdi_(long *n, long *ia, long *ja, long *max_, 93 long *v, long *l, long *head, long *last, 94 long *next, long *mark, long *tag, long *flag_); 95 96 int mdm_(long *vk, long *tail, long *v, long *l, 97 long *last, long *next, long *mark); 98 99 int mdp_(long *k, long *ek, long *tail, long *v, 100 long *l, long *head, long *last, long *next, 101 long *mark); 102 103 int mdu_(long *ek, long *dmin_, long *v, long *l, 104 long *head, long *last, long *next, long *mark); 105 106 int nnfc_(long *n, long *r, long *c, long *ic, 107 long *ia, long *ja, double *a, double *z, double *b, 108 long *lmax, long *il, long *jl, long *ijl, double *l, 109 double *d, long *umax, long *iu, long *ju, long *iju, 110 double *u, double *row, double *tmp, long *irl, 111 long *jrl, long *flag_); 112 113 int nnsc_(long *n, long *r, long *c, long *il, 114 long *jl, long *ijl, double *l, double *d, long *iu, 115 long *ju, long *iju, double *u, double *z, 116 double *b, double *tmp); 117 118 int nntc_(long *n, long *r, long *c, long *il, 119 long *jl, long *ijl, double *l, double *d, long *iu, 120 long *ju, long *iju, double *u, double *z, 121 double *b, double *tmp); 122 123 int nroc_(long *n, long *ic, long *ia, long *ja, 124 double *a, long *jar, double *ar, long *p, 125 long *flag_); 126 127 int nsfc_(long *n, long *r, long *ic, long *ia, 128 long *ja, long *jlmax, long *il, long *jl, 129 long *ijl, long *jumax, long *iu, long *ju, 130 long *iju, long *q, long *ira, long *jra, 131 long *irac, long *irl, long *jrl, long *iru, 132 long *jru, long *flag_); 133 134 int odrv_(long *n, long *ia, long *ja, double *a, 135 long *p, long *ip, long *nsp, long *isp, 136 long path, long *flag_); 137 138 int prep_(long *neq, double *y, double *yh, 139 double *savf, double *ewt, double *ftem, long *ia, 140 long *ja, double *wk, long *iwk, long *ipper); 141 142 int prjs_(long *, double *, double *, 143 long *, double *, double *, double *, 144 double *, long *); 145 146 int slss_(double *wk, long *iwk, double *x, double *tem); 147 148 int stode_(long *, double *, double *, long *, double *, double *, 149 double *, double *, double *, long *); 150 151 double vnorm_(long *, double *, double *); 152 153 /* end */ 154