=================================================================== RCS file: /home/cvs/OpenXM/src/ox_math/documents/ox_math.tex,v retrieving revision 1.3 retrieving revision 1.7 diff -u -p -r1.3 -r1.7 --- OpenXM/src/ox_math/documents/ox_math.tex 1999/11/23 03:08:26 1.3 +++ OpenXM/src/ox_math/documents/ox_math.tex 2002/04/17 01:09:23 1.7 @@ -1,19 +1,46 @@ %#!platex -%% $OpenXM: OpenXM/src/ox_math/documents/ox_math.tex,v 1.2 1999/11/02 06:12:00 ohara Exp $ +%% $OpenXM: OpenXM/src/ox_math/documents/ox_math.tex,v 1.6 2000/01/20 15:18:31 ohara Exp $ \documentclass{jarticle} \title{Mathematica ¤Î Open XM ²½¤Ë¤Ä¤¤¤Æ % \\ {\small --- Open Mathematica ¥µ¡¼¥Ð¤ÎÆâÉô¹½À® ---} } %\date{January 19, 1999} -\date{July 12, 1999} +%\date{July 12, 1999} +\date{November 25, 1999} \author{¾®¸¶¸ùǤ} \begin{document} \maketitle -\section{Open Mathematica¤Î¹½À®} +\noindent +{\bf +Ãí°Õ (2002.04.17): +¤³¤Îʸ½ñ¤Ï, ¸Å¤¤¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¤â¤È¤Ëµ­½Ò¤·¤Æ¤¢¤ë¤Î¤Ç, +Îã¤Ï¤³¤Î¤Þ¤Þ¤Ç¤ÏÆ°ºî¤·¤Ê¤¤¤Î¤ÇÃí°Õ. +math2ox.texi ¤¬ºÇ¿·¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤¢¤ë. +°ìÈÖ¤ÎÊѹ¹ÅÀ¤Ï, {\tt OxStart} ¤¬ pid (ox process id) ¤òÌ᤹¤è¤¦¤Ë¤Ê¤ê, +{\tt OxParse} ¤Ê¤É¿¤¯¤Î´Ø¿ô¤¬, pid ¤ò°ú¿ô¤È¤·¤Æµá¤á¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤³¤È¤Ç +¤¢¤ë. +¤¿¤È¤¨¤Ð, ¤³¤Îʸ½ñ¤Î {\tt OxParse} ¤òÍѤ¤¤ëÎã¤Ï, ¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Ê¤¤¤È +¤¤¤±¤Ê¤¤.} +\begin{verbatim} +Install["math2ox"] +pid = OxStart["ox_sm1"] +OxParse[pid,"(CMO_ZERO)"] +OxPopCMO[pid] +\end{verbatim} + +\section{²æ¡¹¤¬Ä󶡤¹¤ë¤â¤Î} + +²æ¡¹¤¬Ä󶡤¹¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥é¥à¤È¤½¤Î¥½¡¼¥¹¤Ç¤¢¤ë¡£°ì¤ÄÌÜ¤Ï +{\tt ox\_math} ¥×¥í¥°¥é¥à¤Ç¤¢¤ê¡¢¤³¤ì¤Ï OpenXM ¥µ¡¼¥Ð¤Î°ì¼ï¤Ç¤¢¤ë¡£Æó¤Ä +ÌÜ¤Ï {\tt math2ox} ¤Ç¤¢¤ê¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¡£ + + +\section{Open Mathematica ¥µ¡¼¥Ð¤Î¹½À®} + Open Mathmatica ¥µ¡¼¥Ð¤ÏOpen XM ¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ómathematica ¥«¡¼¥Í¥ë¤È ÄÌ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤Ïµ¯Æ°Ä¾¸å¤Ëmathematica ¥«¡¼¥Í¥ë¤òµ¯Æ°¤·¡¢ mathematica ¥«¡¼¥Í¥ë¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£mathematica ¥«¡¼¥Í¥ë¤È¤Ï @@ -47,6 +74,7 @@ CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é \begin{enumerate} \item CMO\_INT32 ¤Ï MLTKINT (¿ÇÜĹÀ°¿ô·¿). \item CMO\_STRING ¤Ï MLTKSTR (ʸ»úÎó·¿). +\item CMO\_LIST ¤Ï MLTKFUNC (´Ø¿ô·¿). \item ¤½¤Î¾¤Î¥¿¥¤¥×¤Î CMO ¤Ï ToExpression[ʸ»úÎó] ¤È¤·¤ÆÁ÷¤ë. \end{enumerate} @@ -81,13 +109,12 @@ int main() \] ¤È¤¤¤¦É¾²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô¤¬Éü¸µ¤µ¤ì¤ë. -µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï, -¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð, int ¤È¤·¤Æ -¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, -¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤. -¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ²Äǽ¤Ç¤¢¤ë. -(MathLink ¾å¤Ç¤É¤Î¤è¤¦¤Ê·Á¼°¤Ç¥Ç¡¼¥¿¸ò´¹¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤Î -¾ðÊó¤Ï¼ê¸µ¤Ë¤¢¤ë»ñÎÁ¤«¤é¤ÏÆÀ¤é¤ì¤Ê¤«¤Ã¤¿) +µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð, +int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ +¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì +¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë. ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ +²Äǽ¤Ç¤¢¤ë. (MathLink ¾å¤Ç¤É¤Î¤è¤¦¤Ê·Á¼°¤Ç¥Ç¡¼¥¿¸ò´¹¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤Î¾ð +Êó¤Ï¼ê¸µ¤Ë¤¢¤ë»ñÎÁ¤«¤é¤ÏÆÀ¤é¤ì¤Ê¤«¤Ã¤¿) ¤·¤«¤·¤Ê¤¬¤é, ¤¿¤È¤¨ Mathematica ¦¤«¤éÀ°¿ô¥Ç¡¼¥¿¤¬Á÷¤é¤ì¤Æ¤¤¤¿¤È¤·¤Æ¤â, ¤½¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤ËÊÑ´¹¤·¤Æ¼õ¤±¼è¤ë¤³¤È¤Ï MathLink ¤Îµ¡¹½¾å²Äǽ¤Ç¤¢¤ë. @@ -110,8 +137,8 @@ int main() } \end{verbatim} -¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¥Ç¡¼¥¿¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢ -¤½¤Îʸ»úÎó¤ò OX ¥µ¡¼¥Ð¦¤Ç CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£ +¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¥Ç¡¼¥¿¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢¤½¤Îʸ»úÎó¤ò +OX ¥µ¡¼¥Ð¦¤Ç CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£ ´ðËÜŪ¤Ë MathLink ¤Ç¤ÏÁ´¤Æ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ç¼õ¤±¼è¤ë¤·¤«ÊýË¡¤Ï¤Ê¤¤¡£¤É¤Î ¤è¤¦¤Ê¼ïÎà¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤«¤Ï¼õ¤±¼è¤ëÁ°¤ËÃΤ뤳¤È¤Ï¤Ç¤­¤ë¡£¥Ç¡¼¥¿¤Î·¿¤Ï¡¢ @@ -125,27 +152,28 @@ Mathematica ¤«¤é¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Ï´ðËÜŪ¤Ë CMO\_STRING ¤Þ¤À¡¢¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¤¬¡¢Â¿¹à¼°(CMO\_???\_PORINOMIAL)¤Î°·¤¤¤¬Æñ¤·¤¤¡£ \section{¸Ä¡¹¤Î¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Î¼ÂÁõ} -¸½ºß¡¢¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤Ï + +¸½ºß¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction, SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤± ¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£ \section{Mathematica ¤ò OX ¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ë} -OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ï Mathematica ¤Î³°Éô¥×¥í¥°¥é¥à(math2ox)¤Î·Á¤Ç -¼Â¸½¤µ¤ì¤Æ¤¤¤ë¡£ -¤¹¤Ê¤ï¤Á¡¢Mathematica -- math2ox ¤Î´Ö¤Ï MathLink ¥×¥í¥È¥³¥ë¤Ç¡¢ -math2ox -- OpenXM ¥µ¡¼¥Ð¤Î´Ö¤Ï OpenXM ¥×¥í¥È¥³¥ë¤ÇÄÌ¿®¤·¡¢ -math2ox ¤¬Å¬Àڤ˾ðÊó¤òÊÑ´¹¤·¤Ê¤¬¤é¤ä¤ê¤È¤ê¤¹¤ë¡£ -¤½¤Î°ÕÌ£¤Ç wrapper ¤Î°ì¼ï¤Ç¤¢¤ë¤È¤â¸À¤¨¤ë¡£ +OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ï Mathematica ¤Î³°Éô¥×¥í¥°¥é¥à({\tt math2ox}) ¤Î·Á¤Ç +¼Â¸½¤µ¤ì¤Æ¤¤¤ë¡£¤¹¤Ê¤ï¤Á¡¢Mathematica ¤È math2ox ¤Î´Ö¤Ï MathLink ¥×¥í¥È +¥³¥ë¤Ç¡¢math2ox ¤È OpenXM ¥µ¡¼¥Ð¤Î´Ö¤Ï OpenXM ¥×¥í¥È¥³¥ë¤ÇÄÌ¿®¤·¡¢ +math2ox ¤¬Å¬Àڤ˾ðÊó¤òÊÑ´¹¤·¤Ê¤¬¤é¤ä¤ê¤È¤ê¤¹¤ë¡£¤½¤Î°ÕÌ£¤Ç wrapper ¤Î°ì +¼ï¤Ç¤¢¤ë¤È¤â¸À¤¨¤ë¡£ + ÍøÍѤ¹¤ë¤Ë¤Ï¡¢ºÇ½é¤Ë \begin{verbatim} In[1]:= Install["math2ox"] \end{verbatim} ¤È¤·¤Æ¡¢math2ox ¤ò¥í¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ Mathematica ¤Ë¿·¤¿¤ËÄêµÁ¤µ¤ì¤ë¥³¥Þ¥ó¥É¤Ï¡¢ -{\tt OxStart[s\_String], OxStartInsecure[s\_String], -OxExecute[s\_String], OxParse[s\_String], OxReceive[], +{\tt OxStart[s\_String], OxStartInsecure[s\_String, p\_Integer, q\_Integer], +OxExecuteString[s\_String], OxParse[s\_String], OxGet[], OxPopCMO[], OxPopString[], OxClose[], OxReset[]} ¤Î9¤Ä¤Ç¤¢¤ë¡£ @@ -178,13 +206,13 @@ OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë ¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï \begin{verbatim} -In[5] := OxReceive[] +In[5] := OxGet[] \end{verbatim} ¤È¤¹¤ë¤À¤±¤Ç¤è¤¤¡£Ê֤äƤ¯¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï CMO ¤ËÂбþ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£ \begin{verbatim} In[6] := OxPopCMO[] \end{verbatim} -¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxReceive[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£ +¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxGet[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£ ·×»»¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï {\tt OxExecute[]} (SM\_executeStringByLocalParser) ¤«¡¢Å¬ÀÚ¤Ê OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤³¤È¡£ @@ -221,10 +249,11 @@ typedef unsigned long int mp_limb_t; \begin{thebibliography}{99} \bibitem{Openxxx-1998} ÌîϤÀµ¹Ô, ¹â»³¿®µ£. -{Open xxx ¤ÎÀ߷פȼÂÁõ, xxx = asir,kan}, 1998/10/11 +{Open XM ¤ÎÀ߷פȼÂÁõ --- Open message eXchange protocol for Mathematics}, +1999/11/22 \bibitem{Ohara-Takayama-Noro-1999} ¾®¸¶¸ùǤ, ¹â»³¿®µ£, ÌîϤÀµ¹Ô. -{Open asir ÆþÌç}. +{Open asir ÆþÌç}, 1999, ¿ô¼°½èÍý, Vol 7, No 2, 2--17. (ISBN4-87243-086-7, SEG ½ÐÈÇ, Tokyo). \bibitem{Wolfram-1992} ¥¦¥ë¥Õ¥é¥à. {Mathematica (ÆüËܸìÈÇ)},