version 1.4, 1999/11/29 12:05:15 |
version 1.9, 2005/07/20 16:24:56 |
|
|
%#!platex |
%#!platex |
%% $OpenXM: OpenXM/src/ox_math/documents/ox_math.tex,v 1.3 1999/11/23 03:08:26 ohara 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) |
|
} |
\author{¾®¸¶¸ùǤ} |
\author{¾®¸¶¸ùǤ} |
|
|
|
\def\oxmath{{\tt ox\_math}} |
|
|
\begin{document} |
\begin{document} |
\maketitle |
\maketitle |
|
|
\section{Open Mathematica¤Î¹½À®} |
\section{²æ¡¹¤¬Ä󶡤¹¤ë¤â¤Î} |
|
|
Open Mathmatica ¥µ¡¼¥Ð¤ÏOpen XM ¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ómathematica ¥«¡¼¥Í¥ë¤È |
²æ¡¹¤¬Ä󶡤¹¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥é¥à¤È¤½¤Î¥½¡¼¥¹¤Ç¤¢¤ë¡£°ì¤ÄÌÜ¤Ï |
ÄÌ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤Ïµ¯Æ°Ä¾¸å¤Ëmathematica ¥«¡¼¥Í¥ë¤òµ¯Æ°¤·¡¢ |
\oxmath ¥×¥í¥°¥é¥à¤Ç¤¢¤ê¡¢¤³¤ì¤Ï OpenXM ¥µ¡¼¥Ð¤Î°ì¼ï¤Ç¤¢¤ë¡£Æó¤ÄÌÜ¤Ï |
mathematica ¥«¡¼¥Í¥ë¤È¶¨Ä´¤·¤ÆÆ°ºî¤¹¤ë¡£mathematica ¥«¡¼¥Í¥ë¤È¤Ï |
{\tt math2ox} ¤Ç¤¢¤ê¡¢OpenXM ¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¡£ |
MathLink ¥é¥¤¥Ö¥é¥ê¤òÍøÍѤ·¤ÆÄÌ¿®¤¹¤ë¡£Open Mathmatica ¥µ¡¼¥Ð¤ÏMathLink |
|
|
Æ°ºî´Ä¶¤Ï 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 ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó} |
¼¡¤Ë¡¢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{Mathematica ¤È¤ÎÄÌ¿®(MathLink) ¤Ë¤Ä¤¤¤Æ} |
¸½ºß¡¢¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Ï |
|
SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction, |
|
SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤± |
|
¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£ |
|
|
CMO ¤Ï ¼¡¤Î¤è¤¦¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é, MathLink ¤òÄ̤·¤ÆÁ÷¤é¤ì¤ë. |
\section{MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤È \oxmath} |
|
|
|
ºÇ½é¤Ë¡¢MathLink ¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î´ðÁÃŪ»ö¹à¤òÀâÌÀ¤·¡¢ |
|
¼¡¤Ë \oxmath ¤Î Mathematica Kernel ¤È¤ÎÄÌ¿®Éôʬ¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤ë¡£ |
|
|
|
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} |
\begin{enumerate} |
\item CMO\_INT32 ¤Ï MLTKINT (¿ÇÜĹÀ°¿ô·¿). |
\item Mathematica Kernel ¤Ë¼°¤òÁ÷¤ë¡£ |
\item CMO\_STRING ¤Ï MLTKSTR (ʸ»úÎó·¿). |
\item Mathematica Kernel ¤«¤é¼°¤ò¼õ¤±¼è¤ë¡£ |
\item CMO\_LIST ¤Ï MLTKFUNC (´Ø¿ô·¿). |
|
\item ¤½¤Î¾¤Î¥¿¥¤¥×¤Î CMO ¤Ï ToExpression[ʸ»úÎó] ¤È¤·¤ÆÁ÷¤ë. |
|
\end{enumerate} |
\end{enumerate} |
|
¤ò·«¤êÊÖ¤¹¤Î¤¬ MathLink ¤Ç¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ç¤¢¤ë¡£ |
|
|
¾å¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë ToExpression ¤Ï Mathematica ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¢¤ê, |
\oxmath ¤Ï Mathematica ¤È°Ê²¼¤Î¤è¤¦¤Ê°ÕÌ£¤Ç{\bf ʸ»úÎó¥Ù¡¼¥¹}¤ÇÄÌ¿®¤·¤Æ |
ʸ»úÎó¤ò°ú¿ô¤È¤·¤Æ Mathematica ¤Î¼°¤òÊÖ¤¹. |
¤¤¤ë¡£¤Þ¤º Mathematica Kernel ¤Ëɾ²Á¤µ¤»¤¿¤¤¼°¤¬¡¢C ¸À¸ì¤Îʸ»úÎó¤ÇÍ¿¤¨¤é |
|
¤ì¤Æ¤¤¤ë¤È¤·¤Æ¡¢link ¤Ç»Ø¤·¼¨¤¹Mathematica Kernel ¤Ë |
|
\begin{verbatim} |
|
int ml_evaluateStringByLocalParser(char *string) |
|
{ |
|
MLPutFunction(link, "EvaluatePacket", 1); |
|
MLPutFunction(link, "ToExpression", 1); |
|
MLPutString(link, string); |
|
MLEndPacket(link); |
|
} |
|
\end{verbatim} |
|
¤È¤·¤ÆÁ÷¿®¤¹¤ë¡£¥Ñ¥±¥Ã¥È¤Ï¡¢ |
|
EvaluatePacket[ToExpression[{\it string}]] ¤Ç¤¢¤ë¡£ |
|
¤³¤³¤Ç ToExpression ¤Ï Mathematica ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¢¤ê, |
|
ʸ»úÎó {\it string} ¤ò°ú¿ô¤È¤·¤Æ Mathematica ¤Î¼°¤òÊÖ¤¹. |
(\cite[pp.407]{Wolfram-1996}) |
(\cite[pp.407]{Wolfram-1996}) |
|
|
¤³¤³¤Ç°ì¤ÄÃí°Õ¤ò¤·¤Æ¤ª¤¯. |
ɾ²Á¤µ¤ì¤¿·ë²Ì¤òÇÛÎó str ¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï¡¢Ã±½ã¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë¡£ |
MathLink ¤Ç¤Ï, int ·¿°Ê³°¤Î¥Ç¡¼¥¿¤ò MLTKINT ¤È¤·¤ÆÁ÷¤ë¤³¤È¤Ï»ÄÇ°¤Ê¤¬¤é¤Ç |
|
¤¤Ê¤¤. ¤·¤¿¤¬¤Ã¤Æ CMO\_ZZ ¤òľÀÜ, À°¿ô·¿¤Ç¤¢¤ë¤È Mathematica ¤Ë»×¤ï¤» |
|
¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤Ç¤¢¤ë. ¤½¤³¤Ç, ¼¡¤Î¤è¤¦¤ÊÊýË¡¤ò¤È¤ë¤³¤È¤Ë¤Ê¤ë. |
|
|
|
\begin{verbatim} |
\begin{verbatim} |
char *CONVERT_ZZ_TO_CSTRING(cmo_t zz); |
int receive_sample(char str[]) |
|
|
int main() |
|
{ |
{ |
char *s; |
while (MLNextPacket(link) != RETURNPKT) |
cmo_t zz; /* zz.tag == CMO_ZZ */ |
MLNewPacket(link); |
MLINK lp; /* MathLink Socket */ |
switch(MLGetNext(link)) { |
... |
MLTKSTR: |
s = CONVERT_ZZ_TO_CSTRING(zz); |
MLGetString(link, &str); |
MLPutFunction(lp, "ToExpression", 1); |
... |
MLPutString(lp, s); |
MLTKINT: |
... |
... |
|
} |
|
MLNewPacket(link); |
} |
} |
\end{verbatim} |
\end{verbatim} |
|
¤³¤ÎÎã¤Ç¤Ï ReturnPacket[] °Ê³°¤ò̵»ë¤·¤Æ¤¤¤ë¤¬¡¢¼ÂºÝ¤Ë¤Ï¤³¤ó¤Ê¤Ëñ½ã¤Ë¤Ï |
|
½ñ¤±¤Ê¤¤¡£\oxmath ¤Î¼ÂÁõ¤Ç¤Ï¡¢mlo.c ¤Î |
|
ml\_next\_packet(), ml\_new\_packet(), ml\_read\_packet(), |
|
ml\_read\_returnpacket(), ml\_read\_menupacket(), ml\_read\_textpacket() |
|
¤Ê¤É¤ò¸«¤Æ¤Û¤·¤¤¡£ |
|
|
¤³¤Î¤è¤¦¤Ë¤¹¤ë¤È, Mathematica ¦¤Ç¤Ï, Î㤨¤Ð |
\bigskip |
|
|
|
ʸ»úÎó¤Ë¤è¤é¤º¡¢CMO ¤òÁ÷¤ë¤³¤È¤â¤Ç¤¤ë. |
|
|
|
\oxmath ¤Ï, CMO ¤ò¼¡¤Îµ¬Â§¤Ç MathLink ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÊÑ´¹¤¹¤ë. |
\[ |
\[ |
\mbox{\tt ToExpression["1234567890"]} |
\begin{array}{lcl} |
|
\mbox {CMO\_INT32} & \to & \mbox{MLTKINT}, \\ |
|
\mbox {CMO\_STRING} & \to & \mbox{MLTKSTR}, \\ |
|
\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} |
|
\] |
|
¤³¤ÎÊÑ´¹µ¬Â§¤ÏÌÀ¤é¤«¤Ë²ÄµÕ¤Ç¤Ê¤¤¤Î¤ÇÃí°Õ. |
|
|
µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿À°¿ô¥Ç¡¼¥¿¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð, |
\bigskip |
|
|
|
CMO\_ZZ ¤ò¤â¤È¤Ë¼ÂÁõ¤òÀâÌÀ¤·¤è¤¦. |
|
¤Þ¤º, MLTKINT ¤Ï¿ÇÜĹÀ°¿ô·¿¤Ç¤¢¤ë¤¬, MathLink ¤ÎÆâÉô¥Ç¡¼¥¿¹½Â¤¤¬ |
|
¸ø³«¤µ¤ì¤Æ¤¤¤Ê¤¤¤¿¤á, |
|
CMO\_ZZ (¤¢¤ë¤¤¤Ï GNU GMP library ¤ÎÀ°¿ô)¤òľÀÜ MLTKINT ¤Ë |
|
ÊÑ´¹¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤. ¤Ä¤Þ¤ê CMO\_ZZ ¤¬À°¿ô·¿¤Ç¤¢¤ë¤È MathLink ¤ËÃΤé |
|
¤»¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤. ¤½¤³¤Ç, ¼¡¤Î¤è¤¦¤ÊÊýË¡¤ò¤È¤ë¤³¤È¤Ë¤Ê¤ë. |
|
|
|
\begin{verbatim} |
|
export MLINK link; |
|
int ml_send_cmo_zz(cmo *m) |
|
{ |
|
MLPutFunction(link, "ToExpression", 1); |
|
MLPutString(link, new_string_set_cmo(m)); |
|
} |
|
\end{verbatim} |
|
|
|
¤³¤Î¤è¤¦¤Ë¤¹¤ë¤È, Mathematica ¦¤Ç¤Ï, Î㤨¤Ð ToExpression["1234567890"] |
|
¤Îɾ²Á¤¬¹Ô¤ï¤ì, ʸ»úÎó¥Ç¡¼¥¿¤«¤éÀ°¿ô 1234567890 ¤¬Éü¸µ¤µ¤ì¤ë. |
|
|
|
µÕ¤Ë, Mathematica ¤«¤éÁ÷¤é¤ì¤¿Â¿ÇÜĹÀ°¿ô¤Ï, ¥Þ¥·¥óÀ°¿ô¤ÎÈÏ°ÏÆâ¤Ç¤¢¤ì¤Ð, |
int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ |
int ¤È¤·¤Æ¼èÆÀ²Äǽ(MLGetInteger ¤ò»È¤¦)¤Ç¤¢¤ë¤¬, ¼õ¤±¼è¤ëÁ°¤Ë int ¤Ë¼ý¤Þ |
¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì |
¤ë¤«Èݤ«¤òÃΤ뤳¤È¤Ï¤Ç¤¤Ê¤¤. int ¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¡¢¥Ç¡¼¥¿¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì |
¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë. ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ |
¤Æ¤·¤Þ¤¦¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¢¤ë. ¤Þ¤¿, ľÀÜ CMO\_ZZ ¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤âÉÔ |
Line 95 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 ¥ª¥Ö¥¸¥§¥¯¥È¤¬Ê¸»úÎó¤ËÊÑ´¹¤Ç¤¤ë¤ï¤±¤Ç¤Ï¤Ê |
\section{\oxmath ¤Ø¤Î·×»»ÃæÃǵ¡Ç½¤Î¼ÂÁõ} |
¤¤¤Î¤Ç¡¢¤½¤Î¼è¤ê°·¤¤¤Ë¤ÏÃí°Õ¤òÍפ¹¤ë¡£ |
|
¤Þ¤À¡¢¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¤¬¡¢Â¿¹à¼°(CMO\_???\_PORINOMIAL)¤Î°·¤¤¤¬Æñ¤·¤¤¡£ |
|
|
|
\section{¸Ä¡¹¤Î¥¹¥¿¥Ã¥¯¥Þ¥·¥óÌ¿Îá¤Î¼ÂÁõ} |
\noindent |
¸½ºß¡¢¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤Ï |
{\bf Ãí°Õ: {\tt ox\_math\_interruption.tex} |
SM\_popCMO, SM\_popString, SM\_pops, SM\_executeFunction, |
¤Ë Risa/Asir Conference (2003) ¤Ç¤Î¹Ö±é¸¶¹Æ¤¬¤¢¤ë.} |
SM\_executeStringByLocalParser, SM\_mathcap, SM\_setMathcap(¼õ¤±¼è¤ë¤À¤± |
|
¤Ç²¿¤â¤·¤Ê¤¤)¤Ç¤¢¤ë¡£ |
|
|
|
|
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[], |
\\ |
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 179 OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ |
|
Line 323 OX ¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¯¤ë¾ì¹ç¤¬¤¢¤ë¤¬¡¢OxParse[] ¤òÍ |
|
¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë |
¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¼«Æ°Åª¤Ë¤Ï¼õ¿®¤·¤Ê¤¤(¸½ºß¤Î»ÅÍͤǤÏ)¡£¤·¤¿¤¬¤Ã¤ÆÌÀ¼¨Åª¤Ë |
¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï |
¼õ¿®¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï |
\begin{verbatim} |
\begin{verbatim} |
In[5] := OxReceive[] |
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 OxReceive[]} ¤ò¸Æ¤Ó½Ð¤¹É¬ÍפϤʤ¤¡£ |
¤òÍѤ¤¤ë¾ì¹ç¤Ë¤Ï¤â¤Á¤í¤ó {\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} |
¤È¤¹¤ë¤È¡¢Àܳ¤¬½ªÎ»¤¹¤ë¡£ |
¤È¤¹¤ë¤È¡¢Àܳ¤¬½ªÎ»¤¹¤ë¡£ |
|
|
Line 223 typedef unsigned long int mp_limb_t; |
|
Line 367 typedef unsigned long int mp_limb_t; |
|
\bibitem{Openxxx-1998} |
\bibitem{Openxxx-1998} |
ÌîϤÀµ¹Ô, ¹â»³¿®µ£. |
ÌîϤÀµ¹Ô, ¹â»³¿®µ£. |
{Open XM ¤ÎÀ߷פȼÂÁõ --- Open message eXchange protocol for Mathematics}, |
{Open XM ¤ÎÀ߷פȼÂÁõ --- Open message eXchange protocol for Mathematics}, |
1999/11/22 |
November 22, 1999, Revised March 4, 2005. |
\bibitem{Ohara-Takayama-Noro-1999} |
\bibitem{Ohara-Takayama-Noro-1999} |
¾®¸¶¸ùǤ, ¹â»³¿®µ£, ÌîϤÀµ¹Ô. |
¾®¸¶¸ùǤ, ¹â»³¿®µ£, ÌîϤÀµ¹Ô. |
{Open asir ÆþÌç}, 1999, ¿ô¼°½èÍý, Vol 7, No 2, 2--17. (ISBN4-87243-086-7, SEG ½ÐÈÇ, Tokyo). |
{Open asir ÆþÌç}, 1999, ¿ô¼°½èÍý, Vol 7, No 2, 2--17. (ISBN4-87243-086-7, SEG ½ÐÈÇ, Tokyo). |
Line 235 typedef unsigned long int mp_limb_t; |
|
Line 379 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} |