static public double y1(double x) throws ArithmeticException {
  if (x < 8.0) {
    double y=x * x;
    double ans1=x * (-0.4900604943e13 + y * (0.1275274390e13 + y * (-0.5153438139e11 + y * (0.7349264551e9 + y * (-0.4237922726e7 + y * 0.8511937935e4)))));
    double ans2=0.2499580570e14 + y * (0.4244419664e12 + y * (0.3733650367e10 + y * (0.2245904002e8 + y * (0.1020426050e6 + y * (0.3549632885e3 + y)))));
    return (ans1 / ans2) + 0.636619772 * (j1(x) * Math.log(x) - 1.0 / x);
  }
 else {
    double z=8.0 / x;
    double y=z * z;
    double xx=x - 2.356194491;
    double ans1=1.0 + y * (0.183105e-2 + y * (-0.3516396496e-4 + y * (0.2457520174e-5 + y * (-0.240337019e-6))));
    double ans2=0.04687499995 + y * (-0.2002690873e-3 + y * (0.8449199096e-5 + y * (-0.88228987e-6 + y * 0.105787412e-6)));
    return Math.sqrt(0.636619772 / x) * (Math.sin(xx) * ans1 + z * Math.cos(xx) * ans2);
  }
}

static public double y1 ( double x ) throws ArithmeticException { if ( x < 8.0 ) { double y = x * x ; double ans1 = x * ( - 0.4900604943e13 + y * ( 0.1275274390e13 + y * ( - 0.5153438139e11 + y * ( 0.7349264551e9 + y * ( - 0.4237922726e7 + y * 0.8511937935e4 ) ) ) ) ) ; double ans2 = 0.2499580570e14 + y * ( 0.4244419664e12 + y * ( 0.3733650367e10 + y * ( 0.2245904002e8 + y * ( 0.1020426050e6 + y * ( 0.3549632885e3 + y ) ) ) ) ) ; return ( ans1 / ans2 ) + 0.636619772 * ( j1 ( x ) * Math . log ( x ) - 1.0 / x ) ; } else { double z = 8.0 / x ; double y = z * z ; double xx = x - 2.356194491 ; double ans1 = 1.0 + y * ( 0.183105e-2 + y * ( - 0.3516396496e-4 + y * ( 0.2457520174e-5 + y * ( - 0.240337019e-6 ) ) ) ) ; double ans2 = 0.04687499995 + y * ( - 0.2002690873e-3 + y * ( 0.8449199096e-5 + y * ( - 0.88228987e-6 + y * 0.105787412e-6 ) ) ) ; return Math . sqrt ( 0.636619772 / x ) * ( Math . sin ( xx ) * ans1 + z * Math . cos ( xx ) * ans2 ) ; } }
returns the bessel function of the second kind of order 1 of the argument .
