pari
pariの使い方すぐに忘れるのでメモ
/* コメント */ \\ コメント \\ 特に指定しない場合は変数は全てグローバル扱いになる。 \\ 関数定義内で局所変数を使う場合は localまたはmyを使う。 \\ 初期化されていない変数は、自動的に自由変数扱いになる。 \\ 自由変数を明示的に使う場合は 'x などとする。 \\ 例: f(a)={ local(x='x); print(x^2+x+a); }; x=3; f(5); \\ x^2+x+5と表示される。 \\ for文等で複数行に渡る文を書く場合には{}で囲む {for(i1=0, 3, for(i2=0, 3, print(i1, " ", i2, " ", i1*i2); ); );} if(x==0, error("abc")); \\エラーを投げる \\ モジュラー演算 lift(Mod(1/7,100)) = 43 \\ 有限体 T = ffinit(2,8); y = ffgen(T, 'y); h = y.pol; \\ hはyの持ち上げになる。h=lift(y)とかでは持ちあげられない。 \\ p進数 log(1+3+O(3^4)) \\ 多項式 Polrev([1,2,3]) => 1+2*x+3*x^2 Pol([1,2,3]) => x^2+2*x+3 \\ 二次体 w = quadgen(5); w^10 => 34 + 55*w \\ ベクトル [1,2]*[3,4]~ => 11 [1,2]~*[3,4] => [3, 4] [6,8] v = [3,1,4,1,5,9,2,6,5] v[1] => 1 v[3..5] => [4,1,5] vector(5, i, 2^i) => [2,4,8,16,32] Vecrev([(1+x+x^3)]) => [1,1,0,1] primes(5) => [2, 3, 5, 7, 11] [x+2 | x<-primes(x), x>2] => [5,7,9,13] \\行列 Mat(2, 2, i, j, 2*i+j); [3, 4; 5, 6] \\1の冪根 sqrtn(Mod(1,13),4, &z) => Mod(1,13) \\ z=Mod(5,13)となる。