static int rpois_rng (lua_State *L) { nl_RNG *r = getrng(L); lua_Number mu = luaL_checknumber(L, 1); checkneg(L, mu); setdeviate(integer, ignpoi(r, mu), 2); return 1; }
static int rnbinom_rng (lua_State *L) { nl_RNG *r = getrng(L); int n = luaL_checkinteger(L, 1); lua_Number p = luaL_checknumber(L, 2); checkneg(L, n); if (p <= 0 || p >= 1) luaL_error(L, "parameter is out of range: %f", p); setdeviate(integer, ignnbn(r, n, p), 3); return 1; }
static int rchisq_rng (lua_State *L) { nl_RNG *r = getrng(L); lua_Number df = luaL_checknumber(L, 1); lua_Number xnonc = luaL_optnumber(L, 2, 0); checknp(L, df); checkneg(L, xnonc); setdeviate(number, (xnonc == 0) ? genchi(r, df) : gennch(r, df, xnonc), 3); return 1; }
static int rf_rng (lua_State *L) { nl_RNG *r = getrng(L); lua_Number dfn = luaL_checknumber(L, 1); lua_Number dfd = luaL_checknumber(L, 2); lua_Number xnc = luaL_optnumber(L, 3, 0); checknp(L, dfn); checknp(L, dfd); checkneg(L, xnc); setdeviate(number, (xnc == 0) ? genf(r, dfn, dfd) : gennf(r, dfn, dfd, xnc), 4); return 1; }
int calculnumber(int i, int nbr, char *str) { int neg; neg = 0; while (str[i] >= 48 && str[i] <= 57) { neg = checkneg(str, neg); nbr = nbr * 10; nbr = nbr + (str[i] - 48); i++; } return (nbr * neg); }