=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/exp/exp-ja.texi,v retrieving revision 1.23 retrieving revision 1.29 diff -u -p -r1.23 -r1.29 --- OpenXM/src/asir-doc/exp/exp-ja.texi 2006/03/12 07:05:41 1.23 +++ OpenXM/src/asir-doc/exp/exp-ja.texi 2009/02/23 03:41:26 1.29 @@ -1,4 +1,4 @@ -%% $OpenXM: OpenXM/src/asir-doc/exp/exp-ja.texi,v 1.22 2005/07/26 05:31:52 takayama Exp $ +%% $OpenXM: OpenXM/src/asir-doc/exp/exp-ja.texi,v 1.28 2008/11/19 03:25:38 ohara Exp $ \input texinfo @iftex @catcode`@#=6 @@ -38,7 +38,7 @@ @title 実験的仕様の関数 @subtitle Risa/Asir 実験的仕様関数説明書 @subtitle 1.0 版 -@subtitle 2006 年 3 月 +@subtitle 2008 年 1 月 @author by Risa/Asir committers @page @@ -121,6 +121,8 @@ ChangeLog の項目は www.openxm.org の cvswe * set_print_function:: * small_jacobi:: * flatten_quote:: +* printf:: +* fprintf:: * sprintf:: * quote_to_funargs:: * funargs_to_quote:: @@ -140,7 +142,14 @@ ChangeLog の項目は www.openxm.org の cvswe * qt_is_var:: * qt_is_ceof:: * qt_rewrite:: +* asirgui.hnd:: +* noro_matrix.rr: +* f_res:: +* chdir:: +* pwd:: +* dcurrenttime:: + @end menu @comment --- ◯◯◯◯ 関数 quotetotex, quotetotex_env の説明 ◯◯◯◯ @@ -1220,39 +1229,60 @@ ChangeLog @node sprintf,,, 実験的仕様の関数 -@subsection @code{sprintf} +@subsection @code{printf}, @code{fprintf}, @code{sprintf} @findex sprintf @table @t +@item printf(@var{format}[,@var{args}]) +@item fprintf(@var{fd},@var{format}[,@var{args}]) @item sprintf(@var{format}[,@var{args}]) :: C に似たプリント関数 @end table @table @var @item return -文字列 +整数(printf,fprintf), 文字列(sprintf) @item format 文字列 +@item fd +非負整数(ファイル記述子) @item args オブジェクト @end table @itemize @bullet @item -フォーマット文字列 @var{format } にしたがい @var{args} を文字列に変換する. +@code{printf} は書式文字列 @var{format } にしたがい, オブジェクト @var{args} を標準出力に書き出す. @item -フォーマット文字列の中に @code{%a} (any) が利用可能. -@var{args} の個数はフォーマット文字列の中の @code{%a} の個数に等しくすること. +@code{fprintf} は結果を, ファイル記述子 @var{fd} の指すファイルに書き出す. +@item +@code{sprintf} は結果を文字列で返し, 標準出力には書き出さない. +@item +書式文字列の中で @code{%a} (any) が利用可能. +@var{args} の個数は書式文字列の中の @code{%a} の個数に等しくすること. +@item +ファイル記述子は, @code{open_file} 関数を用いて得ること. @end itemize @example -[0] sprintf("%a: rat = %a",10,x^2-1); - 10: rat = x^2-1 +[0] printf("%a: rat = %a\n",10,x^2-1)$ +10: rat = x^2-1 +[1] S=sprintf("%a: rat = %a",20,x^2-1)$ +[2] S; +20: rat = x^2-1 +[3] Fd=open_file("hoge.txt","w"); +0 +[4] fprintf(Fd,"Poly=%a\n",(x-1)^3)$ +[5] close_file(Fd)$ +[6] quit; + +$ cat hoge.txt +Poly=x^3-3*x^2+3*x-1 @end example @table @t @item 参照 -@ref{rtostr} +@ref{rtostr},@ref{open_file},@ref{close_file} @end table @comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため @@ -1261,9 +1291,15 @@ ChangeLog ChangeLog @itemize @bullet @item - この関数は 2004-7-13 にコミットされた. + 関数 sprintfは 2004-7-13 にコミットされた. 変更をうけたソースコードは builtin/strobj (1.50) である. @item + 関数 printfは 2007-11-8 にコミットされた. + 変更をうけたソースコードは builtin/print.c (1.23) である. +@item + 関数 fprintfは 2008-11-18 にコミットされた. + 変更をうけたソースコードは builtin/file.c (1.25) である. +@item @code{%a} は Maple の sprintf の真似か. @end itemize @@ -2183,6 +2219,477 @@ qt 系の関数が開発された. @end itemize @comment **************************************************************** + +@comment **************************************************************** +@node asirgui.hnd,,, 実験的仕様の関数 +@subsection @code{asirgui.hnd} +@findex asirgui.hnd + +@comment --- 関数の簡単な説明 --- +@comment --- @itemx は複数に対して説明を一つつける場合に使う --- +@table @t +@item asirguid.hnd +:: asirgui の main window のハンドル番号を保持するファイル +@end table + + +@itemize @bullet +@item asirgui (Windows 版) を起動すると asirgui.exe のあるフォルダおよび 環境変数 TEMP が定義されていればこのファイルが作成される. +@item 中身は10進整数で, asirgui の main winodw のハンドルである. このハンドルあてに PostMessage をすれば, asuirgui にキーボードから入力したのと同様な効果が得られる. +@item text editor で作成, 保存したファイルを text editor 側から asirgui に読み込ませたりするために利用可能. +@end itemize + +@example +// Visual C++ 用のテストプログラム. 標準入力を asirgui へ送り込む. +// test.cpp : コンソール アプリケーション用のエントリ ポイントの定義 +// + +#include "stdafx.h" +#include "test.h" +#include +#include +#include +#include +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// 唯一のアプリケーション オブジェクト + +CWinApp theApp; + +using namespace std; + +int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) +{ + int nRetCode = 0; + + // MFC の初期化および初期化失敗時のエラーの出力 + if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) + { + // TODO: 必要に応じてエラー コードを変更してください。 + cerr << _T("Fatal Error: MFC initialization failed") << endl; + nRetCode = 1; + } + else + { + // TODO: この位置にアプリケーションの動作を記述してください。 + CString strHello; + strHello.LoadString(IDS_HELLO); + cout << (LPCTSTR)strHello << endl; + } + HWND hnd; + FILE *fp = fopen("c:/Program Files/asir/bin/asirgui.hnd","r"); + fscanf(fp,"%d",&hnd); + fclose(fp); + while (1) { + int c; + c = getchar(); + if ( c == '#' ) break; + PostMessage(hnd,WM_CHAR,c,1); + } + return nRetCode; +} +@end example + +@table @t +@item 参照 +@ref{xyz_abc} +@end table + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item この機能は 2006-12-5, 2007-02-13 に加えられた. +@item @code{OpenXM_contrib2/windows/asir32gui/asir32gui.clw} 1.11 +@item @code{OpenXM_contrib2/windows/asir32gui/asir32guiview.cpp} 1.15, 1.1.6 +@end itemize +@comment **************************************************************** + +@node noro_matrix.rr,,, 実験的仕様の関数 +@subsection @code{noro_matrix.rr} +@findex noro_matrix.rr + +@comment --- 関数の簡単な説明 --- +@comment --- @itemx は複数に対して説明を一つつける場合に使う --- +@table @t +@item linalg.unit_mat(@var{arg1}) +@item linalg.random_rmat(@var{arg1}, @var{arg2}, @var{arg3}) +@item linalg.minipoly_mat(@var{arg1}) +@item linalg.compute_kernel(@var{arg1}) +@item linalg.compute_image(@var{arg1}) +@item linalg.jordan_canonical_form(@var{arg1}) +@end table + + +@itemize @bullet +@item 簡単な解説および実例は http://www.math.kobe-u.ac.jp/HOME/taka/2007/knx/noro_matrix-ja.txt を参照. +@end itemize + +@example +load("noro_matrix.rr"); +A=newmat(4,4,[[2,0,0,0],[3,5,1,0],[-9,-9,-1,0],[-5,0,0,1]]); +B=linalg.jordan_canonical_form(A); +@end example + +@table @t +@item 参照 +@ref{invmat} +@end table + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item この関数は 2004-04 頃から線形代数III の講義をしながら書かれた. +@item ソース: OpenXM/src/asir-contrib/packages/src/noro_matrix.rr +@end itemize + + +@node f_res,,, 実験的仕様の関数 +@subsection @code{f_res} +@findex f_res + +@comment --- 関数の簡単な説明 --- +@table @t +@item f_res +@end table + + +@itemize @bullet +@item f_res は各種の終結式を計算するモジュールである. ox_grep("f_res"); で online manual を閲覧可能である. +@end itemize + +@table @t +@item 参照 +@ref{} +@end table + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item このモジュールは Fujiwara 君の修士論文が元になり, それを改造したものである. +@item OpenXM/src/ox_cdd, OpenXM/src/asir-contrib/packages/src/f_res.rr +@end itemize + + +@node chdir,,, 実験的仕様の関数 +@subsection @code{chdir}, @code{pwd} +@findex chdir +@findex pwd + +@comment --- ディレクトリ操作 --- +@table @t +@item chdir(@var{directory}) +@item pwd() +:: シェルコマンド cd と pwd に対応する操作. +@end table + +@table @var +@item return +文字列(@code{pwd}), 整数(@code{chdir}) +@item dirctory +文字列 +@end table + +@itemize @bullet +@item +@code{pwd} はカレントディレクトリを文字列で返す. +@item +@code{chdir} はカレントディレクトリを @var{directory} に変更する. 成功すれば 0 を失敗すれば -1 を返す. +@item +これらの関数は UNIX 版にのみ実装されている. +@end itemize + +@example +[0] S=pwd(); +/home/ohara +[1] chdir(".../taka"); +-1 +[2] chdir("/usr/bin"); +0 +@end example + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item +これらの関数は 2008-8-27 にコミットされた. +変更をうけたソースコードは builtin/miscf.c (1.27) である. +@end itemize + + +@node dcurrenttime,,, 実験的仕様の関数 +@subsection @code{dcurrenttime} +@findex dcurrenttime + +@comment --- 現在時刻を取得 --- +@table @t +@item dcurrenttime() +:: 現在時刻を取得. +@end table + +@table @var +@item return +浮動小数点数 +@end table + +@itemize @bullet +@item +返り値は1970年1月1日0時0分0秒からの経過秒数である. +@end itemize + +@example +[0] ctrl("real_digit", 16); +16 +[1] dcurrenttime(); +1226390851.34476 +[2] currenttime(); +1226390854 +@end example + +@table @t +@item 参照 +@ref{currenttime} +@end table + +@comment --- ChangeLog を書く. 動機. ソースコードの位置. 変更日時 など CVSサーバを見るため +@comment --- openxm の外部からの寄与も述べる. Credit. +@noindent +ChangeLog +@itemize @bullet +@item +この関数は 2008-9-12 にコミットされた. +変更をうけたソースコードは builtin/time.c (1.6) である. +@end itemize + +@node nk_restriction.restriction,,, 実験的仕様の関数 +@subsection @code{nk_restriction.restriction} +@comment --- 索引用キーワード +@findex nk_restriction.restriction + +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.restriction(@var{Id}, @var{VL}, @var{DVL}, @var{W}) +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての制限加群を返す。 +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item Id +イデアルの生成元のリスト +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@itemize @bullet +@item +@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 +(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@item +正の重みを持つ変数についての制限を行う。 +例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば +x,y について制限を行う。 +@end itemize + +以下は、イデアル +@tex +$I = D \cdot \{x \partial_x -1, y \partial_y - 1\} $ +@end tex +の +@tex $x$ @end tex +についての制限加群を計算した例である。 +@example +[1432] nk_restriction.restriction([x*dx-1,y*dy-1],[x,y],[dx,dy],[1,0]); +-- generic_bfct_and_gr :0.001sec(0.001629sec) +generic bfct : [[1,1],[s-1,1]] +S0 : 1 +B_{S0} length : 2 +-- fctr(BF) + base :0.000999sec(0.0005109sec) +[[y*dy-1,(y*dy-1)*dx,-1],[[1],[0]]] +[1433] +@end example + +@node nk_restriction.restriction_ideal,,, D 加群の制限に関する関数 +@subsection @code{nk_restriction.restriction_ideal} +@comment --- 索引用キーワード +@findex nk_restriction.restriction_ideal + +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.restriction_ideal(@var{Id}, @var{VL}, @var{DVL}, @var{W}) +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての制限イデアルを返す。 +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item Id +イデアルの生成元のリスト +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@itemize @bullet +@item +@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 +(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@item +正の重みを持つ変数についての制限を行う。 +例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば +x,y について制限を行う。 +@end itemize + +以下は、イデアル +@tex +$I = D \cdot \{x \partial_x -1, y \partial_y - 1\} $ +@end tex +の +@tex $x$ @end tex +についての制限イデアルを計算した例である。 +@example +[1346] nk_restriction.restriction_ideal([x*dx-1,y*dy-1],[x,y],[dx,dy],[1,0]); +-- generic_bfct_and_gr :0.002sec(0.001652sec) +generic bfct : [[1,1],[s-1,1]] +S0 : 1 +B_{S0} length : 2 +-- fctr(BF) + base :0sec(0.000566sec) +-- restriction_ideal_internal :0.001sec(0.0007441sec) +[-1] +[1347] +@end example + +@node nk_restriction.integration,,, 実験的仕様の関数 +@subsection @code{nk_restriction.integration} +@comment --- 索引用キーワード +@findex nk_restriction.integration + +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.integration(@var{Id}, @var{VL}, @var{DVL}, @var{W}) +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての積分加群を返す。 +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item Id +イデアルの生成元のリスト +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@comment --- ここで関数の詳しい説明 --- +@comment --- @itemize〜@end itemize は箇条書き --- +@comment --- @bullet は黒点付き --- +@itemize @bullet +@item +@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 +(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@item +正の重みを持つ変数についての積分を行う。 +例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば +x,y について積分を行う。 +@end itemize + +以下は、イデアル +@tex +$I = D \cdot \{2 t \partial_x + \partial_t, t \partial_t + 2 x \partial_x + 2\} $ +@end tex +の +@tex $t$ @end tex +についての積分イデアルを計算した例である。([SST, Ex5.5.2, Ex5.5.6]) +@example +[1351] nk_restriction.integration([2*t*dx+dt,2*x*dx+t*dt+2],[t,x], +[dt,dx],[1,0]); +-- generic_bfct_and_gr :0.001sec(0.001796sec) +generic bfct : [[1,1],[s,1],[s-1,1]] +S0 : 1 +B_{S0} length : 2 +-- fctr(BF) + base :0.001sec(0.0006731sec) +[[4*x*dx^2+6*dx,-4*t*x*dx^2-6*t*dx,2*x*dx+1,-2*t*x*dx,2*t*dx],[[1],[0]]] +@end example + +@node nk_restriction.integration_ideal,,, 実験的仕様の関数 +@subsection @code{nk_restriction.integration_ideal} +@comment --- 索引用キーワード +@findex nk_restriction.integration_ideal + +@comment --- 関数の簡単な説明 --- +@table @t +@item nk_restriction.integration_ideal(@var{Id}, @var{VL}, @var{DVL}, @var{W}) +:: ホロノミック D イデアル @var{Id} を重みベクトル @var{W} についての積分イデアルを返す。 +@end table + +@comment --- 引数の簡単な説明 --- +@table @var +@item Id +イデアルの生成元のリスト +@item VL +変数のリスト +@item DVL +変数のリスト(@var{VL} に対応する微分作用素の方の変数) +@item W +重みベクトルを表すリスト +@end table + +@comment --- ここで関数の詳しい説明 --- +@comment --- @itemize〜@end itemize は箇条書き --- +@comment --- @bullet は黒点付き --- +@itemize @bullet +@item +@var{W} の要素は非負整数で、0 番目の要素から連続して正の整数が入らなければならない。 +(すなわち、@code{[1,1,0,0,0]} は OK だが、 @code{[1,0,1,0,0]} はダメ) +@item +正の重みを持つ変数についての積分を行う。 +例えば、@var{VL} @code{=[x,y,z]}, @var{W} @code{=[1,1,0]} であれば +x,y について積分を行う。 +@end itemize + +以下は、イデアル +@tex +$I = D \cdot \{2 t \partial_x + \partial_t, t \partial_t + 2 x \partial_x + 2\} $ +@end tex +の +@tex $t$ @end tex +についての積分イデアルを計算した例である。([SST, Ex5.5.2, Ex5.5.6]) +@example +[1431] nk_restriction.integration_ideal([2*t*dx+dt,t*dt+2*x*dx+2],[t,x], +[dt,dx],[1,0]); +-- generic_bfct_and_gr :0.002999sec(0.002623sec) +generic bfct : [[1,1],[s,1],[s-1,1]] +S0 : 1 +B_{S0} length : 2 +-- fctr(BF) + base :0.001sec(0.001091sec) +-- integration_ideal_internal :0.002sec(0.001879sec) +[2*x*dx+1] +[1432] +@end example + + + @comment ----------- 以下は見本. 消すな. @comment **************************************************************** @comment --- ◯◯◯◯ 以下他の関数について真似して記述する. ◯◯◯◯ @@ -2246,7 +2753,6 @@ ChangeLog 変更をうけたソースコードは xxxyy.rr, ppp.c である. @item この関数は 2000 頃にはじめてのバージョンが書かれた. ソースは ppp.c である. @end itemize -@comment **************************************************************** @comment --- おまじない --- @node Index,,, Top