CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C @file arith.f C @Author Mitch Richling<https://www.mitchr.me> C @Copyright Copyright 1991 by Mitch Richling. All rights reserved. C @brief Illustrates some arithmetic concepts in FORTRAN.@EOL C @Keywords FORTRAN f77 arithmetic C @Std F77 MIL-STD-1753 LongNames F90 F95 C program arith C Integer arithmetic works in FORTRAN too. write (*,*) '(5/2)= ', (5/2) C As in C, things will be done correctly in this case write (*,*) '(5/2.0)= ', (5/2.0) C Fortran has the idea of "pairs" in expressions. An expression C can only be evaluated by evaluating the binary operations one C at a time. So the promotion rules in Fortran ONLY consider such C pairs of arguments -- things have a definite order of evaluation C in FORTRAN (different from languages like C) C C 5/2 is integer (as both 5 and 2 are integers). C Everything is evaluated as integer. C 5/2.0 is mixed (5 is integer, 2.0 is real). C Everything is promoted to real, and a real result is evaluated. C This leads to 2+2.5 which is mixed (2 is integer, and 2.5 is real). C Everything is promoted to real, and a real result is evaluated. write (*,*) '(5/2+5/2.0)= ', (5/2+5/2.0) C Things go from left to right -- and that is important for integer C operations. () are treated as grouping symbols. Remember the C pair thing for the last example. write (*,*) '5/2*2= ', 5/2*2 write (*,*) '5*2/2= ', 5*2/2 write (*,*) '2*(5/2)= ', 2*(5/2) write (*,*) '2.0*(5/2)= ', 2.0*(5/2) C You can make various conversions inside of an expression explicit so C that other programmers, perhaps even yourself, will have a better C chance of understanding code. The following examples are silly, but C they exhibit the syntax write (*,*) 'real(5)/real(2)*real(2)=', real(5)/real(2)*real(2) write (*,*) 'real(5)/2*2= ', real(5)/2*2 write (*,*) 'real(5/2*2)= ', real(5/2*2) write (*,*) 'int(5/2.2)*5= ', int(5/2.2)*5 end