Skip to content

Commit 414c95d

Browse files
committed
Deploying to stdlib-fpm from @ 084f3c4 🚀
1 parent 8415c73 commit 414c95d

File tree

1 file changed

+37
-22
lines changed

1 file changed

+37
-22
lines changed

src/stdlib_io.f90

Lines changed: 37 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,32 @@ module stdlib_io
1919
! Private API that is exposed so that we can test it in tests
2020
public :: parse_mode
2121

22-
! Format strings with edit descriptors for each type and kind
22+
!> Version: experimental
23+
!>
24+
!> Format strings with edit descriptors for each type and kind
25+
!> ([Specification](../page/specs/stdlib_io.html))
2326
character(*), parameter :: &
24-
FMT_INT = '(*(i0,1x))', &
25-
FMT_REAL_SP = '(*(es15.8e2,1x))', &
26-
FMT_REAL_DP = '(*(es24.16e3,1x))', &
27-
FMT_REAL_XDP = '(*(es26.18e3,1x))', &
28-
FMT_REAL_QP = '(*(es44.35e4,1x))', &
29-
FMT_COMPLEX_SP = '(*(es15.8e2,1x,es15.8e2))', &
30-
FMT_COMPLEX_DP = '(*(es24.16e3,1x,es24.16e3))', &
31-
FMT_COMPLEX_XDP = '(*(es26.18e3,1x,es26.18e3))', &
32-
FMT_COMPLEX_QP = '(*(es44.35e4,1x,es44.35e4))'
27+
!> Format string for integers
28+
FMT_INT = '(i0)', &
29+
!> Format string for single precision real numbers
30+
FMT_REAL_SP = '(es15.8e2)', &
31+
!> Format string for souble precision real numbers
32+
FMT_REAL_DP = '(es24.16e3)', &
33+
!> Format string for extended double precision real numbers
34+
FMT_REAL_XDP = '(es26.18e3)', &
35+
!> Format string for quadruple precision real numbers
36+
FMT_REAL_QP = '(es44.35e4)', &
37+
!> Format string for single precision complex numbers
38+
FMT_COMPLEX_SP = '(es15.8e2,1x,es15.8e2)', &
39+
!> Format string for double precision complex numbers
40+
FMT_COMPLEX_DP = '(es24.16e3,1x,es24.16e3)', &
41+
!> Format string for extended double precision complex numbers
42+
FMT_COMPLEX_XDP = '(es26.18e3,1x,es26.18e3)', &
43+
!> Format string for quadruple precision complex numbers
44+
FMT_COMPLEX_QP = '(es44.35e4,1x,es44.35e4)'
45+
46+
public :: FMT_INT, FMT_REAL_SP, FMT_REAL_DP, FMT_REAL_XDP, FMT_REAL_QP
47+
public :: FMT_COMPLEX_SP, FMT_COMPLEX_DP, FMT_COMPLEX_XDP, FMT_COMPLEX_QP
3348

3449
!> Version: experimental
3550
!>
@@ -115,7 +130,7 @@ subroutine loadtxt_rsp(filename, d)
115130

116131
allocate(d(nrow, ncol))
117132
do i = 1, nrow
118-
read(s, FMT_REAL_sp) d(i, :)
133+
read(s, "(*"//FMT_REAL_sp(1:len(FMT_REAL_sp)-1)//",1x))") d(i, :)
119134
end do
120135
close(s)
121136

@@ -162,7 +177,7 @@ subroutine loadtxt_rdp(filename, d)
162177

163178
allocate(d(nrow, ncol))
164179
do i = 1, nrow
165-
read(s, FMT_REAL_dp) d(i, :)
180+
read(s, "(*"//FMT_REAL_dp(1:len(FMT_REAL_dp)-1)//",1x))") d(i, :)
166181
end do
167182
close(s)
168183

@@ -398,7 +413,7 @@ subroutine loadtxt_csp(filename, d)
398413

399414
allocate(d(nrow, ncol))
400415
do i = 1, nrow
401-
read(s, FMT_COMPLEX_sp) d(i, :)
416+
read(s, "(*"//FMT_COMPLEX_sp(1:len(FMT_COMPLEX_sp)-1)//",1x))") d(i, :)
402417
end do
403418
close(s)
404419

@@ -446,7 +461,7 @@ subroutine loadtxt_cdp(filename, d)
446461

447462
allocate(d(nrow, ncol))
448463
do i = 1, nrow
449-
read(s, FMT_COMPLEX_dp) d(i, :)
464+
read(s, "(*"//FMT_COMPLEX_dp(1:len(FMT_COMPLEX_dp)-1)//",1x))") d(i, :)
450465
end do
451466
close(s)
452467

@@ -476,7 +491,7 @@ subroutine savetxt_rsp(filename, d)
476491
integer :: s, i
477492
s = open(filename, "w")
478493
do i = 1, size(d, 1)
479-
write(s, FMT_REAL_sp) d(i, :)
494+
write(s, "(*"//FMT_REAL_sp(1:len(FMT_REAL_sp)-1)//",1x))") d(i, :)
480495
end do
481496
close(s)
482497
end subroutine savetxt_rsp
@@ -503,7 +518,7 @@ subroutine savetxt_rdp(filename, d)
503518
integer :: s, i
504519
s = open(filename, "w")
505520
do i = 1, size(d, 1)
506-
write(s, FMT_REAL_dp) d(i, :)
521+
write(s, "(*"//FMT_REAL_dp(1:len(FMT_REAL_dp)-1)//",1x))") d(i, :)
507522
end do
508523
close(s)
509524
end subroutine savetxt_rdp
@@ -530,7 +545,7 @@ subroutine savetxt_iint8(filename, d)
530545
integer :: s, i
531546
s = open(filename, "w")
532547
do i = 1, size(d, 1)
533-
write(s, FMT_INT) d(i, :)
548+
write(s, "(*"//FMT_INT(1:len(FMT_INT)-1)//",1x))") d(i, :)
534549
end do
535550
close(s)
536551
end subroutine savetxt_iint8
@@ -557,7 +572,7 @@ subroutine savetxt_iint16(filename, d)
557572
integer :: s, i
558573
s = open(filename, "w")
559574
do i = 1, size(d, 1)
560-
write(s, FMT_INT) d(i, :)
575+
write(s, "(*"//FMT_INT(1:len(FMT_INT)-1)//",1x))") d(i, :)
561576
end do
562577
close(s)
563578
end subroutine savetxt_iint16
@@ -584,7 +599,7 @@ subroutine savetxt_iint32(filename, d)
584599
integer :: s, i
585600
s = open(filename, "w")
586601
do i = 1, size(d, 1)
587-
write(s, FMT_INT) d(i, :)
602+
write(s, "(*"//FMT_INT(1:len(FMT_INT)-1)//",1x))") d(i, :)
588603
end do
589604
close(s)
590605
end subroutine savetxt_iint32
@@ -611,7 +626,7 @@ subroutine savetxt_iint64(filename, d)
611626
integer :: s, i
612627
s = open(filename, "w")
613628
do i = 1, size(d, 1)
614-
write(s, FMT_INT) d(i, :)
629+
write(s, "(*"//FMT_INT(1:len(FMT_INT)-1)//",1x))") d(i, :)
615630
end do
616631
close(s)
617632
end subroutine savetxt_iint64
@@ -638,7 +653,7 @@ subroutine savetxt_csp(filename, d)
638653
integer :: s, i
639654
s = open(filename, "w")
640655
do i = 1, size(d, 1)
641-
write(s, FMT_COMPLEX_sp) d(i, :)
656+
write(s, "(*"//FMT_COMPLEX_sp(1:len(FMT_COMPLEX_sp)-1)//",1x))") d(i, :)
642657
end do
643658
close(s)
644659
end subroutine savetxt_csp
@@ -665,7 +680,7 @@ subroutine savetxt_cdp(filename, d)
665680
integer :: s, i
666681
s = open(filename, "w")
667682
do i = 1, size(d, 1)
668-
write(s, FMT_COMPLEX_dp) d(i, :)
683+
write(s, "(*"//FMT_COMPLEX_dp(1:len(FMT_COMPLEX_dp)-1)//",1x))") d(i, :)
669684
end do
670685
close(s)
671686
end subroutine savetxt_cdp

0 commit comments

Comments
 (0)