/*--------------------------------------------------------------------------
 * g2ox.h - header file for functions mapped from Gauss to Ox
 *
 *       (C) Jurgen Doornik 1996-2001
 *
 * Note, g2ox.ox requires array_base 1:
 */
#pragma array_base(1)
/*--------------------------------------------------------------------------*/

#ifndef G2OXH_INCLUDED
#define G2OXH_INCLUDED

#ifdef OX_GAUSS
namespace gauss {
#endif

__printunsup__(const s);

#ifdef OX_GAUSS	 /*------------------- directly mapped functions -----------*/
arccos(const ma);								   /* ox::acos */
abs(const ma);									   /* ox::fabs */
arcsin(const ma);								   /* ox::asin */
arctan(const ma);								   /* ox::atan */
arctan2(const my, const mx);					   /* ox::atan2 */
atan(const ma);									   /* ox::atan */
atan2(const my, const mx);						   /* ox::atan2 */
cdfchic(const ma, const df);					   /* ox::tailchi */
cdfchii(const mp, const df);					   /* ox::quanchi */
cdffc(const ma, const df1, const df2);			   /* ox::tailf */
cdfn(const ma);									   /* ox::probn */
cdfni(const mp);								   /* ox::quann */
cdfnc(const ma);								   /* ox::tailn */
cdftc(const ma, const df);						   /* ox::tailt */
ceil(const ma);									   /* ox::ceil */
cols(const ma);									   /* ox::sizec */
cos(const ma);								   	   /* ox::cos */
cosh(const ma);								   	   /* ox::cosh */
det(const ma);									   /* ox::determinant */
diagrv(const ma, const mdiag);					   /* ox::setdiagonal */
erf(const x);									   /* ox::erf */
exp(const x);									   /* ox::exp */
eye(const r);									   /* ox::unit */
feq(const a1, const a2);						   /* ox::isfeq */
floor(const ma);								   /* ox::floor */
fmod(const da, const db);						   /* ox::fmod */
gamma(const mx);								   /* ox::gammafact */
hsec();											   /* ox::timer */
inv(const ma);									   /* ox::invert */
invertpd(const ma);								   /* ox::invertsym */
ismiss(const ma);								   /* ox::isnan */
ln(const ma);									   /* ox::log */
log(const ma);									   /* ox::log10 */
lowmat(const ma);								   /* ox::lower */
meanc(const ma);								   /* ox::meanc */
median(const ma);								   /* ox::quantilec */
ones(const r, const c);							   /* ox::ones */
pdfn(const ma);									   /* ox::densn */
rank(const ma);									   /* ox::rank */
rev(const ma);									   /* ox::reversec */
rndn(const r, const c);							   /* ox::rann */
rndu(const r, const c);							   /* ox::ranu */
round(const ma);								   /* ox::round */
rows(const ma);									   /* ox::sizer */
sin(const ma);									   /* ox::sin */
sinh(const ma);									   /* ox::sinh */
sqrt(const ma);									   /* ox::sqrt */
tan(const ma);									   /* ox::tan */
tanh(const ma);									   /* ox::tanh */
toeplitz(const x);								   /* ox::toeplitz */
trunc(const ma);								   /* ox::trunc */
vcx(const ma);									   /* ox::variance */
vech(const ma);									   /* ox::vech */
xpnd(const ma);									   /* ox::unvech */
zeros(const r, const c);						   /* ox::zeros */
      			 /*---------------------------------------------------------*/
__dos__(const s);								   /* helper functions */
#endif			 /*---------------------------------------------------------*/

// create [complex] fh = fname with vnames,col,typ;
// create [complex] fh = fname using comfile;
// datalist dataset var1 var2 ... ;
// debug filename;
// delete [/flags] [symbol1,symbol2,...];
// disable/enable
// dlibrary
// dllcall
// end/stop
// errorlog str;
// _fcmptol
// format [/typ] [/fmted] [/mf] [/jnt] [fld
// graph(const x, const y);
// lib library [file] [flag1 flag2 ...]
// library [lib1,lib2,...];
// line x[,y];
// load x; load y[] = filename;	 load z = filename;
// loadf f;	 loadf f = filename;
// loadk k;	loadk k = filename;
// loadm x;	 loadm y[] = filename;	loadm z = filename;
// loadp p;	loadp p = filename;
// loads s;	loads s = filename;
// locate m,n;
// lprint [/flush] [/typ] [/fmted] [/mf] [/jnt] [list_of_expressions][;];
// lpwidth n;
// lshow [/flags] [symbol];
// msym str;
// new [nos [,mps]];
// open fh = filename [for mode];
// output [file = filename] [on or reset or off];
// outwidth n;
// plot x,y;
// plotsym n;
// pqgwin [auto|manual];
// prcsn n;
// print [/typ] [/fmted] [/mf] [/jnt] [list_of_expressions][;];
// printdos str;
// replay;
// rerun;
// rndcon c;
// rndmod m;
// rndmult a;
// rndseed seed;
// run filename;
// save [path = dpath] x, [lpath = ] y;
// saveall gcg_filename;
// screen
// scroll
// shell [cmd];
// show [/flags] [symbol];
// system;  system c;
// trace new;  trace new, mask;
// trap new; trap new,mask;
// use gcgfile;


#ifdef OX_GAUSS
balance(const mx);
#else
_g_balance(const mx);
#endif
band(const mx, const n);
bandchol(const x);
bandcholsol(const mb, const ml);
bandltsol(const mb, const ma);
bandrv(const mx);
bandsolpd(const mb, const ma);
base10(const x);
besselj(const n, const x);
bessely(const n, const x);
cdfbeta(const x, const a, const b);
cdfbvn(const h, const k, const r);
cdfbvn2(const h, const dh, const k, const dk, const r);
cdfbvn2e(const h, const dh, const k, const dk, const r);
cdfchinc(const x, const nu, const d);
cdffnc(const x, const m, const n, const d);
cdfgam(const x, const intlim);
cdfmvn(const x, const r);
cdfn2(const x, const dx);
cdftci(const p, const n);
cdftnc(const x, const v, const d);
cdftvn(const x1, const x2, const x3, const rho12, const rho23, const rho31);
cdir(const s);
changedir(const s);
chol(const mx);
choldn(const mp, const mx);
cholsol(const mb, mp);
cholup(const mp, const mx);
chrs(const mx);
close(const ifileno);
closeall();
#ifndef OX_GAUSS
 cls();
#endif
cmadd(const xr, const xi, const yr, const yi);
cmcplx(const x);
cmcplx2(const x1, const x2);
cmdiv(const xr, const xi, const yr, const yi);
cmemult(const xr, const xi, const yr, const yi);
cmimag(const xr, const xi);
cminv(const xr, const xi);
cmmult(const xr, const xi, const yr, const yi);
cmreal(const xr, const xi);
cmsoln(const br, const bi, const ar, const ai);
cmsub(const xr, const xi, const yr, const yi);
cmtrans(const xr, const xi);
code(const me, const v);
color(const s);
colsf(const fh);
complex(const xr, const xi);
con(const r, const c);
cond(const mx);
conj(const mx);
cons();
conv(const b, const x, f, el);
coreleft();
corrm(const mm);
corrvc(const mvc);
corrx(const mx);
counts(const mx, const v);
countwts(const x, const v, const w);
crossprd(const x, const y);
crout(const mx);
croutp(const mx);
csrcol();
csrlin();
csrtype(const mx);
cumprodc(const mx);
cumsumc(const mx);
cvtos(const mas);
#ifdef OX_GAUSS
 date();
#else
 _g_date();
#endif
datestr(vt);
datestring(vt);
datestrymd(vt);
dayinyr(vt);
delif(const mx, vif);
design(const mx);
detl();
#ifdef OX_GAUSS
 #ifdef OX_COMPLEX
  dfft(const mx);
 #else
  dfft(const xr, const xi);
 #endif
#else
 _g_dfft(const mx);
#endif
#ifdef OX_GAUSS
 #ifdef OX_COMPLEX
  dffti(const mx);
 #else
  dffti(const xr, const xi);
 #endif
#else
 dffti(const mx);
#endif
dfree(const drive);
#ifdef OX_GAUSS
 diag(const ma);
 __dos__(const s);
#else
 diagonalincol(const ma);
 dos(const s);
#endif
dotfeq(const ma, const mb);
dotfge(const ma, const mb);
dotfgt(const ma, const mb);
dotfle(const ma, const mb);
dotflt(const ma, const mb);
dotfne(const ma, const mb);
dstat(dataset, vars);
dummy(const mx, const v);
dummybr(const mx, const v);
dummydn(mx, const v, const p);
editm(const mx);
eig(const mx);
eigcg(const mr, const mi);
eigcg2(const mr, const mi);
eigch(const mr, const mi);
eigch2(const mr, const mi);
eigh(const mx);
eighv(const mx);
eigrg(const mx);
eigrg2(const mx);
eigrs(const mx);
eigrs2(const mx);
eigv(const mx);
end();
envget(const s);
eof(const ifileno);
eqsolve(const func, const start);
erfc(const x);
error(x);
etdays(const vt1, const vt2);
ethsec(const vt1, const vt2);
etstr(hsecs);
exctsmpl(const infile, const outfile, const percent);
exec(const program, const cmdline);
export(x, fname, namelist);
exportf(dataset, fname, namelist);
fcheckerr(const f);
fclearerr(const f);
fflush(const file);
#ifdef OX_GAUSS
 fft(const mx);
#else
 _g_fft(const mx);
#endif
ffti(const mx);
fftm(const mx, const dim);
fftmi(const mx, const dim);
fftn(const mx);
fge(const ma, const mb);
fgets(const file, const n);
fgetsa(const file, const n);
fgetsat(const file, const n);
fgetst(const file, const n);
fgt(const ma, const mb);
fileinfo(const fspec);
files(const mx);
filesa(const fspec);
fle(const ma, const mb);
flt(const ma, const mb);
fne(const ma, const mb);
#ifdef OX_GAUSS
 fopen(const sfilename, const mode);
#endif
formatcv(const as);
formatnv(const as);
fputs(const ifileno, const n);
fputst(const ifileno, const n);
#ifdef OX_GAUSS
 fseek(const ifileno, const offset, const base);
#else
 _g_fseek(const file, const offset, const base);
#endif
fstrerror();
ftell(const ifileno);
ftocv(const mx, wid, prec);
ftos(const mx, const fmt, const wid, const prec);
gammaii(const mx, const p);
gausset();
getf(const filename, const mode);
getname(const dset);
getnr(const nset, const ncols);
getpath(const pfname);
gradp(const f, const vp);
hasimag(const x);
header(const procname, const dataset, const ver);
hess(const x);
hessp(const f, const vp);
imag(const x);
import(const fname, const range, const sheet);
importf(const fname, const dataset, const range, const sheet);
indcv(const what, const where);
indexcat(const x, const v);
indices(const dataset, const vars);
indices2(const dataset, const var1, const var2);
indnv(const what, const where);
intgrat2(const f, const xl, const gl);
intgrat3(const f, const xl, const gl, const hl);
intquad1(const f, const xl);
intquad2(const f, const xl, const yl);
intquad3(const f, const xl, const yl, const zl);
intrleav(const infile1, const infile2, const outfile, const keyvar, const keytyp);
intrsect(const v1, const v2, const flag);
intsimp(const f, const xl, const tol);
invswp(const x);
iscplx(const x);
iscplxf(const x);
key();
keyw();
lag1(const x);
lagn(const x, const n);
lncdfbvn(const x1, const x2, const r);
lncdfbvn2(const h, const dh, const k, const dk, const r);
lncdfmvn(const x, const r);
lncdfn(const x);
lncdfn2(const x, const dx);
lncdfnc(const x);
lnfact(const mx);
lnpdfmvn(const x, const s);
lnpdfn(const x);
loadd(sdataname);
loess(const y, const x);
#ifdef OX_GAUSS
 lower(s);
#endif
lowmat1(const mx);
lpos();
ltrisol(const mb, const ml);
lu(const mx);
lusol(const mb, const ml, const mu);
makevars(const x, const vnames, const xnames);
maxc(const x);
maxindc(const x);
maxvec();
mbesselei(const x, const n, const alpha);
mbesselei0(const x);
mbesselei1(const x);
mbesseli(const x, const n, const alpha);
mbesseli0(const x);
mbesseli1(const x);
medit(const x, const xv,const xfmt);
#ifdef OX_GAUSS
 meanc(const x);
#endif
mergeby(const infile1, const infile2, const outfile, const keytyp);
mergevar(const vnames);
minc(const x);
minindc(const x);
miss(const x, const v);
missex(const x, const e);
missrv(const x, const v);
moment(const a, const b);
momentd(const dataset, const vars);
nametype(vname,vtype);
ndpchk(const x);
ndpclex();
ndpcntrl(const x);
nextn(const n0);
nextnevn(const n0);
null(const x);
null1(const x, const dataset);
ols(const dataset, const depvar, const indvars);
olsqr(const y, const x);
olsqr2(const y, const x);
optn(const n0);
optnevn(const n0);
orth(x);
packr(const x);
parse(const str, const delim);
pause(const isec);
pi();
pinv(const x);
polychar(const x);
polyeval(const x, const c);
polyint(const xa, const ya, const x);
polymake(const x);
polymat(const x, const p);
polymult(const c1, const c2);
polyroot(const poly);
printfm(const x, const mask, const fmt);
printfmt(const x, const mask);
#ifdef OX_GAUSS
 prodc(const x);
#endif
putf(const f, const str, const start, slen, const mode, const append);
QProg(start,q,r,a,b,c,d,bnds);
qqr(const x);
qqre(const x);
qqrep(const x, const pvt);
qr(const x);
qre(const x);
qrep(const x,const pvt);
qrsol(const b, const r);
qrtsol(const b, const r);
qtyr(const y, const x);
qtyre(const y, const x);
qtyrep(const y, const x, const pvt);
quantile(const x, const e);
quantiled(const dataset, const x, const e);
qyr(const y, const x);
qyre(const y, const x);
qyrep(const y, const x, const pvt);
rankindx(x,flag);
readr(const f1, const r);
real(const x);
recode(const x, const e, const v);
recserar(const x, const x0, const a);
recsercp(x, z);
recserrc(const x, const z);
rfft(const x);
rffti(const x);
rfftip(const x);
rfftn(const x);
rfftnp(const x);
rfftp(const x);
rndbeta(const r, const c, const a, const b);
rndgam(const r, const c, const alpha);
rndnb(const r, const c, const k, const p);
rndns(const r, const c, const s);
rndp(const r, const c, const lambda);
rndus(const r, const c, const s);
rndvm(const r, const c, const m, const k);
rotater(const x, const r);
rowsf(const f);
rref(x);
#ifdef OX_GAUSS
 save(const sOption, const sPath, const sName, const data);
#endif
saved(const x, dataset, const vnames);
scalerr(x);
scalmiss(const x);
schtoc(const sch, const trans);
schur(const x);
seekr(const fh, const r);
selif(const x,e);
seqa(const start, const inc, const m);
seqm(start, const inc, const m);
setcnvrt(const type, const ans);
setdif(const v1, const v2, flag);
setvars(const dataset);
setvmode(const x);
shiftr(const x, const s, const f);
sleep(const secs);
solpd(const b, const a);
#ifdef OX_GAUSS
 sortc(const x, const c);
#endif
sortcc(const x, const c);
sortd(const infile, const outfile, const keyvar, const keytyp);
sorthc(const x, const c);
sorthcc(const x, const c);
sortind(const x);
sortindc(const x);
#ifdef OX_GAUSS
 sortmc(const x, const vc);
#endif
spline1d(const x, const y, const d, const s, const sigma, const g);
spline2d(const x, const y, const z, const sigma, const g);
sqpsolve(const func, const start);
stdc(const x);
stof(x);
stop();
#ifdef OX_GAUSS
 strlen(const ma);
#endif
strindx(where, what, const start);
strput(substr, str, const off);
strrindx(where, what, const start);
strsect(str, const start, const len);
#ifdef OX_GAUSS
 submat(const x, const r, const c);
#else
_g_submat(const x, const r, const c);
 #endif
subscat(const x, v, s);
substute(const x, const v, s);
#ifdef OX_GAUSS
 sumc(const x);
#endif
svd(const mx);
svd1(const mx);
svd2(const mx);
svdcusv(const mx);
svds(const mx);
svdusv(const mx);
sysstate(const vcase, const y);
system(const n);
tab(const col);
tempname(path, pre, ext);
#ifdef OX_GAUSS
 time();
#else
 _g_time();
#endif
timestr(const x);
tocart(const x);
token(const s);
topolar(const xy);
trapchk(const m);
trim(const x, const top, const bot);
trimr(const x, const top, const bot);
type(const x);
typecv(const x);
typef(const x);
union(const v1, const v2, const flag);
#ifdef OX_GAUSS
 unique(const v1, const flag);
#else
 g_unique(const v1, const flag);
#endif
uniqindx(const v1, const flag);
#ifdef OX_GAUSS
 upmat(const mx);
#endif
upmat1(const mx);
#ifdef OX_GAUSS
 upper(const s);
#endif
utrisol(const b, const u);
vals(s);
varget(const s);
vargetl(const s);
varput(const x, const n);
varputl(const x, const n);
vartype(const names);
vartypef(const names);
vcm(const m);
#ifdef OX_GAUSS
 vec(const ma);
 vecr(const ma);
#endif
vget(const dbuf, const name);
vlist(const dbuf);
vnamecv(const dbuf);
vput(const dbuf, const x, const name);
vread(const dbuf, const xname);
vtypecv(const dbuf);
wait();
waitc();
writer(const fh, const x);
xpnd(const v);

#ifdef OX_GAUSS
 reshape(const ma, const r, const c);
#endif

#ifdef OX_GAUSS
} /* end of gauss namespace */
#endif

#endif /* G2OXH_INCLUDED */

