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 59... Line 59...
59
	return(bessel_j(x, -alpha) * cos(M_PI * alpha) +
59
	return(bessel_j(x, -alpha) * cos(M_PI * alpha) +
60
	       ((alpha == na) ? 0 :
60
	       ((alpha == na) ? 0 :
61
	       bessel_y(x, -alpha) * sin(M_PI * alpha)));
61
	       bessel_y(x, -alpha) * sin(M_PI * alpha)));
62
    }
62
    }
63
    nb = 1 + (long)na; /* nb-1 <= alpha < nb */
63
    nb = 1 + (long)na; /* nb-1 <= alpha < nb */
64
    alpha -= (nb-1);
64
    alpha -= (double)(nb-1);
65
#ifdef MATHLIB_STANDALONE
65
#ifdef MATHLIB_STANDALONE
66
    bj = (double *) calloc(nb, sizeof(double));
66
    bj = (double *) calloc(nb, sizeof(double));
67
    if (!bj) MATHLIB_ERROR("%s", _("bessel_j allocation error"));
67
    if (!bj) MATHLIB_ERROR("%s", _("bessel_j allocation error"));
68
#else
68
#else
69
    vmax = vmaxget();
69
    vmax = vmaxget();
Line 74... Line 74...
74
      if(ncalc < 0)
74
      if(ncalc < 0)
75
	MATHLIB_WARNING4(_("bessel_j(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
75
	MATHLIB_WARNING4(_("bessel_j(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
76
			 x, ncalc, nb, alpha);
76
			 x, ncalc, nb, alpha);
77
      else
77
      else
78
	MATHLIB_WARNING2(_("bessel_j(%g,nu=%g): precision lost in result\n"),
78
	MATHLIB_WARNING2(_("bessel_j(%g,nu=%g): precision lost in result\n"),
79
			 x, alpha+nb-1);
79
			 x, alpha+(double)nb-1);
80
    }
80
    }
81
    x = bj[nb-1];
81
    x = bj[nb-1];
82
#ifdef MATHLIB_STANDALONE
82
#ifdef MATHLIB_STANDALONE
83
    free(bj);
83
    free(bj);
84
#else
84
#else
Line 109... Line 109...
109
	return(bessel_j_ex(x, -alpha, bj) * cos(M_PI * alpha) +
109
	return(bessel_j_ex(x, -alpha, bj) * cos(M_PI * alpha) +
110
	       ((alpha == na) ? 0 :
110
	       ((alpha == na) ? 0 :
111
		bessel_y_ex(x, -alpha, bj) * sin(M_PI * alpha)));
111
		bessel_y_ex(x, -alpha, bj) * sin(M_PI * alpha)));
112
    }
112
    }
113
    nb = 1 + (long)na; /* nb-1 <= alpha < nb */
113
    nb = 1 + (long)na; /* nb-1 <= alpha < nb */
114
    alpha -= (nb-1);
114
    alpha -= (double)(nb-1);
115
    J_bessel(&x, &alpha, &nb, bj, &ncalc);
115
    J_bessel(&x, &alpha, &nb, bj, &ncalc);
116
    if(ncalc != nb) {/* error input */
116
    if(ncalc != nb) {/* error input */
117
      if(ncalc < 0)
117
      if(ncalc < 0)
118
	MATHLIB_WARNING4(_("bessel_j(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
118
	MATHLIB_WARNING4(_("bessel_j(%g): ncalc (=%ld) != nb (=%ld); alpha=%g. Arg. out of range?\n"),
119
			 x, ncalc, nb, alpha);
119
			 x, ncalc, nb, alpha);
120
      else
120
      else
121
	MATHLIB_WARNING2(_("bessel_j(%g,nu=%g): precision lost in result\n"),
121
	MATHLIB_WARNING2(_("bessel_j(%g,nu=%g): precision lost in result\n"),
122
			 x, alpha+nb-1);
122
			 x, alpha+(double)nb-1);
123
    }
123
    }
124
    x = bj[nb-1];
124
    x = bj[nb-1];
125
    return x;
125
    return x;
126
}
126
}
127
 
127