The R Project SVN R

Rev

Rev 69670 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 69670 Rev 77685
Line 48... Line 48...
48
#ifdef IEEE_754
48
#ifdef IEEE_754
49
    /* NaNs propagated correctly */
49
    /* NaNs propagated correctly */
50
    if (ISNAN(x) || ISNAN(alpha)) return x + alpha;
50
    if (ISNAN(x) || ISNAN(alpha)) return x + alpha;
51
#endif
51
#endif
52
    if (x < 0) {
52
    if (x < 0) {
53
	ML_ERROR(ME_RANGE, "bessel_k");
53
	ML_WARNING(ME_RANGE, "bessel_k");
54
	return ML_NAN;
54
	return ML_NAN;
55
    }
55
    }
56
    ize = (int)expo;
56
    ize = (int)expo;
57
    if(alpha < 0)
57
    if(alpha < 0)
58
	alpha = -alpha;
58
	alpha = -alpha;
Line 92... Line 92...
92
#ifdef IEEE_754
92
#ifdef IEEE_754
93
    /* NaNs propagated correctly */
93
    /* NaNs propagated correctly */
94
    if (ISNAN(x) || ISNAN(alpha)) return x + alpha;
94
    if (ISNAN(x) || ISNAN(alpha)) return x + alpha;
95
#endif
95
#endif
96
    if (x < 0) {
96
    if (x < 0) {
97
	ML_ERROR(ME_RANGE, "bessel_k");
97
	ML_WARNING(ME_RANGE, "bessel_k");
98
	return ML_NAN;
98
	return ML_NAN;
99
    }
99
    }
100
    ize = (int)expo;
100
    ize = (int)expo;
101
    if(alpha < 0)
101
    if(alpha < 0)
102
	alpha = -alpha;
102
	alpha = -alpha;
Line 250... Line 250...
250
    nu = *alpha;
250
    nu = *alpha;
251
    *ncalc = min0(*nb,0) - 2;
251
    *ncalc = min0(*nb,0) - 2;
252
    if (*nb > 0 && (0. <= nu && nu < 1.) && (1 <= *ize && *ize <= 2)) {
252
    if (*nb > 0 && (0. <= nu && nu < 1.) && (1 <= *ize && *ize <= 2)) {
253
	if(ex <= 0 || (*ize == 1 && ex > xmax_BESS_K)) {
253
	if(ex <= 0 || (*ize == 1 && ex > xmax_BESS_K)) {
254
	    if(ex <= 0) {
254
	    if(ex <= 0) {
255
		if(ex < 0) ML_ERROR(ME_RANGE, "K_bessel");
255
		if(ex < 0) ML_WARNING(ME_RANGE, "K_bessel");
256
		for(i=0; i < *nb; i++)
256
		for(i=0; i < *nb; i++)
257
		    bk[i] = ML_POSINF;
257
		    bk[i] = ML_POSINF;
258
	    } else /* would only have underflow */
258
	    } else /* would only have underflow */
259
		for(i=0; i < *nb; i++)
259
		for(i=0; i < *nb; i++)
260
		    bk[i] = 0.;
260
		    bk[i] = 0.;