| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
idiv, irem:: 整数除算による商.
:: 整数除算による剰余.
整数
整数
% i2 は, 結果が正に正規化されることを除けば
irem() の代わりに用いることができる.
sdiv, srem を用いる.
[0] idiv(100,7); 14 [0] idiv(-100,7); -14 [1] irem(100,7); 2 [1] irem(-100,7); -2
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
fac:: i の階乗.
整数
整数
[0] fac(50); 30414093201713378043612608166064768844377641568960512000000000000
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
igcd,igcdcntl:: 整数の GCD (最大公約数)
:: 整数 GCDのアルゴリズム選択
整数
整数
igcd は i1 と i2 の GCD を求める.
gcd, gcdz を用いる.
igcdcntl で設定できる.
0Euclid 互除法 (default)
1binary GCD
2bmod GCD
3accelerated integer GCD
2, 3 は [Weber] による.
おおむね 3 が高速だが, 例外もある.
[0] A=lrandom(10^4)$ [1] B=lrandom(10^4)$ [2] C=lrandom(10^4)$ [3] D=A*C$ [4] E=A*B$ [5] cputime(1)$ [6] igcd(D,E)$ 0.6sec + gc : 1.93sec(2.531sec) [7] igcdcntl(1)$ [8] igcd(D,E)$ 0.27sec(0.2635sec) [9] igcdcntl(2)$ [10] igcd(D,E)$ 0.19sec(0.1928sec) [11] igcdcntl(3)$ [12] igcd(D,E)$ 0.08sec(0.08023sec)
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ilcm:: 最小公倍数を求める.
整数
整数
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
isqrt:: 平方根を越えない最大の整数を求める.
非負整数
非負整数
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
inv:: m を法とする i の逆数
整数
整数
inv() は
そのチェックは行わない.
[71] igcd(1234,4321); 1 [72] inv(1234,4321); 3239 [73] irem(3239*1234,4321); 1
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
prime, lprime:: 素数を返す
整数
整数
prime(), lprime() いずれもシステムが内部に持つ
素数表の要素を返す. index は 0 以上の整数で, 素数表
のインデックスに用いられる. prime() は 16381 まで
の素数を小さい順に 1900 個, lprime() は, 10 進 8 桁で最大の
素数から大きい順に 999 個返す. それ以外のインデックスに対しては
0 を返す.
pari(nextprime,number)
がある.
[95] prime(0); 2 [96] prime(1228); 9973 [97] lprime(0); 99999989 [98] lprime(999); 0
pari.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
random:: 乱数を生成する.
自然数
mt_save により state をファイルに save できる. これを mt_load
で読み込むことにより, 異る Asir セッション間で一つの乱数の系列を辿ることが
できる.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
lrandom:: 多倍長乱数を生成する.
自然数
random を複数回呼び出して結合し, 指定の bit 長にマスクしている.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
mt_save, mt_load:: 乱数生成器の現在の状態をファイルにセーブする.
:: ファイルにセーブされた乱数生成器の状態をロードする.
0 または 1
文字列
[340] random();
3510405877
[341] mt_save("/tmp/mt_state");
1
[342] random();
4290933890
[343] quit;
% asir
This is Asir, Version 991108.
Copyright (C) FUJITSU LABORATORIES LIMITED.
3 March 1994. All rights reserved.
[340] mt_load("/tmp/mt_state");
1
[341] random();
4290933890
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
nm, dn:: rat の分子.
:: rat の分母.
整数または多項式
有理数または有理式
red()
を明示的に呼び出す必要がある.
[2] [nm(-43/8),dn(-43/8)]; [-43,8] [3] dn((x*z)/(x*y)); y*x [3] dn(red((x*z)/(x*y))); y
red.
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
conj, real, imag:: comp の実数部分.
:: comp の虚数部分.
:: comp の共役複素数.
複素数
[111] A=(2+@i)^3; (2+11*@i) [112] [real(A),imag(A),conj(A)]; [2,11,(2-11*@i)]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
eval, deval:: obj の値の評価.
数あるいは式
一般の式
整数
deval は倍精度浮動小数を結果として
eval の場合, 有理数はそのまま残る.
eval においては, 計算は MPFR ライブラリが行う.
deval においては, 計算は C 数学ライブラリの関数を用いて行う.
deval は複素数は扱えない.
eval においては,
prec を指定した場合, 計算は, 10 進 prec 桁程度で行われる.
prec の指定がない場合, 現在設定されている精度で行われる.
(See section setbprec, setprec.)
sin, cos, tan,
asin, acos, atan,
sinh, cosh, tanh,
asinh, acosh, atanh,
exp, log, pow(a,b) (a^b)
@i を扱えるのは
eval, deval のみである.
虚数単位
円周率
自然対数の底
[118] eval(exp(@pi*@i)); -1.0000000000000000000000000000 [119] eval(2^(1/2)); 1.414213562373095048763788073031 [120] eval(sin(@pi/3)); 0.86602540378443864674620506632 [121] eval(sin(@pi/3)-3^(1/2)/2,50); -2.78791084448179148471 E-58 [122] eval(1/2); 1/2 [123] deval(sin(1)^2+cos(1)^2); 1
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
pari:: PARI の函数 func を呼び出す.
func 毎に異なる.
PARI の函数名
func の引数
整数
[Batut et al.] は Bordeaux 大学で開発されフ
リーソフトウェアとして公開されている. PARI は数式処理的な機能を有
してはいるが, 主なターゲットは整数論に関連した数 (bignum,
bigfloat) の演算で, 四則演算に限らずbigfloat によるさまざまな
函数値の評価を高速に行うことができる. PARI は他のプログラムから
サブルーチンライブラリとして用いることができ, また, ‘gp’ という
PARIライブラリのインタフェースにより UNIX のアプリケーションとして
利用することもできる.
setprec() で指定した精度となる.
abs,
adj,
arg,
bigomega,
binary,
ceil,
centerlift,
cf,
classno,
classno2,
conj,
content,
denom,
det,
det2,
detr,
dilog,
disc,
discf,
divisors,
eigen,
eintg1,
erfc,
eta,
floor,
frac,
galois,
galoisconj,
gamh,
gamma,
hclassno,
hermite,
hess,
imag,
image,
image2,
indexrank,
indsort,
initalg,
isfund,
isprime,
ispsp,
isqrt,
issqfree,
issquare,
jacobi,
jell,
ker,
keri,
kerint,
kerintg1,
kerint2,
kerr,
length,
lexsort,
lift,
lindep,
lll,
lllg1,
lllgen,
lllgram,
lllgramg1,
lllgramgen,
lllgramint,
lllgramkerim,
lllgramkerimgen,
lllint,
lllkerim,
lllkerimgen,
lllrat,
lngamma,
logagm,
mat,
matrixqz2,
matrixqz3,
matsize,
modreverse,
mu,
nextprime,
norm,
norml2,
numdiv,
numer,
omega,
order,
ordred,
phi,
pnqn,
polred,
polred2,
primroot,
psi,
quadgen,
quadpoly,
real,
recip,
redcomp,
redreal,
regula,
reorder,
reverse,
rhoreal,
roots,
rootslong,
round,
sigma,
signat,
simplify,
smalldiscf,
smallfact,
smallpolred,
smallpolred2,
smith,
smith2,
sort,
sqr,
sqred,
sqrt,
supplement,
trace,
trans,
trunc,
type,
unit,
vec,
wf,
wf2,
zeta
/* 行列の固有ベクトルを求める. */ [0] pari(eigen,newmat(2,2,[[1,1],[1,2]])); [ -1.61803398874989484819771921990 0.61803398874989484826 ] [ 1 1 ] /* 1 変数多項式の根を求める. */ [1] pari(roots,t^2-2); [ -1.41421356237309504876 1.41421356237309504876 ]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
setbprec, setprec:: setbprec, setprec は bigfloat の精度をそれぞれ 2 進, 10進 n 桁に設定する.
整数
整数
ctrl を参照.
[1] setprec(); 15 [2] setprec(100); 15 [3] setprec(100); 99 [4] setbprec(); 332
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
setround:: bigfloat の丸めモードを mode に設定する.
整数
整数
0Round to nearest
1Round toward 0
2Round toward +infinity
3Round toward -infinity
ctrl を参照.
[1] setprec(); 15 [2] setprec(100); 15 [3] setprec(100); 99 [4] setbprec(); 332
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
setmod:: 有限体を GF(p) に設定する.
整数
2^27 未満の素数
[0] A=dp_mod(dp_ptod(2*x,[x]),3,[]); (2)*<<1>> [1] A+A; addmi : invalid modulus return to toplevel [1] setmod(3); 3 [2] A+A; (1)*<<1>>
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ntoint32, int32ton:: 非負整数と符号なし 32bit 整数の間の型変換.
符号なし 32bit 整数または非負整数
2^32 未満の非負整数
符号なし 32bit 整数
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
inttorat:: 整数-有理数変換を行う.
リストまたは 0
整数
isqrt(floor(m/2)) で計算できる.
[2121] M=lprime(0)*lprime(1); 9996359931312779 [2122] B=isqrt(floor(M/2)); 70697807 [2123] A=234234829304; 234234829304 [2124] inttorat(A,M,B); [-20335178,86975031]
| [ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は11月 2, 2025にtexi2html 5.0を用いて生成されました。