Appearance
Utilities
Bit and byte sizes: bit_size() / byte_size()
PENF extends the intrinsic bit_size() to work with reals and characters too:
fortran
use penf
print FI2P, bit_size(1._R16P) ! 128
print FI1P, bit_size(1._R8P) ! 64
print FI1P, bit_size(1._R4P) ! 32
print FI4P, bit_size('ab') ! 16 (2 characters × 8 bits)
print FI1P, byte_size(1._R16P) ! 16
print FI1P, byte_size(1._R8P) ! 8
print FI1P, byte_size(1._R4P) ! 4
print FI1P, byte_size(1_I8P) ! 8
print FI1P, byte_size('ab') ! 2Count digits: digit()
fortran
use penf
print FI4P, digit(100_I8P) ! 3
print FI4P, digit(100_I4P) ! 3
print FI4P, digit(100_I2P) ! 3
print FI4P, digit(-999_I4P) ! 3 (sign not counted)Endianness: check_endian()
fortran
use penf
call check_endian
print *, endian ! 1 = little endian (x86), 0 = big endianTip: The result is stored in the module variable
endian. Compare against the exported constantsendianL(little) andendianB(big).
Character kinds: str_ascii() / str_ucs4()
PENF provides conversion helpers between the ASCII, UCS4 (Unicode), and default character kinds:
fortran
use penf
character(len=:, kind=ASCII), allocatable :: s_ascii
character(len=:, kind=UCS4), allocatable :: s_ucs4
s_ascii = str_ascii('Default kind → ASCII')
s_ascii = str_ascii(UCS4_'Unicode → ASCII')
s_ucs4 = str_ucs4('Default kind → UCS4')
s_ucs4 = str_ucs4(ASCII_'ASCII → UCS4')