\\ -*- sh -*- /* 作者: 松元隆二 (matsumoto(AT)tech-i.kyutech.ac.jp) last updated : 2015年01月18日 (JST) ファイル「atan_solver_check.gp」のサンプルです。 */ \\ print("# atan_solver") \\マチンの公式 atan_solver([5,239]); \\ガウスの公式 atan_solver([18,57,239]); \\ガウスの公式 atan_solver([18,57,239]); \\ オイラーの公式。整数の逆数で無い式。 atan_solver([7,79/3]); \\ 無効な式。先頭にZが表示されます。 atan_solver([8,18]); \\ 逆数で無い式で無効な式。 atan_solver([8,18/5]); \\ 2重ベクトルの式。2式以上解が表示され先頭にVが表示されます。 \\ 例えば、2項式「pi/4=+2a(1/3)+a(1/7)」と「pi/4=+a(1/2)+a(1/3)」を足しても \\ pi/2 = +a(1/2)+3a(1/3)+a(1/7) \\ という式が生成されますが、このような2式が合わさっている場合は先頭にVが表示されます。 atan_solver([2,3,7]); \\係数kにゼロが含まれる式。先頭にzが表示されます。 atan_solver([5,122,229,239,1252,246303]); \\K=0 (pi/4*K = .. )の式。式は有効ですが、円周率の計算には使えません。 atan_solver([4,8,268]); \\プログラム内でx^2+1の素因数分解を行っているが、巨大な整数は \\因数分解に時間がかかるので擬似素数を使います。 \\擬似素数が生成される式。(pari/gpの環境依存で生成されない可能性有り) \\素数のリストに[pseudo]と表示されます。 \\ -> [pseudo,5,13,41,45697,7273354863109]. atan_solver([5,478,54608383,298207603995852]); \\なお、以下のフラグを変更すると最後まで因数分解しますが、 \\時間がかかるため常用はおすすめしません。 flag_tenuki_factor=0;\\手抜き素因数分解をしない。 atan_solver([5,478,54608383,298207603995852]); flag_tenuki_factor=1;\\もとに戻す。 \\ print("# atan_check") \\マチンの公式 atan_check([5,239],[4, -1]); \\ オイラーの公式。整数の逆数で無い式。 atan_check([7,79/3],[5,2]); \\ 2重ベクトルの式。正常と判断されます。 atan_check([2,3,7],[1,3,1]); \\K=0 (pi/4*K = .. )の式。式は有効ですが、円周率の計算には使えません。 atan_check([4,8,268],[1,-2,1]); \\無効な式。NGと表示されます。 atan_check([10,20],[1,2]); \\係数kにゼロが含まれる式。先頭にzが表示されます。 atan_check([5,122,229,239,1252,246303],[4,0,0,-1,0,0]); \\2015/1/18, デバッグ用, atan_checkで巨大な式と判断され、別戦略 \\ atan_check_aux_stoermers_sign()が用いられる式 atan_check([102047057,105518629,115811807,125329147,136899993,169937257,186695067,193788912,244653118,480808760,1012047353,2189376182,2701984943,5475957057,14033378718,18986886768,135847056818],[-1241486,-8344351,40320881,8962741,44583807,-11927108,7320135,26873030,-17001145,38017226,-9138958,38363716,28133524,-28603810,1901307,4384279,-2341271]); /* EOF */