The R Project SVN R

Rev

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

Rev 59198 Rev 59202
Line 55... Line 55...
55
    }
55
    }
56
    ize = (long)expo;
56
    ize = (long)expo;
57
    if(alpha < 0)
57
    if(alpha < 0)
58
	alpha = -alpha;
58
	alpha = -alpha;
59
    nb = 1+ (long)floor(alpha);/* nb-1 <= |alpha| < nb */
59
    nb = 1+ (long)floor(alpha);/* nb-1 <= |alpha| < nb */
60
    alpha -= (nb-1);
60
    alpha -= (double)(nb-1);
61
#ifdef MATHLIB_STANDALONE
61
#ifdef MATHLIB_STANDALONE
62
    bk = (double *) calloc(nb, sizeof(double));
62
    bk = (double *) calloc(nb, sizeof(double));
63
    if (!bk) MATHLIB_ERROR("%s", _("bessel_k allocation error"));
63
    if (!bk) MATHLIB_ERROR("%s", _("bessel_k allocation error"));
64
#else
64
#else
65
    vmax = vmaxget();
65
    vmax = vmaxget();
Line 70... Line 70...
70
      if(ncalc < 0)
70
      if(ncalc < 0)
71
	MATHLIB_WARNING4(_("bessel_k(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
71
	MATHLIB_WARNING4(_("bessel_k(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
72
			 x, ncalc, nb, alpha);
72
			 x, ncalc, nb, alpha);
73
      else
73
      else
74
	MATHLIB_WARNING2(_("bessel_k(%g,nu=%g): precision lost in result\n"),
74
	MATHLIB_WARNING2(_("bessel_k(%g,nu=%g): precision lost in result\n"),
75
			 x, alpha+nb-1);
75
			 x, alpha+(double)nb-1);
76
    }
76
    }
77
    x = bk[nb-1];
77
    x = bk[nb-1];
78
#ifdef MATHLIB_STANDALONE
78
#ifdef MATHLIB_STANDALONE
79
    free(bk);
79
    free(bk);
80
#else
80
#else
Line 99... Line 99...
99
    }
99
    }
100
    ize = (long)expo;
100
    ize = (long)expo;
101
    if(alpha < 0)
101
    if(alpha < 0)
102
	alpha = -alpha;
102
	alpha = -alpha;
103
    nb = 1+ (long)floor(alpha);/* nb-1 <= |alpha| < nb */
103
    nb = 1+ (long)floor(alpha);/* nb-1 <= |alpha| < nb */
104
    alpha -= (nb-1);
104
    alpha -= (double)(nb-1);
105
    K_bessel(&x, &alpha, &nb, &ize, bk, &ncalc);
105
    K_bessel(&x, &alpha, &nb, &ize, bk, &ncalc);
106
    if(ncalc != nb) {/* error input */
106
    if(ncalc != nb) {/* error input */
107
      if(ncalc < 0)
107
      if(ncalc < 0)
108
	MATHLIB_WARNING4(_("bessel_k(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
108
	MATHLIB_WARNING4(_("bessel_k(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
109
			 x, ncalc, nb, alpha);
109
			 x, ncalc, nb, alpha);
110
      else
110
      else
111
	MATHLIB_WARNING2(_("bessel_k(%g,nu=%g): precision lost in result\n"),
111
	MATHLIB_WARNING2(_("bessel_k(%g,nu=%g): precision lost in result\n"),
112
			 x, alpha+nb-1);
112
			 x, alpha+(double)nb-1);
113
    }
113
    }
114
    x = bk[nb-1];
114
    x = bk[nb-1];
115
    return x;
115
    return x;
116
}
116
}
117
 
117