Class Caljy1

java.lang.Object
netlib.specfun.Caljy1

public class Caljy1
extends java.lang.Object
First-order Bessel functions of the first and second kind (J1 and Y1).

Changes:

  • Original Version (netlib.org/specfun), November 10, 1987, W. J. Cody.
  • 2011, S. Reiser: ported to Java.
  • 2020-08-24, S. Reiser: rearranged calculations for X > 8. Let functions sin(x), cos(x) handle the argument reduction. To calculate sin(x+const), cos(x+const) use the identities
       sin(x+y) = sin(x)cos(y) + cos(x)sin(y),
       cos(x+y) = cos(x)cos(y) - sin(x)sin(y).
  • 2020-08-29, Reiser: One of the values
    u := sin(x)-cos(x) and
    v := sin(x)+cos(x)
    will be less accurate than the other. Use cos(2*x) and the identity
    cos(2*x) = cos(x)^2 - sin(x)^2
    to calculate the less accurate one by means of the other (technique taken from netlib/fdlibm, file "e_j0.c").
  Produced by f2java.  f2java is part of the Fortran-
  -to-Java project at the University of Tennessee Netlib
  numerical software repository.

  Original authorship for the BLAS and LAPACK numerical
  routines may be found in the Fortran source, available at
  http://www.netlib.org.

  Fortran input file: j1y1.f
  f2java version: 0.8.1

 C---------------------------------------------------------------------
 C
 C This packet computes first-order Bessel functions of the first and
 C   second kind (J1 and Y1), for real arguments X, where 0 < X <= XMAX
 C   for Y1, and |X| <= XMAX for J1.  It contains two function-type
 C   subprograms,  BESJ1  and  BESY1,  and one subroutine-type
 C   subprogram,  CALJY1.  The calling statements for the primary
 C   entries are:
 C
 C           Y = BESJ1(X)
 C   and
 C           Y = BESY1(X),
 C
 C   where the entry points correspond to the functions J1(X) and Y1(X),
 C   respectively.  The routine  CALJY1  is intended for internal packet
 C   use only, all computations within the packet being concentrated in
 C   this one routine.  The function subprograms invoke  CALJY1  with
 C   the statement
 C           CALL CALJY1(ARG,RESULT,JINT),
 C   where the parameter usage is as follows:
 C
 C      Function                  Parameters for CALJY1
 C       call              ARG             RESULT          JINT
 C
 C     BESJ1(ARG)     |ARG| .LE. XMAX       J1(ARG)          0
 C     BESY1(ARG)   0 .LT. ARG .LE. XMAX    Y1(ARG)          1
 C
 C   The main computation uses unpublished minimax rational
 C   approximations for X .LE. 8.0, and an approximation from the
 C   book  Computer Approximations  by Hart, et. al., Wiley and Sons,
 C   New York, 1968, for arguments larger than 8.0   Part of this
 C   transportable packet is patterned after the machine-dependent
 C   FUNPACK program BESJ1(X), but cannot match that version for
 C   efficiency or accuracy.  This version uses rational functions
 C   that are theoretically accurate to at least 18 significant decimal
 C   digits for X <= 8, and at least 18 decimal places for X > 8.  The
 C   accuracy achieved depends on the arithmetic system, the compiler,
 C   the intrinsic functions, and proper selection of the machine-
 C   dependent constants.
 C
 C*******************************************************************
 C
 C Explanation of machine-dependent constants
 C
 C   XINF   = largest positive machine number
 C   XMAX   = largest acceptable argument.  The functions AINT, SIN
 C            and COS must perform properly for  ABS(X) .LE. XMAX.
 C            We recommend that XMAX be a small integer multiple of
 C            sqrt(1/eps), where eps is the smallest positive number
 C            such that  1+eps > 1.
 C   XSMALL = positive argument such that  1.0-(1/2)(X/2)**2 = 1.0
 C            to machine precision for all  ABS(X) .LE. XSMALL.
 C            We recommend that  XSMALL < sqrt(eps)/beta, where beta
 C            is the floating-point radix (usually 2 or 16).
 C
 C     Approximate values for some important machines are
 C
 C                          eps      XMAX     XSMALL      XINF
 C
 C  CDC 7600      (S.P.)  7.11E-15  1.34E+08  2.98E-08  1.26E+322
 C  CRAY-1        (S.P.)  7.11E-15  1.34E+08  2.98E-08  5.45E+2465
 C  IBM PC (8087) (S.P.)  5.96E-08  8.19E+03  1.22E-04  3.40E+38
 C  IBM PC (8087) (D.P.)  1.11D-16  2.68D+08  3.72D-09  1.79D+308
 C  IBM 195       (D.P.)  2.22D-16  6.87D+09  9.09D-13  7.23D+75
 C  UNIVAC 1108   (D.P.)  1.73D-18  4.30D+09  2.33D-10  8.98D+307
 C  VAX 11/780    (D.P.)  1.39D-17  1.07D+09  9.31D-10  1.70D+38
 C
 C*******************************************************************
 C*******************************************************************
 C
 C Error Returns
 C
 C  The program returns the value zero for  X .GT. XMAX, and returns
 C    -XINF when BESLY1 is called with a negative or zero argument.
 C
 C
 C Intrinsic functions required are:
 C
 C     ABS, AINT, COS, LOG, SIN, SQRT
 C
 C
 C  Author: W. J. Cody
 C          Mathematics and Computer Science Division
 C          Argonne National Laboratory
 C          Argonne, IL 60439
 C
 C  Latest modification: November 10, 1987
 C
 C--------------------------------------------------------------------

  • Method Summary

    Modifier and Type Method Description
    static void caljy1​(double arg, doubleW result, int jint)  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • caljy1

      public static void caljy1​(double arg, doubleW result, int jint)