compiler construction - Definitive length of primitive C and Fortran types -
i revamping native bindings blas/lapack (fortran libraries) major os on 32/64 bit java library: netlib-java.
however, i've started hit problems data type differences between unix/windows world, , between fortran / c.
tables of fortran , c data types pretty non-commital because sizes are not explicitly defined c language.
is there canonical source (or can create 1 referencing authoritative sources?) of bit sizes in practice of primitive data types on major oses both fortran , c?
or, @ least, fortran types in terms of c types.
i.e. populate table following columns (with few begin):
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 ... (i'm not sure if correct)
it possible lookup java types in terms of c primitives in jni_md.h shipped every jdk.
as noted @cup in comments, there iso_c_binding standard. gives level of comfort (at least gcc) mappings noted in cblas/lapacke c api (which uses basic c types) portable across architectures compiler. noted in question, bit sizes in practice, not abstract concept of languages guarantee. i.e.
real->floatdouble precision->doubleinteger->intlogical->int
and it's c define byte sizes of primitive types , jni_md.h define java primitive types.
in practice, means disconnect on 64 bit windows long 32 bit (64 bit on 64 bit linux) , jint defined in terms of long. therefore compiler complains jint*/int type conversions during windows builds can safely ignored.
Comments
Post a Comment