penf.F90 Source File

Portability Environment for Fortran poor people.

This File Depends On

sourcefile~~penf.f90~~EfferentGraph sourcefile~penf.f90 penf.F90 sourcefile~penf_b_size.f90 penf_b_size.F90 sourcefile~penf_b_size.f90->sourcefile~penf.f90 sourcefile~penf_stringify.f90 penf_stringify.F90 sourcefile~penf_b_size.f90->sourcefile~penf_stringify.f90 sourcefile~penf_global_parameters_variables.f90 penf_global_parameters_variables.F90 sourcefile~penf_global_parameters_variables.f90->sourcefile~penf.f90 sourcefile~penf_global_parameters_variables.f90->sourcefile~penf_b_size.f90 sourcefile~penf_global_parameters_variables.f90->sourcefile~penf_stringify.f90 sourcefile~penf_stringify.f90->sourcefile~penf.f90
Help

Files Dependent On This One

sourcefile~~penf.f90~~AfferentGraph sourcefile~penf.f90 penf.F90 sourcefile~test_all.f90~2 test_all.f90 sourcefile~penf.f90->sourcefile~test_all.f90~2 sourcefile~fury_system_si32.f90 fury_system_si32.F90 sourcefile~penf.f90->sourcefile~fury_system_si32.f90 sourcefile~fury_uom_symbol32.f90 fury_uom_symbol32.F90 sourcefile~penf.f90->sourcefile~fury_uom_symbol32.f90 sourcefile~befor64.f90~2 befor64.F90 sourcefile~penf.f90->sourcefile~befor64.f90~2 sourcefile~fury_uom128.f90 fury_uom128.F90 sourcefile~penf.f90->sourcefile~fury_uom128.f90 sourcefile~fury_uom_reference64.f90 fury_uom_reference64.F90 sourcefile~penf.f90->sourcefile~fury_uom_reference64.f90 sourcefile~stringifor.f90 stringifor.F90 sourcefile~penf.f90->sourcefile~stringifor.f90 sourcefile~compact_real.f90~2 compact_real.f90 sourcefile~penf.f90->sourcefile~compact_real.f90~2 sourcefile~befor64_pack_data_m.f90~2 befor64_pack_data_m.F90 sourcefile~penf.f90->sourcefile~befor64_pack_data_m.f90~2 sourcefile~fury_system_si64.f90 fury_system_si64.F90 sourcefile~penf.f90->sourcefile~fury_system_si64.f90 sourcefile~stringifor_string_t.f90 stringifor_string_t.F90 sourcefile~penf.f90->sourcefile~stringifor_string_t.f90 sourcefile~fury_uom_symbol64.f90 fury_uom_symbol64.F90 sourcefile~penf.f90->sourcefile~fury_uom_symbol64.f90 sourcefile~fury_system_si128.f90 fury_system_si128.F90 sourcefile~penf.f90->sourcefile~fury_system_si128.f90 sourcefile~test_all.f90 test_all.f90 sourcefile~penf.f90->sourcefile~test_all.f90 sourcefile~befor64.f90 befor64.F90 sourcefile~penf.f90->sourcefile~befor64.f90 sourcefile~fury_uom_reference128.f90 fury_uom_reference128.F90 sourcefile~penf.f90->sourcefile~fury_uom_reference128.f90 sourcefile~compact_real.f90 compact_real.f90 sourcefile~penf.f90->sourcefile~compact_real.f90 sourcefile~fury_mixed_kinds.f90 fury_mixed_kinds.F90 sourcefile~penf.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~befor64_pack_data_m.f90 befor64_pack_data_m.F90 sourcefile~penf.f90->sourcefile~befor64_pack_data_m.f90 sourcefile~fury_system_abstract32.f90 fury_system_abstract32.F90 sourcefile~penf.f90->sourcefile~fury_system_abstract32.f90 sourcefile~fury_system_abstract64.f90 fury_system_abstract64.F90 sourcefile~penf.f90->sourcefile~fury_system_abstract64.f90 sourcefile~fury_uom_symbol128.f90 fury_uom_symbol128.F90 sourcefile~penf.f90->sourcefile~fury_uom_symbol128.f90 sourcefile~fury.f90 fury.f90 sourcefile~penf.f90->sourcefile~fury.f90 sourcefile~fury_qreal64.f90 fury_qreal64.F90 sourcefile~penf.f90->sourcefile~fury_qreal64.f90 sourcefile~fury_qreal128.f90 fury_qreal128.F90 sourcefile~penf.f90->sourcefile~fury_qreal128.f90 sourcefile~fury_uom32.f90 fury_uom32.F90 sourcefile~penf.f90->sourcefile~fury_uom32.f90 sourcefile~fury_system_abstract128.f90 fury_system_abstract128.F90 sourcefile~penf.f90->sourcefile~fury_system_abstract128.f90 sourcefile~fury_uom64.f90 fury_uom64.F90 sourcefile~penf.f90->sourcefile~fury_uom64.f90 sourcefile~fury_uom_converter.f90 fury_uom_converter.F90 sourcefile~penf.f90->sourcefile~fury_uom_converter.f90 sourcefile~fury_uom_reference32.f90 fury_uom_reference32.F90 sourcefile~penf.f90->sourcefile~fury_uom_reference32.f90 sourcefile~compact_real.f90~3 compact_real.f90 sourcefile~penf.f90->sourcefile~compact_real.f90~3 sourcefile~fury_qreal32.f90 fury_qreal32.F90 sourcefile~penf.f90->sourcefile~fury_qreal32.f90 sourcefile~fury_system_si32.f90->sourcefile~fury.f90 sourcefile~fury_uom_symbol32.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_symbol32.f90->sourcefile~fury.f90 sourcefile~fury_uom_symbol32.f90->sourcefile~fury_uom32.f90 sourcefile~fury_uom_symbol32.f90->sourcefile~fury_uom_reference32.f90 sourcefile~fury_uom128.f90->sourcefile~fury_system_si128.f90 sourcefile~fury_uom128.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom128.f90->sourcefile~fury.f90 sourcefile~fury_uom128.f90->sourcefile~fury_qreal128.f90 sourcefile~fury_uom128.f90->sourcefile~fury_system_abstract128.f90 sourcefile~fury_uom_reference64.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_reference64.f90->sourcefile~fury_system_abstract64.f90 sourcefile~fury_uom_reference64.f90->sourcefile~fury.f90 sourcefile~fury_uom_reference64.f90->sourcefile~fury_uom64.f90 sourcefile~stringifor.f90->sourcefile~fury_system_si32.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_symbol32.f90 sourcefile~stringifor.f90->sourcefile~fury_uom128.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_reference64.f90 sourcefile~stringifor.f90->sourcefile~fury_system_si64.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_symbol64.f90 sourcefile~stringifor.f90->sourcefile~fury_system_si128.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_reference128.f90 sourcefile~stringifor.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~stringifor.f90->sourcefile~fury_system_abstract32.f90 sourcefile~stringifor.f90->sourcefile~fury_system_abstract64.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_symbol128.f90 sourcefile~stringifor.f90->sourcefile~fury.f90 sourcefile~stringifor.f90->sourcefile~fury_qreal64.f90 sourcefile~stringifor.f90->sourcefile~fury_qreal128.f90 sourcefile~stringifor.f90->sourcefile~fury_uom32.f90 sourcefile~stringifor.f90->sourcefile~fury_system_abstract128.f90 sourcefile~stringifor.f90->sourcefile~fury_uom64.f90 sourcefile~stringifor.f90->sourcefile~fury_uom_reference32.f90 sourcefile~stringifor.f90->sourcefile~fury_qreal32.f90 sourcefile~csv_naive_parser.f90 csv_naive_parser.f90 sourcefile~stringifor.f90->sourcefile~csv_naive_parser.f90 sourcefile~swapcase.f90 swapcase.f90 sourcefile~stringifor.f90->sourcefile~swapcase.f90 sourcefile~equal.f90 equal.f90 sourcefile~stringifor.f90->sourcefile~equal.f90 sourcefile~strip.f90 strip.f90 sourcefile~stringifor.f90->sourcefile~strip.f90 sourcefile~escape.f90 escape.f90 sourcefile~stringifor.f90->sourcefile~escape.f90 sourcefile~is_real.f90 is_real.f90 sourcefile~stringifor.f90->sourcefile~is_real.f90 sourcefile~extension.f90 extension.f90 sourcefile~stringifor.f90->sourcefile~extension.f90 sourcefile~lower_than.f90 lower_than.f90 sourcefile~stringifor.f90->sourcefile~lower_than.f90 sourcefile~fill.f90 fill.f90 sourcefile~stringifor.f90->sourcefile~fill.f90 sourcefile~is_number.f90 is_number.f90 sourcefile~stringifor.f90->sourcefile~is_number.f90 sourcefile~decode.f90 decode.f90 sourcefile~stringifor.f90->sourcefile~decode.f90 sourcefile~startcase.f90 startcase.f90 sourcefile~stringifor.f90->sourcefile~startcase.f90 sourcefile~split.f90 split.f90 sourcefile~stringifor.f90->sourcefile~split.f90 sourcefile~sscan.f90 sscan.f90 sourcefile~stringifor.f90->sourcefile~sscan.f90 sourcefile~insert.f90 insert.f90 sourcefile~stringifor.f90->sourcefile~insert.f90 sourcefile~greater_equal_than.f90 greater_equal_than.f90 sourcefile~stringifor.f90->sourcefile~greater_equal_than.f90 sourcefile~scount.f90 scount.f90 sourcefile~stringifor.f90->sourcefile~scount.f90 sourcefile~snakecase.f90 snakecase.f90 sourcefile~stringifor.f90->sourcefile~snakecase.f90 sourcefile~greater_than.f90 greater_than.f90 sourcefile~stringifor.f90->sourcefile~greater_than.f90 sourcefile~not_equal.f90 not_equal.f90 sourcefile~stringifor.f90->sourcefile~not_equal.f90 sourcefile~sadjustlr.f90 sadjustlr.f90 sourcefile~stringifor.f90->sourcefile~sadjustlr.f90 sourcefile~slice.f90 slice.f90 sourcefile~stringifor.f90->sourcefile~slice.f90 sourcefile~io_basic.f90 io_basic.F90 sourcefile~stringifor.f90->sourcefile~io_basic.f90 sourcefile~write_lines.f90 write_lines.f90 sourcefile~stringifor.f90->sourcefile~write_lines.f90 sourcefile~encode.f90 encode.f90 sourcefile~stringifor.f90->sourcefile~encode.f90 sourcefile~reverse.f90 reverse.f90 sourcefile~stringifor.f90->sourcefile~reverse.f90 sourcefile~camelcase.f90 camelcase.f90 sourcefile~stringifor.f90->sourcefile~camelcase.f90 sourcefile~is_integer.f90 is_integer.f90 sourcefile~stringifor.f90->sourcefile~is_integer.f90 sourcefile~replace.f90 replace.f90 sourcefile~stringifor.f90->sourcefile~replace.f90 sourcefile~slen.f90 slen.f90 sourcefile~stringifor.f90->sourcefile~slen.f90 sourcefile~upper_lower.f90 upper_lower.f90 sourcefile~stringifor.f90->sourcefile~upper_lower.f90 sourcefile~free.f90 free.f90 sourcefile~stringifor.f90->sourcefile~free.f90 sourcefile~sverify.f90 sverify.f90 sourcefile~stringifor.f90->sourcefile~sverify.f90 sourcefile~read_lines.f90 read_lines.f90 sourcefile~stringifor.f90->sourcefile~read_lines.f90 sourcefile~sindex.f90 sindex.f90 sourcefile~stringifor.f90->sourcefile~sindex.f90 sourcefile~unique.f90 unique.f90 sourcefile~stringifor.f90->sourcefile~unique.f90 sourcefile~join.f90 join.f90 sourcefile~stringifor.f90->sourcefile~join.f90 sourcefile~search.f90 search.f90 sourcefile~stringifor.f90->sourcefile~search.f90 sourcefile~unescape.f90 unescape.f90 sourcefile~stringifor.f90->sourcefile~unescape.f90 sourcefile~strim.f90 strim.f90 sourcefile~stringifor.f90->sourcefile~strim.f90 sourcefile~to_number.f90 to_number.f90 sourcefile~stringifor.f90->sourcefile~to_number.f90 sourcefile~io_listdirected.f90 io_listdirected.F90 sourcefile~stringifor.f90->sourcefile~io_listdirected.f90 sourcefile~partition.f90 partition.f90 sourcefile~stringifor.f90->sourcefile~partition.f90 sourcefile~read_file.f90 read_file.f90 sourcefile~stringifor.f90->sourcefile~read_file.f90 sourcefile~write_file.f90 write_file.f90 sourcefile~stringifor.f90->sourcefile~write_file.f90 sourcefile~start_end.f90 start_end.f90 sourcefile~stringifor.f90->sourcefile~start_end.f90 sourcefile~assignments.f90 assignments.f90 sourcefile~stringifor.f90->sourcefile~assignments.f90 sourcefile~is_digit.f90 is_digit.f90 sourcefile~stringifor.f90->sourcefile~is_digit.f90 sourcefile~basename_dir.f90 basename_dir.f90 sourcefile~stringifor.f90->sourcefile~basename_dir.f90 sourcefile~read_line.f90 read_line.f90 sourcefile~stringifor.f90->sourcefile~read_line.f90 sourcefile~srepeat.f90 srepeat.f90 sourcefile~stringifor.f90->sourcefile~srepeat.f90 sourcefile~capitalize.f90 capitalize.f90 sourcefile~stringifor.f90->sourcefile~capitalize.f90 sourcefile~lower_equal_than.f90 lower_equal_than.f90 sourcefile~stringifor.f90->sourcefile~lower_equal_than.f90 sourcefile~concatenation.f90 concatenation.f90 sourcefile~stringifor.f90->sourcefile~concatenation.f90 sourcefile~fury_system_si64.f90->sourcefile~fury.f90 sourcefile~stringifor_string_t.f90->sourcefile~stringifor.f90 sourcefile~fury_uom_symbol64.f90->sourcefile~fury_uom_reference64.f90 sourcefile~fury_uom_symbol64.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_symbol64.f90->sourcefile~fury.f90 sourcefile~fury_uom_symbol64.f90->sourcefile~fury_uom64.f90 sourcefile~fury_system_si128.f90->sourcefile~fury.f90 sourcefile~befor64.f90->sourcefile~stringifor_string_t.f90 sourcefile~test_driver.f90 Test_Driver.f90 sourcefile~befor64.f90->sourcefile~test_driver.f90 sourcefile~fury_uom_reference128.f90->sourcefile~fury_uom128.f90 sourcefile~fury_uom_reference128.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_reference128.f90->sourcefile~fury.f90 sourcefile~fury_uom_reference128.f90->sourcefile~fury_system_abstract128.f90 sourcefile~fury_mixed_kinds.f90->sourcefile~fury.f90 sourcefile~befor64_pack_data_m.f90->sourcefile~befor64.f90~2 sourcefile~befor64_pack_data_m.f90->sourcefile~befor64.f90 sourcefile~fury_system_abstract32.f90->sourcefile~fury_system_si32.f90 sourcefile~fury_system_abstract32.f90->sourcefile~fury.f90 sourcefile~fury_system_abstract64.f90->sourcefile~fury_system_si64.f90 sourcefile~fury_system_abstract64.f90->sourcefile~fury.f90 sourcefile~fury_uom_symbol128.f90->sourcefile~fury_uom128.f90 sourcefile~fury_uom_symbol128.f90->sourcefile~fury_uom_reference128.f90 sourcefile~fury_uom_symbol128.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_symbol128.f90->sourcefile~fury.f90 sourcefile~fury_test_qreal_eq.f90 fury_test_qreal_eq.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_eq.f90 sourcefile~fury_test_uom_assign.f90 fury_test_uom_assign.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_assign.f90 sourcefile~fury_test_qreal_eq_mixed.f90 fury_test_qreal_eq_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_eq_mixed.f90 sourcefile~fury_test_qreal_mul.f90 fury_test_qreal_mul.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_mul.f90 sourcefile~fury_test_qreal_mul_mixed.f90 fury_test_qreal_mul_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_mul_mixed.f90 sourcefile~fury_test_qreal_not_eq.f90 fury_test_qreal_not_eq.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_not_eq.f90 sourcefile~fury_test_uom_sub.f90 fury_test_uom_sub.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_sub.f90 sourcefile~fury_test_qreal_not_eq_mixed.f90 fury_test_qreal_not_eq_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_not_eq_mixed.f90 sourcefile~fury_test_qreal_pow.f90 fury_test_qreal_pow.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_pow.f90 sourcefile~fury_test_uom_assign_failure.f90 fury_test_uom_assign_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_assign_failure.f90 sourcefile~fury_test_qreal_sub.f90 fury_test_qreal_sub.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_sub.f90 sourcefile~fury_test_qreal_sub_failure.f90 fury_test_qreal_sub_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_sub_failure.f90 sourcefile~fury_test_qreal_sub_mixed.f90 fury_test_qreal_sub_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_sub_mixed.f90 sourcefile~fury_test_qreal_sub_mixed_failure.f90 fury_test_qreal_sub_mixed_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_sub_mixed_failure.f90 sourcefile~fury_test_uom_sub_failure.f90 fury_test_uom_sub_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_sub_failure.f90 sourcefile~fury_test_system_si.f90 fury_test_system_si.f90 sourcefile~fury.f90->sourcefile~fury_test_system_si.f90 sourcefile~fury_test_uom_add.f90 fury_test_uom_add.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_add.f90 sourcefile~fury_test_uom_div.f90 fury_test_uom_div.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_div.f90 sourcefile~fury_test_uom_add_failure.f90 fury_test_uom_add_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_add_failure.f90 sourcefile~fury_test_uom_aliases.f90 fury_test_uom_aliases.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_aliases.f90 sourcefile~fury_test_bolt32.f90 fury_test_bolt32.f90 sourcefile~fury.f90->sourcefile~fury_test_bolt32.f90 sourcefile~fury_test_bolt64.f90 fury_test_bolt64.f90 sourcefile~fury.f90->sourcefile~fury_test_bolt64.f90 sourcefile~fury_test_qreal_add.f90 fury_test_qreal_add.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_add.f90 sourcefile~fury_test_uom_mul.f90 fury_test_uom_mul.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_mul.f90 sourcefile~fury_test_qreal_add_aliases_failure.f90 fury_test_qreal_add_aliases_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_add_aliases_failure.f90 sourcefile~fury_test_uom_pow.f90 fury_test_uom_pow.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_pow.f90 sourcefile~fury_test_qreal_add_failure.f90 fury_test_qreal_add_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_add_failure.f90 sourcefile~fury_test_qreal_add_mixed.f90 fury_test_qreal_add_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_add_mixed.f90 sourcefile~fury_test_qreal_add_mixed_failure.f90 fury_test_qreal_add_mixed_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_add_mixed_failure.f90 sourcefile~fury_test_qreal_aliases.f90 fury_test_qreal_aliases.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_aliases.f90 sourcefile~fury_test_uom_parse_failure.f90 fury_test_uom_parse_failure.f90 sourcefile~fury.f90->sourcefile~fury_test_uom_parse_failure.f90 sourcefile~fury_test_qreal_assign.f90 fury_test_qreal_assign.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_assign.f90 sourcefile~fury_test_qreal_conversions_complex.f90 fury_test_qreal_conversions_complex.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_conversions_complex.f90 sourcefile~fury_test_qreal_conversions_si.f90 fury_test_qreal_conversions_si.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_conversions_si.f90 sourcefile~fury_test_qreal_conversions_simple.f90 fury_test_qreal_conversions_simple.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_conversions_simple.f90 sourcefile~fury_test_qreal_div.f90 fury_test_qreal_div.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_div.f90 sourcefile~fury_test_qreal_div_mixed.f90 fury_test_qreal_div_mixed.f90 sourcefile~fury.f90->sourcefile~fury_test_qreal_div_mixed.f90 sourcefile~fury_qreal64.f90->sourcefile~fury_system_si64.f90 sourcefile~fury_qreal64.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_qreal64.f90->sourcefile~fury_system_abstract64.f90 sourcefile~fury_qreal64.f90->sourcefile~fury.f90 sourcefile~fury_qreal128.f90->sourcefile~fury_system_si128.f90 sourcefile~fury_qreal128.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_qreal128.f90->sourcefile~fury.f90 sourcefile~fury_qreal128.f90->sourcefile~fury_system_abstract128.f90 sourcefile~fury_uom32.f90->sourcefile~fury_system_si32.f90 sourcefile~fury_uom32.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom32.f90->sourcefile~fury_system_abstract32.f90 sourcefile~fury_uom32.f90->sourcefile~fury.f90 sourcefile~fury_uom32.f90->sourcefile~fury_qreal32.f90 sourcefile~fury_system_abstract128.f90->sourcefile~fury_system_si128.f90 sourcefile~fury_system_abstract128.f90->sourcefile~fury.f90 sourcefile~fury_uom64.f90->sourcefile~fury_system_si64.f90 sourcefile~fury_uom64.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom64.f90->sourcefile~fury_system_abstract64.f90 sourcefile~fury_uom64.f90->sourcefile~fury.f90 sourcefile~fury_uom64.f90->sourcefile~fury_qreal64.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_symbol32.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom128.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_reference64.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_symbol64.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_reference128.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_symbol128.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom32.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom64.f90 sourcefile~fury_uom_converter.f90->sourcefile~fury_uom_reference32.f90 sourcefile~fury_uom_reference32.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_uom_reference32.f90->sourcefile~fury_system_abstract32.f90 sourcefile~fury_uom_reference32.f90->sourcefile~fury.f90 sourcefile~fury_uom_reference32.f90->sourcefile~fury_uom32.f90 sourcefile~fury_qreal32.f90->sourcefile~fury_system_si32.f90 sourcefile~fury_qreal32.f90->sourcefile~fury_mixed_kinds.f90 sourcefile~fury_qreal32.f90->sourcefile~fury_system_abstract32.f90 sourcefile~fury_qreal32.f90->sourcefile~fury.f90
Help

Source Code


Source Code

!< Portability Environment for Fortran poor people.
module penf
!-----------------------------------------------------------------------------------------------------------------------------------
!< Portability Environment for Fortran poor people.
!<{!README-PENF.md!}
!-----------------------------------------------------------------------------------------------------------------------------------
use penf_global_parameters_variables
#ifdef __GFORTRAN__
use penf_b_size, only : bit_size, byte_size
#else
use penf_b_size
#endif
use penf_stringify, only : str, strz, cton, bstr, bcton
!-----------------------------------------------------------------------------------------------------------------------------------

!-----------------------------------------------------------------------------------------------------------------------------------
implicit none
private
save
! Global parameters and variables
public :: endianL, endianB, endian, is_initialized
public :: R16P, FR16P, DR16P, MinR16P, MaxR16P, BIR16P, BYR16P, smallR16P, ZeroR16
public :: R8P,  FR8P,  DR8P,  MinR8P,  MaxR8P,  BIR8P,  BYR8P,  smallR8P,  ZeroR8
public :: R4P,  FR4P,  DR4P,  MinR4P,  MaxR4P,  BIR4P,  BYR4P,  smallR4P,  ZeroR4
public :: R_P,  FR_P,  DR_P,  MinR_P,  MaxR_P,  BIR_P,  BYR_P,  smallR_P,  Zero
public :: I8P,  FI8P,  DI8P,  MinI8P,  MaxI8P,  BII8P,  BYI8P
public :: I4P,  FI4P,  DI4P,  MinI4P,  MaxI4P,  BII4P,  BYI4P
public :: I2P,  FI2P,  DI2P,  MinI2P,  MaxI2P,  BII2P,  BYI2P
public :: I1P,  FI1P,  DI1P,  MinI1P,  MaxI1P,  BII1P,  BYI1P
public :: I_P,  FI_P,  DI_P,  MinI_P,  MaxI_P,  BII_P,  BYI_P
public :: REAL_KINDS_LIST, REAL_FORMATS_LIST
public :: INTEGER_KINDS_LIST, INTEGER_FORMATS_LIST
! Bit/byte size functions
public :: bit_size, byte_size
! Stringify facility
public :: str, strz, cton
public :: bstr, bcton
! Miscellanea facility
public :: check_endian
public :: digit
public :: penf_Init
public :: penf_print
!-----------------------------------------------------------------------------------------------------------------------------------

!-----------------------------------------------------------------------------------------------------------------------------------
#ifdef __GFORTRAN__
! work-around for strange gfortran bug...
interface bit_size
  !< Overloading of the intrinsic *bit_size* function for computing the number of bits of (also) real and character variables.
endinterface
#endif
!-----------------------------------------------------------------------------------------------------------------------------------

interface digit
  !< Compute the number of digits in decimal base of the input integer.
  module procedure digit_I8, digit_I4, digit_I2, digit_I1
endinterface
!-----------------------------------------------------------------------------------------------------------------------------------
contains
  subroutine check_endian()
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Check the type of bit ordering (big or little endian) of the running architecture.
  !<
  !> @note The result is stored into the *endian* global variable.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  if (is_little_endian()) then
    endian = endianL
  else
    endian = endianB
  endif
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  contains
    pure function is_little_endian() result(is_little)
    !-------------------------------------------------------------------------------------------------------------------------------
    !< Check if the type of the bit ordering of the running architecture is little endian.
    !-------------------------------------------------------------------------------------------------------------------------------
    logical      :: is_little !< Logical output: true is the running architecture uses little endian ordering, false otherwise.
    integer(I1P) :: int1(1:4) !< One byte integer array for casting 4 bytes integer.
    !-------------------------------------------------------------------------------------------------------------------------------

    !-------------------------------------------------------------------------------------------------------------------------------
    int1 = transfer(1_I4P, int1)
    is_little = (int1(1)==1_I1P)
    return
    !-------------------------------------------------------------------------------------------------------------------------------
    endfunction is_little_endian
  endsubroutine check_endian

  elemental function digit_I8(n) result(digit)
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Compute the number of digits in decimal base of the input integer.
  !---------------------------------------------------------------------------------------------------------------------------------
  integer(I8P), intent(in) :: n     !< Input integer.
  character(DI8P)          :: str   !< Returned string containing input number plus padding zeros.
  integer(I4P)             :: digit !< Number of digits.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  write(str, FI8P) abs(n)        ! Casting of n to string.
  digit = len_trim(adjustl(str)) ! Calculating the digits number of n.
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endfunction digit_I8

  elemental function digit_I4(n) result(digit)
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Compute the number of digits in decimal base of the input integer.
  !---------------------------------------------------------------------------------------------------------------------------------
  integer(I4P), intent(in) :: n     !< Input integer.
  character(DI4P)          :: str   !< Returned string containing input number plus padding zeros.
  integer(I4P)             :: digit !< Number of digits.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  write(str, FI4P) abs(n)        ! Casting of n to string.
  digit = len_trim(adjustl(str)) ! Calculating the digits number of n.
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endfunction digit_I4

  elemental function digit_I2(n) result(digit)
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Compute the number of digits in decimal base of the input integer.
  !---------------------------------------------------------------------------------------------------------------------------------
  integer(I2P), intent(in) :: n     !< Input integer.
  character(DI2P)          :: str   !< Returned string containing input number plus padding zeros.
  integer(I4P)             :: digit !< Number of digits.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  write(str, FI2P) abs(n)        ! Casting of n to string.
  digit = len_trim(adjustl(str)) ! Calculating the digits number of n.
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endfunction digit_I2

  elemental function digit_I1(n) result(digit)
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Compute the number of digits in decimal base of the input integer.
  !---------------------------------------------------------------------------------------------------------------------------------
  integer(I1P), intent(in) :: n     !< Input integer.
  character(DI1P)          :: str   !< Returned string containing input number plus padding zeros.
  integer(I4P)             :: digit !< Number of digits.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  write(str, FI1P) abs(n)        ! Casting of n to string.
  digit = len_trim(adjustl(str)) ! Calculating the digits number of n.
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endfunction digit_I1

  subroutine penf_init()
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Initialize PENF's variables that are not initialized into the definition specification.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  call check_endian
  BIR8P  = bit_size(MaxR8P)     ; BYR8P  = BIR8P/8_I1P
  BIR4P  = bit_size(MaxR4P)     ; BYR4P  = BIR4P/8_I1P
  BIR_P  = bit_size(MaxR_P)     ; BYR_P  = BIR_P/8_I1P
#ifdef r16p
  BIR16P = bit_size(MaxR16P)    ; BYR16P = BIR16P/8_I2P
#else
  BIR16P = int(BIR8P, kind=I2P) ; BYR16P = BIR16P/8_I2P
#endif
  is_initialized = .true.
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endsubroutine penf_init

  subroutine penf_print(unit, pref, iostat, iomsg)
  !---------------------------------------------------------------------------------------------------------------------------------
  !< Print to the specified unit the PENF's environment data.
  !---------------------------------------------------------------------------------------------------------------------------------
  integer(I4P), intent(in)            :: unit    !< Logic unit.
  character(*), intent(in),  optional :: pref    !< Prefixing string.
  integer(I4P), intent(out), optional :: iostat  !< IO error.
  character(*), intent(out), optional :: iomsg   !< IO error message.
  character(len=:), allocatable       :: prefd   !< Prefixing string.
  integer(I4P)                        :: iostatd !< IO error.
  character(500)                      :: iomsgd  !< Temporary variable for IO error message.
  !---------------------------------------------------------------------------------------------------------------------------------

  !---------------------------------------------------------------------------------------------------------------------------------
  if (.not.is_initialized) call penf_init
  prefd = '' ; if (present(pref)) prefd = pref
  if (endian==endianL) then
    write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)prefd//' This architecture has LITTLE Endian bit ordering'
  else
    write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)prefd//' This architecture has BIG Endian bit ordering'
  endif
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Reals kind, format and characters number:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R16P: '//str(n=R16P)//','//FR16P//','//str(n=DR16P)
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R8P:  '//str(n=R8P )//','//FR8P //','//str(n=DR8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R4P:  '//str(n=R4P )//','//FR4P //','//str(n=DR4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Integers kind, format and characters number:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I8P:  '//str(n=I8P )//','//FI8P //','//str(n=DI8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I4P:  '//str(n=I4P )//','//FI4P //','//str(n=DI4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I2P:  '//str(n=I2P )//','//FI2P //','//str(n=DI2P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I1P:  '//str(n=I1P )//','//FI1P //','//str(n=DI1P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Reals minimum and maximum values:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R16P: '//str(n=MinR16P)//','//str(n=MaxR16P)
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R8P:  '//str(n=MinR8P )//','//str(n=MaxR8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R4P:  '//str(n=MinR4P )//','//str(n=MaxR4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Integergs minimum and maximum values:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I8P:  '//str(n=MinI8P )//','//str(n=MaxI8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I4P:  '//str(n=MinI4P )//','//str(n=MaxI4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I2P:  '//str(n=MinI2P )//','//str(n=MaxI2P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I1P:  '//str(n=MinI1P )//','//str(n=MaxI1P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Reals bits/bytes sizes:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R16P: '//str(n=BIR16P)//'/'//str(n=BYR16P)
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R8P:  '//str(n=BIR8P )//'/'//str(n=BYR8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   R4P:  '//str(n=BIR4P )//'/'//str(n=BYR4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Integers bits/bytes sizes:'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I8P:  '//str(n=BII8P )//'/'//str(n=BYI8P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I4P:  '//str(n=BII4P )//'/'//str(n=BYI4P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I2P:  '//str(n=BII2P )//'/'//str(n=BYI2P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   I1P:  '//str(n=BII1P )//'/'//str(n=BYI1P )
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//' Machine precisions'
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   ZeroR16: '//str(ZeroR16,.true.)
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   ZeroR8:  '//str(ZeroR8 ,.true.)
  write(unit=unit,fmt='(A)',iostat=iostatd,iomsg=iomsgd)  prefd//'   ZeroR4:  '//str(ZeroR4 ,.true.)
  if (present(iostat)) iostat = iostatd
  if (present(iomsg))  iomsg  = iomsgd
  return
  !---------------------------------------------------------------------------------------------------------------------------------
  endsubroutine penf_print
endmodule penf

assignments.f90 basename_dir.f90 befor64.F90 befor64.F90 befor64_pack_data_m.F90 befor64_pack_data_m.F90 camelcase.f90 capitalize.f90 compact_real.f90 compact_real.f90 compact_real.f90 concatenation.f90 csv_naive_parser.f90 decode.f90 encode.f90 equal.f90 escape.f90 extension.f90 fill.f90 free.f90 fury.f90 fury_mixed_kinds.F90 fury_qreal128.F90 fury_qreal32.F90 fury_qreal64.F90 fury_system_abstract128.F90 fury_system_abstract32.F90 fury_system_abstract64.F90 fury_system_si128.F90 fury_system_si32.F90 fury_system_si64.F90 fury_test_bolt32.f90 fury_test_bolt64.f90 fury_test_qreal_add.f90 fury_test_qreal_add_aliases_failure.f90 fury_test_qreal_add_failure.f90 fury_test_qreal_add_mixed.f90 fury_test_qreal_add_mixed_failure.f90 fury_test_qreal_aliases.f90 fury_test_qreal_assign.f90 fury_test_qreal_conversions_complex.f90 fury_test_qreal_conversions_si.f90 fury_test_qreal_conversions_simple.f90 fury_test_qreal_div.f90 fury_test_qreal_div_mixed.f90 fury_test_qreal_eq.f90 fury_test_qreal_eq_mixed.f90 fury_test_qreal_mul.f90 fury_test_qreal_mul_mixed.f90 fury_test_qreal_not_eq.f90 fury_test_qreal_not_eq_mixed.f90 fury_test_qreal_pow.f90 fury_test_qreal_sub.f90 fury_test_qreal_sub_failure.f90 fury_test_qreal_sub_mixed.f90 fury_test_qreal_sub_mixed_failure.f90 fury_test_system_si.f90 fury_test_uom_add.f90 fury_test_uom_add_failure.f90 fury_test_uom_aliases.f90 fury_test_uom_assign.f90 fury_test_uom_assign_failure.f90 fury_test_uom_div.f90 fury_test_uom_mul.f90 fury_test_uom_parse_failure.f90 fury_test_uom_pow.f90 fury_test_uom_sub.f90 fury_test_uom_sub_failure.f90 fury_uom128.F90 fury_uom32.F90 fury_uom64.F90 fury_uom_converter.F90 fury_uom_reference128.F90 fury_uom_reference32.F90 fury_uom_reference64.F90 fury_uom_symbol128.F90 fury_uom_symbol32.F90 fury_uom_symbol64.F90 greater_equal_than.f90 greater_than.f90 insert.f90 io_basic.F90 io_listdirected.F90 is_digit.f90 is_integer.f90 is_number.f90 is_real.f90 join.f90 lower_equal_than.f90 lower_than.f90 not_equal.f90 partition.f90 penf.F90 penf.F90 penf.F90 penf.F90 penf.F90 penf_b_size.F90 penf_global_parameters_variables.F90 penf_stringify.F90 read_file.f90 read_line.f90 read_lines.f90 replace.f90 reverse.f90 sadjustlr.f90 scount.f90 search.f90 sindex.f90 slen.f90 slice.f90 snakecase.f90 split.f90 srepeat.f90 sscan.f90 start_end.f90 startcase.f90 strim.f90 stringifor.F90 stringifor_string_t.F90 strip.f90 sverify.f90 swapcase.f90 test_all.F90 test_all.f90 test_all.f90 Test_Driver.f90 to_number.f90 unescape.f90 unique.f90 upper_lower.f90 write_file.f90 write_lines.f90