[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctrl
:: 環境設定
:: 環境の表示
:: 環境およびその短い説明の表示
設定されている値
スイッチ名
パラメタ
adj
ガーベッジコレクションの頻度の変更. 1 以上の有理数が指定できる. デフォルト値は 3. 1 に近い程, ガーベッジコレクションせずにヒープを 大きくとるようになる. 整数値はコマンドラインで指定できる. See section コマンドラインオプション.
allow_laurent
1 の時, 単項式の指数に負の整数を許す.
bigfloat
1 の時, 入力された浮動小数は bigfloat に変換され, 浮動小数演算は
PARI (pari
) により行われる. デフォルトの有効桁数は 9 桁である.
有効桁数を増やしたい時には setprec()
を用いる.
0 の時, 入力された浮動小数は, 倍精度浮動小数に変換される.
cputime
1 の時 CPU time および GC time を表示, 0 の時表示しない. cputime()
を参照.
ctrl("cputime",onoff)
は cputime(onoff)
と同じである.
debug_plot
1 の時, ox_plot
がメッセージウィンドウつきで起動される.
debug_up
1の時, 1変数専用多項式環関数(umul()
など)実行時にメッセージを表示する.
debug_window
1 の時 debug_window がポップアップして開く. (デフォルト値は 0.)
diag_period
nd_gr()
, nd_gr_trace()
を斉次イデアルに対して実行する際, 途中で実行される中間基底間の相互簡約
の頻度を指定する. 値が n
なら, 新しく基底が n
個生成されるたびに相互簡約が
実行される.
double_output
1 の時, 倍精度浮動小数はつねに ddd.ddd の形で表示される.
echo
1 の時は標準入力を繰り返して出力し, 0 の時は標準入力を繰り返さない.
output
コマンドを用いる際に有効である.
evalef
0 の時 eval の引数が評価されたときそれ以上評価できなくなった場合, 不定元リストに
登録される. たとえば eval(sin(0.1)) と実行すると sin(0.1) がそれ以上評価できないため
不定元リストに登録される.
1 の時は, 登録されない.
初等関数の数値評価を繰り返し行う時はこのオプションを使用すべきである.
(デフォルト値は 0.)
See section ord
error_in_timer
1 の時, タイマー終了時に通常のエラー処理が実行される.
f4_nocheck
1の時, nd_f4
, nd_f4_trace
における行列の簡約をCRTで行う際に, 結果の
チェックを行わない.
fake_ox_reset
no_ox_reset
1 のとき, ox_reset を実装してないサーバーには代わりに ox_shutdown を送信する. ox_reset の実装の有無は mathcap の optional argument (第四引数) に文字列 no_ox_reset が設定されているかどうかで判断する. ox_pari を利用するときはこのフラグを1にしておくことが望ましい. (デフォルト値は 0.) See section 分散計算.
fortran_output
1 の時, 多項式の表示が FORTRAN スタイルになる. すなわち冪が ‘^’ の代わりに ‘**’ で表される. (デフォルト値は 0.)
hex
1 の時, 整数は 0x で始まる 16 進数として表示される. -1 のとき, 16 進数は, 間に ‘|’ をはさんで 8 桁ごとに区切って表示される.
hideargs
1の時, 関数呼び出しを表示する際に引数が表示されない.
loadpath
ASIRLOADPATH
を上書きする.
message
1 の時, ox_asir
, ox_plot
実行時に開始メッセージを表示する.
new_hensel
1 の時, 有理数体上の1変数多項式の因数分解において, 関数 hensel2()
が用いられる.
nez
EZGCD のアルゴリズムの切替え. デフォルトで 1 であり, とくに切替える必要 はない.
no_debug_on_error
1 の時, エラー時にデバッグモードに入らない.
no_prompt
1の時, プロンプトが表示されない.
outputstyle
1 の時, 行列, ベクトルが mat(...)
, vect(...)
の形で表示される.
ox_batch
1 のとき, 送信バッファがいっぱいになった時のみ自動的に flush. 0 のとき, データ, コマンド送信毎に flush. (デフォルト値は 0.) See section 分散計算.
ox_check
1 のとき, 送信データを相手プロセスが受け取れるかどうかチェックする. 0 のときしない. (デフォルト値は 1.) See section 分散計算.
ox_exchange_mathcap
1 のとき, OX server との接続開始時に, 自動的に mathcap の交換を行う. (デフォルト値は 1.) See section 分散計算.
parallel_gc
0 の時 GC は main thread で動く. n の時 GC は n threads で動作する. (デフォルト値は実行環境で異なる)
plot_by_bigfloat
N のとき, 10進数での精度を N 桁として, bigfloat を用いて plot を行う. (デフォルトでは double を用いて plot を行う.)
print_quote
quote データの表示方法を指定する.
0 の時, quote データは単に <...quoted...>
と表示される. 1 の時, リスト形式で表示される.
2 の時, 自然な数式の形で表示される.
prompt
0 のときプロンプトを表示しない. 1 のとき標準プロンプトを表示.
C スタイルのフォマット文字列をもちいるとユーザ定義のプロンプト.
例(asirgui では不可):
ctrl("prompt","\033[32m[%d]:= \033[0m")
quiet_mode
1 のとき, 起動時に著作権表示を行わない. See section コマンドラインオプション.
real_binary
1の時, 倍精度浮動小数を2進表示する.
real_digit
倍精度浮動小数の表示の桁数を指定する.
show_crossref
1 の時, 関数定義を読み込む際に, クロスリファレンスが表示される.
show_orderspec
1 の時, dp 系関数によるグレブナー基底計算関数に対する複合的な項順序の指定時に その詳細を表示する.
StrassenSize
Strassen-Winograd による行列の高速乗算アルゴリズム実行におけるパラメタの値を設定する.
terse
1 の時, ユーザ定義 callback 実行時にメッセージを表示しない.
weight_check
1 の時, nd 系関数によるグレブナー基底において, 指定された weight を用いたweight のoverflow チェックを行う.
verbose
1 の時, 函数の再定義時にメッセージを表示する.
[1917] ctrl(); [[oxpari_start,0],[oxpari_id,-1],... snip ....,[plot_by_bigfloat,0],[debug_plot,0]] [1918] map(print,ctrl(|desc=1)); [oxpari_start,0,oxpari starting function.] [oxpari_id,-1,Id of ox_pari.] ... snip ... [plot_by_bigfloat,0,If set to 1, computation is done by using MPFR bigfloat functions in ox_plot.] [debug_plot,0,If set to 1, ox_plot is executed with the message window.]
ChangeLog
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
debug
:: デバッグモードに入る.
debug
は無引数の函数であるが, ‘()’ なしで呼び出せる.
(debug)
となり, コマンド
受け付け状態となる. quit
を入力するとデバッガから抜ける.
[1] debug; (debug) quit 0 [2]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
error
:: プログラム中で強制的にエラーを発生させる.
文字列
error()
は, ユーザ函数の内部でこの
動作と同様の動作を行わせるための函数である.
error()
が呼び出される際に表示されるメッセージで,
文字列である.
error()
を呼び出すようにしておけば, その時点で自動的にデバッグモードに入れる.
% cat mod3 def mod3(A) { if ( type(A) >= 2 ) error("invalid argument"); else return A % 3; } end$ % asir [0] load("mod3"); 1 [3] mod3(5); 2 [4] mod3(x); invalid argument stopped in mod3 at line 3 in file "./mod3" 3 error("invalid argument"); (debug) print A A = x (debug) quit return to toplevel [4]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
help
:: 函数の説明を表示する.
0
函数名
PAGER
に設定されているコマンド,
あるいは ‘more’ を呼び出してそのファイルを表示する.
LANG
が設定されている場合, その値が "japan"
または
"ja_JP"
で始まるなら, ‘help’ の代わりに ‘help-ja’
にあるファイルが表示される. そうでない場合, ‘help-en’
にあるファイルが表示される.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
time
:: セッション開始から現在までの CPU 時間を表示する
リスト
time()
は引数なしで, セッション開始から現在までの CPU 時間,
GC 時間(0と表示), 現在までに要求されたメモリののべ容量, およびセッション開始から
現在までの経過時間の表示をする.
すなわち, [CPU 時間 (秒), GC 時間 (秒), メモリ量 (ワード), 経過時間 (秒)]
なるリストを返す. 1 ワードは通常 4 バイトである.
time()
から, その計算に対する
CPU 時間, GC 時間がわかる.
ctrl()
や cputime()
により cputime
スイッチが
on になっている場合には, トップレベルの文を一つの単位として,
その実行時間が表示される. しかし, プログラムの内部などで, 特定の
計算に対する計算時間を知りたい時には, time()
などを使う
必要がある.
getrusage()
が使える UNIX 上では time()
は信頼性のある値
を返すが, Windows 95, 98 上では時刻を用いるほか方法がないため経過時間そのもの
が表示される. よって, 待ち状態があると, それも経過時間に加算される.
[72] T0=time(); [2.390885,0.484358,46560,9.157768] [73] G=hgr(katsura(4),[u4,u3,u2,u1,u0],2)$ [74] T1=time(); [8.968048,7.705907,1514833,63.359717] [75] ["CPU",T1[0]-T0[0],"GC",T1[1]-T0[1]]; [CPU,6.577163,GC,7.221549]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
cputime
, tstart
, tstop
:: 引数が 0 ならば cputime
の表示を止める. それ以外ならば表示を行う.
:: CPU time 計測開始.
:: CPU time 計測終了および表示.
0
フラグ (任意)
cputime()
は, 引数が 0 ならば CPU time の表示を止める. それ以外ならば表示を行う.
tsart
は引数なし, ‘()’ なしで, CPU time 計測を開始する.
tstop
は引数なし, ‘()’ なしで, CPU time 計測を終了,
および表示する.
cputime(onoff)
は ctrl("cputime",onoff)
と同じである.
tstart
, tstop
は, 入れ子にして使われることは想定していない
ため, そのような可能性がある場合には, time()
による計測を行う
必要がある.
cputime()
による on, off は, 単に表示の on, off であり, トップレベル
の一つの文に対する計測は常に行われている. よって, 計算を始めてからでも,
計算終了前にデバッガに入って cputime(1)
を実行させれば計算時間は
表示される.
[49] tstart$ [50] fctr(x^10-y^10); [[1,1],[x+y,1],[x^4-y*x^3+y^2*x^2-y^3*x+y^4,1],[x-y,1], [x^4+y*x^3+y^2*x^2+y^3*x+y^4,1]] [51] tstop$ 80msec + gc : 40msec
time
, currenttime
, ctrl
.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
timer
:: 制限時間つきで計算を実行する.
結果
制限時間 (秒)
計算する式
タイマによる中断時の戻り値
timer()
は, 時間を指定して計算を実行する. 指定時間内に計算が完了
した場合その値を返す. 指定時間内に計算が完了しなかった場合, 第 3 引数
を返す.
[0] load("cyclic"); 1 [10] timer(10,dp_gr_main(cyclic(7),[c0,c1,c2,c3,c4,c5,c6],1,1,0),0); interval timer expired (VTALRM) 0 [11]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
currenttime
:: 現在時刻を取得
1970年1月1日0時0分0秒からの経過秒数.
currenttime()
は現在時刻を返す. UNIX の場合, time(3) を呼んでいるだけである.
[0] currenttime(); 1071639228 [1]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
sleep
:: プロセスの実行を停止
1
停止時間 (マイクロ秒)
sleep()
は, プロセスの実行を停止する. UNIX の場合, usleep を呼んでいるだけである.
[0] sleep(1000); 1 [1]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
heap
:: 現在のヒープの大きさを返す. (単位:バイト)
自然数
-adj
オプションにより,
GC 主体の設定を行っておく必要がある.
% asir -adj 16 [0] load("fctrdata")$ 0 [97] cputime(1)$ 0msec [98] heap(); 524288 0msec [99] fctr(Wang[8])$ 3.190sec + gc : 3.420sec [100] heap(); 1118208 0msec [101] quit; % asir [0] load("fctrdata")$ 0 [97] cputime(1)$ 0msec [98] heap(); 827392 0msec [99] fctr(Wang[8])$ 3.000sec + gc : 1.180sec [100] heap(); 1626112 0msec [101] quit;
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
version
:: Asir のバージョンを返す.
自然数
[0] version(); 991214
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
shell
:: command をシェルコマンドとして実行する.
自然数
文字列
system()
函数によりシェルコマンドとして実行する.
シェルの終了ステータスを返す.
[0] shell("ls"); alg da katsura ralg suit algt defs.h kimura ratint test alpi edet kimura3 robot texput.log asir.o fee mfee sasa wang asir_symtab gr mksym shira wang_data base gr.h mp snf1 wt bgk help msubst solve chou hom p sp const ifplot proot strum cyclic is r sugar 0 [1]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
map
:: リスト, 配列の各要素に函数を適用する.
arg0 と同じ型のオブジェクト
函数名
リスト, ベクトル, 行列
任意 (残りの引数)
map
の引数 function で与えられる函数は, 内部的にも函数と
して実装されていなければならない. そうでなければ parse error になる.
例えば map
自身や car
, cdr
などは内部的には函数で
はなく, Asir の文法におけるキーワードとして実装されている. したがって
map
の引数に map
をとることはできない.
[82] def afo(X) { return X^3; } [83] map(afo,[1,2,3]); [1,8,27]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
flist
:: 現在定義されている函数名を文字列リストとして返す.
モジュール名
文字列のリスト
[77] flist(); [defpoly,newalg,mainalg,algtorat,rattoalg,getalg,alg,algv,...]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
delete_history
:: ヒストリを消去する.
0
消去したいヒストリの番号
@number
により取り出すことができる. このことは,
ガーベッジコレクションの際にもこの式が生き残ることを意味する.
bsave()
などでファイルにセーブして, delete_history()
によりヒストリを消去しておくのが有効である.
[0] (x+y+z)^100$ [1] @0; ... [2] delete_history(0); [3] @0; 0
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
get_rootdir
:: Asir のルートディレクトリ名を取り出す
文字列
ASIR_LIBDIR
が定義されている場合にはその値, されていない場合
には ‘/usr/local/lib/asir’ を返す.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
getopt
:: オプションの値を返す.
オブジェクト
getopt()
は
[[key1,value1],[key2,value2],...]
なるリストを返す.
ここで, key
は関数呼び出し時に指定されたオプション, value
はその値である.
getopt()
が返した値の型を type()
で調べることで, そのオプションが指定されたかどうか調べることができる.
xxx(A,B,C,D|x=X,y=Y,z=Z)
という風に, ‘|’ に続く, key=value の ‘,’ で区切られた 並びを置くことで行う.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
getenv
:: 環境変数の値を返す.
文字列
[0] getenv("HOME"); /home/pcrf/noro
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は12月 21, 2024にtexi2html 5.0を用いて生成されました。