我目前正在将 32/64 位上所有主要操作系统的 BLAS/LAPACK(Fortran 库)的本机绑定修改为 Java 库:netlib-java。
但是,我开始遇到一些与 UNIX/Windows 世界之间以及 Fortran/C 之间的数据类型差异有关的问题。
Fortran和C数据类型的表是非常不确定的,因为C 语言没有明确定义大小。
在 Fortran 和 C 的主要操作系统上的原始数据类型的实践中,是否有规范的来源(或者我们可以通过引用权威来源来创建一个?)?
或者,至少,就 C 类型而言,是 Fortran 类型。
即用以下列填充一个表(有几个开始):
OS ARCH Language Type Bits
Linux x86_64 C int 32
Linux x86_64 C long 64
Linux x86_64 C float 32
Linux x86_64 C double 64
Linux x86_64 Fortran LOGICAL 32
Linux x86_64 Fortran INTEGER 32
Linux x86_64 Fortran REAL 32
Linux x86_64 Fortran DOUBLE PRECISION 64
Linux x86_64 Java JNI jint 32
Windows x86_64 Fortran INTEGER 32
Windows x86_64 Java JNI jint 64
...
(我不确定这是否正确)
jni_md.h
可以根据每个 JDK 附带的 C 原语来查找 Java 类型。