next up previous contents
: Indeterminate および Tree : Open XM の設計と実装: クライアントサーバモデルと数学共通表現 : オブジェクトの文字列表現   目次


数, 多項式 の CMO 表現

@../SSkan/plugin/cmotag.h
#define     CMO_MONOMIAL32  19
#define     CMO_ZZ          20 
#define     CMO_QQ          21
#define     CMO_ZERO        22
#define     CMO_DMS_GENERIC  24
#define     CMO_DMS_OF_N_VARIABLES  25
#define     CMO_RING_BY_NAME   26
#define     CMO_DISTRIBUTED_POLYNOMIAL 31
#define     CMO_RATIONAL       34
#define     CMO_COMPLEX       35

#define     CMO_BIGFLOAT32    52

#define     CMO_INDETERMINATE  60
#define     CMO_TREE           61
#define     CMO_LAMBDA         62    /* for function definition */

以下, グループ CMObject/Basic, CMObject/Tree および CMObject/DistributedPolynomial に属する CMObject の形式を説明する.

OpenXM/src/ox_toolkit にある bconv をもちいると CMO expression を binary format に変換できるので, これを参考にするといい.

Example:

bash$ ./bconv
> (CMO_ZZ,123123);
00 00 00 14 00 00 00 01 00 01 e0 f3

Group CMObject/Basic requires CMObject/Primitive.
ZZ, QQ, Zero, Rational, Indeterminate $\in$ CMObject/Basic.

\begin{eqnarray*}
\mbox{Zero} &:& ({\tt CMO\_ZERO}) \\
& & \mbox{ --- ユニバー...
... {\sl Cstring}\, {\rm v}) \\
& & \mbox{ --- 変数名 $v$\ . } \\
\end{eqnarray*}

Indeterminate は変数名をあらわす. v はバイト列であればなにを用いてもよいが, システム毎に変数名として用いられるバイト列は制限がある. 各システム xxx は任意の文字列を各システム固有の変数名へ1対1に変換できるように 実装しないといけない. (これを Dx#dx と変換するなどの escape sequence を用いて実現するのは, 無理があるようである. テーブルを作成する必要があるであろう.)





Nobuki Takayama 平成28年8月27日