Skip to content

Commit 0deab15

Browse files
committed
Fixed bits_kind breakage
Made constants in max et al bits_kind to match variables kind, fixed digit_count in stdlib_bitsets_64.fypp. [ticket: X]
1 parent 80af2c5 commit 0deab15

File tree

2 files changed

+16
-39
lines changed

2 files changed

+16
-39
lines changed

src/stdlib_bitsets_64.fypp

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ contains
171171

172172
integer(bits_kind) :: true_first, true_last
173173

174-
true_first = max( 0, start_pos )
174+
true_first = max( 0_bits_kind, start_pos )
175175
true_last = min( self % num_bits-1, stop_pos )
176176
if ( true_last < true_first ) return
177177

@@ -275,7 +275,7 @@ contains
275275

276276
integer(bits_kind) :: end_bit, start_bit
277277

278-
start_bit = max( 0, start_pos )
278+
start_bit = max( 0_bits_kind, start_pos )
279279
end_bit = min( stop_pos , self % num_bits-1 )
280280
call mvbits( not(self % block), &
281281
start_bit, &
@@ -888,7 +888,7 @@ contains
888888

889889
integer(bits_kind) :: end_bit, start_bit
890890

891-
start_bit = max( 0, start_pos )
891+
start_bit = max( 0_bits_kind, start_pos )
892892
end_bit = min( stop_pos, self % num_bits-1 )
893893
if ( end_bit < start_bit ) return
894894

@@ -1030,42 +1030,19 @@ contains
10301030
integer(bits_kind), intent(in) :: bits
10311031
integer(bits_kind), intent(out) :: digits
10321032

1033-
select case ( bits )
1034-
case ( 0:9 )
1035-
digits = 1
1036-
1037-
case ( 10:99 )
1038-
digits = 2
1039-
1040-
case ( 100:999 )
1041-
digits = 3
1042-
1043-
case ( 1000:9999 )
1044-
digits = 4
1045-
1046-
case ( 10000:99999 )
1047-
digits = 5
1048-
1049-
case ( 100000:999999 )
1050-
digits = 6
1051-
1052-
case ( 1000000:9999999 )
1053-
digits = 7
1054-
1055-
case ( 10000000:99999999 )
1056-
digits = 8
1033+
integer(bits_kind) :: factor
10571034

1058-
case ( 100000000:999999999 )
1059-
digits = 9
1035+
factor = bits
10601036

1061-
case ( 1000000000:min(2147483647, huge( self % num_bits ) ) )
1062-
digits = 10
1063-
1064-
case default
1065-
error stop module_name // ' % ' // procedure // &
1066-
' internal consistency fault was found.'
1037+
if ( factor <= 0 ) then
1038+
digits = 1
1039+
return
1040+
end if
10671041

1068-
end select
1042+
do digits = 1, 127
1043+
factor = factor / 10
1044+
if ( factor == 0 ) return
1045+
end do
10691046

10701047
end subroutine digit_count
10711048

src/stdlib_bitsets_large.fypp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ contains
203203
integer(bits_kind) :: bit, block_, first_block, last_block, &
204204
true_first, true_last
205205

206-
true_first = max( 0, start_pos )
206+
true_first = max( 0_bits_kind, start_pos )
207207
true_last = min( self % num_bits-1, stop_pos )
208208
if ( true_last < true_first ) return
209209

@@ -357,7 +357,7 @@ contains
357357
integer(bits_kind) :: bit, block_, end_bit, first_block, last_block, &
358358
start_bit
359359

360-
start_bit = max( 0, start_pos )
360+
start_bit = max( 0_bits_kind, start_pos )
361361
end_bit = min( stop_pos , self % num_bits-1 )
362362
if ( end_bit < start_bit ) return
363363

@@ -1080,7 +1080,7 @@ contains
10801080
integer(bits_kind) :: bit, block_, end_bit, first_block, last_block, &
10811081
start_bit
10821082

1083-
start_bit = max( 0, start_pos )
1083+
start_bit = max( 0_bits_kind, start_pos )
10841084
end_bit = min( stop_pos, self % num_bits-1 )
10851085
if ( end_bit < start_bit ) return
10861086

0 commit comments

Comments
 (0)