forlab_stats_randu.f90 Source File


Contents


Source Code

submodule(forlab_stats) forlab_stats_randu

    implicit none

contains

    module function randu_0_rsp(start, end) result(random)
        real(sp), intent(in) :: start, end
        real(sp) :: random

        call random_number(random)
        random = start + random*(end - start)

    end function randu_0_rsp

    module function randu_1_rsp(start, end, ndim) result(random)
        real(sp), intent(in) :: start, end
        integer, intent(in) :: ndim
        real(sp) :: random(ndim)

        call random_number(random)
        random = start + random*(end - start)

    end function randu_1_rsp
    module function randu_0_rdp(start, end) result(random)
        real(dp), intent(in) :: start, end
        real(dp) :: random

        call random_number(random)
        random = start + random*(end - start)

    end function randu_0_rdp

    module function randu_1_rdp(start, end, ndim) result(random)
        real(dp), intent(in) :: start, end
        integer, intent(in) :: ndim
        real(dp) :: random(ndim)

        call random_number(random)
        random = start + random*(end - start)

    end function randu_1_rdp

    module function randu_0_iint8(start, end) result(random)
        integer(int8), intent(in) :: start, end
        integer(int8) :: random

        real :: tmp

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int8)

    end function randu_0_iint8

    module function randu_1_iint8(start, end, ndim) result(random)
        integer(int8), intent(in) :: start, end
        integer, intent(in) :: ndim
        integer(int8) :: random(ndim)

        real :: tmp(ndim)

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int8)

    end function randu_1_iint8
    module function randu_0_iint16(start, end) result(random)
        integer(int16), intent(in) :: start, end
        integer(int16) :: random

        real :: tmp

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int16)

    end function randu_0_iint16

    module function randu_1_iint16(start, end, ndim) result(random)
        integer(int16), intent(in) :: start, end
        integer, intent(in) :: ndim
        integer(int16) :: random(ndim)

        real :: tmp(ndim)

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int16)

    end function randu_1_iint16
    module function randu_0_iint32(start, end) result(random)
        integer(int32), intent(in) :: start, end
        integer(int32) :: random

        real :: tmp

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int32)

    end function randu_0_iint32

    module function randu_1_iint32(start, end, ndim) result(random)
        integer(int32), intent(in) :: start, end
        integer, intent(in) :: ndim
        integer(int32) :: random(ndim)

        real :: tmp(ndim)

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int32)

    end function randu_1_iint32
    module function randu_0_iint64(start, end) result(random)
        integer(int64), intent(in) :: start, end
        integer(int64) :: random

        real :: tmp

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int64)

    end function randu_0_iint64

    module function randu_1_iint64(start, end, ndim) result(random)
        integer(int64), intent(in) :: start, end
        integer, intent(in) :: ndim
        integer(int64) :: random(ndim)

        real :: tmp(ndim)

        call random_number(tmp)
        random = start + nint(tmp*real(end - start), int64)

    end function randu_1_iint64

end submodule forlab_stats_randu