Skip to content

implemented clip function #355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
May 1, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
improved test_math.fypp: used int_8, _int16, _int32,... & removed som…
…e test_cases
  • Loading branch information
aman-godara committed Mar 27, 2021
commit 336285d6a9219e4ac1afd468eae8329bc45f2cf9
14 changes: 7 additions & 7 deletions doc/specs/stdlib_math.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,11 @@ program demo
integer(int32) :: xmax
integer(int32) :: clipped_value

xmin = -5
xmin = -5_int32
! xmin <- -5
xmax = 5
xmax = 5_int32
! xmax <- 5
x = 12
x = 12_int32
! x <- 12

clipped_value = clip(x, xmin, xmax)
Expand All @@ -88,11 +88,11 @@ program demo
real(real32) :: xmax
real(real32) :: clipped_value

xmin = -5.76999998
! xmin <- -5.76999998
xmax = 3.02500010
xmin = -5.769_real32
! xmin <- -5.76900005
xmax = 3.025_real32
! xmax <- 3.02500010
x = 3.02500010
x = 3.025_real32
! x <- 3.02500010

clipped_value = clip(x, xmin, xmax)
Expand Down
281 changes: 28 additions & 253 deletions src/tests/math/test_math.f90
Original file line number Diff line number Diff line change
Expand Up @@ -71,287 +71,62 @@ program tester
! invalid case: xmin is greater than xmax


! data declaration
integer(int8) :: x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8
integer(int16) :: x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16
integer(int32) :: x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32
integer(int64) :: x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64
real(sp) :: x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp
real(dp) :: x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp
real(qp) :: x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp

! type: integer, kind: int8
! valid test cases
x_integer_int8 = 2
xmin_integer_int8 = -2
xmax_integer_int8 = 5
compare_integer_int8 = 2
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)

x_integer_int8 = 127
xmin_integer_int8 = -127
xmax_integer_int8 = 0
compare_integer_int8 = 0
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)

x_integer_int8 = -57
xmin_integer_int8 = -57
xmax_integer_int8 = 57
compare_integer_int8 = -57
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)
call test_clip_integer_int8(2_int8, -2_int8, 5_int8, 2_int8)
call test_clip_integer_int8(127_int8, -127_int8, 0_int8, 0_int8)

! invalid test cases
x_integer_int8 = 2
xmin_integer_int8 = 5
xmax_integer_int8 = -2
compare_integer_int8 = 5
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)

x_integer_int8 = 127
xmin_integer_int8 = 0
xmax_integer_int8 = -127
compare_integer_int8 = 0
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)

x_integer_int8 = -57
xmin_integer_int8 = 57
xmax_integer_int8 = -57
compare_integer_int8 = 57
call test_clip_integer_int8(x_integer_int8, xmin_integer_int8, xmax_integer_int8, compare_integer_int8)

call test_clip_integer_int8(2_int8, 5_int8, -2_int8, 5_int8)
call test_clip_integer_int8(127_int8, 0_int8, -127_int8, 0_int8)
! type: integer, kind: int16
! valid test cases
x_integer_int16 = 2
xmin_integer_int16 = -2
xmax_integer_int16 = 5
compare_integer_int16 = 2
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)

x_integer_int16 = 32767
xmin_integer_int16 = -32767
xmax_integer_int16 = 0
compare_integer_int16 = 0
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)

x_integer_int16 = -598
xmin_integer_int16 = -32
xmax_integer_int16 = 676
compare_integer_int16 = -32
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)
call test_clip_integer_int16(2_int16, -2_int16, 5_int16, 2_int16)
call test_clip_integer_int16(32767_int16, -32767_int16, 0_int16, 0_int16)

! invalid test cases
x_integer_int16 = 2
xmin_integer_int16 = 5
xmax_integer_int16 = -2
compare_integer_int16 = 5
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)

x_integer_int16 = 32767
xmin_integer_int16 = 0
xmax_integer_int16 = -32767
compare_integer_int16 = 0
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)

x_integer_int16 = -598
xmin_integer_int16 = 676
xmax_integer_int16 = -32
compare_integer_int16 = 676
call test_clip_integer_int16(x_integer_int16, xmin_integer_int16, xmax_integer_int16, compare_integer_int16)

call test_clip_integer_int16(2_int16, 5_int16, -2_int16, 5_int16)
call test_clip_integer_int16(32767_int16, 0_int16, -32767_int16, 0_int16)
! type: integer, kind: int32
! valid test cases
x_integer_int32 = 2
xmin_integer_int32 = -2
xmax_integer_int32 = 5
compare_integer_int32 = 2
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)

x_integer_int32 = -2147483647
xmin_integer_int32 = 0
xmax_integer_int32 = 2147483647
compare_integer_int32 = 0
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)

x_integer_int32 = 45732
xmin_integer_int32 = -385769
xmax_integer_int32 = 57642
compare_integer_int32 = 45732
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)
call test_clip_integer_int32(2_int32, -2_int32, 5_int32, 2_int32)
call test_clip_integer_int32(-2147483647_int32, 0_int32, 2147483647_int32, 0_int32)

! invalid test cases
x_integer_int32 = 2
xmin_integer_int32 = 5
xmax_integer_int32 = -2
compare_integer_int32 = 5
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)

x_integer_int32 = -2147483647
xmin_integer_int32 = 2147483647
xmax_integer_int32 = 0
compare_integer_int32 = 2147483647
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)

x_integer_int32 = 45732
xmin_integer_int32 = 57642
xmax_integer_int32 = -385769
compare_integer_int32 = 57642
call test_clip_integer_int32(x_integer_int32, xmin_integer_int32, xmax_integer_int32, compare_integer_int32)

call test_clip_integer_int32(2_int32, 5_int32, -2_int32, 5_int32)
call test_clip_integer_int32(-2147483647_int32, 2147483647_int32, 0_int32, 2147483647_int32)
! type: integer, kind: int64
! valid test cases
x_integer_int64 = 2
xmin_integer_int64 = -2
xmax_integer_int64 = 5
compare_integer_int64 = 2
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)

x_integer_int64 = -922337203
xmin_integer_int64 = -10
xmax_integer_int64 = 25
compare_integer_int64 = -10
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)

x_integer_int64 = 97683
xmin_integer_int64 = -200
xmax_integer_int64 = 513788324
compare_integer_int64 = 97683
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)
call test_clip_integer_int64(2_int64, -2_int64, 5_int64, 2_int64)
call test_clip_integer_int64(-922337203_int64, -10_int64, 25_int64, -10_int64)

! invalid test cases
x_integer_int64 = 2
xmin_integer_int64 = 5
xmax_integer_int64 = -2
compare_integer_int64 = 5
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)

x_integer_int64 = -922337203
xmin_integer_int64 = 25
xmax_integer_int64 = -10
compare_integer_int64 = 25
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)

x_integer_int64 = 97683
xmin_integer_int64 = 513788324
xmax_integer_int64 = -200
compare_integer_int64 = 513788324
call test_clip_integer_int64(x_integer_int64, xmin_integer_int64, xmax_integer_int64, compare_integer_int64)

call test_clip_integer_int64(2_int64, 5_int64, -2_int64, 5_int64)
call test_clip_integer_int64(-922337203_int64, 25_int64, -10_int64, 25_int64)
! type: real, kind: sp
! valid test cases
x_real_sp = 3.025
xmin_real_sp = -5.77
xmax_real_sp = 3.025
compare_real_sp = 3.025
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)

x_real_sp = 0.0
xmin_real_sp = -1578.025
xmax_real_sp = -59.68
compare_real_sp = -59.68
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)

x_real_sp = 5.6
xmin_real_sp = -97854.25
xmax_real_sp = 2.3666
compare_real_sp = 2.3666
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)
call test_clip_real_sp(3.025_sp, -5.77_sp, 3.025_sp, 3.025_sp)
call test_clip_real_sp(0.0_sp, -1578.025_sp, -59.68_sp, -59.68_sp)

! invalid test cases
x_real_sp = 3.025
xmin_real_sp = 3.025
xmax_real_sp = -5.77
compare_real_sp = 3.025
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)

x_real_sp = 0.0
xmin_real_sp = -59.68
xmax_real_sp = -1578.025
compare_real_sp = -59.68
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)

x_real_sp = 5.6
xmin_real_sp = 2.3666
xmax_real_sp = -97854.25
compare_real_sp = 2.3666
call test_clip_real_sp(x_real_sp, xmin_real_sp, xmax_real_sp, compare_real_sp)

call test_clip_real_sp(3.025_sp, 3.025_sp, -5.77_sp, 3.025_sp)
call test_clip_real_sp(0.0_sp, -59.68_sp, -1578.025_sp, -59.68_sp)
! type: real, kind: dp
! valid test cases
x_real_dp = 3.025
xmin_real_dp = -5.77
xmax_real_dp = 3.025
compare_real_dp = 3.025
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)

x_real_dp = -7.0
xmin_real_dp = 0.059668
xmax_real_dp = 1.00268
compare_real_dp = 0.059668
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)

x_real_dp = -12.3358
xmin_real_dp = 8.55759
xmax_real_dp = 8.55759
compare_real_dp = 8.55759
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)
call test_clip_real_dp(3.025_dp, -5.77_dp, 3.025_dp, 3.025_dp)
call test_clip_real_dp(-7.0_dp, 0.059668_dp, 1.00268_dp, 0.059668_dp)

! invalid test cases
x_real_dp = 3.025
xmin_real_dp = 3.025
xmax_real_dp = -5.77
compare_real_dp = 3.025
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)

x_real_dp = -7.0
xmin_real_dp = 1.00268
xmax_real_dp = 0.059668
compare_real_dp = 1.00268
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)

x_real_dp = -12.3358
xmin_real_dp = 8.55759
xmax_real_dp = 8.55759
compare_real_dp = 8.55759
call test_clip_real_dp(x_real_dp, xmin_real_dp, xmax_real_dp, compare_real_dp)

call test_clip_real_dp(3.025_dp, 3.025_dp, -5.77_dp, 3.025_dp)
call test_clip_real_dp(-7.0_dp, 1.00268_dp, 0.059668_dp, 1.00268_dp)
! type: real, kind: qp
! valid test cases
x_real_qp = 3.025
xmin_real_qp = -5.77
xmax_real_qp = 3.025
compare_real_qp = 3.025
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)

x_real_qp = -55891546.2
xmin_real_qp = -8958133457.23
xmax_real_qp = -689712245.23
compare_real_qp = -689712245.23
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)

x_real_qp = 58.7
xmin_real_qp = -2352.335
xmax_real_qp = -189.58
compare_real_qp = -189.58
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)
call test_clip_real_qp(3.025_qp, -5.77_qp, 3.025_qp, 3.025_qp)
call test_clip_real_qp(-55891546.2_qp, -8958133457.23_qp, -689712245.23_qp, -689712245.23_qp)

! invalid test cases
x_real_qp = 3.025
xmin_real_qp = 3.025
xmax_real_qp = -5.77
compare_real_qp = 3.025
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)

x_real_qp = -55891546.2
xmin_real_qp = -689712245.23
xmax_real_qp = -8958133457.23
compare_real_qp = -689712245.23
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)

x_real_qp = 58.7
xmin_real_qp = -189.58
xmax_real_qp = -2352.335
compare_real_qp = -189.58
call test_clip_real_qp(x_real_qp, xmin_real_qp, xmax_real_qp, compare_real_qp)

call test_clip_real_qp(3.025_qp, 3.025_qp, -5.77_qp, 3.025_qp)
call test_clip_real_qp(-55891546.2_qp, -689712245.23_qp, -8958133457.23_qp, -689712245.23_qp)

end program tester
Loading