MODULE INTERVALL_ARITMETIK TYPE INTERVALL REAL LAEGRE, OEVRE END TYPE INTERVALL INTERFACE OPERATOR (+) MODULE PROCEDURE ADDERA_INTERVALL END INTERFACE INTERFACE OPERATOR (-) MODULE PROCEDURE SUBTRAHERA_INTERVALL END INTERFACE INTERFACE OPERATOR (*) MODULE PROCEDURE MULTIPLICERA_INTERVALL END INTERFACE INTERFACE OPERATOR (/) MODULE PROCEDURE DIVIDERA_INTERVALL END INTERFACE CONTAINS FUNCTION ADDERA_INTERVALL(A,B) TYPE(INTERVALL), INTENT(IN) :: A, B TYPE(INTERVALL) :: ADDERA_INTERVALL ADDERA_INTERVALL%LAEGRE = A%LAEGRE + B%LAEGRE ADDERA_INTERVALL%OEVRE = A%OEVRE + B%OEVRE END FUNCTION ADDERA_INTERVALL FUNCTION SUBTRAHERA_INTERVALL(A,B) TYPE(INTERVALL), INTENT(IN) :: A, B TYPE(INTERVALL) :: SUBTRAHERA_INTERVALL SUBTRAHERA_INTERVALL%LAEGRE = A%LAEGRE - B%OEVRE SUBTRAHERA_INTERVALL%OEVRE = A%OEVRE - B%LAEGRE END FUNCTION SUBTRAHERA_INTERVALL FUNCTION MULTIPLICERA_INTERVALL(A,B) ! POSITIVA TAL FÖRUTSÄTTES TYPE(INTERVALL), INTENT(IN) :: A, B TYPE(INTERVALL) :: MULTIPLICERA_INTERVALL MULTIPLICERA_INTERVALL%LAEGRE = & A%LAEGRE * B%LAEGRE MULTIPLICERA_INTERVALL%OEVRE = & A%OEVRE * B%OEVRE END FUNCTION MULTIPLICERA_INTERVALL FUNCTION DIVIDERA_INTERVALL(A,B) ! POSITIVA TAL FÖRUTSÄTTES TYPE(INTERVALL), INTENT(IN) :: A, B TYPE(INTERVALL) :: DIVIDERA_INTERVALL DIVIDERA_INTERVALL%LAEGRE = A%LAEGRE / B%OEVRE DIVIDERA_INTERVALL%OEVRE = A%OEVRE / B%LAEGRE END FUNCTION DIVIDERA_INTERVALL END MODULE INTERVALL_ARITMETIK