[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.8 and 1.9

version 1.8, 2005/07/19 15:58:37 version 1.9, 2005/07/20 16:24:56
Line 1 
Line 1 
 %#!platex  %#!platex
 %% $OpenXM: OpenXM/src/ox_math/documents/ox_math.tex,v 1.7 2002/04/17 01:09:23 takayama Exp $  %% $OpenXM: OpenXM/src/ox_math/documents/ox_math.tex,v 1.8 2005/07/19 15:58:37 ohara Exp $
   
 \documentclass{jarticle}  \documentclass{jarticle}
 \title{Mathematica ¤Î Open XM ²½¤Ë¤Ä¤¤¤Æ  \title{Mathematica ¤Î Open XM ²½¤Ë¤Ä¤¤¤Æ
 % \\ {\small --- Open Mathematica ¥µ¡¼¥Ð¤ÎÆâÉô¹½À® ---}  % \\ {\small --- Open Mathematica ¥µ¡¼¥Ð¤ÎÆâÉô¹½À® ---}
 }  }
 %\date{January 19, 1999}  \date{
 %\date{July 12, 1999}  %January 19, 1999
 \date{November 25, 1999\\  %July 12, 1999
   November 25, 1999
 (Revised July 20, 2005)  (Revised July 20, 2005)
 }  }
 \author{¾®¸¶¸ùǤ}  \author{¾®¸¶¸ùǤ}
Line 17 
Line 18 
 \begin{document}  \begin{document}
 \maketitle  \maketitle
   
 \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{²æ¡¹¤¬Ä󶡤¹¤ë¤â¤Î}  \section{²æ¡¹¤¬Ä󶡤¹¤ë¤â¤Î}
   
 ²æ¡¹¤¬Ä󶡤¹¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥é¥à¤È¤½¤Î¥½¡¼¥¹¤Ç¤¢¤ë¡£°ì¤ÄÌÜ¤Ï  ²æ¡¹¤¬Ä󶡤¹¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥é¥à¤È¤½¤Î¥½¡¼¥¹¤Ç¤¢¤ë¡£°ì¤ÄÌܤÏ
 \oxmath ¥×¥í¥°¥é¥à¤Ç¤¢¤ê¡¢¤³¤ì¤Ï OpenXM ¥µ¡¼¥Ð¤Î°ì¼ï¤Ç¤¢¤ë¡£Æó¤Ä  \oxmath ¥×¥í¥°¥é¥à¤Ç¤¢¤ê¡¢¤³¤ì¤Ï OpenXM ¥µ¡¼¥Ð¤Î°ì¼ï¤Ç¤¢¤ë¡£Æó¤ÄÌܤÏ
 ÌÜ¤Ï {\tt math2ox} ¤Ç¤¢¤ê¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¡£  {\tt math2ox} ¤Ç¤¢¤ê¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¡£
   
 Æ°ºî´Ä¶­¤Ï Solaris, Linux ¤ª¤è¤Ó Windows¡¢ÂоݤȤ·¤Æ¤¤¤ë Mathematica ¤Î  Æ°ºî´Ä¶­¤Ï Solaris, Linux ¤ª¤è¤Ó Windows¡¢ÂоݤȤ·¤Æ¤¤¤ë Mathematica ¤Î
 ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢3.0 ¡Á 4.2 ¤Þ¤Ç¤Ç¤¢¤ë¡£¥Ð¡¼¥¸¥ç¥ó 5.x ¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤¬½ê  ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢3.0 ¡Á 4.2 ¤Þ¤Ç¤Ç¤¢¤ë¡£¥Ð¡¼¥¸¥ç¥ó 5.x ¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤¬½ê
Line 61  Mathematica Kernel ¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£Mathematica Ker
Line 43  Mathematica Kernel ¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£Mathematica Ker
   
 ¤µ¤é¤Ë \oxmath ¤Ë¤Ï·×»»ÃæÃǵ¡Ç½¤¬É¬ÍפǤ¢¤ë¤¬¡¢¤³¤Îµ¡Ç½¤Ï 2003ǯ¤Î¤Ï¤¸¤á¤Ë¼ÂÁõ¤µ¤ì¤¿¡£  ¤µ¤é¤Ë \oxmath ¤Ë¤Ï·×»»ÃæÃǵ¡Ç½¤¬É¬ÍפǤ¢¤ë¤¬¡¢¤³¤Îµ¡Ç½¤Ï 2003ǯ¤Î¤Ï¤¸¤á¤Ë¼ÂÁõ¤µ¤ì¤¿¡£
   
 \section{OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó}  ¼¡¤Ë¡¢Open XM µ¬Ìó¤è¤ê \oxmath ¤Ï¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
 ¥¹¥¿¥Ã¥¯¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï cmo ·¿¤ÎÊÑ¿ô¡¢¤¢¤ë¤¤¤Ï¤½¤ÎÇÉÀ¸¥¯¥é¥¹¤Ç¤¢¤ë.  ¥¹¥¿¥Ã¥¯¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï cmo ·¿¤ÎÊÑ¿ô¡¢¤¢¤ë¤¤¤Ï¤½¤ÎÇÉÀ¸¥¯¥é¥¹¤Ç¤¢¤ë.
 ¤Ä¤Þ¤ê¡¢Open XM µ¬Ìó¤ÇÄê¤á¤é¤ì¤¿¥Ç¡¼¥¿·Á¼°¤òήÍѤ·¤Æ¤¤¤ë.  ¤Ä¤Þ¤ê¡¢Open XM µ¬Ìó¤ÇÄê¤á¤é¤ì¤¿¥Ç¡¼¥¿·Á¼°¤òήÍѤ·¤Æ¤¤¤ë.
 % cmo ¹½Â¤ÂΤª¤è¤Ó¤½¤ÎÇÉÀ¸¥¯¥é¥¹¤Ï/home/ohara/openxxx/lib/oxlib.h ¤ÇÄêµÁ¤µ  
 % ¤ì¤Æ¤¤¤ë.  
 ¤³¤ÎÊýË¡¤ÎÍøÅÀ¤Ï Open XM ¥×¥í¥È¥³¥ë¤òÄ̤·¤ÆÄÌ¿®¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ  ¤³¤ÎÊýË¡¤ÎÍøÅÀ¤Ï Open XM ¥×¥í¥È¥³¥ë¤òÄ̤·¤ÆÄÌ¿®¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ
 Æä˥ǡ¼¥¿¤ÎÊÑ´¹¤òɬÍפȤ·¤Ê¤¤¤³¤È¤Ç¤¢¤ë.  ¤¹¤Ê¤ï¤ÁCMO ¤Î³Æ¥Ç¡¼¥¿¥¿¥¤¥×  Æä˥ǡ¼¥¿¤ÎÊÑ´¹¤òɬÍפȤ·¤Ê¤¤¤³¤È¤Ç¤¢¤ë.  ¤¹¤Ê¤ï¤ÁCMO ¤Î³Æ¥Ç¡¼¥¿¥¿¥¤¥×
 ¤Ï Open Mathematica¥µ¡¼¥Ð(¥¹¥¿¥Ã¥¯¥Þ¥·¥ó)¤ÎÆâÉô¤Ç¤â, CMO ¤È¤·¤ÆÊÝ»ý¤¹¤ë  ¤Ï \oxmath ¤ÎÆâÉô¤Ç¤â, CMO ¤È¤·¤ÆÊÝ»ý¤¹¤ë
 ¤ï¤±¤Ç¤¢¤ë.  ¤ï¤±¤Ç¤¢¤ë.
   
 ¥µ¡¼¥Ð¤Î³Æ´Ø¿ô¤Ï cmo* ¤ò¼õ¤±¼è¤ê¡¢¥¿¥°¤ò¤ß¤Æ¼ÂºÝ¤Î¥¯¥é¥¹¤¬²¿¤Ç¤¢¤ë¤«¤ò  ¥µ¡¼¥Ð¤Î³Æ´Ø¿ô¤Ï cmo* ¤ò¼õ¤±¼è¤ê¡¢¥¿¥°¤ò¤ß¤Æ¼ÂºÝ¤Î¥¯¥é¥¹¤¬²¿¤Ç¤¢¤ë¤«¤ò
 ÃΤꡢưºî¤ò·èÄꤹ¤ë.  ÃΤꡢưºî¤ò·èÄꤹ¤ë.
   
 \section{MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤Î´ðÁÃÃμ±}  ¸½ºß¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Ï
   SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction,
   SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤±
   ¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£
   
 ¤³¤³¤Ç¤Ï¡¢MathLink ¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃŪ»ö¹à¤òÀâÌÀ¤¹¤ë¡£³µ¤Í¡¢Mathematica  \section{MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤È \oxmath}
   
   ºÇ½é¤Ë¡¢MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃŪ»ö¹à¤òÀâÌÀ¤·¡¢
   ¼¡¤Ë \oxmath ¤Î Mathematica Kernel ¤È¤ÎÄÌ¿®Éôʬ¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤ë¡£
   
   MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Ï¡¢³µ¤Í¡¢Mathematica
 Book~\cite{Wolfram-1996} ¤äµÜÃÏ~\cite{miyachi-1998} ¤Ê¤É¤ò»²¾È¤¹¤ì¤Ð¤è¤¤  Book~\cite{Wolfram-1996} ¤äµÜÃÏ~\cite{miyachi-1998} ¤Ê¤É¤ò»²¾È¤¹¤ì¤Ð¤è¤¤
 ¤¬¡¢É¬¤º¤·¤â¤³¤ì¤é¤Î½ñÀÒ¤ËÌÀ³Î¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤(õ¤»¤Ð¸«¤Ä¤«¤ë  ¤¬¡¢É¬¤º¤·¤â¤³¤ì¤é¤Î½ñÀÒ¤ËÌÀ³Î¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤(õ¤»¤Ð¸«¤Ä¤«¤ë
 ¤¬)¡£  ¤¬)¡£
Line 111  MathLink ¤òÍѤ¤¤Æ¡¢³Î¼Â¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤ò¤¹¤ë¤¿¤á¤Ë¤Ï¡
Line 99  MathLink ¤òÍѤ¤¤Æ¡¢³Î¼Â¤Ê¥×¥í¥°¥é¥ß¥ó¥°¤ò¤¹¤ë¤¿¤á¤Ë¤Ï¡
 ¤¤¤ë¡£¤Þ¤º Mathematica Kernel ¤Ëɾ²Á¤µ¤»¤¿¤¤¼°¤¬¡¢C ¸À¸ì¤Îʸ»úÎó¤ÇÍ¿¤¨¤é  ¤¤¤ë¡£¤Þ¤º Mathematica Kernel ¤Ëɾ²Á¤µ¤»¤¿¤¤¼°¤¬¡¢C ¸À¸ì¤Îʸ»úÎó¤ÇÍ¿¤¨¤é
 ¤ì¤Æ¤¤¤ë¤È¤·¤Æ¡¢link ¤Ç»Ø¤·¼¨¤¹Mathematica Kernel ¤Ë  ¤ì¤Æ¤¤¤ë¤È¤·¤Æ¡¢link ¤Ç»Ø¤·¼¨¤¹Mathematica Kernel ¤Ë
 \begin{verbatim}  \begin{verbatim}
 int ml_evaluateStringByLocalParser(char *str)  int ml_evaluateStringByLocalParser(char *string)
 {  {
     MLPutFunction(link, "EvaluatePacket", 1);      MLPutFunction(link, "EvaluatePacket", 1);
     MLPutFunction(link, "ToExpression", 1);      MLPutFunction(link, "ToExpression", 1);
     MLPutString(link, str);      MLPutString(link, string);
     MLEndPacket(link);      MLEndPacket(link);
 }  }
 \end{verbatim}  \end{verbatim}
 ¤È¤·¤ÆÁ÷¿®¤¹¤ë¡£¥Ñ¥±¥Ã¥È¤Ï¡¢  ¤È¤·¤ÆÁ÷¿®¤¹¤ë¡£¥Ñ¥±¥Ã¥È¤Ï¡¢
 EvaluatePacket[ToExpression[{\it str}]] ¤Ç¤¢¤ë¡£  EvaluatePacket[ToExpression[{\it string}]] ¤Ç¤¢¤ë¡£
   ¤³¤³¤Ç ToExpression ¤Ï Mathematica ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¢¤ê,
   Ê¸»úÎó {\it string} ¤ò°ú¿ô¤È¤·¤Æ Mathematica ¤Î¼°¤òÊÖ¤¹.
   (\cite[pp.407]{Wolfram-1996})
   
 É¾²Á¤µ¤ì¤¿·ë²Ì¤òÇÛÎó str ¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï¡¢Ã±½ã¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£  É¾²Á¤µ¤ì¤¿·ë²Ì¤òÇÛÎó str ¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï¡¢Ã±½ã¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£
 \begin{verbatim}  \begin{verbatim}
Line 144  ml\_next\_packet(), ml\_new\_packet(), ml\_read\_packe
Line 135  ml\_next\_packet(), ml\_new\_packet(), ml\_read\_packe
 ml\_read\_returnpacket(), ml\_read\_menupacket(), ml\_read\_textpacket()  ml\_read\_returnpacket(), ml\_read\_menupacket(), ml\_read\_textpacket()
 ¤Ê¤É¤ò¸«¤Æ¤Û¤·¤¤¡£  ¤Ê¤É¤ò¸«¤Æ¤Û¤·¤¤¡£
   
 \section{Mathematica ¤È¤ÎÄÌ¿®(MathLink) ¤Ë¤Ä¤¤¤Æ}  \bigskip
   
 CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é¤ì¤ë.  Ê¸»úÎó¤Ë¤è¤é¤º¡¢CMO ¤òÁ÷¤ë¤³¤È¤â¤Ç¤­¤ë.
   
 \begin{enumerate}  \oxmath ¤Ï, CMO ¤ò¼¡¤Îµ¬Â§¤Ç MathLink ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÊÑ´¹¤¹¤ë.
 \item CMO\_INT32 ¤Ï MLTKINT (¿ÇÜĹÀ°¿ô·¿).  \[
 \item CMO\_STRING ¤Ï MLTKSTR (ʸ»úÎó·¿).  \begin{array}{lcl}
 \item CMO\_LIST ¤Ï MLTKFUNC (´Ø¿ô·¿).  \mbox {CMO\_INT32} & \to & \mbox{MLTKINT}, \\
 \item ¤½¤Î¾¤Î¥¿¥¤¥×¤Î CMO ¤Ï ToExpression[ʸ»úÎó] ¤È¤·¤ÆÁ÷¤ë.  \mbox {CMO\_STRING} & \to & \mbox{MLTKSTR}, \\
 \end{enumerate}  \mbox {CMO\_LIST} & \to & \mbox{MLTKFUNC}, \\
   \mbox {¤½¤Î¾¤Î CMO} & \to & \mbox{ToExpression[ʸ»úÎó]}
   \end{array}
   \]
   µÕ¤Ë MathLink ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¼¡¤Îµ¬Â§¤Ç CMO ¤ËÊÑ´¹¤µ¤ì¤ë.
   \[
   \begin{array}{lcl}
   \mbox {MLTKERR} & \to & \mbox{CMO\_ERROR2}, \\
   \mbox {MLTKINT} & \to & \mbox{CMO\_ZZ}, \\
   \mbox {MLTKSTR} & \to & \mbox{CMO\_STRING},\\
   \mbox {MLTKREAL} & \to & \mbox{CMO\_IEEE\_DOUBLE\_FLOAT}, \\
   \mbox {MLTKSYM} & \to & \mbox{CMO\_STRING}, \\
   \mbox {MLTKFUNC} & \to & \mbox{CMO\_LIST}
   \end{array}
   \]
   ¤³¤ÎÊÑ´¹µ¬Â§¤ÏÌÀ¤é¤«¤Ë²ÄµÕ¤Ç¤Ê¤¤¤Î¤ÇÃí°Õ.
   
 ¾å¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë ToExpression ¤Ï Mathematica ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¢¤ê,  \bigskip
 Ê¸»úÎó¤ò°ú¿ô¤È¤·¤Æ Mathematica ¤Î¼°¤òÊÖ¤¹.  
 (\cite[pp.407]{Wolfram-1996})  
   
 ¤³¤³¤Ç°ì¤ÄÃí°Õ¤ò¤·¤Æ¤ª¤¯.  CMO\_ZZ ¤ò¤â¤È¤Ë¼ÂÁõ¤òÀâÌÀ¤·¤è¤¦.
 MathLink ¤Ç¤Ï, int ·¿°Ê³°¤Î¥Ç¡¼¥¿¤ò MLTKINT ¤È¤·¤ÆÁ÷¤ë¤³¤È¤Ï»ÄÇ°¤Ê¤¬¤é¤Ç  ¤Þ¤º, MLTKINT ¤Ï¿ÇÜĹÀ°¿ô·¿¤Ç¤¢¤ë¤¬, MathLink ¤ÎÆâÉô¥Ç¡¼¥¿¹½Â¤¤¬
 ¤­¤Ê¤¤.  ¤·¤¿¤¬¤Ã¤Æ CMO\_ZZ ¤òľÀÜ, À°¿ô·¿¤Ç¤¢¤ë¤È Mathematica ¤Ë»×¤ï¤»  ¸ø³«¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á,
 ¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤Î¤Ç¤¢¤ë.  ¤½¤³¤Ç, ¼¡¤Î¤è¤¦¤ÊÊýË¡¤ò¤È¤ë¤³¤È¤Ë¤Ê¤ë.  CMO\_ZZ (¤¢¤ë¤¤¤Ï GNU GMP library ¤ÎÀ°¿ô)¤òľÀÜ MLTKINT ¤Ë
   ÊÑ´¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤.  ¤Ä¤Þ¤ê CMO\_ZZ ¤¬À°¿ô·¿¤Ç¤¢¤ë¤È MathLink ¤ËÃΤé
   ¤»¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤.  ¤½¤³¤Ç, ¼¡¤Î¤è¤¦¤ÊÊýË¡¤ò¤È¤ë¤³¤È¤Ë¤Ê¤ë.
   
 \begin{verbatim}  \begin{verbatim}
 char *CONVERT_ZZ_TO_CSTRING(cmo_t zz);  export MLINK link;
   int ml_send_cmo_zz(cmo *m)
 int main()  
 {  {
   char *s;      MLPutFunction(link, "ToExpression", 1);
   cmo_t zz;  /* zz.tag == CMO_ZZ */      MLPutString(link, new_string_set_cmo(m));
   MLINK lp;  /* MathLink Socket */  
   ...  
   s = CONVERT_ZZ_TO_CSTRING(zz);  
   MLPutFunction(lp, "ToExpression", 1);  
   MLPutString(lp, s);  
   ...  
 }  }
 \end{verbatim}  \end{verbatim}
   
 ¤³¤Î¤è¤¦¤Ë¤¹¤ë¤È, Mathematica ¦¤Ç¤Ï, Î㤨¤Ð  ¤³¤Î¤è¤¦¤Ë¤¹¤ë¤È, Mathematica ¦¤Ç¤Ï, Î㤨¤Ð ToExpression["1234567890"]
 \[  ¤Îɾ²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô 1234567890 ¤¬Éü¸µ¤µ¤ì¤ë.
 \mbox{\tt ToExpression["1234567890"]}  
 \]  
 ¤È¤¤¤¦É¾²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô¤¬Éü¸µ¤µ¤ì¤ë.  
   
 µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð,  µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿Â¿ÇÜĹÀ°¿ô¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð,
 int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ  int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ
 ¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì  ¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤­¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì
 ¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë.  ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ  ¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë.  ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ
Line 198  int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼
Line 194  int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼
   
 ¤³¤ì¤òÍøÍѤ·¤Æ, ²æ¡¹¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤ÆÀ°¿ô¤ò¼õ¤±¼è¤ë.  ¤³¤ì¤òÍøÍѤ·¤Æ, ²æ¡¹¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤ÆÀ°¿ô¤ò¼õ¤±¼è¤ë.
 \begin{verbatim}  \begin{verbatim}
 cmo_t CONVERT_CSTRING_TO_ZZ(char *s);  export MLINK link;
   cmo_zz* ml_receive_cmo_zz()
 int main()  
 {  {
   MLINK lp;      cmo_zz *zz = NULL;
   char *s;      if(MLGetNext(link) == MLTKINT) {
   cmo_t zz;          char *s;
   ...          MLGetString(link, &s);
   if(MLGetNext(lp) == MLTHINT) {          zz = new_cmo_zz_set_string(s);
     MLGetString(lp, &s);          MLDisownString(link, s);
     zz = CONVERT_CSTRING_TO_ZZ(s);  /* zz.tag == CMO_ZZ */      }
   }      return zz;
   ...  }
 }  
 \end{verbatim}  \end{verbatim}
   
 ¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¥Ç¡¼¥¿¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢¤½¤Îʸ»úÎó¤ò  ¤Ä¤Þ¤ê¡¢Mathematica ¤«¤éÀ°¿ô¤òʸ»úÎó¤È¤·¤Æ¼õ¤±¼è¤ê¡¢¤½¤Îʸ»úÎó¤ò
 OX ¥µ¡¼¥Ð¦¤Ç CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£  \oxmath ¤¬ CMO\_ZZ ¤Ëľ¤·¤Æ¤¤¤ë¡£
   
 ´ðËÜŪ¤Ë MathLink ¤Ç¤ÏÁ´¤Æ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ç¼õ¤±¼è¤ë¤·¤«ÊýË¡¤Ï¤Ê¤¤¡£¤É¤Î  % ¤³¤Î¤è¤¦¤Ë´ðËÜŪ¤Ë MathLink ¤Ç¤ÏÁ´¤Æ¤Î¥Ç¡¼¥¿¤òʸ»úÎó¤Ç¼õ¤±¼è¤ë¤·¤«ÊýË¡¤Ï
 ¤è¤¦¤Ê¼ïÎà¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤«¤Ï¼õ¤±¼è¤ëÁ°¤ËÃΤ뤳¤È¤Ï¤Ç¤­¤ë¡£¥Ç¡¼¥¿¤Î·¿¤Ï¡¢  % ¤Ê¤¤¡£¤É¤Î¤è¤¦¤Ê¼ïÎà¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤«¤Ï¼õ¤±¼è¤ëÁ°¤ËÃΤ뤳¤È¤Ï¤Ç¤­¤ë¡£¥Ç¡¼
 MLTKERR(¥¨¥é¡¼), MLTKINT(À°¿ô), MLTKSTR(ʸ»úÎó), MLREAL(¼Â¿ô), MLTKSYM  % ¥¿¤Î·¿¤Ï¡¢MLTKERR(¥¨¥é¡¼), MLTKINT(À°¿ô), MLTKSTR(ʸ»úÎó), MLTKREAL(¼Â¿ô),
 (¥·¥ó¥Ü¥ë), MLTKFUNC(´Ø¿ô) ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£¤³¤Î¤è¤¦¤Ê»ö¾ð¤Ç  % MLTKSYM (¥·¥ó¥Ü¥ë), MLTKFUNC(´Ø¿ô) ¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£¤³¤Î¤è¤¦¤Ê»ö¾ð¤Ç
 Mathematica ¤«¤é¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Ï´ðËÜŪ¤Ë CMO\_STRING¤È¤·¤Æ¥¹¥¿¥Ã¥¯¤ËÀÑ  % Mathematica ¤«¤é¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤Ï´ðËÜŪ¤Ë CMO\_STRING¤È¤·¤Æ¥¹¥¿¥Ã¥¯¤ËÀÑ
 ¤Þ¤ì¤ë¤Î¤Ç¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤½¤Îʸ»úÎó¤Î²ò¼á¤ò¤¹¤ëɬÍפ¬¤Ç¤Æ¤¯¤ë¡£  % ¤Þ¤ì¤ë¤Î¤Ç¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¤½¤Îʸ»úÎó¤Î²ò¼á¤ò¤¹¤ëɬÍפ¬¤Ç¤Æ¤¯¤ë¡£¤·¤«¤·
   % ¤Ê¤¬¤é¡¢Á´¤Æ¤Î MathLink ¥ª¥Ö¥¸¥§¥¯¥È¤¬Ê¸»úÎó¤ËÊÑ´¹¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢
   % ¤½¤Î¼è¤ê°·¤¤¤Ë¤ÏÃí°Õ¤òÍפ¹¤ë¡£
   
 ¤·¤«¤·¤Ê¤¬¤é¡¢Á´¤Æ¤Î MathLink ¥ª¥Ö¥¸¥§¥¯¥È¤¬Ê¸»úÎó¤ËÊÑ´¹¤Ç¤­¤ë¤ï¤±¤Ç¤Ï¤Ê  
 ¤¤¤Î¤Ç¡¢¤½¤Î¼è¤ê°·¤¤¤Ë¤ÏÃí°Õ¤òÍפ¹¤ë¡£  
 ¤Þ¤À¡¢¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¤¬¡¢Â¿¹à¼°(CMO\_???\_PORINOMIAL)¤Î°·¤¤¤¬Æñ¤·¤¤¡£  
   
 \section{¸Ä¡¹¤Î¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Î¼ÂÁõ}  
   
 ¸½ºß¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï  
 SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction,  
 SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤±  
 ¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£  
   
 \section{\oxmath ¤Ø¤Î·×»»ÃæÃǵ¡Ç½¤Î¼ÂÁõ}  \section{\oxmath ¤Ø¤Î·×»»ÃæÃǵ¡Ç½¤Î¼ÂÁõ}
   
 \noindent  \noindent
Line 289  math2ox ¤¬Å¬Àڤ˾ðÊó¤òÊÑ´¹¤·¤Ê¤¬¤é¤ä¤ê¤È¤ê¤¹¤ë¡£¤½¤Î°Õ
Line 274  math2ox ¤¬Å¬Àڤ˾ðÊó¤òÊÑ´¹¤·¤Ê¤¬¤é¤ä¤ê¤È¤ê¤¹¤ë¡£¤½¤Î°Õ
 In[1]:= Install["math2ox"]  In[1]:= Install["math2ox"]
 \end{verbatim}  \end{verbatim}
 ¤È¤·¤Æ¡¢math2ox ¤ò¥í¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£  ¤È¤·¤Æ¡¢math2ox ¤ò¥í¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
 Mathematica ¤Ë¿·¤¿¤ËÄêµÁ¤µ¤ì¤ë¥³¥Þ¥ó¥É¤Ï¡¢  Mathematica ¤Ë¿·¤¿¤ËÄêµÁ¤µ¤ì¤ë¥³¥Þ¥ó¥É¤Ï¡¢\\
 {\tt OxStart[s\_String], OxStartInsecure[s\_String, p\_Integer, q\_Integer],  {\tt OxStart[s\_String], OxStartInsecure[s\_String, p\_Integer, q\_Integer],
 OxExecuteString[s\_String], OxParse[s\_String], OxGet[],  \\
 OxPopCMO[], OxPopString[], OxClose[], OxReset[]}  OxStartRemoteSSH[s\_String, host\_String],
 ¤Î9¤Ä¤Ç¤¢¤ë¡£  \\
   OxExecuteString[id\_Integer, s\_String],
   OxParse[id\_Integer, s\_String],
   \\
   OxSendMessage[id\_Integer, s\_String],
   OxGet[id\_Integer],
   \\
   OxPopCMO[id\_Integer],
   OxPopString[id\_Integer],
   \\
   OxClose[id\_Integer],
   OxReset[id\_Integer]}
   \\
   ¤Î11¸Ä¤Ç¤¢¤ë¡£
   
 math2ox ¤ò¥í¡¼¥É¤·¤¿¤é¡¢  math2ox ¤ò¥í¡¼¥É¤·¤¿¤é¡¢
 \begin{verbatim}  \begin{verbatim}
 In[2] := OxStart["ox_sm1"]  In[2] := pid = OxStart["ox_sm1"]
 \end{verbatim}  \end{verbatim}
 ¤Ë¤è¤Ã¤Æ OpenXM ¥µ¡¼¥Ð¤ËÀܳ¤¹¤ë¡£¤³¤Î¾ì¹ç¤ÎÀܳÀè¤Ï ox\_sm1 ¤Ç¤¢¤ë¡£  ¤Ë¤è¤Ã¤Æ OpenXM ¥µ¡¼¥Ð¤ËÀܳ¤¹¤ë¡£¤³¤Î¾ì¹ç¤ÎÀܳÀè¤Ï ox\_sm1 ¤Ç¤¢¤ë¡£
   ÊÖ¤êÃÍ pid ¤Ï¡¢¥»¥Ã¥·¥ç¥óÈÖ¹æ¤Ç¤¢¤ë¡£
 ¤â¤Á¤í¤ó  ¤â¤Á¤í¤ó
 \begin{verbatim}  \begin{verbatim}
 In[2] := OxStartInsecure["water.s.kanazawa-u.ac.jp", 1300, 1400]  In[2] := pid = OxStartInsecure["water.s.kanazawa-u.ac.jp", 1300, 1400]
 \end{verbatim}  \end{verbatim}
 ¤Î¤è¤¦¤Ë¤·¤Æ¡¢insecure ¥â¡¼¥É¤ÇÀܳ¤·¤Æ¤â¤è¤¤¡£¤¿¤À¤·¤³¤Î¾ì¹ç¤Ï¡¢  ¤Î¤è¤¦¤Ë¤·¤Æ¡¢insecure ¥â¡¼¥É¤ÇÀܳ¤·¤Æ¤â¤è¤¤¡£¤¿¤À¤·¤³¤Î¾ì¹ç¤Ï¡¢
 ¤¢¤é¤«¤¸¤á {\tt Run[]} Åù¤Ç¡¢OpenXM ¥µ¡¼¥Ð¤òµ¯Æ°¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£  ¤¢¤é¤«¤¸¤á {\tt Run[]} Åù¤Ç¡¢OpenXM ¥µ¡¼¥Ð¤òµ¯Æ°¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
   
 Àܳ¤¬À®¸ù¤·¤¿¤é¥Ç¡¼¥¿¤òÁ÷¤Ã¤Æ¤ß¤è¤¦¡£  Àܳ¤¬À®¸ù¤·¤¿¤é¥Ç¡¼¥¿¤òÁ÷¤Ã¤Æ¤ß¤è¤¦¡£
 \begin{verbatim}  \begin{verbatim}
 In[3] := OxParse["(CMO_LIST, (CMO_STRING, "hello world"), (CMO_ZERO))"]  In[3] := OxParse[pid, "(CMO_LIST, (CMO_STRING, "hello world"), (CMO_ZERO))"]
 \end{verbatim}  \end{verbatim}
 ¤Î¤è¤¦¤Ë CMO expression ¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢  ¤Î¤è¤¦¤Ë CMO expression ¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
 Ç¤°Õ¤Î CMO ¤òÁ÷¿®¤Ç¤­¤ë¡£  Ç¤°Õ¤Î CMO ¤òÁ÷¿®¤Ç¤­¤ë¡£
 Àµ¤·¤¯¤Ê¤¤ CMO ¤Î¾ì¹ç¤Ë¤Ï¡¢²¿¤âÁ÷¿®¤µ¤ì¤Ê¤¤¡£  Àµ¤·¤¯¤Ê¤¤ CMO ¤Î¾ì¹ç¤Ë¤Ï¡¢²¿¤âÁ÷¿®¤µ¤ì¤Ê¤¤¡£
 ¤Þ¤¿¡¢CMO ¤Ç¤Ï¤Ê¤¯¡¢  ¤Þ¤¿¡¢CMO ¤Ç¤Ï¤Ê¤¯¡¢
 \begin{verbatim}  \begin{verbatim}
 In[4] := OxParse["(OX_COMMAND, (SM_popCMO))"]  In[4] := OxParse[pid, "(OX_COMMAND, (SM_popCMO))"]
 \end{verbatim}  \end{verbatim}
 ¤Ê¤É¤È¤·¤Æ¡¢OX ¥á¥Ã¥»¡¼¥¸¤Î·Á¤Çµ­½Ò¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£  ¤Ê¤É¤È¤·¤Æ¡¢OX ¥á¥Ã¥»¡¼¥¸¤Î·Á¤Çµ­½Ò¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£
 Ãí°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ï¡¢SM ¥³¥Þ¥ó¥É¤Î¾ì¹ç¡¢OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤«¤é  Ãí°Õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ï¡¢SM ¥³¥Þ¥ó¥É¤Î¾ì¹ç¡¢OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤«¤é
Line 324  OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ
Line 323  OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ
 ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë  ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë
 ¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï  ¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï
 \begin{verbatim}  \begin{verbatim}
 In[5] := OxGet[]  In[5] := OxGet[pid]
 \end{verbatim}  \end{verbatim}
 ¤È¤¹¤ë¤À¤±¤Ç¤è¤¤¡£Ê֤äƤ¯¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï CMO ¤ËÂбþ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£  ¤È¤¹¤ë¤À¤±¤Ç¤è¤¤¡£Ê֤äƤ¯¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï CMO ¤ËÂбþ¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£
 \begin{verbatim}  \begin{verbatim}
 In[6] := OxPopCMO[]  In[6] := OxPopCMO[pid]
 \end{verbatim}  \end{verbatim}
 ¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxGet[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£  ¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\tt OxGet[pid]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£
   
 ·×»»¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï {\tt OxExecute[]}  ·×»»¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï {\tt OxExecute[pid, ...]}
 (SM\_executeStringByLocalParser) ¤«¡¢Å¬ÀÚ¤Ê OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤³¤È¡£  (SM\_executeStringByLocalParser) ¤«¡¢Å¬ÀÚ¤Ê OX ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤¹¤ë¤³¤È¡£
   
 ·×»»¤¬½ª¤ï¤Ã¤¿¤é¡¢  ·×»»¤¬½ª¤ï¤Ã¤¿¤é¡¢
 \begin{verbatim}  \begin{verbatim}
 In[7] := OxClose[]  In[7] := OxClose[pid]
 \end{verbatim}  \end{verbatim}
 ¤È¤¹¤ë¤È¡¢Àܳ¤¬½ªÎ»¤¹¤ë¡£  ¤È¤¹¤ë¤È¡¢Àܳ¤¬½ªÎ»¤¹¤ë¡£
   

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

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