af4da9f5d9a8067075404446fa387c230c3944b6
1 <?xml version="1.0" encoding="UTF-8"?>
3     <refnamediv>
4         <refname>comparison</refname>
5         <refpurpose>比較, 関係演算子</refpurpose>
6     </refnamediv>
7     <refsynopsisdiv>
8         <title>呼出し手順</title>
9         <synopsis>a==b
10             a~=b or a&lt;&gt;b
11             a&lt;b
12             a&lt;=b
13             a&gt;b
14             a&gt;=b
15         </synopsis>
16     </refsynopsisdiv>
17     <refsection>
18         <title>パラメータ</title>
19         <variablelist>
20             <varlistentry>
21                 <term>a</term>
22                 <listitem>
23                     <para>
24                         等値比較<literal>a==b</literal>, <literal>a~=b</literal>
25                         <literal>a&lt;&gt;b</literal>の場合は任意の変数の型とすることができ,
26                         順序が関連する比較<literal>a&lt;b</literal>,
27                         <literal>a&lt;=b</literal>, <literal>a&gt;b</literal>,<literal>a&gt;=b</literal>
28                         に関しては,浮動小数点の実数および整数の配列に制限されます.
29                     </para>
30                 </listitem>
31             </varlistentry>
32             <varlistentry>
33                 <term>b</term>
34                 <listitem>
35                     <para>
36                         等値比較 <literal>a==b</literal>, <literal>a~=b</literal>
37                         <literal>a&lt; &gt; b</literal> の場合は任意の変数の型とすることができ,
38                         順序が関連する比較
39                         <literal>a&lt;b</literal>, <literal>a&lt;=b</literal>,
40                         <literal>a&gt;b</literal>,<literal>a&gt;=b</literal>
41                         に関しては,浮動小数点の実数および整数の配列に制限されます.
42                     </para>
43                 </listitem>
44             </varlistentry>
45         </variablelist>
46     </refsection>
47     <refsection>
48         <title>説明</title>
49         <para>2つの暮らすの演算士は区別する必要があります:</para>
50         <variablelist>
51             <varlistentry>
52                 <term>等値および不等式比較: </term>
53                 <listitem>
54                     <para>
55                         <literal>a==b</literal>, <literal>a~=b</literal> (または等価な <literal>a&lt;&gt;b</literal>).
56                         これらの演算子は任意のオペランドの型に適用できます.
57                     </para>
58                 </listitem>
59             </varlistentry>
60             <varlistentry>
61                 <term>順序が関連する比較: </term>
62                 <listitem>
63                     <para>
64                         <literal>a&lt;b</literal>, <literal>a&lt;=b</literal>,
65                         <literal>a&gt;b</literal>,<literal>a&gt;=b</literal>. これらの演算子は
66                         浮動小数点の実数および整数の配列にのみ適用されます.
67                     </para>
68                 </listitem>
69             </varlistentry>
70         </variablelist>
71         <para>比較演算子のセマンティクスもオペランドの型に依存します:</para>
72         <variablelist>
73             <varlistentry>
74                 <term>配列変数の場合 </term>
75                 <listitem>
76                     <para>浮動小数点の実数および整数配列, 論理値配列,
77                         文字列配列,多項式または有理配列,ハンドル配列,リスト...
78                         のような配列変数の場合,以下の規則が適用されます:
79                     </para>
80                     <itemizedlist>
81                         <listitem>
82                             <para>
83                                 <literal> a</literal>および <literal> b</literal> を
84                                 同じ型，同じ次元の配列として評価する場合,
85                                 要素毎の比較が行われ,
86                                 結果は同じ次元の論理値の配列となります.
87                             </para>
88                         </listitem>
89                         <listitem>
90                             <para>
91                                 If <literal> a</literal> および <literal> b</literal> が
92                                 型は同じだが
93                                 <literal> a</literal>または<literal> b</literal>が1行1列の配列の場合,
94                                 このスカラーが別の配列の各要素と比較されます.
95                                 この結果はスカラーでないオペランドの大きさの論理値の配列となります.
96                             </para>
97                         </listitem>
98                         <listitem>
99                             <para>その他の場合,
100                                 結果は論理値 <literal> %f</literal> となります.
101                             </para>
102                         </listitem>
103                         <listitem>
104                             <para>オペランドのデータ型が異なるが浮動小数点と整数のように
105                                 互換性がある場合,比較の前に型変換が行われます.
106                             </para>
107                         </listitem>
108                     </itemizedlist>
109                 </listitem>
110             </varlistentry>
111             <varlistentry>
112                 <term>その他の型のオペランドの場合 </term>
113                 <listitem>
114                     <para>
115                         <literal>function</literal>や
116                         <literal>libraries</literal>のようなその他のオペランドの場合,
117                         結果はオブジェクトが同じ場合に<literal>%t</literal>,
118                         それ以外の場合に <literal>%f</literal> となります.
119                     </para>
120                     <para>互換性がないデータ型の間の等値比較は
121                         <literal>%f</literal>を返します.
122                     </para>
123                 </listitem>
124             </varlistentry>
125         </variablelist>
126     </refsection>
127     <refsection>
128         <title>例</title>
129         <programlisting role="example"><![CDATA[
130 //用途毎の比較
131 (1:5)==3
132 (1:5)<=4
133 (1:5)<=[1 4 2 3 0]
134 1<[]
135 list(1,2,3)~=list(1,3,3)
136 "foo"=="bar"
137 sparse([1,2;4,5;3,10],[1,2,3]) == sparse([1,2;4,5;3,10],[1,2,3])
138 //オブジェクト毎の比較
139 (1:10)==[4,3]
140 'foo'==3
141 1==[]
142 list(1,2,3)==1
143 isequal(list(1,2,3),1)
144 isequal(1:10,1)
145 //型変換を伴う比較
146 int32(1)==1
147 int32(1)<1.5
148 int32(1:5)<int8(3)
149 p=poly(0,'s','c')
150 p==0
151 p/poly(1,'s','c')==0
152  ]]></programlisting>
153     </refsection>
154     <refsection role="see also">
155         <title>参照</title>
156         <simplelist type="inline">
157             <member>