yn function
Implementation
double yn(int n, double x) {
if (x <= 0) return x == 0 ? -double.infinity : double.nan;
if (n < 0) return (n % 2 == 0 ? 1.0 : -1.0) * yn(-n, x);
if (n == 0) return y0(x);
if (n == 1) return y1(x);
// Forward recurrence is stable for Y_n
double yPrev = y0(x);
double yCurr = y1(x);
for (int k = 1; k < n; k++) {
double yNext = (2 * k / x) * yCurr - yPrev;
yPrev = yCurr;
yCurr = yNext;
}
return yCurr;
}