From 4a52299a9e1cf1f1c9c73d229d2eab99a43f4c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Thu, 2 Jan 2020 09:09:17 -0700 Subject: [PATCH 1/6] Add stdlib_experimental_kinds.f90 and use it --- src/CMakeLists.txt | 1 + src/stdlib_experimental_io.f90 | 2 +- src/stdlib_experimental_kinds.f90 | 10 ++++++++++ src/tests/io/test_loadtxt.f90 | 2 +- src/tests/io/test_loadtxt_qp.f90 | 2 +- src/tests/io/test_savetxt.f90 | 2 +- src/tests/io/test_savetxt_qp.f90 | 2 +- 7 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 src/stdlib_experimental_kinds.f90 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d65cd416d..ee5a7aa22 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,6 +3,7 @@ set(SRC stdlib_experimental_io.f90 stdlib_experimental_error.f90 stdlib_experimental_optval.f90 + stdlib_experimental_kinds.f90 ) add_library(fortran_stdlib ${SRC}) diff --git a/src/stdlib_experimental_io.f90 b/src/stdlib_experimental_io.f90 index 473f66ab3..5700143a8 100644 --- a/src/stdlib_experimental_io.f90 +++ b/src/stdlib_experimental_io.f90 @@ -1,5 +1,5 @@ module stdlib_experimental_io -use iso_fortran_env, only: sp=>real32, dp=>real64, qp=>real128 +use stdlib_experimental_kinds, only: sp, dp, qp use stdlib_experimental_error, only: error_stop use stdlib_experimental_optval, only: optval implicit none diff --git a/src/stdlib_experimental_kinds.f90 b/src/stdlib_experimental_kinds.f90 new file mode 100644 index 000000000..a7e078d8e --- /dev/null +++ b/src/stdlib_experimental_kinds.f90 @@ -0,0 +1,10 @@ +module stdlib_experimental_kinds +! Instead of iso_fortran_env, we use iso_c_binding, to be compatible with C +!use iso_fortran_env, only: sp=>real32, dp=>real64, qp=>real128 +!use iso_fortran_env, only: int32, int64, int128 +use iso_c_binding, only: sp=>c_float, dp=>c_double, qp=>c_float128 +use iso_c_binding, only: int32=>c_int32_t, int64=>c_int64_t, int128=>c_int128_t +implicit none +private +public sp, dp, qp, int32, int64, int128 +end module diff --git a/src/tests/io/test_loadtxt.f90 b/src/tests/io/test_loadtxt.f90 index 4b0ba95c8..fbd520e28 100644 --- a/src/tests/io/test_loadtxt.f90 +++ b/src/tests/io/test_loadtxt.f90 @@ -1,5 +1,5 @@ program test_loadtxt -use iso_fortran_env, only: sp=>real32, dp=>real64 +use stdlib_experimental_kinds, only: sp, dp use stdlib_experimental_io, only: loadtxt use stdlib_experimental_error, only: error_stop implicit none diff --git a/src/tests/io/test_loadtxt_qp.f90 b/src/tests/io/test_loadtxt_qp.f90 index 7ac4aa221..083eb3376 100644 --- a/src/tests/io/test_loadtxt_qp.f90 +++ b/src/tests/io/test_loadtxt_qp.f90 @@ -1,5 +1,5 @@ program test_loadtxt_qp -use iso_fortran_env, only: qp=>real128 +use stdlib_experimental_kinds, only: qp use stdlib_experimental_io, only: loadtxt implicit none diff --git a/src/tests/io/test_savetxt.f90 b/src/tests/io/test_savetxt.f90 index 273e72973..5ef4b5647 100644 --- a/src/tests/io/test_savetxt.f90 +++ b/src/tests/io/test_savetxt.f90 @@ -1,5 +1,5 @@ program test_savetxt -use iso_fortran_env, only: sp=>real32, dp=>real64 +use stdlib_experimental_kinds, only: sp, dp use stdlib_experimental_io, only: loadtxt, savetxt use stdlib_experimental_error, only: assert implicit none diff --git a/src/tests/io/test_savetxt_qp.f90 b/src/tests/io/test_savetxt_qp.f90 index 31492a0d0..69a973e00 100644 --- a/src/tests/io/test_savetxt_qp.f90 +++ b/src/tests/io/test_savetxt_qp.f90 @@ -1,5 +1,5 @@ program test_savetxt_qp -use iso_fortran_env, only: qp=>real128 +use stdlib_experimental_kinds, only: qp use stdlib_experimental_io, only: loadtxt, savetxt use stdlib_experimental_error, only: assert implicit none From 2375321ab4354c68bc5c0bafa8112972ba5c6354 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Thu, 2 Jan 2020 10:06:25 -0700 Subject: [PATCH 2/6] Update src/stdlib_experimental_kinds.f90 Co-Authored-By: Jeremie Vandenplas --- src/stdlib_experimental_kinds.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stdlib_experimental_kinds.f90 b/src/stdlib_experimental_kinds.f90 index a7e078d8e..7ea622aa3 100644 --- a/src/stdlib_experimental_kinds.f90 +++ b/src/stdlib_experimental_kinds.f90 @@ -3,7 +3,7 @@ module stdlib_experimental_kinds !use iso_fortran_env, only: sp=>real32, dp=>real64, qp=>real128 !use iso_fortran_env, only: int32, int64, int128 use iso_c_binding, only: sp=>c_float, dp=>c_double, qp=>c_float128 -use iso_c_binding, only: int32=>c_int32_t, int64=>c_int64_t, int128=>c_int128_t +use iso_c_binding, only: int8=>c_int8_t, int16=>c_int16_t, int32=>c_int32_t, int64=>c_int64_t implicit none private public sp, dp, qp, int32, int64, int128 From 4f8ff6074e6408f7962b8e77f7160307a5673d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Thu, 2 Jan 2020 10:06:38 -0700 Subject: [PATCH 3/6] Update src/stdlib_experimental_kinds.f90 Co-Authored-By: Jeremie Vandenplas --- src/stdlib_experimental_kinds.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stdlib_experimental_kinds.f90 b/src/stdlib_experimental_kinds.f90 index 7ea622aa3..629977629 100644 --- a/src/stdlib_experimental_kinds.f90 +++ b/src/stdlib_experimental_kinds.f90 @@ -6,5 +6,5 @@ module stdlib_experimental_kinds use iso_c_binding, only: int8=>c_int8_t, int16=>c_int16_t, int32=>c_int32_t, int64=>c_int64_t implicit none private -public sp, dp, qp, int32, int64, int128 +public sp, dp, qp, int8, int16, int32, int64 end module From bd3067facab216240ff0f89cc3d85f3293d5b19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Fri, 3 Jan 2020 14:48:53 -0700 Subject: [PATCH 4/6] Update Makefiles --- src/Makefile.manual | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Makefile.manual b/src/Makefile.manual index 31ca7cad7..287c10c9b 100644 --- a/src/Makefile.manual +++ b/src/Makefile.manual @@ -2,6 +2,7 @@ SRC = stdlib_experimental_ascii.f90 \ stdlib_experimental_error.f90 \ stdlib_experimental_io.f90 \ stdlib_experimental_optval.f90 \ + stdlib_experimental_kinds.f90 \ f18estop.f90 LIB = libstdlib.a @@ -28,4 +29,7 @@ clean: # Fortran module dependencies f18estop.o: stdlib_experimental_error.o -stdlib_experimental_io.o: stdlib_experimental_error.o stdlib_experimental_optval.o +stdlib_experimental_io.o: \ + stdlib_experimental_error.o \ + stdlib_experimental_optval.o \ + stdlib_experimental_kinds.o From 220421f6e64a7718608048ed7eaf26a8444bf2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 4 Jan 2020 17:48:07 -0700 Subject: [PATCH 5/6] Use it in stdlib_experimental_optval --- src/Makefile.manual | 1 + src/stdlib_experimental_optval.f90 | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile.manual b/src/Makefile.manual index 287c10c9b..0807f3ff1 100644 --- a/src/Makefile.manual +++ b/src/Makefile.manual @@ -33,3 +33,4 @@ stdlib_experimental_io.o: \ stdlib_experimental_error.o \ stdlib_experimental_optval.o \ stdlib_experimental_kinds.o +stdlib_experimental_optval.o: stdlib_experimental_kinds.o diff --git a/src/stdlib_experimental_optval.f90 b/src/stdlib_experimental_optval.f90 index 3f42fcee3..01b2800b8 100644 --- a/src/stdlib_experimental_optval.f90 +++ b/src/stdlib_experimental_optval.f90 @@ -8,7 +8,7 @@ module stdlib_experimental_optval !! !! It is an error to call `optval` with a single actual argument. !! - use iso_fortran_env, only: sp => real32, dp => real64, qp => real128, int8, int16, int32, int64 + use stdlib_experimental_kinds, only: sp, dp, qp, int8, int16, int32, int64 implicit none From 23e0b7967ef91e38dc497d51c3612649714aabc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= Date: Sat, 4 Jan 2020 17:50:38 -0700 Subject: [PATCH 6/6] Switch to iso_fortran_env --- src/stdlib_experimental_kinds.f90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/stdlib_experimental_kinds.f90 b/src/stdlib_experimental_kinds.f90 index 629977629..d40a947b1 100644 --- a/src/stdlib_experimental_kinds.f90 +++ b/src/stdlib_experimental_kinds.f90 @@ -1,9 +1,9 @@ module stdlib_experimental_kinds -! Instead of iso_fortran_env, we use iso_c_binding, to be compatible with C -!use iso_fortran_env, only: sp=>real32, dp=>real64, qp=>real128 -!use iso_fortran_env, only: int32, int64, int128 -use iso_c_binding, only: sp=>c_float, dp=>c_double, qp=>c_float128 -use iso_c_binding, only: int8=>c_int8_t, int16=>c_int16_t, int32=>c_int32_t, int64=>c_int64_t +use iso_fortran_env, only: sp=>real32, dp=>real64, qp=>real128 +use iso_fortran_env, only: int8, int16, int32, int64 +! If we decide later to use iso_fortran_env instead of iso_fortran_env: +!use iso_c_binding, only: sp=>c_float, dp=>c_double, qp=>c_float128 +!use iso_c_binding, only: int8=>c_int8_t, int16=>c_int16_t, int32=>c_int32_t, int64=>c_int64_t implicit none private public sp, dp, qp, int8, int16, int32, int64