`sp', `sp_noalg'
----------------

sp(POLY)
sp_noalg(POLY)
     :: 最小分解体を求める.

RETURN
     リスト

POLY
     多項式

   * `sp' で定義されている.

   * 有理数係数の 1 変数多項式 POLY の最小分解体, およびその体上での
     POLY の 1 次因子への分解を求める.

   * 結果は, POLY の因子のリストと, 最小分解体の, 逐次拡大による表現
     からなるリストである. `sp_noalg' では, 全ての代数的数が, 対応する
     不定元 (即ち `#i' に対する `t#i') に置き換えられる. これに より,
     `sp_noalg' の出力は, 整数係数多変数多項式のリストとなる.

   * 最小分解体は, `[root,algptorat(defpoly(root))]' のリストとして
     表現されている. すなわち, 求める最小分解体は, 有理数体に, この
     `root' を全て添加した体として得られる. 添加は, 右の方の `root'
     から順に 行われる.

   * `sp()' は, 内部でノルムの計算のために `sp_norm()' をしばしば
     起動する. ノルムの計算は, 状況に応じてさまざまな方法で行われるが,
     そこで用いられる方法が最善とは限らず, 単純な終結式の計算の方が高速
     である場合もある.  大域変数 `USE_RES' を 1 に設定することにより,
     常に終結式により計算 させることができる.

     [101] L=sp(x^9-54);
     [[x+(-#2),-54*x+(#1^6*#2^4),54*x+(#1^6*#2^4+54*#2),
     54*x+(-#1^8*#2^2),-54*x+(#1^5*#2^5),54*x+(#1^5*#2^5+#1^8*#2^2),
     -54*x+(-#1^7*#2^3-54*#1),54*x+(-#1^7*#2^3),x+(-#1)],
     [[(#2),t#2^6+t#1^3*t#2^3+t#1^6],[(#1),t#1^9-54]]]
     [102] for(I=0,M=1;I<9;I++)M*=L[0][I];
     [111] M=simpalg(M);
     -1338925209984*x^9+72301961339136
     [112] ptozp(M);
     -x^9+54

参照
     *Note `asq af af_noalg': asq af af_noalg, *Note `defpoly':
     defpoly, *Note `algptorat': algptorat, *Note `sp_norm': sp_norm.

