Claude:
No — _j0 is the opposite problem. The underscore-prefixed names are Microsoft's CRT-specific names; glibc, musl, macOS's libm, and the BSDs don't provide _j0 at all, so your Linux/macOS builds would fail to link.
The standard approach is a small compatibility shim:
#include <math.h>
#if defined(_MSC_VER)
#define BESSEL_J0(x) _j0(x)
#define BESSEL_Y0(x) _y0(x)
#define BESSEL_JN(n, x) _jn((n), (x))
#define BESSEL_YN(n, x) _yn((n), (x))
#else
#define BESSEL_J0(x) j0(x)
#define BESSEL_Y0(x) y0(x)
#define BESSEL_JN(n, x) jn((n), (x))
#define BESSEL_YN(n, x) yn((n), (x))
#endif
Not a very nice fix...
Claude:
No — _j0 is the opposite problem. The underscore-prefixed names are Microsoft's CRT-specific names; glibc, musl, macOS's libm, and the BSDs don't provide _j0 at all, so your Linux/macOS builds would fail to link.
The standard approach is a small compatibility shim:
Not a very nice fix...