=================================================================== RCS file: /home/cvs/OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v retrieving revision 1.13 retrieving revision 1.15 diff -u -p -r1.13 -r1.15 --- OpenXM/doc/OpenXM-specs/cmo-basic1.tex 2005/03/04 03:49:47 1.13 +++ OpenXM/doc/OpenXM-specs/cmo-basic1.tex 2016/08/22 05:38:27 1.15 @@ -1,4 +1,4 @@ -%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.12 2002/01/20 09:26:21 takayama Exp $ +%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.14 2015/08/18 02:54:05 noro Exp $ //&jp \section{ 数, 多項式 の CMO 表現 } //&eg \section{ CMOexpressions for numbers and polynomials } \label{sec:basic1} @@ -14,7 +14,9 @@ #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 @@ -72,6 +74,12 @@ ZZ, QQ, Zero, Rational, Indeterminate $\in$ CMObject/B & & \mbox{ --- 有理数 $a/b$ を表す. } \\ \mbox{Rational} &:& ({\tt CMO\_RATIONAL}, {\sl CMObject}\, {\rm a}, {\sl CMObject}\, {\rm b}) \\ & & \mbox{ --- $a/b$ を表す. } \\ +\mbox{Bigfloat32} &:& ({\tt CMO\_BIGFLOAT32}, +{\sl int32}\, {\rm prec}, {\sl int32}\, {\rm sign}, {\sl int32}\, {\rm exp}, +{\sl int32}\, \mbox{a[1]}, \ldots , {\sl int32}\, \mbox{a[k]} ) \\ +&:& \mbox{ --- bigfloat をあらわす. a[i], k についてはあとで説明}\\ +\mbox{Complex} &:& ({\tt CMO\_COMPLEX}, {\sl CMObject}\, {\rm re}, {\sl CMObject}\, {\rm im}) \\ +& & \mbox{ --- $a+b\sqrt{-1}$ を表す. } \\ \mbox{Indeterminate} &:& ({\tt CMO\_INDETERMINATE}, {\sl Cstring}\, {\rm v}) \\ & & \mbox{ --- 変数名 $v$ . } \\ \end{eqnarray*} @@ -96,6 +104,12 @@ ZZ, QQ, Zero, Rational, Indeterminate $\in$ CMObject/B & & \mbox{ --- Rational number $a/b$. } \\ \mbox{Rational} &:& ({\tt CMO\_RATIONAL}, {\sl CMObject}\, {\rm a}, {\sl CMObject}\, {\rm b}) \\ & & \mbox{ --- Rational expression $a/b$. } \\ +\mbox{Bigfloat32} &:& ({\tt CMO\_BIGFLOAT32}, +{\sl int32}\, {\rm prec}, {\sl int32}\, {\rm sign}, {\sl int32}\, {\rm exp}, +{\sl int32}\, \mbox{a[1]}, \ldots , {\sl int32}\, \mbox{a[k]} ) \\ +&:& \mbox{ --- bigfloat. The meaning of a[i], k will be explained later.}\\ +\mbox{Complex} &:& ({\tt CMO\_COMPLEX}, {\sl CMObject}\, {\rm re}, {\sl CMObject}\, {\rm im}) \\ +& & \mbox{ --- Complex number $a+b\sqrt{-1}$. } \\ \mbox{Indeterminate} &:& ({\tt CMO\_INDETERMINATE}, {\sl Cstring}\, {\rm v}) \\ & & \mbox{ --- Variable name $v$ . } \\ \end{eqnarray*} @@ -734,7 +748,6 @@ $\in$ CMObject/MachineDouble \\ \bigbreak \begin{verbatim} -#define CMO_BIGFLOAT 50 #define CMO_IEEE_DOUBLE_FLOAT 51 \end{verbatim} @@ -766,14 +779,48 @@ when the engine starts. */ -\noindent -Group CMObject/Bigfloat requires CMObject/Primitive, CMObject/Basic.\\ -Bigfloat -$\in$ CMObject/Bigfloat \\ +\subsection{Bigfloat32} +/*&jp +int32 を基本とした bigfloat の表現方法について述べる. +この形式は mpfr を 32bit CPU で使用した時の内部表現と共通である. +*/ +/*&eg +This subsection describes our format for bigfloat in terms of the int32. +This format is identical to the internal format of mpfr on 32 bit CPU's. +*/ +Ref: {\tt OpenXM/src/mpfr/bfsize/bfsize.c} -\begin{eqnarray*} -\mbox{Bigfloat} &:& -\mbox{({\tt CMO\_BIGFLOAT}, } \\ -& & \quad \mbox{ {\sl ZZ} a , {\sl ZZ} e})\\ -& & \mbox{ --- $a \times 2^e$. } \\ -\end{eqnarray*} +\begin{verbatim} +#define CMO_BIGFLOAT32 52 +\end{verbatim} + + +/*&jp +Bigfloat32 は次の形式の int32 の配列である. +*/ +/*&eg +The bigfloat32 is an array of int32 numbers of the following format. +*/ + +\begin{center} +{\sl int32}\, {\rm prec}, {\sl int32}\, {\rm sign}, {\sl int32}\, {\rm exp}, +{\sl int32}\, \mbox{a[1]}, \ldots , {\sl int32}\, \mbox{a[k]} +\end{center} + +/*&jp +p=prec は精度, s=sign は符号(1 が正の数, -1 (2の補数表現)が負の数) , +E=exp は指数部で, 上のデータは数 +$$ s (a[k]/B + a[k-1]/B^2 + ... + a[1]/B^k) 2^E $$ +を表す. +ここで $B=2^{32}$, +$k = \lceil p/32 \rceil$ +である. +*/ +/*&eg +p=prec is the precision, s=sign is the sign(1 means positive, -1 (expressed by two's complement) is nevative), +E=exp is the exponent, and the data above expresses the number +$$ s (a[k]/B + a[k-1]/B^2 + ... + a[1]/B^k) 2^E. $$ +Here, $B=2^{32}$, +$k = \lceil p/32 \rceil$. +*/ +