1! RUN: %python %S/test_folding.py %s %flang_fc1 2! Tests folding of integer and real MOD and MODULO 3module m1 4 logical, parameter :: test_mod_i1 = mod(8, 5) == 3 5 logical, parameter :: test_mod_i2 = mod(-8, 5) == -3 6 logical, parameter :: test_mod_i3 = mod(8, -5) == 3 7 logical, parameter :: test_mod_i4 = mod(-8, -5) == -3 8 9 logical, parameter :: test_mod_r1 = mod(3., 2.) == 1. 10 logical, parameter :: test_mod_r2 = mod(8., 5.) == 3. 11 logical, parameter :: test_mod_r3 = mod(-8., 5.) == -3. 12 logical, parameter :: test_mod_r4 = mod(8., -5.) == 3. 13 logical, parameter :: test_mod_r5 = mod(-8., -5.) == -3. 14 15 logical, parameter :: test_mod_r10a = mod(huge(0.), tiny(0.)) == 0. 16 logical, parameter :: test_mod_r10b = sign(1., mod(huge(0.), tiny(0.))) == 1. 17 logical, parameter :: test_mod_r11a = mod(-huge(0.), tiny(0.)) == 0. 18 logical, parameter :: test_mod_r11b = sign(1., mod(-huge(0.), tiny(0.))) == -1. 19 logical, parameter :: test_mod_r12a = mod(huge(0.), -tiny(0.)) == 0. 20 logical, parameter :: test_mod_r12b = sign(1., mod(huge(0.), -tiny(0.))) == 1. 21 logical, parameter :: test_mod_r13a = mod(huge(0.), tiny(0.)) == 0. 22 logical, parameter :: test_mod_r13b = sign(1., mod(-huge(0.), -tiny(0.))) == -1. 23 24 logical, parameter :: test_modulo_i1 = modulo(8, 5) == 3 25 logical, parameter :: test_modulo_i2 = modulo(-8, 5) == 2 26 logical, parameter :: test_modulo_i3 = modulo(8, -5) == -2 27 logical, parameter :: test_modulo_i4 = modulo(-8, -5) == -3 28 29 logical, parameter :: test_modulo_r1 = modulo(8., 5.) == 3. 30 logical, parameter :: test_modulo_r2 = modulo(-8., 5.) == 2. 31 logical, parameter :: test_modulo_r3 = modulo(8., -5.) == -2. 32 logical, parameter :: test_modulo_r4 = modulo(-8., -5.) == -3. 33 34 logical, parameter :: test_modulo_r10a = modulo(huge(0.), tiny(0.)) == 0. 35 logical, parameter :: test_modulo_r10b = sign(1., modulo(huge(0.), tiny(0.))) == 1. 36 logical, parameter :: test_modulo_r11a = modulo(-huge(0.), tiny(0.)) == 0. 37 logical, parameter :: test_modulo_r11b = sign(1., modulo(-huge(0.), tiny(0.))) == 1. 38 logical, parameter :: test_modulo_r12a = modulo(huge(0.), -tiny(0.)) == 0. 39 logical, parameter :: test_modulo_r12b = sign(1., modulo(huge(0.), -tiny(0.))) == -1. 40 logical, parameter :: test_modulo_r13a = modulo(huge(0.), tiny(0.)) == 0. 41 logical, parameter :: test_modulo_r13b = sign(1., modulo(-huge(0.), -tiny(0.))) == -1. 42 43 logical, parameter :: test_mod_r14 = mod(1e22, 1.7) == .99592876 44 logical, parameter :: test_modulo_r14 = modulo(1e22, -1.7) == -.7040713 45 46end module 47