00001
00017 #ifndef H_CERNLIB
00018 #define H_CERNLIB
00019 #include "jbltools/kinfit/ftypes.h"
00020 extern "C" {
00021
00022 void reqn_ (FInteger *n, FReal *a, FInteger *idim, FInteger *ir, FInteger *ifail,
00023 FInteger *k, FReal *b);
00024 void deqn_ (FInteger *n, FDouble *a, FInteger *idim, FInteger *ir, FInteger *ifail,
00025 FInteger *k, FDouble *b);
00026 void rinv_ (FInteger *n, FReal *a, FInteger *idim, FInteger *ir, FInteger *ifail);
00027 void dinv_ (FInteger *n, FDouble *a, FInteger *idim, FInteger *ir, FInteger *ifail);
00028 void reqinv_(FInteger *n, FReal *a, FInteger *idim, FInteger *ir, FInteger *ifail,
00029 FInteger *k, FReal *b);
00030 void deqinv_(FInteger *n, FDouble *a, FInteger *idim, FInteger *ir, FInteger *ifail,
00031 FInteger *k, FDouble *b);
00032
00033 void rsinv_ (FInteger *n, FReal *a, FInteger *idim, FInteger *ifail);
00034 void dsinv_ (FInteger *n, FDouble *a, FInteger *idim, FInteger *ifail);
00035 void rseqn_ (FInteger *n, FReal *a, FInteger *idim, FInteger *ifail,
00036 FInteger *k, FReal *b);
00037 void dseqn_ (FInteger *n, FDouble *a, FInteger *idim, FInteger *ifail,
00038 FInteger *k, FDouble *b);
00039 void rsfact_ (FInteger *n, FReal *a, FInteger *idim, FInteger *ifail,
00040 FReal *b, FInteger *jfail);
00041 void dsfact_ (FInteger *n, FDouble *a, FInteger *idim, FInteger *ifail,
00042 FDouble *b, FInteger *jfail);
00043 void rsfeqn_ (FInteger *n, FReal *a, FInteger *idim,
00044 FInteger *k, FReal *b);
00045 void dsfeqn_ (FInteger *n, FDouble *a, FInteger *idim,
00046 FInteger *k, FDouble *b);
00047 void rsfinv_ (FInteger *n, FReal *a, FInteger *idim);
00048 void dsfinv_ (FInteger *n, FDouble *a, FInteger *idim);
00049
00050 FReal prob_ (FReal *x, FInteger *n);
00051
00052
00053 void rannor_ (FReal *a, FReal *b);
00054
00055
00056 void ranmar_ (FReal *vec, FInteger *len);
00057 void rmarin_ (FInteger *ijklin, FInteger *ntotin, FInteger *nto2in);
00058 void rmarut_ (FInteger *ijklin, FInteger *ntotin, FInteger *nto2in);
00059 void rmmar_ (FReal *vec, FInteger *len, FInteger *iseq);
00060
00061
00062 void ranlux_ (FReal *rvec, FInteger *len);
00063 void rluxgo_ (FInteger *lux, FInteger *int_, FInteger *k1, FInteger *k2);
00064 void rluxat_ (FInteger *lux, FInteger *int_, FInteger *k1, FInteger *k2);
00065 void rluxin_ (FInteger *ivec);
00066 void rluxut_ (FInteger *ivec);
00067
00068 void rnorml_ (FReal *rvec, FInteger *len);
00069 void rnormx_ (FReal *rvec, FInteger *len, void urng (FReal *, FInteger *));
00070 }
00071
00072
00073 inline int reqn (FInteger n, FReal a[], FInteger idim, FInteger ir[], FInteger& ifail,
00074 FInteger k, FReal b[]) {
00075 reqn_ (&n, a, &idim, ir, &ifail, &k, b);
00076 return ifail;
00077 }
00078 inline int reqn (FInteger n, FReal a[], FInteger idim, FInteger ir[],
00079 FInteger k, FReal b[]) {
00080 FInteger ifail = 0;
00081 reqn_ (&n, a, &idim, ir, &ifail, &k, b);
00082 return ifail;
00083 }
00084 inline int deqn (FInteger n, FDouble a[], FInteger idim, FInteger ir[], FInteger& ifail,
00085 FInteger k, FDouble b[]) {
00086 deqn_ (&n, a, &idim, ir, &ifail, &k, b);
00087 return ifail;
00088 }
00089 inline int deqn (FInteger n, FDouble a[], FInteger idim, FInteger ir[],
00090 FInteger k, FDouble b[]) {
00091 FInteger ifail = 0;
00092 deqn_ (&n, a, &idim, ir, &ifail, &k, b);
00093 return ifail;
00094 }
00095
00096 inline int rinv (FInteger n, FReal a[], FInteger idim, FInteger ir[], FInteger& ifail) {
00097 rinv_ (&n, a, &idim, ir, &ifail);
00098 return ifail;
00099 }
00100 inline int rinv (FInteger n, FReal a[], FInteger idim, FInteger ir[]) {
00101 FInteger ifail = 0;
00102 rinv_ (&n, a, &idim, ir, &ifail);
00103 return ifail;
00104 }
00105 inline int dinv (FInteger n, FDouble a[], FInteger idim, FInteger ir[], FInteger& ifail) {
00106 dinv_ (&n, a, &idim, ir, &ifail);
00107 return ifail;
00108 }
00109 inline int dinv (FInteger n, FDouble a[], FInteger idim, FInteger ir[]) {
00110 FInteger ifail = 0;
00111 dinv_ (&n, a, &idim, ir, &ifail);
00112 return ifail;
00113 }
00114
00115 inline int reqinv (FInteger n, FReal a[], FInteger idim, FInteger ir[], FInteger& ifail,
00116 FInteger k, FReal b[]) {
00117 reqinv_(&n, a, &idim, ir, &ifail, &k, b);
00118 return ifail;
00119 }
00120 inline int reqinv (FInteger n, FReal a[], FInteger idim, FInteger ir[],
00121 FInteger k, FReal b[]) {
00122 FInteger ifail = 0;
00123 reqinv_(&n, a, &idim, ir, &ifail, &k, b);
00124 return ifail;
00125 }
00126 inline int deqinv (FInteger n, FDouble a[], FInteger idim, FInteger ir[], FInteger& ifail,
00127 FInteger k, FDouble b[]) {
00128 deqinv_(&n, a, &idim, ir, &ifail, &k, b);
00129 return ifail;
00130 }
00131 inline int deqinv (FInteger n, FDouble a[], FInteger idim, FInteger ir[],
00132 FInteger k, FDouble b[]) {
00133 FInteger ifail = 0;
00134 deqinv_(&n, a, &idim, ir, &ifail, &k, b);
00135 return ifail;
00136 }
00137
00138
00139 inline int rsinv (FInteger n, FReal a[], FInteger idim, FInteger& ifail) {
00140 rsinv_ (&n, a, &idim, &ifail);
00141 return ifail;
00142 }
00143 inline int rsinv (FInteger n, FReal a[], FInteger idim) {
00144 FInteger ifail = 0;
00145 rsinv_ (&n, a, &idim, &ifail);
00146 return ifail;
00147 }
00148 inline int dsinv (FInteger n, FDouble a[], FInteger idim, FInteger& ifail) {
00149 dsinv_ (&n, a, &idim, &ifail);
00150 return ifail;
00151 }
00152 inline int dsinv (FInteger n, FDouble a[], FInteger idim) {
00153 FInteger ifail = 0;
00154 dsinv_ (&n, a, &idim, &ifail);
00155 return ifail;
00156 }
00157
00158 inline int rseqn (FInteger n, FReal a[], FInteger idim, FInteger& ifail,
00159 FInteger k, FReal b[]) {
00160 rseqn_ (&n, a, &idim, &ifail, &k, b);
00161 return ifail;
00162 }
00163 inline int rseqn (FInteger n, FReal a[], FInteger idim,
00164 FInteger k, FReal b[]) {
00165 FInteger ifail = 0;
00166 rseqn_ (&n, a, &idim, &ifail, &k, b);
00167 return ifail;
00168 }
00169 inline int dseqn (FInteger n, FDouble a[], FInteger idim, FInteger& ifail,
00170 FInteger k, FDouble b[]) {
00171 dseqn_ (&n, a, &idim, &ifail, &k, b);
00172 return ifail;
00173 }
00174 inline int dseqn (FInteger n, FDouble a[], FInteger idim,
00175 FInteger k, FDouble b[]) {
00176 FInteger ifail = 0;
00177 dseqn_ (&n, a, &idim, &ifail, &k, b);
00178 return ifail;
00179 }
00180
00181 inline int rsfact (FInteger n, FReal a[], FInteger idim, FInteger& ifail,
00182 FReal b[], FInteger& jfail) {
00183 rsfact_ (&n, a, &idim, &ifail, b, &jfail);
00184 return ifail;
00185 }
00186 inline int rsfact (FInteger n, FReal a[], FInteger idim,
00187 FReal b[], FInteger& jfail) {
00188 FInteger ifail = 0;
00189 rsfact_ (&n, a, &idim, &ifail, b, &jfail);
00190 return ifail;
00191 }
00192 inline int dsfact (FInteger n, FDouble a[], FInteger idim, FInteger& ifail,
00193 FDouble b[], FInteger& jfail) {
00194 dsfact_ (&n, a, &idim, &ifail, b, &jfail);
00195 return ifail;
00196 }
00197 inline int dsfact (FInteger n, FDouble a[], FInteger idim,
00198 FDouble b[], FInteger& jfail) {
00199 FInteger ifail = 0;
00200 dsfact_ (&n, a, &idim, &ifail, b, &jfail);
00201 return ifail;
00202 }
00203
00204 inline void rsfeqn (FInteger n, FReal a[], FInteger idim,
00205 FInteger k, FReal b[]) {
00206 rsfeqn_ (&n, a, &idim, &k, b);
00207 }
00208 inline void dsfeqn (FInteger n, FDouble a[], FInteger idim,
00209 FInteger k, FDouble b[]) {
00210 dsfeqn_ (&n, a, &idim, &k, b);
00211 }
00212 inline void rsfinv (FInteger n, FReal a[], FInteger idim) {
00213 rsfinv_ (&n, a, &idim);
00214 }
00215 inline void dsfinv (FInteger n, FDouble a[], FInteger idim) {
00216 dsfinv_ (&n, a, &idim);
00217 }
00218
00219
00220 inline FReal prob (FReal x, FInteger n) {
00221 return prob_ (&x, &n);
00222 }
00223
00224
00225 inline void rannor (FReal& a, FReal& b) {
00226 rannor_ (&a, &b);
00227 }
00228
00229 inline void ranmar (FReal vec[], FInteger len) {
00230 ranmar_ (vec, &len);
00231 }
00232 inline void rmarin (FInteger ijklin, FInteger ntotin, FInteger nto2in) {
00233 rmarin_ (&ijklin, &ntotin, &nto2in);
00234 }
00235 inline void rmarut (FInteger& ijklin, FInteger& ntotin, FInteger& nto2in) {
00236 rmarut_ (&ijklin, &ntotin, &nto2in);
00237 }
00238 inline void rmmar (FReal vec[], FInteger len, FInteger iseq) {
00239 rmmar_ (vec, &len, &iseq);
00240 }
00241
00242
00243 inline void ranlux (FReal rvec[], FInteger len) {
00244 ranlux_ (rvec, &len);
00245 }
00246 inline void rluxgo (FInteger lux, FInteger int_, FInteger k1, FInteger k2) {
00247 rluxat_ (&lux, &int_, &k1, &k2);
00248 }
00249 inline void rluxat (FInteger& lux, FInteger& int_, FInteger& k1, FInteger& k2) {
00250 rluxat_ (&lux, &int_, &k1, &k2);
00251 }
00252 inline void rluxin (FInteger ivec[25]) {
00253 rluxin_ (ivec);
00254 }
00255 inline void rluxut (FInteger ivec[25]) {
00256 rluxut_ (ivec);
00257 }
00258
00259 inline void rnorml (FReal rvec[], FInteger len) {
00260 rnorml_ (rvec, &len);
00261 }
00262
00263 #endif