Created
November 20, 2017 11:32
-
-
Save cenit/8471b719fb2273a749ab47a901818f79 to your computer and use it in GitHub Desktop.
equivalence tests for Fortran
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
program equivalence | |
implicit none | |
integer, parameter :: sp = selected_real_kind(6, 37) | |
integer, parameter :: dp = selected_real_kind(15, 307) | |
integer, parameter :: dp_int = selected_int_kind(16) | |
integer, parameter :: hp_int = selected_int_kind(4) | |
integer, parameter :: qp = selected_real_kind(33, 4931) | |
character, dimension(8) :: res_string | |
real(dp) :: seventh_component | |
real(sp) :: weight | |
integer(hp_int) :: charge | |
integer(hp_int) :: particle_id | |
EQUIVALENCE (charge,res_string(1)),(particle_id,res_string(3)),(weight,res_string(5)),(seventh_component,res_string(1)) | |
res_string(1) = char(0) | |
res_string(2) = char(1) | |
res_string(3) = char(0) | |
res_string(4) = char(1) | |
res_string(5) = char(0) | |
res_string(6) = char(0) | |
res_string(7) = char(0) | |
res_string(8) = char(1) | |
print *, 'Writing after res_string setup' | |
print *, seventh_component, weight, charge, particle_id | |
seventh_component = 0 | |
print *, 'Writing after seventh_component setup' | |
print *, seventh_component, weight, charge, particle_id | |
weight = 2.35098870E-38 | |
charge = 256 | |
particle_id = 256 | |
print *, 'Writing after single elements setup' | |
print *, seventh_component, weight, charge, particle_id | |
end program equivalence |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
OK, ho capito, io lo avevo fatto in maniera diversa.
Io li accoppiavo così:
ma é decisamente meno pratico e più faticoso.
Adesso vedo di capire, e settimana prossima cerchiamo di mettere tutto assieme.