The R Project SVN R

Rev

Rev 59184 | Rev 64358 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 59184 Rev 59202
Line 61... Line 61...
61
	       ((alpha == na) ? /* sin(pi * alpha) = 0 */ 0 :
61
	       ((alpha == na) ? /* sin(pi * alpha) = 0 */ 0 :
62
		bessel_k(x, -alpha, expo) *
62
		bessel_k(x, -alpha, expo) *
63
		((ize == 1)? 2. : 2.*exp(-2.*x))/M_PI * sin(-M_PI * alpha)));
63
		((ize == 1)? 2. : 2.*exp(-2.*x))/M_PI * sin(-M_PI * alpha)));
64
    }
64
    }
65
    nb = 1 + (long)na;/* nb-1 <= alpha < nb */
65
    nb = 1 + (long)na;/* nb-1 <= alpha < nb */
66
    alpha -= (nb-1);
66
    alpha -= (double)(nb-1);
67
#ifdef MATHLIB_STANDALONE
67
#ifdef MATHLIB_STANDALONE
68
    bi = (double *) calloc(nb, sizeof(double));
68
    bi = (double *) calloc(nb, sizeof(double));
69
    if (!bi) MATHLIB_ERROR("%s", _("bessel_i allocation error"));
69
    if (!bi) MATHLIB_ERROR("%s", _("bessel_i allocation error"));
70
#else
70
#else
71
    vmax = vmaxget();
71
    vmax = vmaxget();
Line 76... Line 76...
76
	if(ncalc < 0)
76
	if(ncalc < 0)
77
	    MATHLIB_WARNING4(_("bessel_i(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
77
	    MATHLIB_WARNING4(_("bessel_i(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
78
			     x, ncalc, nb, alpha);
78
			     x, ncalc, nb, alpha);
79
	else
79
	else
80
	    MATHLIB_WARNING2(_("bessel_i(%g,nu=%g): precision lost in result\n"),
80
	    MATHLIB_WARNING2(_("bessel_i(%g,nu=%g): precision lost in result\n"),
81
			     x, alpha+nb-1);
81
			     x, alpha+(double)nb-1);
82
    }
82
    }
83
    x = bi[nb-1];
83
    x = bi[nb-1];
84
#ifdef MATHLIB_STANDALONE
84
#ifdef MATHLIB_STANDALONE
85
    free(bi);
85
    free(bi);
86
#else
86
#else
Line 113... Line 113...
113
	       ((alpha == na) ? 0 :
113
	       ((alpha == na) ? 0 :
114
		bessel_k_ex(x, -alpha, expo, bi) *
114
		bessel_k_ex(x, -alpha, expo, bi) *
115
		((ize == 1)? 2. : 2.*exp(-2.*x))/M_PI * sin(-M_PI * alpha)));
115
		((ize == 1)? 2. : 2.*exp(-2.*x))/M_PI * sin(-M_PI * alpha)));
116
    }
116
    }
117
    nb = 1 + (long)na;/* nb-1 <= alpha < nb */
117
    nb = 1 + (long)na;/* nb-1 <= alpha < nb */
118
    alpha -= (nb-1);
118
    alpha -= (double)(nb-1);
119
    I_bessel(&x, &alpha, &nb, &ize, bi, &ncalc);
119
    I_bessel(&x, &alpha, &nb, &ize, bi, &ncalc);
120
    if(ncalc != nb) {/* error input */
120
    if(ncalc != nb) {/* error input */
121
	if(ncalc < 0)
121
	if(ncalc < 0)
122
	    MATHLIB_WARNING4(_("bessel_i(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
122
	    MATHLIB_WARNING4(_("bessel_i(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
123
			     x, ncalc, nb, alpha);
123
			     x, ncalc, nb, alpha);
124
	else
124
	else
125
	    MATHLIB_WARNING2(_("bessel_i(%g,nu=%g): precision lost in result\n"),
125
	    MATHLIB_WARNING2(_("bessel_i(%g,nu=%g): precision lost in result\n"),
126
			     x, alpha+nb-1);
126
			     x, alpha+(double)nb-1);
127
    }
127
    }
128
    x = bi[nb-1];
128
    x = bi[nb-1];
129
    return x;
129
    return x;
130
}
130
}
131
 
131