プチコン3号&BIGまとめWiki

Toukou/ARYOPEX の変更点

パンくずリスト


#title(ARYOPEX ver1.1.0)

CENTER:&size(30){&basic{ARYOPEX ver 1.1.0};};

#contents

2018年8月10日投稿
/ 2018年8月12日 更新
/ 投稿者 : Ryou Tanpo
/ &tag(投稿プログラム,Ryou Tanpo,ARYOP,ライブラリ,実用ツール);

のべ &counter; 人の方にお越しいただきました。ありがとうございます!

* 概要 [#overview]
ARYOP の拡張となるライブラリです。''動作には高度サウンドユニットが必要です。''

** &basic{ARYOP}; について [#aryop]
&basic{ARYOP}; は、高度サウンドユニットで追加された、配列変数の一括演算を高速に行うための命令です。2つの配列変数の、同じ添字の要素どうしの加算、減算などの結果を、ほかの配列変数に格納する、という処理を高速に行うことができます。

この命令は次の書式で使用します。

#basic(noline){{
ARYOP #AOPADD,O,A,B
ARYOP #AOPSUB,O,A,B
ARYOP #AOPMUL,O,A,B
ARYOP #AOPDIV,O,A,B
ARYOP #AOPMAD,O,A,B,C
ARYOP #AOPLIP,O,A,B,C
ARYOP #AOPCLP,O,A,B,C
}}

第1引数にはどの演算を行うか指定し、第2引数(&basic{O};)に出力先の配列変数を、第3引数以降(&basic{A,B,C};)に演算の対象となる配列変数あるいは通常の数値を指定します。通常の数値を指定したときは、すべての要素で共通の値が使われます。

また、演算は &basic{O}; の要素数だけ行われ、&basic{A,B,C}; の要素数がそれより少ない場合は、添字が 0 に戻ります。

演算タイプと、行われる演算の対応は次のようになっています。

|~演算タイプ|~演算|
|#AOPADD|O=A+B|
|#AOPSUB|O=A-B|
|#AOPMUL|O=A*B|
|#AOPDIV|O=A/B|
|#AOPMAD|O=A*B+C|
|#AOPLIP|O=A*C+B*(1-C)|
|#AOPCLP|O を A≦O≦B の範囲に丸める|

しかし、&basic{ARYOP}; は演算タイプが少なく、剰余や絶対値、符号の計算やビット演算などもできません。何行かの &basic{ARYOP}; でできないことはないですが、面倒です。そこで、より多くの種類の演算を簡単に行えるようにしたのが、&basic{ARYOPEX}; です。

* ライブラリを使う [#uselibrary]

** ライブラリで追加される機能 [#feature]
このライブラリでは、次の命令が使えるようにになります。
#basic(noline){{
AOPADD O,A,B
AOPSUB O,A,B
AOPMUL O,A,B
AOPDIV O,A,B
AOPMAD O,A,B,C
AOPLIP O,A,B,C
AOPCLP O,A,B,C
AOPMOD O,A,B
AOPINT O,A
AOPSGN O,A
AOPABS O,A
AOPRAD O,A (ver 1.1.0)
AOPDEG O,A (ver 1.1.0)
AOPLEQ O,A,B
AOPLNE O,A,B
AOPLLT O,A,B
AOPLGT O,A,B
AOPLLE O,A,B
AOPLGE O,A,B
AOPGETA O,A (ver 1.1.0)
AOPGETR O,A (ver 1.1.0)
AOPGETG O,A (ver 1.1.0)
AOPGETB O,A (ver 1.1.0)
AOPSETA O,A (ver 1.1.0)
AOPSETR O,A (ver 1.1.0)
AOPSETG O,A (ver 1.1.0)
AOPSETB O,A (ver 1.1.0)
AOPRGB O,A,B,C (ver 1.1.0)
}}

** &basic{ARYOPEX}; について [#aryopex]
''&basic{ARYOPEX}; 命令は ver1.1.0 にて廃止しました。対応する &basic{AOPxxx}; 系の命令をご使用ください。''

** &basic{AOPxxx}; について [#aop]
&basic{AOP}; で始まる命令は、高度サウンドユニットの &basic{ARYOP}; と同じように、配列変数の一括演算を行います。演算タイプで命令は分かれているため、第1引数に演算タイプを指定する必要はありません。


*** &basic{AOPADD}; [#aopadd]
#basic(noline){{
AOPADD O,A,B
'O=A+B
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素と &basic{B}; の要素を加算した結果を格納します。&br;
&basic{A}; と &basic{B}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPSUB}; [#aopsub]
#basic(noline){{
AOPSUB O,A,B
'O=A-B
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素と &basic{B}; の要素を減算した結果を格納します。&br;
&basic{A}; と &basic{B}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPMUL}; [#aopmul]
#basic(noline){{
AOPMUL O,A,B
'O=A*B
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素と &basic{B}; の要素を乗算した結果を格納します。&br;
&basic{A}; と &basic{B}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPDIV}; [#aopdiv]
#basic(noline){{
AOPDIV O,A,B
'O=A/B
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素と &basic{B}; の要素を減算した結果を格納します。0で割るとエラーを発生します。&br;
&basic{A}; と &basic{B}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPMAD}; [#aopmad]
#basic(noline){{
AOPMAD O,A,B,C
'O=A*B+C
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素と &basic{B}; の要素を加算した結果に &basic{C}; の要素を乗算したものを格納します。&br;
&basic{A}; と &basic{B}; および &basic{C}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPLIP}; [#aoplip]
#basic(noline){{
AOPLIP O,A,B,C
'O=A*C+B*(1-C)
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{B}; の要素を 0 、 &basic{A}; の要素を 1 として&basic{C}; で線形補完した結果を格納します。&br;
補完の方向が逆で、&basic{C}; が 0 のときは &basic{A}; ではなく &basic{B}; を返す &basic{ARYOP} の仕様に合わせていることに注意してください。&br;
&basic{A}; と &basic{B}; および &basic{C}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPCLP}; [#aopclp]
#basic(noline){{
AOPCLP O,A,B,C
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素を下限 &basic{B}; から 上限 &basic{C};の範囲に丸めた結果を格納します、
&basic{A}; と &basic{B}; および &basic{C}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。

*** &basic{AOPMOD}; [#aopmod]
#basic(noline){{
AOPMOD O,A,B
'O=A MOD B
}}

配列 &basic{O}; の各要素に、同じインデックスの &basic{A}; の要素を &basic{B}; の要素で割った余りを格納します。
&basic{A}; と &basic{B}; および &basic{C}; には配列ではない数値変数を指定することもできます。その場合は、すべてのインデックスで共通の値が使用されます。









 以降の命令は編集中です。

** ライブラリを呼び出す [#importlibrary]
自分のプログラムの先頭に
#basic{{
EXEC "PRG1:ARYOPEX"
}}
と記述すれば、ライブラリが利用できます。

* 公開キー [#publickey]
#vote(ダウンロードしたよ![2])

** 【最新】 ver 1.1.0 [#publickey110]
#ptcmid(DK5XV28V,ver 1.1.0)

** ver 1.0.0 [#publickey100]
#ptcmid(NRQEK36D,ver 1.0.0)

使い道は少ないかもしれませんがよろしくお願いします!

* コメント欄 [#comment]
ご感想、ご指摘、ご要望等あればお願いします。
- ''popu'' : 良かったです! (&new{2018/08/13 (月) 15:29:33};)
- ''Ryou Tanpo'' : ありがとうございます!! 使い道は少ないかもしれませんがこれからも更新して行くので是非使ってください!! (&new{2018/08/13 (月) 17:15:38};)
- ''Soybeanman'' : 一部誤字と思われる部分があったので勝手ながら編集させて頂きました。誤「O を A≦O≦ の範囲に丸める」→正「O を A≦O≦B の範囲に丸める」 (&new{2018/08/15 (水) 13:24:03};)
- ''Ryou Tanpo'' : すみません、わざわざありがとうございます! (&new{2018/08/15 (水) 13:50:31};)

#comment
#br
#hr
&size(12){最終更新 &lastmod;};

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.005 秒 | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30