[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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
で設定できる.
0
Euclid 互除法 (default)
1
binary GCD
2
bmod GCD
3
accelerated 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 に設定する.
整数
整数
0
Round to nearest
1
Round toward 0
2
Round toward +infinity
3
Round 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]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] |
この文書は12月 21, 2024にtexi2html 5.0を用いて生成されました。