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
->float
double precision
->double
integer
->int
logical
->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