| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctrl:: 環境設定
:: 環境の表示
:: 環境およびその短い説明の表示
設定されている値
スイッチ名
パラメタ
adjガーベッジコレクションの頻度の変更. 1 以上の有理数が指定できる. デフォルト値は 3. 1 に近い程, ガーベッジコレクションせずにヒープを 大きくとるようになる. 整数値はコマンドラインで指定できる. See section コマンドラインオプション.
allow_laurent1 の時, 単項式の指数に負の整数を許す.
bigfloat1 の時, 入力された浮動小数は bigfloat に変換され, 浮動小数演算は
PARI (pari) により行われる. デフォルトの有効桁数は 9 桁である.
有効桁数を増やしたい時には setprec() を用いる.
0 の時, 入力された浮動小数は, 倍精度浮動小数に変換される.
cputime1 の時 CPU time および GC time を表示, 0 の時表示しない. cputime()
を参照.
ctrl("cputime",onoff) は cputime(onoff) と同じである.
debug_plot1 の時, ox_plot がメッセージウィンドウつきで起動される.
debug_up1の時, 1変数専用多項式環関数(umul()など)実行時にメッセージを表示する.
debug_window1 の時 debug_window がポップアップして開く. (デフォルト値は 0.)
diag_periodnd_gr(), nd_gr_trace() を斉次イデアルに対して実行する際, 途中で実行される中間基底間の相互簡約
の頻度を指定する. 値が n なら, 新しく基底が n個生成されるたびに相互簡約が
実行される.
double_output1 の時, 倍精度浮動小数はつねに ddd.ddd の形で表示される.
echo1 の時は標準入力を繰り返して出力し, 0 の時は標準入力を繰り返さない.
output コマンドを用いる際に有効である.
evalef0 の時 eval の引数が評価されたときそれ以上評価できなくなった場合, 不定元リストに
登録される. たとえば eval(sin(0.1)) と実行すると sin(0.1) がそれ以上評価できないため
不定元リストに登録される.
1 の時は, 登録されない.
初等関数の数値評価を繰り返し行う時はこのオプションを使用すべきである.
(デフォルト値は 0.)
See section ord
error_in_timer1 の時, タイマー終了時に通常のエラー処理が実行される.
f4_nocheck1の時, nd_f4, nd_f4_trace における行列の簡約をCRTで行う際に, 結果の
チェックを行わない.
fake_ox_resetno_ox_reset1 のとき, ox_reset を実装してないサーバーには代わりに ox_shutdown を送信する. ox_reset の実装の有無は mathcap の optional argument (第四引数) に文字列 no_ox_reset が設定されているかどうかで判断する. ox_pari を利用するときはこのフラグを1にしておくことが望ましい. (デフォルト値は 0.) See section 分散計算.
fortran_output1 の時, 多項式の表示が FORTRAN スタイルになる. すなわち冪が ‘^’ の代わりに ‘**’ で表される. (デフォルト値は 0.)
hex1 の時, 整数は 0x で始まる 16 進数として表示される. -1 のとき, 16 進数は, 間に ‘|’ をはさんで 8 桁ごとに区切って表示される.
hideargs1の時, 関数呼び出しを表示する際に引数が表示されない.
loadpathASIRLOADPATH を上書きする.
message1 の時, ox_asir, ox_plot 実行時に開始メッセージを表示する.
new_hensel1 の時, 有理数体上の1変数多項式の因数分解において, 関数 hensel2() が用いられる.
nezEZGCD のアルゴリズムの切替え. デフォルトで 1 であり, とくに切替える必要 はない.
no_debug_on_error1 の時, エラー時にデバッグモードに入らない.
no_prompt1の時, プロンプトが表示されない.
outputstyle1 の時, 行列, ベクトルが mat(...), vect(...) の形で表示される.
ox_batch1 のとき, 送信バッファがいっぱいになった時のみ自動的に flush. 0 のとき, データ, コマンド送信毎に flush. (デフォルト値は 0.) See section 分散計算.
ox_check1 のとき, 送信データを相手プロセスが受け取れるかどうかチェックする. 0 のときしない. (デフォルト値は 1.) See section 分散計算.
ox_exchange_mathcap1 のとき, OX server との接続開始時に, 自動的に mathcap の交換を行う. (デフォルト値は 1.) See section 分散計算.
parallel_gc0 の時 GC は main thread で動く. n の時 GC は n threads で動作する. (デフォルト値は実行環境で異なる)
plot_by_bigfloatN のとき, 10進数での精度を N 桁として, bigfloat を用いて plot を行う. (デフォルトでは double を用いて plot を行う.)
print_quotequote データの表示方法を指定する.
0 の時, quote データは単に <...quoted...>と表示される. 1 の時, リスト形式で表示される.
2 の時, 自然な数式の形で表示される.
prompt0 のときプロンプトを表示しない. 1 のとき標準プロンプトを表示.
C スタイルのフォマット文字列をもちいるとユーザ定義のプロンプト.
例(asirgui では不可):
ctrl("prompt","\033[32m[%d]:= \033[0m")
quiet_mode1 のとき, 起動時に著作権表示を行わない. See section コマンドラインオプション.
real_binary1の時, 倍精度浮動小数を2進表示する.
real_digit倍精度浮動小数の表示の桁数を指定する.
show_crossref1 の時, 関数定義を読み込む際に, クロスリファレンスが表示される.
show_orderspec1 の時, dp 系関数によるグレブナー基底計算関数に対する複合的な項順序の指定時に その詳細を表示する.
StrassenSizeStrassen-Winograd による行列の高速乗算アルゴリズム実行におけるパラメタの値を設定する.
terse1 の時, ユーザ定義 callback 実行時にメッセージを表示しない.
weight_check1 の時, nd 系関数によるグレブナー基底において, 指定された weight を用いたweight のoverflow チェックを行う.
verbose1 の時, 函数の再定義時にメッセージを表示する.
[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
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は10月 30, 2025にtexi2html 5.0を用いて生成されました。