Ejemplo n.º 1
0
Archivo: ztgeom.c Proyecto: cran/actuar
double pztgeom(double x, double prob, int lower_tail, int log_p)
{
#ifdef IEEE_754
    if (ISNAN(x) || ISNAN(prob))
	return x + prob;
#endif
    if (prob <= 0 || prob > 1) return R_NaN;

    if (x < 1) return ACT_DT_0;
    if (!R_FINITE(x)) return ACT_DT_1;

    /* limiting case as prob approaches one is point mass at one */
    if (prob == 1) return (x >= 1) ? ACT_DT_1 : ACT_DT_0;

    return ACT_DT_Cval(pgeom(x - 1, prob, /*l._t.*/0, /*log_p*/0));
}
Ejemplo n.º 2
0
double ppareto1(double q, double shape, double min, int lower_tail, int log_p)
{
#ifdef IEEE_754
    if (ISNAN(q) || ISNAN(shape) || ISNAN(min))
	return q + shape + min;
#endif
    if (!R_FINITE(shape) ||
        !R_FINITE(min)   ||
        shape <= 0.0 ||
        min <= 0.0)
        return R_NaN;

    if (q <= min)
        return ACT_DT_0;

    return ACT_DT_Cval(R_pow(min / q, shape));
}
Ejemplo n.º 3
0
double pztbinom(double x, double size, double prob, int lower_tail, int log_p)
{
#ifdef IEEE_754
    if (ISNAN(x) || ISNAN(size) || ISNAN(prob))
	return x + size + prob;
#endif
    if (prob < 0 || prob > 1 || size < 1) return R_NaN;

    if (x < 1) return ACT_DT_0;
    if (!R_FINITE(x)) return ACT_DT_1;

    /* limiting cases as size -> 1 or prob -> 0 are point mass at one */
    if (size == 1 || prob == 0) return (x >= 1) ? ACT_DT_1 : ACT_DT_0;

    double lp0 = dbinom_raw(0, size, prob, 1 - prob, /*give_log*/1);

    return ACT_DT_Cval(pbinom(x, size, prob, /*l._t.*/0, /*log_p*/0)/(-expm1(lp0)));
}
Ejemplo n.º 4
0
double pparalogis(double q, double shape, double scale, int lower_tail,
                  int log_p)
{
    double u;

    if (!R_FINITE(shape) ||
        !R_FINITE(scale) ||
        shape <= 0.0 ||
        scale <= 0.0)
        return R_NaN;

    if (q <= 0)
        return ACT_DT_0;

    u = exp(-log1pexp(shape * (log(q) - log(scale))));

    return ACT_DT_Cval(R_pow(u, shape));
}