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