gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
dc_types.f90
Go to the documentation of this file.
1!-----------------------------------------------------------------------
2! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
3!-----------------------------------------------------------------------
4!>
5!> @author Youhei SASAKI, Yasuhiro MORIKAWA, Eizi TOYODA
6!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
7!> License is BSD-2-Clause. see [COPYRIGHT](@ref COPYRIGHT) in detail
8!> @ja
9!> @brief 種別型パラメタを提供します。
10!> @details
11!>
12!> このモジュールは Fortran 2003 の機能, 具体的には `ISO_C_BINDING` と
13!> `ISO_FORTRAN_ENV` と同じ型を提供します.
14!>
15!> dc_types | intrinsic modules | types
16!> ---------|------------------ |---------------
17!> `SP` | ISO_C_BINDING | `C_FLOAT`
18!> `DP` | ISO_C_BINDING | `C_DOUBLE`
19!> `I4` | `ISO_C_BINDING` | `C_INT`
20!> `I8` | `ISO_C_BINDING` | `C_LONG_LONG`
21!> `STDIN` | ISO_FORTRAN_ENV | `INPUT_UNIT`
22!> `STDOUT` | ISO_FORTRAN_ENV | `OUTPUT_UNIT`
23!> `STRERR` | ISO_FORTRAN_ENV | `ERROR_UNIT`
24!>
25!> などです.
26!> @warning 言語混在プログラミング(例えば Fortran から C の関数を呼ぶなど)
27!> を行ないたい場合には本モジュールの使用前に,
28!> 変数の型を確認して下さい.
29!>
30!> @note F2008 をサポートする場合には I4 → int32, I8 → int64 に変更予定です
31!> @endja
32!>
33!> @en
34!> @brief Provides kind type parameter values.
35!> @details
36!> This module using F2003 feature, especially `ISO_C_BINDING, ISO_FORTRAN_ENV`.
37!>
38!> dc_types | intrinsic modules | types
39!> ---------|------------------ |---------------
40!> `SP` | `ISO_C_BINDING` | `C_FLOAT`
41!> `DP` | `ISO_C_BINDING` | `C_DOUBLE`
42!> `I4` | `ISO_C_BINDING` | `C_INT`
43!> `I8` | `ISO_C_BINDING` | `C_LONG_LONG`
44!> `STDIN` | `ISO_FORTRAN_ENV` | `INPUT_UNIT`
45!> `STDOUT` | `ISO_FORTRAN_ENV` | `OUTPUT_UNIT`
46!> `STRERR` | `ISO_FORTRAN_ENV` | `ERROR_UNIT`
47!>
48!> @warning If you want to try mixed-language programing
49!> (e.g., Fortran calling C function),
50!> Please check type of variables before use this module.
51!>
52!> @note When supporting F2008, it is planned to change from I4 → int32, I8 → int64
53!> @enden
54
56 use, intrinsic :: iso_c_binding, &
57 & only: c_int, &
58 & c_long_long, &
59 & c_float, &
60 & c_double
61 use, intrinsic :: iso_fortran_env, &
62 & only: input_unit, &
63 & output_unit, &
64 & error_unit
65 implicit none
66 private
67 public :: sp
68 public :: sp_eps
69 public :: dp
70 public :: dp_eps
71 public :: i4
72 public :: i8
73 public :: token
74 public :: string
75 public :: stdin
76 public :: stdout
77 public :: stderr
78
79 !> @var SP
80 !> @en Single Precision Real number. @enden
81 !> @ja 単精度実数型変数 @endja
82 integer, parameter :: sp = c_float
83
84 !> @var SP_EPS
85 !> @en Machine epsilon for single precision real number. @enden
86 !> @ja 単精度実数型変数のマシンイプシロン. @endja
87 real(sp), parameter :: sp_eps = epsilon(0.0e0)
88
89 !> @var DP
90 !> @en Double Precision Real number @enden
91 !> @ja 倍精度実数型変数 @endja
92 integer, parameter :: dp = c_double
93
94 !> @var DP_EPS
95 !> @en Machine epsilon for dobule precision real number. @enden
96 !> @ja 倍精度実数型変数のマシンイプシロン. @endja
97 real(dp), parameter :: dp_eps = epsilon(0.0d0)
98
99 !> @var I4
100 !> @en Single Precision Ineger, same as 'integer' @enden
101 !> @ja 単精度の整数型です. 'integer' と同じです. @endja
102 integer, parameter :: i4 = c_int
103
104 !> @var I8
105 !> @en Double Precision Ineger, same as 'integer(8)' @enden
106 !> @ja 倍精度の整数型です. 'integer(8)' と同じです. @endja
107 integer, parameter :: i8 = c_long_long
108
109 !> @var STDIN
110 !> @en Unit number for Standard INPUT @enden
111 !> @ja 標準入力の装置番号 @endja
112 integer, parameter :: stdin = input_unit
113
114 !> @var STDOUT
115 !> @en Unit number for Standard OUTPUT @enden
116 !> @ja 標準出力の装置番号 @endja
117 integer, parameter :: stdout = output_unit
118
119 !> @var STDERR
120 !> @en Unit number for Standard ERROR @enden
121 !> @ja 標準エラー出力の装置番号 @endja
122 integer, parameter :: stderr = error_unit
123
124
125 !> @var TOKEN
126 !> @en Character length for word, token @enden
127 !> @ja 単語やキーワードを保持する文字型変数の種別型パラメタ @endja
128 integer, parameter :: token = 32
129
130 !> @var STRING
131 !> @en Character length for string @enden
132 !> @ja 文字列を保持する 文字型変数の種別型パラメタ
133 !> @note 256 という値に深い理由はありません.
134 !> 必要ならばより大きな値を設定しても構いません.
135 !> ただし 8 バイト境界となるよう, 8 の倍数となっていることを推奨します.
136 !> @endja
137 integer, parameter :: string = 256
138
139 !> @namespace dc_types
140end module dc_types
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition dc_types.f90:128
integer, parameter, public i4
単精度の整数型です. 'integer' と同じです.
Definition dc_types.f90:102
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
real(dp), parameter, public dp_eps
倍精度実数型変数のマシンイプシロン.
Definition dc_types.f90:97
real(sp), parameter, public sp_eps
単精度実数型変数のマシンイプシロン.
Definition dc_types.f90:87
integer, parameter, public stdout
標準出力の装置番号
Definition dc_types.f90:117
integer, parameter, public stdin
標準入力の装置番号
Definition dc_types.f90:112
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92
integer, parameter, public sp
単精度実数型変数
Definition dc_types.f90:82
integer, parameter, public i8
倍精度の整数型です. 'integer(8)' と同じです.
Definition dc_types.f90:107
integer, parameter, public stderr
標準エラー出力の装置番号
Definition dc_types.f90:122