[BACK]Return to ox_math.tex CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math / documents

Diff for /OpenXM/src/ox_math/documents/ox_math.tex between version 1.3 and 1.8

version 1.3, 1999/11/23 03:08:26 version 1.8, 2005/07/19 15:58:37
Line 1 
Line 1 
 %#!platex  %#!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.7 2002/04/17 01:09:23 takayama Exp $
   
 \documentclass{jarticle}  \documentclass{jarticle}
 \title{Mathematica ¤Î Open XM ²½¤Ë¤Ä¤¤¤Æ  \title{Mathematica ¤Î Open XM ²½¤Ë¤Ä¤¤¤Æ
 % \\ {\small --- Open Mathematica ¥µ¡¼¥Ð¤ÎÆâÉô¹½À® ---}  % \\ {\small --- Open Mathematica ¥µ¡¼¥Ð¤ÎÆâÉô¹½À® ---}
 }  }
 %\date{January 19, 1999}  %\date{January 19, 1999}
 \date{July 12, 1999}  %\date{July 12, 1999}
   \date{November 25, 1999\\
   (Revised July 20, 2005)
   }
 \author{¾®¸¶¸ùǤ}  \author{¾®¸¶¸ùǤ}
   
   \def\oxmath{{\tt ox\_math}}
   
 \begin{document}  \begin{document}
 \maketitle  \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}
   
 Open Mathmatica ¥µ¡¼¥Ð¤ÏOpen XM ¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ómathematica ¥«¡¼¥Í¥ë¤È  
 ÄÌ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤Ïµ¯Æ°Ä¾¸å¤Ëmathematica ¥«¡¼¥Í¥ë¤òµ¯Æ°¤·¡¢  \section{²æ¡¹¤¬Ä󶡤¹¤ë¤â¤Î}
 mathematica ¥«¡¼¥Í¥ë¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£mathematica ¥«¡¼¥Í¥ë¤È¤Ï  
 MathLink ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤ÆÄÌ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤ÏMathLink  ²æ¡¹¤¬Ä󶡤¹¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥é¥à¤È¤½¤Î¥½¡¼¥¹¤Ç¤¢¤ë¡£°ì¤ÄÌܤÏ
   \oxmath ¥×¥í¥°¥é¥à¤Ç¤¢¤ê¡¢¤³¤ì¤Ï OpenXM ¥µ¡¼¥Ð¤Î°ì¼ï¤Ç¤¢¤ë¡£Æó¤Ä
   ÌÜ¤Ï {\tt math2ox} ¤Ç¤¢¤ê¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¡£
   
   Æ°ºî´Ä¶­¤Ï Solaris, Linux ¤ª¤è¤Ó Windows¡¢ÂоݤȤ·¤Æ¤¤¤ë Mathematica ¤Î
   ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢3.0 ¡Á 4.2 ¤Þ¤Ç¤Ç¤¢¤ë¡£¥Ð¡¼¥¸¥ç¥ó 5.x ¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤¬½ê
   Í­¤·¤Æ¤¤¤Ê¤¤¤¿¤áÄ´ºº¤·¤Æ¤¤¤Ê¤¤¡£
   
   Windows ¾å¤Ç¤Ï \oxmath ¤Ï¡¢cygwin ¤Î¤â¤È¤ÇÆ°ºî¤¹¤ë¡£\oxmath ¤Î Windows
   Âбþ¤ÏÆ£Ëܤµ¤ó¤Ë¤è¤ë(2002ǯ4·î)¡£¤¢¤ê¤¬¤È¤¦¡£
   
   \section{Open Mathematica ¥µ¡¼¥Ð¤Î¹½À®}
   
   Open Mathmatica ¥µ¡¼¥Ð(\oxmath)¤ÏOpen XM ¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ó Mathematica
   Kernel ¤ÈÄÌ¿®¤¹¤ë¡£\oxmath ¤Ïµ¯Æ°Ä¾¸å¤Ë Mathematica Kernel ¤òµ¯Æ°¤·¡¢
   Mathematica Kernel ¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£Mathematica Kernel ¤È¤Ï MathLink
   ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤ÆÄÌ¿®¤¹¤ë¡£¤Ä¤Þ¤ê \oxmath ¤Ï MathLink
 ¤Î¥é¥Ã¥Ñ¤À¤È»×¤Ã¤Æ¤è¤¤¡£Open XM ¥¯¥é¥¤¥¢¥ó¥È¤È¤Î´Ö¤Ï¥½¥±¥Ã¥È¤òÍøÍѤ·¤ÆÄÌ  ¤Î¥é¥Ã¥Ñ¤À¤È»×¤Ã¤Æ¤è¤¤¡£Open XM ¥¯¥é¥¤¥¢¥ó¥È¤È¤Î´Ö¤Ï¥½¥±¥Ã¥È¤òÍøÍѤ·¤ÆÄÌ
 ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ 3,4 ¤¬´û¤Ë¥ª¡¼¥×  ¿®¤¹¤ë¡£\oxmath ¤Ï¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ 3,4 ¤¬´û¤Ë¥ª¡¼¥×
 ¥ó¤µ¤ì¤Æ¤¤¤ë¤È»×¤Ã¤Æ, 3 ¤«¤éÆɤ߹þ¤ß¡¢4 ¤Ë½ñ¤­½Ð¤¹¡£  ¥ó¤µ¤ì¤Æ¤¤¤ë¤È»×¤Ã¤Æ, 3 ¤«¤éÆɤ߹þ¤ß¡¢4 ¤Ë½ñ¤­½Ð¤¹¡£
   
 ¤µ¤é¤Ë¡¢Open Mathmatica ¥µ¡¼¥Ð¤Ï¥³¥ó¥È¥í¡¼¥ë¥×¥í¥»¥¹¤«¤é¥·¥°¥Ê¥ë¤ò¼õ¤±¼è  ¤µ¤é¤Ë \oxmath ¤Ë¤Ï·×»»ÃæÃǵ¡Ç½¤¬É¬ÍפǤ¢¤ë¤¬¡¢¤³¤Îµ¡Ç½¤Ï 2003ǯ¤Î¤Ï¤¸¤á¤Ë¼ÂÁõ¤µ¤ì¤¿¡£
 ¤ë¾ì¹ç¤¬¤¢¤ë¡£¥·¥°¥Ê¥ë¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¤Ë¤Ï,Áê±þ¤ÎÆ°ºî¤¬É¬ÍפǤ¢¤ë¤¬¡¢¸½  
 ºß¤Ï¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤.  SIGUSR1 (SM\_control\_reset\_connection) ¤Ï·×»»¤¬Á´  
 ¤Æ½ª¤ï¤Ã¤Æ¤«¤éOX\_SYNC\_BALL ¤òÅꤲ¤ë¤Î¤Ç¡¢¼ÂºÝ¤Ë¤Ï°ÕÌ£¤¬¤Ê¤¤¡£  
   
 \section{OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó}  \section{OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó}
 ¥¹¥¿¥Ã¥¯¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï cmo ·¿¤ÎÊÑ¿ô¡¢¤¢¤ë¤¤¤Ï¤½¤ÎÇÉÀ¸¥¯¥é¥¹¤Ç¤¢¤ë.  ¥¹¥¿¥Ã¥¯¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï cmo ·¿¤ÎÊÑ¿ô¡¢¤¢¤ë¤¤¤Ï¤½¤ÎÇÉÀ¸¥¯¥é¥¹¤Ç¤¢¤ë.
Line 40  MathLink ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤ÆÄÌ¿®¤¹¤ë¡£Open Mathmatica
Line 74  MathLink ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤ÆÄÌ¿®¤¹¤ë¡£Open Mathmatica
 ¥µ¡¼¥Ð¤Î³Æ´Ø¿ô¤Ï cmo* ¤ò¼õ¤±¼è¤ê¡¢¥¿¥°¤ò¤ß¤Æ¼ÂºÝ¤Î¥¯¥é¥¹¤¬²¿¤Ç¤¢¤ë¤«¤ò  ¥µ¡¼¥Ð¤Î³Æ´Ø¿ô¤Ï cmo* ¤ò¼õ¤±¼è¤ê¡¢¥¿¥°¤ò¤ß¤Æ¼ÂºÝ¤Î¥¯¥é¥¹¤¬²¿¤Ç¤¢¤ë¤«¤ò
 ÃΤꡢưºî¤ò·èÄꤹ¤ë.  ÃΤꡢưºî¤ò·èÄꤹ¤ë.
   
   \section{MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤Î´ðÁÃÃμ±}
   
   ¤³¤³¤Ç¤Ï¡¢MathLink ¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃŪ»ö¹à¤òÀâÌÀ¤¹¤ë¡£³µ¤Í¡¢Mathematica
   Book~\cite{Wolfram-1996} ¤äµÜÃÏ~\cite{miyachi-1998} ¤Ê¤É¤ò»²¾È¤¹¤ì¤Ð¤è¤¤
   ¤¬¡¢É¬¤º¤·¤â¤³¤ì¤é¤Î½ñÀÒ¤ËÌÀ³Î¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤(õ¤»¤Ð¸«¤Ä¤«¤ë
   ¤¬)¡£
   
   ¤Þ¤º MathLink ¤È¤Ï¡¢Wolfram ¤¬Ä󶡤¹¤ë¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ê¡¢Mathematica ¤Î¥Í¥Ã
   ¥È¥ï¡¼¥¯ÂбþÉôʬ¤ËÁêÅö¤¹¤ë¡£Mathematica Kernel ¤ÈÄÌ¿®¤¹¤ë¥×¥í¥°¥é¥à¤ò½ñ
   ¤³¤¦¤È¤¹¤ë¤Ê¤é¤Ð¡¢MathLink ¤òÍøÍѤ¹¤ëɬÍפ¬¤¢¤ë¡£MathLink ¤ÎÆâÉô¹½À®¤ÏÌÀ
   ¤é¤«¤Ë¤µ¤ì¤Æ¤¤¤Ê¤¤¤¬¡¢{\bf ÂçÉôʬ¤Ï¥Í¥Ã¥È¥ï¡¼¥¯Æ©²áŪ}¤Ç¤¢¤ë(Îã³°¤Ï¤¢¤ë)¡£
   
   ¤Þ¤º¡¢MathLink ¤ÎÄÌ¿®Ï©¤Ç¸ò´¹¤µ¤ì¤ë¥Ç¡¼¥¿¤¬²¿¤Ê¤Î¤«¡¢¤È¤¤¤¦¤³¤È¤òÍý²ò¤¹
   ¤ëɬÍפ¬¤¢¤ë¡£Åú¤Ï{\bf Mathematica¤Î¼°}¤Ç¤¢¤ë¡£¤³¤ì¤Ï¼«ÌÀ¤Ç¤Ï¤Ê¤¤¡£
   ¼¡¤Î¤è¤¦¤Ê¼°¤¬¤½¤ÎÎã¤Ç¤¢¤ë¡£
   \begin{verbatim}
       EvaluatePacket[Sin[\$VersionNumber]]
       ReturnPacket[Sin[x]]
       InputNamePacket["In[1]:= "]
       MenuPacket[1,"Interrupt> "]
   \end{verbatim}
   ¤³¤Î¤è¤¦¤Ê *Packet[] ¤ò \cite{Wolfram-1996}¤Ç¤Ï¥Ñ¥±¥Ã¥È¤È¸Æ¤ó¤Ç¤¤¤ë.
   MathLink ¤òÍѤ¤¤Æ¡¢³Î¼Â¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤ò¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¤³¤ì¤é¤Î¥Ñ¥±¥Ã¥È
   ¤òÀµ¤·¤¯°·¤¦É¬Íפ¬¤¢¤ë¡£
   
   ¤µ¤Æ¡¢Mathematica Kernel ¤Îµ¯Æ°¤ª¤è¤ÓÄÌ¿®Ï©¤Î³ÎΩ¤Ë¤Ä¤¤¤Æ¤Ï¾Êά¤¹¤ë¡£
   ¤¤¤Ã¤¿¤ó¡¢ÄÌ¿®Ï©¤¬³ÎΩ¤µ¤ì¤¿¤é¡¢
   \begin{enumerate}
   \item Mathematica Kernel ¤Ë¼°¤òÁ÷¤ë¡£
   \item Mathematica Kernel ¤«¤é¼°¤ò¼õ¤±¼è¤ë¡£
   \end{enumerate}
   ¤ò·«¤êÊÖ¤¹¤Î¤¬ MathLink ¤Ç¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤¢¤ë¡£
   
   \oxmath ¤Ï Mathematica ¤È°Ê²¼¤Î¤è¤¦¤Ê°ÕÌ£¤Ç{\bf ʸ»úÎó¥Ù¡¼¥¹}¤ÇÄÌ¿®¤·¤Æ
   ¤¤¤ë¡£¤Þ¤º Mathematica Kernel ¤Ëɾ²Á¤µ¤»¤¿¤¤¼°¤¬¡¢C ¸À¸ì¤Îʸ»úÎó¤ÇÍ¿¤¨¤é
   ¤ì¤Æ¤¤¤ë¤È¤·¤Æ¡¢link ¤Ç»Ø¤·¼¨¤¹Mathematica Kernel ¤Ë
   \begin{verbatim}
   int ml_evaluateStringByLocalParser(char *str)
   {
       MLPutFunction(link, "EvaluatePacket", 1);
       MLPutFunction(link, "ToExpression", 1);
       MLPutString(link, str);
       MLEndPacket(link);
   }
   \end{verbatim}
   ¤È¤·¤ÆÁ÷¿®¤¹¤ë¡£¥Ñ¥±¥Ã¥È¤Ï¡¢
   EvaluatePacket[ToExpression[{\it str}]] ¤Ç¤¢¤ë¡£
   
   É¾²Á¤µ¤ì¤¿·ë²Ì¤òÇÛÎó str ¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï¡¢Ã±½ã¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£
   \begin{verbatim}
   int receive_sample(char str[])
   {
       while (MLNextPacket(link) != RETURNPKT)
           MLNewPacket(link);
       switch(MLGetNext(link)) {
       MLTKSTR:
           MLGetString(link, &str);
           ...
       MLTKINT:
           ...
       }
       MLNewPacket(link);
   }
   \end{verbatim}
   ¤³¤ÎÎã¤Ç¤Ï ReturnPacket[] °Ê³°¤ò̵»ë¤·¤Æ¤¤¤ë¤¬¡¢¼ÂºÝ¤Ë¤Ï¤³¤ó¤Ê¤Ëñ½ã¤Ë¤Ï
   ½ñ¤±¤Ê¤¤¡£\oxmath ¤Î¼ÂÁõ¤Ç¤Ï¡¢mlo.c ¤Î
   ml\_next\_packet(), ml\_new\_packet(), ml\_read\_packet(),
   ml\_read\_returnpacket(), ml\_read\_menupacket(), ml\_read\_textpacket()
   ¤Ê¤É¤ò¸«¤Æ¤Û¤·¤¤¡£
   
 \section{Mathematica ¤È¤ÎÄÌ¿®(MathLink) ¤Ë¤Ä¤¤¤Æ}  \section{Mathematica ¤È¤ÎÄÌ¿®(MathLink) ¤Ë¤Ä¤¤¤Æ}
   
 CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é¤ì¤ë.  CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é¤ì¤ë.
Line 47  CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é
Line 151  CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é
 \begin{enumerate}  \begin{enumerate}
 \item CMO\_INT32 ¤Ï MLTKINT (¿ÇÜĹÀ°¿ô·¿).  \item CMO\_INT32 ¤Ï MLTKINT (¿ÇÜĹÀ°¿ô·¿).
 \item CMO\_STRING ¤Ï MLTKSTR (ʸ»úÎó·¿).  \item CMO\_STRING ¤Ï MLTKSTR (ʸ»úÎó·¿).
   \item CMO\_LIST ¤Ï MLTKFUNC (´Ø¿ô·¿).
 \item ¤½¤Î¾¤Î¥¿¥¤¥×¤Î CMO ¤Ï ToExpression[ʸ»úÎó] ¤È¤·¤ÆÁ÷¤ë.  \item ¤½¤Î¾¤Î¥¿¥¤¥×¤Î CMO ¤Ï ToExpression[ʸ»úÎó] ¤È¤·¤ÆÁ÷¤ë.
 \end{enumerate}  \end{enumerate}
   
Line 81  int main()
Line 186  int main()
 \]  \]
 ¤È¤¤¤¦É¾²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô¤¬Éü¸µ¤µ¤ì¤ë.  ¤È¤¤¤¦É¾²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô¤¬Éü¸µ¤µ¤ì¤ë.
   
 µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï,  µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð,
 ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð, int ¤È¤·¤Æ  int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ
 ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬,  ¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì
 ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤.  ¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë.  ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ
 ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ²Äǽ¤Ç¤¢¤ë.  ²Äǽ¤Ç¤¢¤ë.  (MathLink ¾å¤Ç¤É¤Î¤è¤¦¤Ê·Á¼°¤Ç¥Ç¡¼¥¿¸ò´¹¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤Î¾ð
 (MathLink ¾å¤Ç¤É¤Î¤è¤¦¤Ê·Á¼°¤Ç¥Ç¡¼¥¿¸ò´¹¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤Î  Êó¤Ï¼ê¸µ¤Ë¤¢¤ë»ñÎÁ¤«¤é¤ÏÆÀ¤é¤ì¤Ê¤«¤Ã¤¿)
 ¾ðÊó¤Ï¼ê¸µ¤Ë¤¢¤ë»ñÎÁ¤«¤é¤ÏÆÀ¤é¤ì¤Ê¤«¤Ã¤¿)  
   
 ¤·¤«¤·¤Ê¤¬¤é, ¤¿¤È¤¨ Mathematica ¦¤«¤éÀ°¿ô¥Ç¡¼¥¿¤¬Á÷¤é¤ì¤Æ¤¤¤¿¤È¤·¤Æ¤â,  ¤·¤«¤·¤Ê¤¬¤é, ¤¿¤È¤¨ Mathematica ¦¤«¤éÀ°¿ô¥Ç¡¼¥¿¤¬Á÷¤é¤ì¤Æ¤¤¤¿¤È¤·¤Æ¤â,
 ¤½¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤ËÊÑ´¹¤·¤Æ¼õ¤±¼è¤ë¤³¤È¤Ï MathLink ¤Îµ¡¹½¾å²Äǽ¤Ç¤¢¤ë.  ¤½¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤ËÊÑ´¹¤·¤Æ¼õ¤±¼è¤ë¤³¤È¤Ï MathLink ¤Îµ¡¹½¾å²Äǽ¤Ç¤¢¤ë.
Line 110  int main()
Line 214  int main()
 }  }
 \end{verbatim}  \end{verbatim}
   
 ¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¥Ç¡¼¥¿¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢  ¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¥Ç¡¼¥¿¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢¤½¤Îʸ»úÎó¤ò
 ¤½¤Îʸ»úÎó¤ò OX ¥µ¡¼¥Ð¦¤Ç CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£  OX ¥µ¡¼¥Ð¦¤Ç CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£
   
 ´ðËÜŪ¤Ë MathLink ¤Ç¤ÏÁ´¤Æ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ç¼õ¤±¼è¤ë¤·¤«ÊýË¡¤Ï¤Ê¤¤¡£¤É¤Î  ´ðËÜŪ¤Ë MathLink ¤Ç¤ÏÁ´¤Æ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ç¼õ¤±¼è¤ë¤·¤«ÊýË¡¤Ï¤Ê¤¤¡£¤É¤Î
 ¤è¤¦¤Ê¼ïÎà¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤«¤Ï¼õ¤±¼è¤ëÁ°¤ËÃΤ뤳¤È¤Ï¤Ç¤­¤ë¡£¥Ç¡¼¥¿¤Î·¿¤Ï¡¢  ¤è¤¦¤Ê¼ïÎà¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤«¤Ï¼õ¤±¼è¤ëÁ°¤ËÃΤ뤳¤È¤Ï¤Ç¤­¤ë¡£¥Ç¡¼¥¿¤Î·¿¤Ï¡¢
Line 125  Mathematica ¤«¤é¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Ï´ðËÜŪ¤Ë CMO\_STRING
Line 229  Mathematica ¤«¤é¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Ï´ðËÜŪ¤Ë CMO\_STRING
 ¤Þ¤À¡¢¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¤¬¡¢Â¿¹à¼°(CMO\_???\_PORINOMIAL)¤Î°·¤¤¤¬Æñ¤·¤¤¡£  ¤Þ¤À¡¢¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¤¬¡¢Â¿¹à¼°(CMO\_???\_PORINOMIAL)¤Î°·¤¤¤¬Æñ¤·¤¤¡£
   
 \section{¸Ä¡¹¤Î¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Î¼ÂÁõ}  \section{¸Ä¡¹¤Î¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Î¼ÂÁõ}
 ¸½ºß¡¢¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤Ï  
   ¸½ºß¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï
 SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction,  SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction,
 SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤±  SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤±
 ¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£  ¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£
   
   \section{\oxmath ¤Ø¤Î·×»»ÃæÃǵ¡Ç½¤Î¼ÂÁõ}
   
   \noindent
   {\bf Ãí°Õ: {\tt ox\_math\_interruption.tex}
   ¤Ë Risa/Asir Conference (2003) ¤Ç¤Î¹Ö±é¸¶¹Æ¤¬¤¢¤ë.}
   
   OpenXM ¥×¥í¥È¥³¥ë¤Ï¡¢¥¨¥ó¥¸¥ó¤ËÂФ·¤Æ¡¢·×»»ÃæÃǵ¡Ç½¤òÍ׵᤹¤ë¡£\oxmath
   ¤Î¤è¤¦¤Ê wrapper ¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤Êµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤Î¤Ï°ìÈ̤ˤÏÆñ
   ¤·¤¤¤¬¡¢MathLink ¤Ë¤Ï Mathematica Book~\cite{Wolfram-1996} ¤Ë½ñ¤«¤ì¤Æ¤¤
   ¤Ê¤¤µ¡Ç½¤¬¤¢¤ê(\cite{MathSource-Google1}, \cite{MathSource-Google2},
   \cite{Math-Output1})¡¢¤½¤Î¤Ò¤È¤Ä¤òÍѤ¤¤Æ¡¢\oxmath ¤Ë·×»»ÃæÃǵ¡Ç½¤ò¼ÂÁõ¤·
   ¤¿¡£¤³¤ÎÀá¤Ç¤Ï¡¢¤½¤Î¼ÂÁõ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£
   
   Mathematica Kernel ¤ËÂФ¹¤ë³ä¤ê¹þ¤ß¤Ï¡¢
   \begin{enumerate}
   \item MLPutMessage ¤Ç Mathematica Kernel ¤Ë MLInterruptMessage ¤òÁ÷¤ë¡£
   \item ÄÌ¿®Ï©¤Î¸å»ÏËö¤ò¹Ô¤¤¡¢ºÇ½ªÅª¤Ë ReturnPacket[\$Aborted] ¤ò¼õ¤±¼è¤ë¡£
   \end{enumerate}
   ¤³¤È¤Ç¤Ê¤µ¤ì¤ë¡£
   MLPutMessage ¤Ï MathLink ¤ÎÈó¸ø³«´Ø¿ô¤Ç¥Í¥Ã¥È¥ï¡¼¥¯Æ©²áÀ­¤Ï¤Ê¤¤¡£
   Unix ¤È Windows ¤Ç¤Ï°Û¤Ê¤ë¤¬¡¢Unix ¤Î¾ì¹ç¡¢MLInterruptMessage ¤Î¼ÂÂΤÏ
   SIGINT ¤Ç¤¢¤ë¡£
   ÄÌ¿®Ï©¤Î¸å»ÏËö¤Ë¤Ï¡¢{\bf Mathematica Kernel ¤Î¥Ð¡¼¥¸¥ç¥ó°Í¸À­¤¬¤¢¤ë}¤Î¤Ç¡¢
   ¤½¤ì¤ò²óÈò¤¹¤ë¤È¡¢·ë¶É¡¢¼¡¤Î¼ê½ç¤Ë¤Ê¤ë¡£
   \begin{enumerate}
   \item MLPutMessage(link, MLInterruptMessage)
   \item MenuPacket[1,"Interrupt> "] ¤ò¼õ¤±¼è¤ì¤Ð·×»»¤¬ÃæÃǤµ¤ì¤Æ¤¤¤ë
   \item MLPutString(link, "$\backslash$n")
   \item MenuPacket[0,"Interrupt> "] ¤ò¼õ¤±¼è¤ë
   \item MLPutString(link, "a")
   \item TextPacket["..."] ¤ò¼õ¤±¼è¤ë
   \item EvaluatePacket[0] ¤òÁ÷¤Ã¤Æ¡¢ReturnPacket[...] ¤ò¤Õ¤¿¤Ä¼õ¤±¼è¤ë¡£
   ºÇ½é¤Î¤â¤Î¤¬ ReturnPacket[\$Aborted] ¤Ç¤¢¤ë¡£
   \end{enumerate}
   
   ºÇ¸å¤Î¼ê½ç¤òÀâÌÀ¤¹¤ë¡£
   ¤³¤³¤Ç¡¢ReturnPacket[\$Aborted] ¤¬ÁÇľ¤ËÊ֤äƤ¯¤ì¤Ð¤¤¤¤¤Î¤Ç¤¢¤ë¤¬¡¢
   ¥Ð¡¼¥¸¥ç¥ó 3.x ¤Ç¤ÏÊ֤äƤ¯¤ë¤Î¤Ë¡¢¥Ð¡¼¥¸¥ç¥ó4.x¤Ç¤Ï¡¢²¿¸Î¤«¡¢
   Ê֤äƤ³¤º¡¢¼¡¤Î·×»»¤ò¹Ô¤¦¤È¤­¡¢¤Õ¤¿¤Ä¤Þ¤È¤á¤ÆÊ֤äƤ¯¤ë¡£
   ¤è¤Ã¤Æ¡¢¥À¥ß¡¼¤ËEvaluatePacket[0] ¤òÁ÷¤ë¤Î¤Ç¤¢¤ë¡£
   
 \section{Mathematica ¤ò OX ¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ë}  \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}  \begin{verbatim}
 In[1]:= Install["math2ox"]  In[1]:= Install["math2ox"]
 \end{verbatim}  \end{verbatim}
 ¤È¤·¤Æ¡¢math2ox ¤ò¥í¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£  ¤È¤·¤Æ¡¢math2ox ¤ò¥í¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
 Mathematica ¤Ë¿·¤¿¤ËÄêµÁ¤µ¤ì¤ë¥³¥Þ¥ó¥É¤Ï¡¢  Mathematica ¤Ë¿·¤¿¤ËÄêµÁ¤µ¤ì¤ë¥³¥Þ¥ó¥É¤Ï¡¢
 {\tt OxStart[s\_String], OxStartInsecure[s\_String],  {\tt OxStart[s\_String], OxStartInsecure[s\_String, p\_Integer, q\_Integer],
 OxExecute[s\_String], OxParse[s\_String], OxReceive[],  OxExecuteString[s\_String], OxParse[s\_String], OxGet[],
 OxPopCMO[], OxPopString[], OxClose[], OxReset[]}  OxPopCMO[], OxPopString[], OxClose[], OxReset[]}
 ¤Î9¤Ä¤Ç¤¢¤ë¡£  ¤Î9¤Ä¤Ç¤¢¤ë¡£
   
Line 178  OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ
Line 324  OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ
 ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë  ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë
 ¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï  ¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï
 \begin{verbatim}  \begin{verbatim}
 In[5] := OxReceive[]  In[5] := OxGet[]
 \end{verbatim}  \end{verbatim}
 ¤È¤¹¤ë¤À¤±¤Ç¤è¤¤¡£Ê֤äƤ¯¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï CMO ¤ËÂбþ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£  ¤È¤¹¤ë¤À¤±¤Ç¤è¤¤¡£Ê֤äƤ¯¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï CMO ¤ËÂбþ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
 \begin{verbatim}  \begin{verbatim}
 In[6] := OxPopCMO[]  In[6] := OxPopCMO[]
 \end{verbatim}  \end{verbatim}
 ¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxReceive[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£  ¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxGet[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£
   
 ·×»»¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï {\tt OxExecute[]}  ·×»»¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï {\tt OxExecute[]}
 (SM\_executeStringByLocalParser) ¤«¡¢Å¬ÀÚ¤Ê OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤³¤È¡£  (SM\_executeStringByLocalParser) ¤«¡¢Å¬ÀÚ¤Ê OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤³¤È¡£
Line 221  typedef unsigned long int mp_limb_t;  
Line 367  typedef unsigned long int mp_limb_t;  
 \begin{thebibliography}{99}  \begin{thebibliography}{99}
 \bibitem{Openxxx-1998}  \bibitem{Openxxx-1998}
 ÌîϤÀµ¹Ô, ¹â»³¿®µ£.  ÌîϤÀµ¹Ô, ¹â»³¿®µ£.
 {Open xxx ¤ÎÀ߷פȼÂÁõ, xxx = asir,kan}, 1998/10/11  {Open XM ¤ÎÀ߷פȼÂÁõ --- Open message eXchange protocol for Mathematics},
   November 22, 1999, Revised March 4, 2005.
 \bibitem{Ohara-Takayama-Noro-1999}  \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}  \bibitem{Wolfram-1992}
 ¥¦¥ë¥Õ¥é¥à.  ¥¦¥ë¥Õ¥é¥à.
 {Mathematica (ÆüËܸìÈÇ)},  {Mathematica (ÆüËܸìÈÇ)},
Line 233  typedef unsigned long int mp_limb_t;  
Line 380  typedef unsigned long int mp_limb_t;  
 Stephen Wolfram.  Stephen Wolfram.
 {The Mathematica Book}, Third edition,  {The Mathematica Book}, Third edition,
 Wolfram Media/Cambridge University Press, 1996.  Wolfram Media/Cambridge University Press, 1996.
   
 \bibitem{miyachi-1998}  \bibitem{miyachi-1998}
 µÜÃÏÎÏ.  µÜÃÏÎÏ.
 {Mathematica ¤Ë¤è¤ë¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°},  {Mathematica ¤Ë¤è¤ë¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°},
 ´äÇÈ¥³¥ó¥Ô¥å¡¼¥¿¥µ¥¤¥¨¥ó¥¹,  ´äÇÈ¥³¥ó¥Ô¥å¡¼¥¿¥µ¥¤¥¨¥ó¥¹,
 ´äÇȽñŹ, 1998.  ´äÇȽñŹ, 1998.
   \bibitem{MathSource-Google1}
   Todd Gayley.
   [mg17015] in MathArchive,
   1999 April.
   \bibitem{MathSource-Google2}
   ÀΤΠMathLink ¤Ë¤¢¤Ã¤¿ MLSignal ¤Î²òÀâ.
   (°ÊÁ°¡¢Google ¤Î¥­¥ã¥Ã¥·¥å¤Ë¤¢¤Ã¤¿¤¬¡¢¤â¤¦¤Ê¤¤)
   \bibitem{Math-Output1}
   mathlink.h, libMLa ¤Î¥·¥ó¥Ü¥ëɽ, mprep ¤ÎÀ¸À®¤¹¤ë¥½¡¼¥¹.
 \end{thebibliography}  \end{thebibliography}
   
 \end{document}  \end{document}

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>