almost_divisible_real64 Function

private pure elemental function almost_divisible_real64(a, b) result(almost_divisible)

Uses

  • proc~~almost_divisible_real64~~UsesGraph proc~almost_divisible_real64 almost_divisible_real64 iso_fortran_env iso_fortran_env proc~almost_divisible_real64->iso_fortran_env

Test if a is divisible by b, where a and b are both reals. (KCW, 2024-05-25)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: a
real(kind=real64), intent(in) :: b

Return Value logical


Calls

proc~~almost_divisible_real64~~CallsGraph proc~almost_divisible_real64 almost_divisible_real64 interface~almost_equal almost_equal proc~almost_divisible_real64->interface~almost_equal proc~almost_equal_real32 almost_equal_real32 interface~almost_equal->proc~almost_equal_real32 proc~almost_equal_real64 almost_equal_real64 interface~almost_equal->proc~almost_equal_real64

Called by

proc~~almost_divisible_real64~~CalledByGraph proc~almost_divisible_real64 almost_divisible_real64 interface~almost_divisible almost_divisible interface~almost_divisible->proc~almost_divisible_real64 proc~dyn_mpas_init_phase4 mpas_dynamical_core_type%dyn_mpas_init_phase4 proc~dyn_mpas_init_phase4->interface~almost_divisible proc~dyn_init dyn_init proc~dyn_init->proc~dyn_mpas_init_phase4 interface~dyn_init dyn_init interface~dyn_init->proc~dyn_init

Variables

Type Visibility Attributes Name Initial
real(kind=real64), private :: error_tolerance

Source Code

    pure elemental function almost_divisible_real64(a, b) result(almost_divisible)
        use, intrinsic :: iso_fortran_env, only: real64

        real(real64), intent(in) :: a, b
        logical :: almost_divisible

        real(real64) :: error_tolerance

        error_tolerance = epsilon(1.0_real64) * max(abs(a), abs(b))

        if (almost_equal(mod(abs(a), abs(b)), 0.0_real64, absolute_tolerance=error_tolerance) .or. &
            almost_equal(mod(abs(a), abs(b)), abs(b), absolute_tolerance=error_tolerance)) then
            almost_divisible = .true.

            return
        end if

        almost_divisible = .false.
    end function almost_divisible_real64