comparison
比較, 関係演算子
呼出し手順
a==b a~=b or a<>b a<b a<=b a>b a>=b
引数
- a
等値比較
a==b
,a~=b
a<>b
の場合は任意の変数の型とすることができ, 順序が関連する比較a<b
,a<=b
,a>b
,a>=b
に関しては,浮動小数点の実数および整数の配列に制限されます.- b
等値比較
a==b
,a~=b
a< > b
の場合は任意の変数の型とすることができ, 順序が関連する比較a<b
,a<=b
,a>b
,a>=b
に関しては,浮動小数点の実数および整数の配列に制限されます.
説明
2つの暮らすの演算士は区別する必要があります:
- 等値および不等式比較:
a==b
,a~=b
(または等価なa<>b
). これらの演算子は任意のオペランドの型に適用できます.- 順序が関連する比較:
a<b
,a<=b
,a>b
,a>=b
. これらの演算子は 浮動小数点の実数および整数の配列にのみ適用されます.
比較演算子のセマンティクスもオペランドの型に依存します:
- 配列変数の場合
浮動小数点の実数および整数配列, 論理値配列, 文字列配列,多項式または有理配列,ハンドル配列,リスト... のような配列変数の場合,以下の規則が適用されます:
a
およびb
を 同じ型,同じ次元の配列として評価する場合, 要素毎の比較が行われ, 結果は同じ次元の論理値の配列となります.If
a
およびb
が 型は同じだがa
またはb
が1行1列の配列の場合, このスカラーが別の配列の各要素と比較されます. この結果はスカラーでないオペランドの大きさの論理値の配列となります.その他の場合, 結果は論理値
%f
となります.オペランドのデータ型が異なるが浮動小数点と整数のように 互換性がある場合,比較の前に型変換が行われます.
- その他の型のオペランドの場合
function
やlibraries
のようなその他のオペランドの場合, 結果はオブジェクトが同じ場合に%t
, それ以外の場合に%f
となります.互換性がないデータ型の間の等値比較は
%f
を返します.
|
例
//用途毎の比較 (1:5)==3 (1:5)<=4 (1:5)<=[1 4 2 3 0] 1<[] list(1,2,3)~=list(1,3,3) "foo"=="bar" sparse([1,2;4,5;3,10],[1,2,3]) == sparse([1,2;4,5;3,10],[1,2,3]) //オブジェクト毎の比較 (1:10)==[4,3] 'foo'==3 1==[] list(1,2,3)==1 isequal(list(1,2,3),1) isequal(1:10,1)
Comparisons with implicit conversion of type or encoding:
int32(1) == 1 int32(1) < 1.5 int32(1:5) < int8(3) 1 == complex(1,0) 1 > complex(1,0) // still OK, but.. 1 > complex(1,1) // => error: complex numbers not orderable
--> int32(1) == 1 ans = T --> int32(1) < 1.5 ans = T --> int32(1:5) < int8(3) ans = T T F F F --> 1 == complex(1,0) ans = T --> 1 > complex(1,0) // still OK, but.. ans = F --> 1 > complex(1,1) // => error: complex numbers not orderable at line 11 of function %s_2_s ( SCI\modules\overloading\macros\%s_2_s.sci line 23 ) Complex comparison not supported. Please define %s_2_s_custom() or check your code.
Comparisons with polynomials and rationals:
p = 0*%s p == 0 r = p/(1+0*%s) r == 0 r == p ps = (1-%s)^2, pz = (1-%z)^2 ps == pz // => %F : same variable required
--> p = 0*%s p = 0 --> p == 0 ans = T --> r = p/(1+0*%s) r = 0 -- 1 --> r == 0 ans = T --> r == p ans = T --> ps = (1-%s)^2, pz = (1-%z)^2 ps = 2 1 -2s +s pz = 2 1 -2z +z --> ps == pz // => %F : same variable required ans = F
Comparisons with a sparse numerical matrix: All element-wise comparisons yield
a sparse-encoded result, %F
otherwise.
sp = sparse([0 1 0 0 -2 0 4 0 0]) sp < 0 sp == 1 sp >= [2 3 -1 2 -4 0 3 1 0] sp == %i sp == list(3) // => %F
--> sp = sparse([0 1 0 0 -2 0 4 0 0]) sp = ( 1, 9) sparse matrix ( 1, 2) 1. ( 1, 5) -2. ( 1, 7) 4. --> sp < 0 ans = ( 1, 9) sparse matrix ( 1, 5) T --> sp == 1 ans = ( 1, 9) sparse matrix ( 1, 2) T --> sp >= [2 3 -1 2 -4 0 3 1 0] ans = ( 1, 9) sparse matrix ( 1, 3) T ( 1, 5) T ( 1, 6) T ( 1, 7) T ( 1, 9) T --> sp == %i ans = ( 1, 9)False sparse matrix --> sp == list(3) // object comparison => dense %F ans = F
Comparisons between graphics identifiers:
plot2d() e1 = gce(); e2 = e1; // e1 and e2 point to the same graphical object e2.tag e1.tag = "3 curves"; e1 == e2 e2.tag
--> e2.tag ans = --> e1.tag = "3 curves"; --> e1 == e2 ans = T --> e2.tag ans = 3 curves
Comparisons between functions aliases are possible:
--> sine = sin ; --> sine == sin ans = T --> 正弦 = sind ; --> 正弦 == sind ans = T --> 正弦(0:90:360) ans = 0. 1. 0. -1. 0.
参照
履歴
バージョン | 記述 |
6.0 |
|
Report an issue | ||
<< comments | Scilab keywords | dollar >> |