| Fortran 95 区間演算プログラミングリファレンス |
用語集
- 関係演算子: certainly true (relational operators: certainly true) を参照してください。
- cset(expression, set)の表記は、一組の引数群に対して評価される式の包含集合を記号的に表すために使用します。たとえば、式 f(x, y) = xy について、区間式[0] [0] × [+
] が満たさなければならない包含の制約は、次のように表されます。
- [0] × [+
]
cset(x × y, {(0,+
)}) = [-
, +
].
- ev (literal_constant) の表記はリテラル定数文字列により定義された外部値を表すのに使用します。たとえば、定数 0.1 はマシン表現できないので、0.1 の内部的な近似値が使われなければならないという事実に関係なく、ev(0.1) = 1/10 となります。
f95では、INTERVAL 固有の関数は標準 Fortran 関数の区間バージョンではない、区間関数です。たとえば、WID、MID、INF、SUPはINTERVAL固有の関数です。
- 種別型パラメータ値 (KTPV) を参照してください。
- 区間式の最大幅要求式処理のもとでは、すべての区間は式の中の任意のデータ項目の KTPV の最大値へと変換されます。この最大値には、KTPVmax という名前が与えられています。
- KTPV 混合の区間式は異なる KTPV を持つ定数と (または) 変数を含みます。たとえば、[1_4] + [0.2_8] はKTPV 混合の区間式です。最大幅要求式処理のもとでは、KTPV 混合の区間式が許されますが、厳密式処理のもとでは許されません。
- 関係演算子: possibly true (relational operators: possibly true) を参照してください。
- Fortran では、代入文は式の値を値の代入演算子 = の右側で計算し、左側の変数、配列要素、または、配列に格納します。
- Fortran リテラル定数の外部値は、リテラル定数の文字列により定義された数学的な値です。リテラル定数の外部値は定数の内部的な近似値と同じであるとは限りません。後者は、Fortran 標準ではリテラル定数の唯一の定義された値です。ev(literal_constant) を参照してください。
- Fortran データ項目の外部表現は、入力データ変換中での定義に使用される文字列、または、出力データ変換後の表示に使用される文字列のことです。
- 拡張区間の用語は、その終了点が -
と +
を含む実数に拡張できる区間を意味します。完全な意味では、空の区間もまた拡張実区間の集合に含まれます。
- 最大下限 (infumum(plural, infima)) を参照してください。
- 空の区間 [empty] は、メンバーを持たない区間です。空の区間は 2 つの互いに素の区間の積集合として、自然に発生します。たとえば、[2, 3]∩[4, 5] = [empty] となります。
- 空の集合
は、メンバーを持たない集合です。空の集合は 2 つの互いに素の集合の積集合として自然に発生します。たとえば、{2, 3}
{4, 5} =
となります。
- 科学的記数法で記述された1 つの数は、仮数、または、有効数字と指数、または、10 のべき乗で構成されます。Fortranの E 編集記述子は数を仮数形式、または、有効数字と指数形式、または、10 のべき乗形式で表示します。
- certainly true 関係演算子としては、{
.CLT.,.CLE.,.CEQ.,.CNE.,.CGE.,.CGT.} があります。certainly true 関係演算子は、オペランド区間のすべての要素について、課題となる関係が true であれば、true となります。つまり、すべてのについて、x .op. y = true であれば、[a, b] .Cop. [c, d] = true となります。
- たとえば、(b < c)が true であれば、[a, b]
.CLT.[c, d] は true となります。
- possibly true 関係演算子としては、{.
PLT., .PLE., .PEQ., .PNE., .PGE., .PGT.} があります。possibly true 関係演算子は、オペランド区間の任意の要素について、課題となる関係が true であれば、true となります。たとえば、(a < d) が true で あれば、[a, b] .PLT. [c, d] if a < d は true となります。
- set 関係演算子としては、{.
SLT., .SLE., .SEQ., .SNE., .SGE., .SGT.} があります。集合関係演算子は、その区間の終了点について、課題となる関係が true であれば、true となります。たとえば、(a = c) が true であり、(b = d)も true であれば、[a, b] .SEQ. [c, d] は true となります。
- 基数変換とは、外部 10 進数と内部 2 進数間相互の変換プロセスのことです。基数変換は書式化された並びによる入力/出力の中で行われます。同じ数は 2 進数システムと 10 進数システムで常に表現可能なわけではありませんから、包含を保証するためには、基数変換中の有向の丸めが要件となります。
- 区間 [a, b] が値
の近似値であるものとします。w[a, b] = b - a が小さければ、[a, b] は狭幅区間であることになります。区間 [a, b]の幅が狭ければ狭いほど、[a, b] はより正確に V に近似します。鋭い区間結果 (sharp interval result)) も参照してください。
- 区間アルゴリズムは、区間結果の計算に使用される一連の演算です。
- 区間演算は区間を使った計算に使用される算術システムです。
- Fortran では、リテラル定数の区間近似値はマシンで表現可能な値です。Fortran 標準には、内部的な近似値の正確性の要件が存在しません。
- 区間定数は閉じた補正集合です。対の数 a
b により定義された [a, b] ={z | a
z
b} です。
- 区間定数の外部値は、区間定数の文字列により定義された数学的な値です。外部値 (external value)を参照してください。
f95では、区間定数の内部的な近似値は、定数の外部値の鋭い内部的な近似値です。このため、この近似値は定数の外部値を含む最も狭いマシン表現可能な区間となります。
- 区間幅は、w([a, b]) = b - a のように表されます。
- 1 対の区間
に関する区間包演算子
は、X と Yの両方を含む最小の区間です (
とも表される) 。たとえば、次のようになります。
- [2, 3]
[5, 6] = [2, 6].
- 区間ボックスは、n 次元のデカルト座標軸に平行な辺を持つ平行六面体です。区間ボックスは n 次元の区間ベクトル X = (X1, . . ., Xn)T を使って簡便に表現することができます。
- Fortran には、4 つの組み込みの数値データ型として、
INTEGER、REAL、DOUBLE PRECISION REAL、COMPLEXがあります。コマンド行オプションの-xiaまたは-xintervalを使うと、f95は区間を組み込みのデータ型として認識します。
f95には、WID、HULL、MID、INF、SUPを含むいろいろな組み込みの INTERVAL 固有の関数があります。
- 厳密式処理のもとでは、コンパイラは自動的な型変換または KTPV 変換を行いません。型の混合と KTPV の混合された区間式は許されません。任意の型と (または) KTPV の変換は明示的にプログラムしなければなりません。
- 2 つの式はそれらが包含集合と同じ (包含集合がすべての箇所で同じ) であれば、交換可能です。
- g の変域内にある h の変域内のすべての単集合 {
} = {x1}
{xn} について、 f({
}) = g(h({
})) の規定どおりに、所与の式 g と h から新しい式 f (合成式) を形成します。単集合引数は、式が関数または関係のどちらかであるということを暗示しています。
- 混合型の区間式は異なる型のデータ項目を含みます。たとえば、式 [
0.1] +0.2D0は、[0.1] が 1 つの区間であり、0.2D0がDOUBLE PRECISIONの定数なので、混合型の区間式です。これらは共に同じ KTPV = 8 を持ちます。
- 混合モードの区間式は異なる型と KTPV のデータ項目を含みます。たとえば、式 [
0.1] +0.2は混合モード式です。[0.1] は KTPV = 8 を持つ区間定数ですが、0.2は KTPV =4を持つ REAL 定数です。
- 内部的なマシン数の 1 最終位置単位 (ulp) は、マシンの演算機能を使って実行可能な最小のインクリメントまたはデクリメントのことです。このため、計算された区間の幅が 1 ulp であれば、これは所与の KTPV を持つ、可能な最も狭い非縮退区間となります。
- 単数の入力/出力では、暗黙に区間を構築するために、最終表示桁に対し 1最終桁単位 (uld) の加算または減算が行われます。
- 数の集合の最小上限は、集合の上限にいちばん近い数です。これは集合内部の最大の数、または、集合内部のすべてのメンバーよりも大きい最小の数のいずれかです。区間定数 [a, b] の最小上限 sup([a, b]) は b です。
- 数の集合の最大下限は、集合の下限にいちばん近い数です。これは、集合内部の最小の数、または、集合内部のすべてのメンバーよりも小さい最大の数のいずれかです。区間定数 [a, b] の最大下限 inf([a, b]) は a です。
- 最大幅要求式処理のもとでは、コンパイラにより、自動的な型変換と KTPV 変換が行われます。任意の非区間の添字式は区間に昇格され、KTPV は KTPVmax へと設定されます。
- Fortran では、スコープは、データと (または) 演算が定義されていてあいまいさのない、実行プログラムの一部分を意味します。最大幅要求式処理のスコープは、関数とサブルーチンの呼び出しにより制限を受けます。
- 最大幅要求式処理: スコープ (widest-need expression processing: scope)を参照してください。
- 厳密式処理 (strict expression processing) を参照してください。
- 最大幅要求式処理(widest-need expression processing) を参照してください。
- 最大幅要求式処理では、式の文脈を定義する 2 つの属性は、式の型と最大KTPV (KTPVmax) です。
- 集合
について評価された、n 個の変数の式 f の閉包は、
で表され、また、
については、次のように定義されます。
については、
です。
- すべてのシーケンス {
}の集積点
xj は、集合 X0 の要素です。f の閉包は、上記定義式の右側の条件が満たされた、すべての可能な f の集積点の集合です。
is defined for all
.
- 実装特性はコンパイラの区間サポートを特徴付けます。狭幅 (narrow width) は区間データ型用に組み込みのコンパイラサポートにより提供される新しい実装品質です。
- 集合理論は、集合の手段、または、集合の代数に属するものです。
- 縮退した区間はゼロ幅の区間です。縮退した区間は、その唯一の要素が点である単集合です。ほとんどの場合、縮退区間は 1 つの点と考えることができます。たとえば、区間 [2, 2] は縮退しており、区間 [2, 3] は縮退していません。
- Fortran では、各組み込みデータ型は、データ型の種別 (精度) を選択する種別型パラメータ値 (KTPV) を使ってパラメータ化されます。
f95には、4、8、16 の 3 つの区間 KTPV が存在します。デフォルトの KTPV は、8 です。
- 最小上限 (supremum(plural, suprema)) を参照してください。
- 鋭い区間結果は可能な限り狭い幅を持ちます。鋭い区間結果は式の包含の包と同じになります。有限精度の算術による制限が課せられると、鋭い区間結果は、式の包含集合を含む、可能なかぎり最も狭い有限の区間となります。
- 代入文は、次の形式を持つ Fortran 文です。
V =expression- 代入文の左側は、変数、配列要素、または配列 V です。
- 2 つの互いに素の区間は共通の要素を持ちません。区間 [2, 3] と [4, 5] は、互いに素の区間です。2 つの互いに素の区間の積集合は空の区間となります。
- 多用途式 (MUE) は、少なくとも 1 つの独立変数が複数回出現する式のことです。
- 単一用途式 (SUE) は、式内部で各変数が 1 度だけしか発生しない式のことです。たとえば、次の式は単一用途式ですが、
![]()
- 次の式は、そうではありません。
![]()
- 単数区間データ変換は、
Y編集記述子による読み取りと単数表現を使った外部区間の表示に使用します。単数の入力/出力 (single-number input/output)を参照してください。
- 単数の入力/出力は区間用に、区間 [-1, +1]uld が暗黙のうちに最終表示桁に追加される、単数外部表現を使用します。下付き文字 uld は、最終桁での単位を表す頭字語 (Unit in the Last Digit) です。たとえば、0.12300 は区間 0.12300 + [-1, +1]uld = [0.12299, 0.12301] を表します。
- certainly、possibly または同じでない集合を除く順位関係。断定的な関係は、たとえば、a < b のように、何かを断言する関係です。
- 断定的な関係演算子は集合の要素です。:{<, £, =, �, >}
- Fortran での定数式は変数または配列を含みません。定数とオペランドは含めることができます。式
[2,3] + [4,5]は定数式です。Xが変数であれば、式X + [2,3]は定数式ではありません。Yが名前付き定数であれば、Y + [2,3]は定数式です。
- (区間の対立概念としての) 点は、1 つの数です。N 次元空間での 1 つの点は、n 次元のベクトル x = (x1, . . . , xn)T を使って表されます。点と縮退した区間、あるいは、区間ベクトルは同じものと考えることができます。厳密には、任意の区間はその要素が複数の点である 1 つの集合です。
- 透明なデータ型は内部的な近似値の構造を未指定のままにします。区間データ項目は透明です。このため、プログラマは区間データ項目が内部的に何か特別な方法で表現されることを期待することができません。組み込みの関数
INFとSUPは区間の構成要素へのアクセスを提供します。手作業で任意の有効な区間を構築するには、INTERVAL構成子を使うことができます。
- 名前付き定数は
PARAMETER文の中で宣言、初期化されます。名前付き定数の値は文脈に依存しないので、PARAMETER宣言でのデータ項目のより適切な名前は、「読み取り専用変数」です。
- 反断定的な関係は true となりえないことがらについての陳述です。順位関係 ≠ は、Fortran での唯一の反断定的な関係です。
- Fortran の
.NE.と /= 演算子は反断定的な関係を実装しています。certainly、possible、区間オペランド用の集合バージョンは、それぞれ、.CNE.、.PNE.、.SNE.で表されます。
- 1 つの区間の左側の終了点は、その最大下限または下限と同じです。
- 最大幅要求式処理のもとでの区間定数の内部的な近似値は、KTPVmax と同じ KTPV を持つ鋭い区間なので文脈依存となります。次の前提で、区間定数 [a, b] についての任意の近似値を使うことができます。
- [a,b]
ev(
[a,b]),- ここでは、ev([a,b]) は区間定数 [a,b] の外部値を表します。包含の違反がなければ、任意の内部的な近似値を選択することが許されます。たとえば、内部的な近似値 [0.1_4]、[0.1_8] と [0.1_16] は、すべてが外部値 ev(0.1) = 1/10 を持ち、このため、包含の制約に違反しません。最大幅要求式処理のもとでは、KTPVmax と同じ KTPV を持つ内部的な近似値が使用します。
- 閉鎖区間はその終了点を含みます。閉鎖区間は閉集合 (closed set) です。[2, 3] = {z | 2 £ z £ 3}である区間はその終了点が含まれるので閉じられています。区間 (2, 3) = {z | 2 < z < 3} である区間はその終了点が含まれないので、開いています。
f95で実装された区間演算は、閉鎖区間だけを取り扱います。
- 閉鎖数学システム内部では、未定義の演算子オペランドの組み合わせが存在してはいけません。閉鎖システムの要素に関するすべての定義済み演算はそのシステムの要素を生成しなければなりません。実数システムは、ゼロによる除算がそのシステムで未定義なので、閉じられていません。
- 閉集合は集合内部のすべての集積点 (limit point または accumulation point) を含みます。つまり、所与の集合 S とシーケンス
について、S の閉包は、
となります。ここでは、
はシーケンス {sj} の集積点を表します。
- 実数の集合は、-
と +
を含まないので、開いた集合 {z | -
< z < +
} です。拡張実数の集合
は閉じています。
- 次の等式を持つ所与の式 f、g、h について、
![]()
- 閉包合成等式は、次のことを示します。
![]()
- 点 x0 での
の閉包は、その指数の閉包である
と
と同じです。
- 区間包 (interval hull) を参照してください。
- 式 h の包含集合 cset(h, {x}) は、h が任意の合成 f({x}) = g(h({x}), {x}) の構成要素として使われると、包含の制約に違反しない最小の集合となります。
- For h(x, y) = x ÷ y については、
- cset(h, {(+
, +
)}) = [0, +
] となります。
- cset(expression, set) も参照してください。
- 包含集合のどの部分も同じである場合、2 つの式は包含集合の同値です。
- eval(f, {x}) が、個々の構成要素の閉包を使って、演算、関数、あるいは、関係の値のいずれであっても下位式の値を計算する、式 f のコードリストの評価を表すものとします。この場合、f が関数であっても関係であっても、式f({x}) = f({x1}
{xn}) が与えられると、すべての
について、cset(f, {x0})
eval(f, {x0}) となります。
- n 個の変数の任意の式 f({x}) = f({x1}
{xn}) と点 x0 が与えられると、点 x0での f の閉包は、cset(f, {x0}) = f({x0}) となります。
- 包含の失敗は、包含の制約を満たせない失敗です。たとえば、[1]/[0] が [empty] であると定義されると、包含の失敗となります。これは、
でない Y である X=[0]と Y について、次のような区間式を想定すれば確認することができます。
![]()
- 最初の式の包含集合は [0] です。しかし、[1]/[0] が [empty] であると定義されると、2 番目の式もまた [empty] となります。これは、包含の失敗です。
- 縮退した区間 [x] での式 f の区間の評価 f([x]) に関する包含の制約は、次のようになります。
- f([x])
cset(f,{x}),
- ここでは、cset(f,{x}) は f([x]) が含まなければならないすべての可能な値の包含集合を表します。包含集合は、(x ÷ y, {(1, 0)}) = {-
, +
}ですから、[1] / [0] = hull({-
, +
}) = [-
, +
]となります。包含集合 (containment set)も参照してください。
- 最小上限 (supremum(plural, suprema)) を参照してください。
- 有向の丸めは特別な向きを持つ丸めです。区間演算の文脈では、丸め切り上げは +
方向の、丸め切り下げは -
方向の向きを持ちます。有向の丸めは矢印↓と↑により記号化されます。このため、小数 5 桁の算術を使う場合、↑ 2.00001 = 2.0001 のようになります。有向の丸めは、コンピュータ上で包含の制約に違反することがないよう、区間算術の実装で使用します。
- 読み取り専用変数は標準 Fortran で定義済みの構成概念ではありません。しかし、それでも読み取り専用変数は一度初期化された後は変更できなくなります。区間サポートのない標準 Fortran では、名前付き定数と読み取り専用変数を区別する必要がありません。しかし、最大幅要求式処理は定数の外部値を使うので、読み取り専用変数と名前付き定数を区別しなければなりません。f95 の実装では、
PARAMETER宣言の中で初期化される記号名は読み取り専用変数となります。
f95では、区間リテラル定数は、定数の外部値を定義するために使用される文字列です。
f95では、リテラル定数の外部値は定数の文字列により定義された数学上の値です。外部値 (external value)も参照してください。
f95では、内部的なリテラル定数の内部的近似値は、定数の外部値を含む鋭いマシン表現可能な区間です。
- IEEE754 浮動小数点標準では、ゼロによる除算のような未定義の演算を実行しようとすると、例外が発生します。
- 2 つの値を含む、2 つの値間の数の連結集合 a £ b は、a と b を含む a、b 間のすべての値を含みます。
|
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |