Annotation of OpenXM/doc/OpenXM-specs/appendix.tex, Revision 1.1
1.1 ! noro 1: %% $OpenXM$
! 2: //&C \section{Appendix: English translation}
! 3:
! 4: /*&C
! 5: \noindent
! 6: (This section has not been updated.)
! 7:
! 8: \subsection{Common Mathematical Object format}
! 9:
! 10: \begin{verbatim}
! 11: #define LARGEID 0x7f000000
! 12: #define CMO_ERROR2 (LARGEID+2)
! 13: #define CMO_NULL 1
! 14: #define CMO_INT32 2
! 15: #define CMO_DATUM 3
! 16: #define CMO_STRING 4
! 17: #define CMO_LIST 17
! 18: \end{verbatim}
! 19:
! 20: \bigbreak
! 21: \noindent
! 22: Group CMObject/Basic0 requires nothing. \\
! 23: Error2, Null, Integer32, Datum, Cstring, List $\in$ CMObject/Basic0. \\
! 24: Document of CMObject/Basic0 is at {\tt http://www.math.kobe-u.ac.jp/openxxx}
! 25: (in Japanese) \\
! 26: \begin{eqnarray*}
! 27: \mbox{Error2}&:& ({\tt CMO\_ERROR2}, {\sl CMObject}\, \mbox{ob}) \\
! 28: \mbox{Null} &:& ({\tt CMO\_NULL}) \\
! 29: \mbox{Integer32}
! 30: &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
! 31: \mbox{Datum} &:& ({\tt CMO\_DATUM}, {\sl int32}\, \mbox{n}, {\sl byte}\,
! 32: \mbox{data[0]},
! 33: \ldots , {\sl byte}\, \mbox{data[n-1]}) \\
! 34: \mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, \mbox{n},
! 35: {\sl string}\, \mbox{s}) \\
! 36: \mbox{List} &:&
! 37: \mbox{({\tt CMO\_LIST}, {\sl int32}\, m, {\sl CMObject}\, ob[1], $\ldots$,
! 38: {\sl CMObject}\, ob[m])} \\
! 39: & & \mbox{--- m is the length of the list.} \\
! 40: \end{eqnarray*}
! 41:
! 42: In the definition of ``Cstring'', if we decompose ``{\sl string} s'' into
! 43: bytes, then ``Cstring'' should be defined as
! 44: \begin{eqnarray*}
! 45: \mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, n,
! 46: {\sl byte}\, \mbox{s[0]},
! 47: \ldots, {\sl byte}\ \mbox{s[n-1]})
! 48: \end{eqnarray*}
! 49:
! 50: \noindent
! 51: Example:
! 52: \begin{center}
! 53: ({\tt CMO\_INT32}, 1234)
! 54: \end{center}
! 55: Example:
! 56: \begin{center}
! 57: ({\tt CMO\_STRING}, 5, "Hello")
! 58: \end{center}
! 59:
! 60: \begin{verbatim}
! 61: #define CMO_MONOMIAL32 19
! 62: #define CMO_ZZ 20
! 63: #define CMO_QQ 21
! 64: #define CMO_ZERO 22
! 65: #define CMO_DMS 23 /* Distributed monomial system */
! 66: #define CMO_DMS_GENERIC 24
! 67: #define CMO_DMS_OF_N_VARIABLES 25
! 68: #define CMO_RING_BY_NAME 26
! 69: \end{verbatim}
! 70: \bigbreak
! 71: \noindent
! 72: Group CMObject/Basic1 requires CMObject/Basic0. \\
! 73: ZZ, QQ, Zero $\in$ CMObject/Basic1. \\
! 74: \begin{eqnarray*}
! 75: \mbox{Zero} &:& ({\tt CMO\_ZERO}) \\
! 76: & & \mbox{ --- universal zero } \\
! 77: \mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, f, {\sl byte}\, \mbox{a[1]}, \ldots
! 78: {\sl byte}\, \mbox{a[m]} ) \\
! 79: &:& \mbox{ --- bignum }\\
! 80: \mbox{QQ} &:& ({\tt CMO\_QQ}, {\sl ZZ}\, a, {\sl ZZ}\, b) \\
! 81: & & \mbox{ --- rational number $a/b$. } \\
! 82: \end{eqnarray*}
! 83:
! 84: \bigbreak
! 85: Let us define a group for distributed polynomials.
! 86:
! 87: \medbreak
! 88: \noindent
! 89: Group CMObject/DistributedPolynomials requires CMObject/Basic0,
! 90: CMObject/Basic1. \\
! 91: Monomial, Monomial32, Coefficient, Dpolynomial, DringDefinition,
! 92: Generic DMS ring, RingByName, DMS of N variables $\in$
! 93: CMObject/DistributedPolynomials. \\
! 94: \begin{eqnarray*}
! 95: \mbox{Monomial} &:& \mbox{Monomial32}\, |\, \mbox{Zero} \\
! 96: \mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, {\sl int32}\, n,
! 97: {\sl int32}\, \mbox{e[1]}, \ldots,
! 98: {\sl int32}\, \mbox{e[n]}, \\
! 99: & & \ \mbox{Coefficient}) \\
! 100: & & \mbox{ --- e[i] is the exponent $e_i$ of the monomial
! 101: $x^e = x_1^{e_1} \cdots x_n^{e_n}$. } \\
! 102: \mbox{Coefficient}&:& \mbox{ZZ} | \mbox{Integer32} \\
! 103: \mbox{Dpolynomial}&:& \mbox{Zero} \\
! 104: & & |\ ({\tt CMO\_LIST},{\sl int32} m, \\
! 105: & & \ \ {\tt CMO\_DMS}, \mbox{DringDefinition},
! 106: [\mbox{Monomial32}|\mbox{Zero}], \\
! 107: & &\ \
! 108: \{\mbox{Monomial32}\}) \\
! 109: & &\mbox{--- Distributed polynomial is a sum of monomials}\\
! 110: & &\mbox{--- m is equal to the number of monomials $+2$.}\\
! 111: \mbox{DringDefinition}
! 112: &:& \mbox{DMS of N variables} \\
! 113: & & |\ \mbox{RingByName} \\
! 114: & & |\ \mbox{Generic DMS ring} \\
! 115: & & \mbox{ --- definition of the ring of distributed polynomials. } \\
! 116: \mbox{Generic DMS ring}
! 117: &:& ({\tt CMO\_INT32, CMO\_DMS\_GENERIC}) \\
! 118: \mbox{RingByName}&:& ({\tt CMO\_RING\_BY\_NAME}, {\sl Cstring} s) \\
! 119: & & \mbox{ --- The ring definition refered by the name ``s''.} \\
! 120: \mbox{DMS of N variables}
! 121: &:& ({\tt CMO\_DMS\_OF\_N\_VARIABLES}, \\
! 122: & & \ ({\tt CMO\_LIST}, {\sl int32}\, \mbox{m},
! 123: {\sl Integer32}\, \mbox{n}, {\sl Integer32}\,\mbox{p} \\
! 124: & & \ \ [,{\sl Cstring}\,\mbox{s}, {\sl List}\, \mbox{vlist},
! 125: {\sl List}\, \mbox{wvec}, {\sl List}\, \mbox{outord}]) \\
! 126: & & \mbox{ --- m is the number of elements.} \\
! 127: & & \mbox{ --- n is the number of variables, p is the characteristic} \\
! 128: & & \mbox{ --- s is the name of the ring, vlist is the list of variables.} \\
! 129: & & \mbox{ --- wvec is the weight vector.} \\
! 130: & & \mbox{ --- outord is the order of variables to output.} \\
! 131: \end{eqnarray*}
! 132:
! 133:
! 134: \subsection{ Stackmachine commands}
! 135:
! 136: \begin{verbatim}
! 137: #define SM_popSerializedLocalObject 258
! 138: #define SM_popCMO 262
! 139: #define SM_popString 263
! 140:
! 141: #define SM_mathcap 264
! 142: #define SM_pops 265
! 143: #define SM_setName 266
! 144: #define SM_evalName 267
! 145: #define SM_executeStringByLocalParser 268
! 146: #define SM_executeFunction 269
! 147: #define SM_beginBlock 270
! 148: #define SM_endBlock 271
! 149: #define SM_shutdown 272
! 150:
! 151:
! 152: #define SM_control_kill 1024
! 153: #define SM_control_reset_connection 1030
! 154: \end{verbatim}
! 155:
! 156:
! 157: \subsection{OX messages}
! 158:
! 159: Top level messages are OX messages.
! 160: These messages start with one of the following tags.
! 161:
! 162: \begin{verbatim}
! 163: #define OX_COMMAND 513 // for stackmachine commands
! 164: #define OX_DATA 514 // for CMO
! 165: #define OX_SECURED_DATA 521
! 166:
! 167: #define OX_SYNC_BALL 515
! 168: \end{verbatim}
! 169:
! 170: \noindent
! 171: Example:
! 172: \begin{center}
! 173: (OX\_COMMAND, SM\_popCMO)
! 174: \end{center}
! 175:
! 176: \noindent
! 177: Example:
! 178: \begin{center}
! 179: (OX\_DATA, ({\tt CMO\_STRING}, 5, "Hello"))
! 180: \end{center}
! 181:
! 182: */
! 183:
! 184:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>