home *** CD-ROM | disk | FTP | other *** search
/ BURKS 2 / BURKS_AUG97.ISO / BURKS / LANGUAGE / FORTRAN / F77TO90 / code / intv_ari.f90 < prev    next >
Text File  |  1996-08-30  |  2KB  |  47 lines

  1. MODULE INTERVAL_ARITHMETICS
  2.        TYPE INTERVAL
  3.               REAL LOWER, UPPER
  4.        END TYPE INTERVAL
  5.        INTERFACE OPERATOR (+)
  6.               MODULE PROCEDURE INTERVAL_ADDITION
  7.        END INTERFACE
  8.        INTERFACE OPERATOR (-)
  9.               MODULE PROCEDURE INTERVAL_SUBTRACTION
  10.        END INTERFACE
  11.        INTERFACE OPERATOR (*)
  12.               MODULE PROCEDURE INTERVAL_MULTIPLICATION
  13.        END INTERFACE
  14.        INTERFACE OPERATOR (/)
  15.               MODULE PROCEDURE INTERVAL_DIVISION
  16.        END INTERFACE
  17. CONTAINS
  18.        FUNCTION INTERVAL_ADDITION(A, B)
  19.               TYPE(INTERVAL), INTENT(IN) :: A, B
  20.               TYPE(INTERVAL) :: INTERVAL_ADDITION
  21.               INTERVAL_ADDITION%LOWER = A%LOWER + B%LOWER
  22.               INTERVAL_ADDITION%UPPER = A%UPPER + B%UPPER
  23.        END FUNCTION INTERVAL_ADDITION
  24.  
  25.        FUNCTION INTERVAL_SUBTRACTION(A, B)
  26.               TYPE(INTERVAL), INTENT(IN) :: A, B
  27.               TYPE (INTERVAL) :: INTERVAL_SUBTRACTION
  28.               INTERVAL_SUBTRACTION%LOWER = A%LOWER - B%UPPER
  29.               INTERVAL_SUBTRACTION%UPPER = A%UPPER - B%LOWER
  30.        END FUNCTION INTERVAL_SUBTRACTION
  31.  
  32.        FUNCTION INTERVAL_MULTIPLICATION(A, B)
  33. !             POSITIVE NUMBERS ASSUMED
  34.               TYPE(INTERVAL), INTENT(IN) :: A, B
  35.               TYPE (INTERVAL) :: INTERVAL_MULTIPLICATION
  36.               INTERVAL_MULTIPLICATION%LOWER = A%LOWER * B%LOWER
  37.               INTERVAL_MULTIPLICATION%UPPER = A%UPPER * B%UPPER
  38.        END FUNCTION INTERVAL_MULTIPLICATION
  39.        FUNCTION INTERVAL_DIVISION(A, B)
  40. !             POSITIVE NUMBERS ASSUMED
  41.               TYPE(INTERVAL), INTENT(IN) :: A, B
  42.               TYPE(INTERVAL) :: INTERVAL_DIVISION
  43.               INTERVAL_DIVISION%LOWER = A%LOWER / B%UPPER
  44.               INTERVAL_DIVISION%UPPER = A%UPPER / B%LOWER
  45.        END FUNCTION INTERVAL_DIVISION
  46. END MODULE INTERVAL_ARITHMETICS
  47.