文字演算による回路解析プログラムの改良 (皿)
(昭和54年11月9日 原稿受付)
電子工学教室橋本太吉
岡 島 雅 之 増 田 悟
Improvement of the Program for the Symbolic
Analysis of Electronic Circuits(m)by Takichi HASHIMOTO Masayuki OKAJIMA Satoru MASUDA
Abstract
The scale of electronic circuits whose circuit functions can be obtained has been expanded
by our new program.
So far, if the scale of the object circuit is rather large, the number of monomials in the
expansion of the symbolic determinant b㏄omes so large that the memory of the computer is overflowed.
In our new program, each of the symbolic elements in the matrix whose the number of terms is larger than an appointed number is replaced by a new symbol letter, to which new index is allotted, and the expanded result of the determinant is transformed to a more simplified form by means of taking common factors outside. Using our program, a fully symbolic transfer function of a certain multi−loop active filter circuit whose the number of circuit elements is 38 can be
obtained in 6.4seconds using FACOM M−190.
り多くの文字変数を扱うことができなかった。そこで,
1・まえがき 今回,項数の多い多項式を1つの文字とみなし,これに
さきにわれわれが開発した文字演算プログラムD 2)は, 新しいインデックスを付与して計算することにより,文 回路関数を,回路パラメータやラプラス変数S(=ノ2〃) 字変数の増加による計算時間およびメモリ量の増加を抑 の文字式の形で導出するプログラムである。このような え,多くの文字変数を含んだ回路関数を導出しうるよう 文字演算プログラムは,例えば,回路の最適設計または にした。
数値演算の補助手段等に有効に利用しうると考えられる 計算結果の出力に当たっては,1つの文字とみなした が,その場合,任意の回路パラメータ(複数)を文字と 多項式をもとの多項式の形に復元し,かつ,この置換多 して残し,他は数値化するということが望まれる。文字 項式が共通因子となる場合,その多項式をくくり出すご 変数として扱いうるパラメータの数は多いほどよく,で とにより,簡潔な式として出力しうるようにした。そし
きれば,全てのパラメータを文字として残した式を導出 て,この計算結果の出力はFORTRAN形式に従い,こすることが望ましい。しかし,文字演算では,文字変数 の出力を他の計算プログラムの入力としてそのまま用い がふえると計算が非常に複雑になり,計算時間も急激に うるようにした。
増加する。従って,今までのプログラムでは,回路規模 また,この計算結果に対し,任意に選定されたある個
が大きくなると,計算時間やメモリ量の制約から,あま 数の回路パラメータに数値を与えた場合,それをできる
限り簡潔で,しかもそのまま他のプログラムの入力とし
て用いうるような形の式に鯉し,それを出力しうるよ 3・多項式の文字による置換
うに工夫した。なお本研究は昭和54年度科学研究費補助 3.1.原 理
金(一般研究D)によって遂行されたものである。 文字行列式を展開する場合,各行列要素(一般に文字
2.プ。グラムの構成 多項式)を掛け合わせてい㈱この多項式の積演算に
時間がかかる。例えば,多項式X1+X2+X3と} 1+}「2 図1に,改良を行った文字演算プログラムの構成を示 (Xゴ,】7:は単項式を示す)を掛ける時,今までの文字演算 す。回路情報入力,行列式生成,行列式展開のサブルー では,
チンDETについては,他の論文に詳述してある通りで (Xl+X、+X、)*(y1+} 2)=X、 y、+XI y、+X、} 1+
ある。まえがきで述べたように,行列式の要素の中で項 X、y、+X3y、+X、γ2 (3−1)
数の多い文字項を1つの文字に置き換えるのであるが, というように展開し,その展開結果の同類項探索を行っ
この操作は,サブルーチンPREPROで行われる。 て,同類項があればそれをまとめるようにしていた。そのため,文字変数がふえて多項式の項数が多くなると,
START 積結果の項数が非常にふえて使用メモリ量が増大し,同
類項探索にも時間がかかった。例えば,図11に示す回路 について,すべての回路パラメータを文字として残して
行列式生成 回路関数を導出する場合,図2のような行列式を計算する必要がある。この図で,行列式内の数字は,文字多項 式の項数を示している。この中で,○印で示した各要素
DET を選出して積を作る場合を考えると,その積の項数は約 200万項になる。これはメモリの限界を越えるものとなる。
START
回路情報入力
行列式生成
PREPRO
D E T
WRTPL WRTTF
一一一一一一
STONTF
一一一一『−
@ END
図一1 プ回グラムの構成
かくして,行列式を展開することによって得られた回
路関数は,サブルーチンWRTPLを用いて,共通因子としてくくり出しうる置換多項式をくくり出したのち,サ
ブルーチンWRTTFを用いて出力する。文字回路関数 が出力されればよいという場合には,WRTTFを用いてそれを出力して終了となるが・回路関数の数値化を行う 図_2 行列式の例 場合は,サブルーチンSTONTFを用いて,所定の文字
パラメータを数値化し,その結果を整理して出力する。 そこで,項数の多い多項式を要素とする行列式,例え 数値化を行う文字パラメータの種類を変えて,何通りも ば,
の数値化を行いたい場合には,数値化データを変えてこ Xl+X、+X, 0 0
のSTONTFを繰返し呼び出すことにより,それぞれの ∠≡ O y1+γ、 y3 (3−2)
場合の回路関数を導出しうる。 O ZI Z、
0 0
10 2 0 0 ⑤
2 00
0
00
00 2 0 0 0 ⑤
2⑥ 1
0 0 0
12 0 0
00
2
④
1 10 0 0 0 0 0 0
0
1 ③0
00 0
10
00
0 0 0
1③ 0 0
10 0 0
0
10 ⑤
1 10 0
1 00
1
0 0
1 0③ 0 0 0
10
1
0 0 0
00 ③ 0 0
0 10 0
10
00 0
2 ③0 0
0 0 0 0
00 0 0 0 2
③うに計算を進める。(ただし,文字で置き換えるという意 のコードが格納される。取扱う問題において,文字変数
味は,ある具体的な文字を付与するということではなく が少ない場合には,1つの数字ですべての文字多項式を て,その文字多項式に対して新しい通し番号とインデッ コード化できるのでMZ=1でよいが,文字変数が多いクスを付与するという意味である。) 場合は,計算機で取扱いうる最大数の関係で,1つの数 ∠≡α(6z2一γ3z1) (3−3) 字でコード化しきれなくなり,その場合はMZが2以上 そして,計算結果を出力する際に,その計算結果に含ま になる。行列式の各文字要素には一貫番号が付せられ,
れているα,●をもとの多項式に復元し, その文字要素すなわち文字多項式の項数と,その多項式
(X、+X、+X、){(y、+γ、)Z、−y,Z、} (3−4) の最初の単項式が格納されている配列CM, MCの番地というような形で出力する。このようにすれば,多項式 から1を引いた数が記憶されているので,一貫番号から の項数がふえても,その積演算時間は増加しないし,メ その多項式の各単項式を知ることは容易にできる。この モリ量も充分少くすることができ,また,出力結果も簡 一貫番号を行列要素多項式番号ということにする。また,
潔になる。 行列要素として存在している多項式(単項式も含む)を ただし,行列式の各要素は,一般にSを含む多項式で 行列要素多項式と呼び,前述の如く1つの文字で置換す
ある。このSの含まれている多項式を1つの文字で置き る多項式を置換多項式と呼ぶことにする。
換えると,パラメータSまでも括弧の中に含み込まれて 図3において,行列要素多項式はAの部分に格納され しまって,不適当である。そこで,その場合には,Sの ている。NTTは行列要素多項式が格納されているCM,
各べきの係数多項式に着目し,それがある項数以上の多 MCの最終番地であり・NLIMは情報格納可能な最大番
項式である場合,それを1つの文字で置き換えるように 地で,プログラムの宣言文で指定してある。置換多項式
してある。 の各単項式の内容も,その構造は行列要素多項式の場合
1文字に置換する多項式の項数であるが,2項以上の と全く同じなので,配列CM, MCを用いて,図3の多項式をすべて置換すれば,行列式展開における時間は NTT番地から順次格納していく・最終的には・置換多項
短くなる。しかし,出力結果を簡潔にするという点から 式の内容がすべてBの部分に格納される。置換多項式に考えると,これが最良であるとは言いきれない。かえっ も通し番号を付けるが,この番号を置換多項式番号と呼 て,3項以上の多項式だけを置換する方が,出力結果が ぶことにする。これも1から始まる一貫番号である。
簡潔になるということもありうる。そこで,何項以上の Bの部分に格納されている置換多項式番号LPの置換 多項式に対して置換を行うかは,計算すべき対象回路の 多項式において,その(格納先頭番地)−1をNTO 状況に応じて適当なものに指定できるようにした。この (NCT+LP)に・その項数をNTPOLI(LP)に記憶し
ように行列式の要素の多項式の中で,文字で置換される ておく。配列NTO(K)は・すべての文字多項式の(格 多項式と置換されない多項式の両方が存在している場合 納先頭番地)−1を記憶しておくメモリで・NCTは行列 には,行列式演算において,置換されない多項式どうし 要素多項式番号の最大値である。従って,全ての多項式 の積演算は従来通りの方法で実行されることは言うまで に対して,行列要素多項式番号または置換多項式番号が
もない。 わかれば,その内容を簡単に引き出すことができる。かくして得られる行列式の展開式は,置換多項式を表 わす文字と回路パラメータを表わす文字とによって形成
される単項式の集合として得られることになる。
籔演ζ;1夢導ム_列式の文字要素(文字多L>[∴当
項式)の内容は,配列CM(N), MC(N, M)に格納さ 配列CM(N),Mc(N,M)
れている。Nは, CM, MCの共通の番地で,1つの番
地に1個の単項式が格納される。ある単項式が第N番地 図一3 置換多項式の格納領域
図3のAの部分にある行列要素多項式を1文字で置換 いるということである。この余裕を多項式の置換文字の
する場合には,前述のようにして,その多項式の内容を インデックスに用いられれば,余裕メモリの有効活用を Bの部分に移したのち,Aの部分にあるその多項式の内 はかりうることになる。また,計算の遂行上,多項式置
容をクリヤし,代わりに,その置換多項式に対して与え 換文字に対するインデックスは,同一のME(L)の組のられたインデックスを代入する。その結果,Aの部分の 数であることが望ましい。従って,計算機のメモリに充 多項式は項数が1になる。また,この行列要素がSを含 分余裕がある時には,この置換文字に対するインデック み,その係数多項式が1文字に置換された場合には,そ スには,別の新しい組の数字を割り当ててもよいが,そ の置換文字のインデックスを用いた新しいコードがAの うでない時は,前記の文字回路パラメータのインデック 部分に入れられる。例えば, スの余裕のある数字の値を用いる必要がある。
(Xl+X、+X,)S+(γ1+y、) 一方,行列式の演算の上から,全ての多項式を1文字 というような場合には,Aの部分の多項式の項数は2項 で置換することが得策とは必ずしも言えない。それは,
ということになる。 一見計算を簡単にし,式を簡潔にするようにみえるが,
3.3.インデックス その結果を利用する上には不便なものとなることがあ
文字演算プログラムでは,各文字パラメータにイン る。従って,行列式の文字演算上必要な多項式だけを文
デックスを与え,そのインデックスを使って文字式を 字で置換することが望まれる。そこで,これらの判断を
コード化している。そこで,多項式置換文字に対しても 計算機内部である程度自動的に行いうるように,次のよ 同じようにインデックスを与え,多項式置換文字を文字 うな工夫を行った。
パラメータと全く同じように扱って,行列式展開の計算 まず,何項以上の多項式を置換するかという基準をん1 を行うようにしてある。 と〃2の2つ設定する。〃1は,その項数以上の多項式は 文字パラメータが全部で卿個ある場合,そのうちのη 絶対に置換を行うというもので,〃2(ん2≦〃1)は,その 番目のパラメータに対するインデックスは,文献(2)に述 項数以上の多項式はインデックスに余裕がある場合にだ べたように,次式で与えられる。 け置換を行うというものである。そこで,文字パラメー
1・=
ロ染三…,万(γm、。=γ1*γ2*…*γm);㍑;:エニζ㍑㌻ζ隠實㌫:(3−4) るかどうか調べ,与えることができればインデックスを 胚@=1,2,...,初は,(i番目のパラメータのとりう 与える。もし,泓項以上の多項式すべてにインデックスを る最高次数)十1である。多項式置換文字の場合には, 与える余裕がなければ,別の新しい組の数字を使ってイ 同じ文字が行列式の他の部分に現われることは考えなく ンデックスを与える。そして,いずれの場合にも,〃1項 てよいから,M=2として差し支えない。計算機で扱え 以上の多項式にインデックスを与えたあと,まだその同 る数(整数)の大きさは有限であり,1組の数字で与え じ組の数字でインデックスを割り当てる余裕があれば,
られるインデックスの個数には限りがあるので,パラ ゐ、項以上の多項式についてもできうる限りインデック メータの数が多い場合には,複数個の組の数を使ってイ スの割り当てを行う。そして,インデックスを割り当て ンデックスの割り当てを行う必要がある。従って,パラ ることができなかった多項式については置換を行わない メータの番号をLとするとき,各パラメータには,イン ようにする。
デックスの組の番号ME(L)と,インデックスの数IE 3.4.サブルーチンPREPRO
(L)が割り当てられることになる。 3.1節,3.2節で述べた処理を,サブルーチンPREPRO われわれのインデックスの付け方は,メモリ量を極力 で行う。このサブルーチンは,文献(2)に述べたように,
節約する方法をとっているので,ME(L)の最大値MZ もともと,行列式の文字要素をSの次数で分類して整理
に対しては,IE(L)の最大数はかなり小さくなり,1 するサブルーチンであったが,これに,前述のように,
E(L)の値は計算機の取扱いうる最大数に比して,きわ 多項式を文字で置換してインデックスを与えるという処
めて小さいという場合が多い。すなわち,インデックス 理を付加した。付録1に,そのフローチャートの詳細を
を与えうる文字の数には,まだかなりの余裕が残されて 示す。
∬1(∬2(∬3(Q2+Q3+1)+Q1)+κ・+エ・エ・(∬・+Q・)
4・計算結果の出力方法 +Q5+1) (4−3)
多項式の置換を行って計算した回路関数は,出力する さらに,多項式どうしの和演算を行って,それを改めて 時に,多項式置換文字を元の多項式に復元して出力する。 yl,夕2,……という多項式で表わすと
しかし,これをただ機械的に行っていくだけでは,出力 ∬1(工2(工3〃1十Ql)+∬,∬、y、+y,) (4−4)
琴1懸i羅灘i灘但レ(蹴二1
のに対しては和演算を行って,その結果が普通われわれ: となり,きわめて簡素な形にまとめることができる。こ が手計算で行う場合のように自然な形のものとなるよう れらのyl〜y3の多項式も置換多項式となり,従って,こ
にした。また,出力結果はFORTRAN形式とし,この の操作を終えた段階では・回路関数は置換文字のみの文 回路関数を他のFORTRANプログラムの入力データ 字式で表わされることになり・行列要素多項式番号は不としてそのまま利用できるようにした。 要になる。
このようなことを行う場合,起こりうる場合は多種多 くくり出しを行う順序は,上の例でもわかるように・
様なものがあり,それらを相互矛盾のない一定のルール 置換多項式に対するインデックスの大きい順となる。サ
に従って正しく処理しうるものとしなければならなかっ ブルーチンPREPROでは,通常,項数の多いものほど た。 大きなインデックスを与えているが,このインデックス 4.1.処理概要 の付与のしかたを変更すれば,くくり出しの順序も変更一例として,行列式の展開後,次のような計算結果に できる。例えば,微分などの必要上,特定の文字パラメー
なる場合の処理について考える。 タを含む項を重視する必要のある場合には,それを含む
∬1κ・為+苅X・+X1∬・Q1+∫1+∬1為∬・∬・+Xlエ・X・Q、 項に大きなインデックスを割り当てるようにすればよ十xlx2∬3Q3十エ1∬5x6(94→一エ1Q5 (4−1) し)。
ただし,κ、は置換多項式,Qごは置換を行わなかった文字 かくして,配列CM, MCに納める内容は,置換多項 項および数値項からなる単項式である。また,置換多項 式に対する内容のみを必要とすることになる。従って,
式κゴに対するインデックスを1,とすると, 行列要素多項式の内容はクリヤし,置換多項式の内容を,
1.〉∫.(初くη) 図4のAの部分の左端からつめて格納することにより,
という関係があるとする。計算結果の各単項式は,配列 CM・MCの整理を行う。
。1。、。、Q、+。1。、。,Q,+。1。,。,+。1。、Q1+・1・4 配列CM(N)・MC(N・M)
8========一一 図一4行列式展開後のデータ格納領域
③=,+。、 (4.2)4.2.データ構造
一一一一一一一一→ 行列式の展開結果は,配列CM, MCの末尾(図4の
つまり,大きなインデックスを与えられた置換多項式を Bの部分)に,回路パラメータを表わす文字と多項式置 含む項ほど左に現われる。このようにすると, κ1を含む 換文字からなる単項式の集合として格納されているが,
項(グループ①),κ,を含む項(グループ②),κ,を含む 共通因子のくくり出しを行った結果は,置換多項式番号 項(グループ③)というグループ分けを,左から順次調 と算術記号コードとを配列したものとなり,これは別の
べながらできる。そして,各グループごとにXl,κ,…… 配列INCA(1)に記憶される。算術記号コードで表わくくり出していくことにより,次のような結果が得られ す記号は+,(,)で,・および**は除外する。これは,
る。 整理後の式の判読に不必要だからである。例えば,(4一
〔X1〕 ( 〔X、〕 ( 〔X3〕 〔Y1〕 + 〔Q1〕 ) + 〔X5〕 〔X6〕 〔Y・〕 + 〔Y,〕 )
図一5 1NCAへの格納例((4−4)式の場合)
4)式は,INCAに図5のように格納される。図において, の短縮がはかられることになる。
〔x1〕等は,それぞれ置換多項式κ1等の置換多項式番号 従って,ここでの数値化は,そのような使い方を念頭
を表わすものとする。この置換多項式番号に代表される において,次の2点に注意した。第1に,配列INCA多項式の内容は,図4のAの部分に格納されていて,こ に納められているくくり出しをすませた回路関数の形は の置換多項式番号に対応する項数と,その初項の入るべ そのまま保存しておき,別に新しく部分的に数値化した
き番地の直前の番地が記憶されているので,置換多項式 回路関数を作る。第2に,数値化したあと,その回路関 番号から簡単に引き出すことができる。 数の整理を行う。
INCAに納められている結果を出力するために,サブ くくり出しの行われている文字回路関数の式につい ルーチンWRTTFNが用意されてある。このWRT・ て,ある任意に選出された複数個のパラメータに数値を
TFNは,置換多項式番号に対応する多項式の内容を引 与えたときの回路関数の形は,そのままではきわめて不
き出し,その両側に括弧を付し,また多項式どうしの積 自然かつ繁雑なものとなっているから,必要な計算を実 を示す・記号を加える等の処理により,INCAの内容を 行して簡潔な形の式に変更することが望まれるわけであ
FORTRAN形式の算術式として出力するものである。 る。例えば,(4−4)式において,数値化により,多項式 4・3・サブルーチンWRTPL κ2とκ,が数値として表わされるようになる場合には,回路関数における共通因子のくくり出しを行い,その ∬2(∬3yl+Ql)+y3 (5−1)
結果を配列INCAに格納するサブルーチンがWRTPL は,括弧をはずして多項式の和演算を実行することによ
である。付録2に,そのフローチャートを示す。 り,1つの別の単独多項式としてまとめうる。その多項 式を21とすれば,(4−4)式は,
5.数値化
工1(∬5∬6y2十z1) (5−2)
多項式の文字による置換,共通因子のくくり出しを という簡潔な形に変換されることになる。
行って得られた回路関数の中の任意のいくつかの文字パ 数値化を行ったのちのINCAに対応する形について
ラメータに数値を代入する。 も,起こりうる場合は多種多様であり,あらゆる場合を 多項式の置換を行うことにより,回路パラメータを全 自己矛盾のない一定のルールに従って,しかも整理に必 部文字として残して回路関数を導出することができるよ 要な時間とメモリを最小限に抑えて遂行する必要があ
うになったが,この結果を利用する場合には,ある特定 る。以下,そのアルゴリズムの概要を説明する。
のパラメータを文字のまま残し,他のパラメータには数 5.1.数値化後の整理方法
値を代入して,部分的に文字化された回路関数にして利 数値化後の整理は,出力結果を自然な形に直すと同時 用することが多い。このような回路関数は,今までも, に,この結果の出力を他の計算プログラムに直ちに利用 その特定のパラメータ以外のパラメータに初めから数値 しうるようにすることが目的である。整理に当たっての を与えて回路関数を計算することにより得ることができ 原則は次の如くとした。
た。しかし・文字で残すパラメータをいろいろ変えて何 (1)多項式どうしの積がある場合は,それを展開する演 種類もの回路関数を得ようとする場合,今までの方法で 算は行わず,そのままの形で残しておく。このような は・そのたびごとに初めから回路関数導出の計算をやり 多項式の積の形を積多項式と称することにする。それ 直さなければならなかった。しかし,今回の改良により, に対して,多項式が単独に存在しているのを単独多項 パラメータを全部文字パラメータとして計算した回路関 式と称することにする。
数が得られ,それを数値化するだけでよいので,文字パ ② 数値間の積および和があればそれを実行し,また数
ラメータとして残すべきパラメータが不確定であった 値が共通因数として他の多項式に乗ぜられている場合
り,いくつかの変わった取り方を必要とする場合,時間 には,この数値をその多項式の各単項式の係数に乗ず
○(●●(●+○)+○●○(●+○+○)
1234567891011121314151617181920
+○(●(●+○)+●))+○+ 一一一一
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
(a)INCAの内容
○(●○○○+○○+○)+○+ 一一一一
123456789101112131415
(b)NPROの内容
図一6 数値化後の整理の例
る。なお,この数値がゼロになる場合はこの多項式を に納められていることになる。ただし,この段階ではこ 消滅させる。 れらの納め方は図13のようになる。すなわち・頭の部分
(3)単独多項式どうしの和があれ}ま,それらの和演算を AにはINcAの中の多項式番号に対する内容・B}・は
実行する。 NPROの中の多項式番号に対する内容が入る。また・末
(4)不要になる+,(,)記号は除去する。 尾のCにはINCANの中の多項式番号に対する内容が 次にデ_タ構造について説明する。 納まる。INCANが整理されていくにつれて・多項式番
前述の如く,くくり出しを行った後の回路関数の分子 号と算術記号コードが,順次NPROに入れられていく。
および分母の多項式の形は,Sのべきごとにその係数多 NPROに入れられた多項式番号に対する内容はBの末 項式として,配列INCAの中に多項式番号と算術記号 尾に付け加えられ,それはBの領域の中に組み込まれる。
コ_ドの数列として納められているが,数値化は,この BとCの間の領域は,1つのレジスタ的役割のために利 Sのべきごとに,その係数多項式に対して行うことにし 用することになる。
た。 次に,数値化後の整理の例をあげる。いま・INCANの
このSの各べきに対する係数多項式の形の納められて 内容の形が図6(a)の如くになっているとする。この図
いるINCAの内容に対して,これを左から順次調べて で,●は番地付数値,○は単独多項式をさすものとする。
行って,多項式番号に対応する数字を見出すとそれに対 また,下に付した数字はINCANに納められている順序
応する多項式の数値化を行い,数値化された多項式の内 である。これをわれわれの定めたルールに従って整理す
容を配列CM, MCの末尾から納めて行く。算術記号に ると,NPROには図6(b)のような形のものが入れられる 対するコードはNLIMよりも大きい数を割り当ててい ことになる。このときは・下に付した数字はNPRO中のるので,NLIMとの大小比較により,多項式番号である 順序である。
か否かは容易に判別できる。そして,配列INCAに納め 図6において・(b)の1・3・4・5・8の●および○
てあるコードの数字の上記の部分を,そのままの順序で は,それぞれ,(a)の1,12,11,13,22の●および○と 別の配列INCANに移して整理し,その結果を別の配列 内容は同じである。また・(b)の6の○は・(a)の
NPROに納める。すなわち, INCANにはSのべきごと ●十〇十〇にその係数としての文字式の内容のみを納めるが,以上 15 17 19
の如く,INCA, NPROには多項式番号と算術記号コー をまとめたものであり・(b)の9の○は・(a)の ドとが式の形に対応する順序で納められることになり, ●0
24 28 これらの多項式番号に対応する内容は,配列CM, MC
(b)の11の○は,(a)の 使用メモリは約%に減少した。
●●○十〇 (●●十●)
3 4 8 22 24 26 31
・ C2
(b)の14の○は,(a)の G57G6
●●●○十〇 G7 3 4 6 1 35 G1 3 C1
1
をそれぞれまとめたものである。 A この例において,もし(a)の
●+○+0
15 17 19 0 がゼロである場合には,(b)の3,4,5,6の内容は除
かなければならなくなり,8,9,10,……以下の内容 図一7 Friend型アクティブフィルタ
が2の(の次に移されることになる。
以上のような操作を遂行するために定めたルールの体
系については,紙面の都合上省略する。 (計算時間)
5.2.サプルーチンSTONTF 〈改良前〉 (1190例sec)
回路関数中の任意の文字パラメータを数値化し,数値 〈改良後〉 (264msec)
化後の整理を行ってその結果を配列NPROに格納する
までの処理をサブル_チンSTONTFで行う。付録3に (使用メモリ)
そのフローチャートを示す。 〈改良前〉 (1681番地)
6.回路関数の計算例
〈改良後〉 (160番地)
以上述べた改良を行って,次の2つの回路について, 図一8 計算時間および使用メモリの比較 その伝達関数を求めてみた。
6.1.Friend型アクティブフィルタ 図9は,伝達関数の分子のS2の項について出力結果を 図7に示すFiend型アクティブフィルタにおいて,15 比較したものである。改良によって出力結果が非常に簡
個ある回路パラメータをすべて文字で残して伝達関数を 潔になることがわかる。
計算したところ,計算時間および使用メモリ(回路関数 図10は,15個の文字パラメータのうち5個だけを文字 を求めるのに必要な配列CM, MCの領域)は,図8の として残し,残りのパラメータはすべて数値化して得ら ようになった。図からわかるように,計算時間は約%, れた伝達関数である。
S・・2鯵 G1借wT●C1.C2◎G5◎G白●G8・AO ◆ G1●冒丁●C1●C2●G5●G4●G9●Aσ ◆ G1■WT●C1⇔C2●G5●G4●GIO●AO ◆ G1●冒T骨(1●C2φG6●G4●G8●AO ◆ G1⇔wT・(1・
C2⇔G6・G4●G9・AO ◆ G1・冒▼●(1●C2●66◎G4◆610●AO ◆ G1●冒丁鯵く1■C2●G7●64●G8●AO ◆ G1◆WT鯵C1●C2●G7●G4●69●AO ◆ G]」◎U T●C1●C2鈴67●G4●G100AO ◆ G2●冒†●C1●C20G5●G亀●G8●▲O ◆ G2書冒丁●C1●C2●G5●G4●G9●AO ◆ G2●W了●C1●C2●65●G4●G10●AO ◆ G2●WT●C1◆C2廿66●G4●68●AO ◆ 62●WT●⊂1●(2●G6・G4●G9督AO ◆ G2●UT●C1●C2●G6●G4■G10飴AO ◆ G2◆W了●C1●C2φG7●G4鯵G 8傍AO ◆ G2●W▼◆C1⇔C2・67●64ト●G9●AO ◆ G2●U▼●C1●C2●G7●G4●610●AO ◆ G3●∀▼●C1●(:2●G5●64◆G8■AO ◆ 63●冒了●C1●C2吾Gう 魯G4⇔69●▲O ◆ G3●w了香⊂1⇔C2●G弓⇔G4◎GIO●AO ◆ G3句W了●C1■⊂2●G6●G4⇔G8●AO ◆ G3⇔WT●(1●C2●G6●G4●G9●AO ◆ G3●WT●C1◎
C2書G6・G4●610●AO ◆ G3魯UT●C1◆C2●G7●G4●G8●AO ◆ G3●WT●C1鯵C20G7⇔G4●G9●AO ◆ 63静WT●C1●C2●G7●G4・GIO●AO》
(a)改良前
写◎07⇔rτ133「◆G2◆G1)●《G7了G6◆G5⊃「畜てG10うG9嬬●)● ( 【C2◆Cユ,⇔《134予C1吾AO傍W了ハ ↓ (錫G4◎Clo婚2●AO⇔W丁》 ハ 》
(b)改良後
図一9 出力結果の比較(伝達関数の分子S2の項)
s 2・ q.26ε ・ c1 。舗▼,・ c2・ω・《・1.26ε◎・c1・・2・^。6旬f
S●《《6・31ε4》●《AO●智了,●《(2◆C1, ◆ 《−1●7 ε4,●(AO●W了》●《C2◆C1, ◆ 《3・45ε3●C1●AO・U▼,》
《《6・31ε亀●AO◆w▼,,
NU糾ε瞬A▼OR
特・・●●・●・●●●●●・・●●●●●●●●●●●●◆●●●●●●●●●●●●●●●◆●鈴●●●●●●●●◆●●●●●■●●●●●●●・●●◎●●●●●●●e●◆句●●鱒・●・・●●●●●
●.●・●・・●●・.⇔◆◆・◎●●●●●●●●●◆●●●●●◆●●●●●●●●●●●●●●●● ●o●●●●●●●●◆●●●●●●◆●・●●●●●◎●◆.●魯●●●●・◆●●●●●●●●●●◎●
oεNO図INAτo費
S..,.《 3.79ε4》・κ1・AO,・《e2・ω・《−7.48ε,》・《C1・AO,・((2・C1,・《−3・04ε4・C1°・2°禽0,,
S 2.《《3.79E4)・CC2・q)・(Cユ醐丁・51.0。E。・^。,・(1・16E2ハ・《(2・C1,・《・7−19ε1・q・AO閣▼→・⑨9ε1・q 了 3・19ε2°▲°,◆《°5・26ε◎D
・(AO》◆(C2◆C工) ◆ 《1・03ε4)● AO)●《C2◆(1、.◆ (4.21ε4b●C1●AO◆3・0らε4●C1●(2●ao欄▼●3・04喝…4●(1●●2●W▼◆6
.亀2ε3●q●●2●AO9∀了S・(α.89εち,・《WTM(2・(D・U.16F2,・《C2・ω・《−3.59ε2・AO・W▼・3.19ε2・W▼,・《2・10ε3》・《C2◆C1,・《2・99ε1°AO°WT 2・49臼゜wη ・《6.50EO》・《C2.C1,.《.コ.19E2・^n・w了・1.59ε3欄丁,・q.52ε5・AO・4・21ε4・Cl醐丁 1・16ε白゜く1 ^0醐丁》,
《《1・,2E5■WT◆2.80E4●AO●WT})
図一10 数値化結果(15個の文字パラメータ中10個を数値化)
6.2.マルチループ型アクティブフィルタ 出力結果の一部(分子のS2の項)である。この伝達関数 回路図を図11に示す。パラメータの数は全部で38個で 中の文字パラメータをすべて数値化してその振幅特性を ある。これも,パラメータを全部文字で残して伝達関数 算出し,この結果が正しいことを確認した。なお・使用 を計算したところ,約6.4秒で導出できた。図12は,その 計算機はFACOM M−190である。
P●●_●_51●●__、
%.A
%B!C
配列CM(N),MC(N,M)
図一11 マルチループ型アクティブフィルタ 図一13 数値化における
データ格納領域S■■2曼((G3C◆G14+G8◆G7◆G5》■ 《 (−G2C●G28・G2B鯵HF2−G18−G3)令 ( (−64C●65B−G46−G48ひHF4−G11》●(G28◆G5◆G4》●《G4B◆G9◆G8》傍(G6C◆G78◆G12
)●《G1⊂◆G3B◆G6)静(Gう(二◆G68◆GIO)⇔《G1鼻(1φC2) ◆ 《62B◆G5◆6白》書 《 (G4B◆Gg◆G.8)⇔(G6C◆G7B◆G12》●(G]LC◆G38◆G6)●(.65 ・ C−G58⇔HF5)骨(・G68−G10)⇔(−G1静C1●C2) ◆ (G6C◆G7B◆G12》静(GIC◆G3B◆G6)骨《G5C◆G68◇610》●⊂G4B◆G4B◎HF4、ひ《G1鯵(:1昏Cク 告G48) ) ) ◆ (●G4C−G58●G48・G4B鈴HF4●G11)⇔ ( (G2B◆G5◆G4)o《G4B◆G9◆G8}●(G6C◆G7B◆G12)曇(G5C◆G68◆G10)骨《●GIC.
G1●⇔HF1)⇔(−G38・G6》◆⊂・G1⇔CloC2) ◆ 《G4B◆G9◆G8)静(G6C◆G7B◆G12》⇔《GIC◆G38◆G6》静(G5C◆668◆G10》鈴《G28◆G28●HF2,●
(G1■(1●C2■G28》 》 ◆ (G28◆65◆G4》● 《 《G4B◆G9◆G8)◎《66C◆G7B◆G12,0(●GIC・GIB傍HF1》静《.63B・G6)⇔(・G5C・Gう8●HFう,
◆(−G6B・610)●(G1●C1●C2》 ◆ 《G6C◆G7B◆G12》●《G5C◆G68◆G10》■【64B◆G48停HF4)6《.GIC・G18輪HF1》鯵《・G36・G6》●《−G1⇔C1書 ⊂2ひG4B) 》 ◆ (64B◆Gg◆G8》特《G6C◆G7B◆612》●(GIC◆G3B◆G6)骨(G2B◆G28魯HF2)昏《・G5C・Gう8●HF5》■(−G68●G10》●《・G1怜(1吾 C2◎G2B) ◆ (G6C◆G7円◆G12)●(GIC◆G38◆G6》●《G5C◆G68◆G10)●《G28◆G28eHF2}昏《G48φG48⇔HF4》●《G1●C1●⊂2骨G26鯵G48) ) ◆ (−G2(・G2B・G2B●HF2・G18●63》◆ ( 《sG4C・GうB●G48●G48◎HF4●G11)■ 《 《G2B◆G5◆G4)■《G6C◆G78◆G12)吾《GIC◆G38◆G6)
■(G5⊂+G6B◆G10)魯《−G1●G8●●2ひC1●C2》 ◆ G48◆G9◆G8》⇔(G6CφG7B+G12)ひ(GIC◆G3B◆G6,●《G5C◆G68◆GIO>●《・G1鯵G5■●2⇔C 1⇔C2) ) ◆ (G2B◆G5◆G4)⇔《G6C◆G7B◆G12)秘(GIC◆G3B◆G6)粉(・G5C・G5B⇔HFう)◎《・G6B・GIO)⇔(G1φG8魯●2句C1●C2》 ◆ (G48◆
Gq+G8)⇔(G6C◆G7息+G12)骨(GIC◆G38◆G6}書《●G5C−GうB鯵HF5,●(−G6B−G10)⇔(G1⇔G5⇔●2各C1鯵C2》 + (G6C◆G7B◆G12》ひ(GIC◆G3 B+G6)φ(G5(◇G6巳◆G10》⇔《G48◆G4B●HF4》魯ζ・G1⇔G5鯵◆2債C1■⊂2●G4B) ) ◆ (.G4⊂−G58・G4B.G48昏HF4−G11)⇔ ( (G2B◆G5◆G 4)⇔(G6(:◆G78+G12)書(G5C◆G68◆G10)◆(.GIC・G18●HF1》僑《−G38・G6》●《G1傍G8●■2ひ⊂1●C2).◆ (648◆G9◆G8)●《G6C◆G7B◆G12》
●(G5C+G6B◆G10)⇔ ( 《G28◆G28●HF2)◎《・GIC−G18●HF1》●(G1●G5傍C】」●C2吾G3B⇔HF3, ◆ 《・61C・G18⇔HF1》各《■G38・G6ハ書《G1各
G5傍●2静(1●C2) ) ◆ (G6⊂+G7B◆G12》書《GIC◆G38◆G6)魯(G5C◆668◆GIO,●(G28◆G28●HF2》⇔《・G1●G8魯◆2⇔⊂1●C2●G28) ) ◆ (G28◆G5◆G4》◆(G6C◆G7B◇G12)⇔【●G1(:・G18●HF1》●《・G38・G6,●(●Gう⊂−658●HFう)⇔(・G68●GIO》⇔《・G1昏G8●02●C1●(2) ◆ 《G4 8+Gq◆G8)特(G6⊂◆G7B◇G12)特 ( (G2B◆G28●HF2》⇔(●61C・G18静HF1)鈴《・G5⊂●G58●HF5)●(●G68.G10)●《−G1●G5■C1●C2⇔G38⇔H F3) ◆ (−G1⊂●G18督HF1)骨(・G3θ・G6)●《−Gう⊂.G58⇔HF5)■(−G68●610》■(●G1●G5⇔●2●C1各(2》 》 ◆ (G6C◆G78◆G12》鯵 ( (G1 ⊂φG3B◆G6》骨(G28◆G28魯HF2)鼻(●G5C・G5B◆HF,,特〔・G6θ・GIO)⇔(GloG8●⇔2昏C1鈴⊂2⇔G28》 ◆ (GうC◆G68◆G10)⇔ 《 《G2B◇G28◎H F2) (G4B+G4B傍HF4》●《−G1⊂−GIB骨HF1)傍(G1⇔6う●(1■C2●G380G4B倍HF3, ◇ (G48◆G48●HF4,⇔(●G1(●G18◎HF1》⇔(・G38−G6》⇔
(G1特G5管●2■(1■C2魯G4B) ) ))
図一12 マルチループ型アクティブフィルタの伝達関数の一部(分子のS2の項)
7.むすび 参考文献
1)橋本,永田,岡島,村上; 文字演算による回路解析 ,九
共通因子のくくり出しによる整理と数値化後の整理に 工大研究報告(工学),No.37,1978
ついては・起こりうる多様な凡ての場合}・対処して・相 2歴蕊灘に嘉璽燃鴨瓢ご出プ゜グ
互矛盾と遺漏のないルールの体系を作り上げるのに多大
の苦心が払われているが,その結果として得られたプロ
グラムの流れ図のみを示し,その底に込められているア
ルゴリズムについては他の機会に発表することにした。
付録1PREPRO「
@ ASTART
IWRITE=2mTCMN=2 mTMN=3
kPARニ100PJ=IZ mTWA=1 DOI=1,2
lSW(1)=−1DO J=1,MJS JSW(1,J)=NLIM−1 mSW(1,J)=0
LAST=NLIM
DO J=1,MJS
DOI=1,100
JST(1,J)=O mST(1,J)=0DOI=1,100 MST(D=0 IJM1=IJ−1 PJP1=IJ+1
DO J=1,IJM1ICG=IJ−J
DO I=1,ICG II=IJP 1−JiJ=IJP1−1
DO K=1,2 WORK=AIJ(1,J,K)̀IJ(1,J,K)=AIJ(II,JJ,K)
̀IJ(II,JJ,K).=WORK
NEX 2=NE十2
lV=ME(NEX 2)hV=IE(NEX 2)
lSE=ME(NE)
DO I=1,IJ
=
DO J=1,IJ
AIJ(1,J,2):0
@ キ
NC=AIJ(1,」,2)
mT=AIJ(1,J,1)
mS 1=NTO(NC)十1 mE 2=NTO(NC)十NT mE 1=NE 2−1
C
B A
鵬
DO N1=NS1,NE1
一 CM(N1)=0
キ
NS2=N1十1
DO N 2=NS2,NE 2 CALL ORDER(N1,NE,JOS 1,1)
CALL ORDER(N2,NE,JOS2,1)
≦ ・ 一 JOS 1:JOS2
〉
WORK=CM(N1)
CM(N1)=CM(N2)
CM(N2)=WORK
㌔DO M=1,MZ
IWORK=MC(N1,M)MC(N1,M)=MC(N2,M)
MC(N2,M)=IWORK
DOI−・,… = 1:IJ キ
MST(D=O MXS 1_0MXS2=0
DO NニNS 1,NE 2
CM囚=0
キ
< ≧
MC(N, MV)=IV IISP=・1 11SP・=NLIMCALL ORDER(N,NE,JO,1)
JO 1==JO十 1
JO1=MJS
≦
〉
DO N=NS 1,NE 2
CM(N):0 キ CALL ORDER(N,NE,JO,1)
JO 1=JO十 1
JO:MJS
≦
〉
NST(NC,JO 1)=NST(NC,JO 1)+1 STOP キ NST(NC,JO、)・・
JST(NC,JO 1)=N
NN=NST(NC,JO 1) STOP MST(NC)=JO NN=O
キ
IISP=NLIM
NN≡NLIM <
≧ JST(NC,JO 1);JST(NC,JO1)十N東IISP NST(NC,JO1)=NST(NC,」01)十IISP
l
= 、 キ
口SP:1
MXS 1=JO MXS 2=JO
MST(NC)=MXS 1十MXS2煩NLIM
D
D
L=LMX(MZ−1)十l
IEMXP=IE(L)東NDL(L]X=NMAX/IEMXP LPMX=ALOG◎◎/ALOG(カー1
DO I=1,IJ DO J=1,IJ NC=AIJ(1,J,2)
MSTV=MST(NC)
K=0
NST(NC,1):NLIM
MST 1=MOD(MSTV,NLIM)+1 MST I=MSTV/NLIM十1 DO J1=1,MST1
NSTVニNST(NC,J1)
NSTV=MOD(NSTV, NLIM) =O NSTV=NSTV/NLIM NSTV:NTCMN
≧
LP:LPAR
≦
NCPL(LP)=NC NTPL(LP);NSTV
NJSL(LP)=Jl−1 KPL(LP)=K LCPL(LP)=1翼100十JK:1 ≦ NTCMN:3
E
>
STOP
G
NTMN=NTCMN
LPZ=LP
E
DO I=1,LP−1 DO J=1十1,LP
〉 .
IW 1=NTPL(1)
IW 2=NCPL(1)
IW 3=NJSL(1)
IW 4=KPL(1)
IW 5=LCPL(1)
NTPL(1)=NTPL(J)
NCPL(1)=NCPL(J)
NJSL(1)=NJSL(J)
KPL(1)=KPLし1)
LCPL(1)=LCPL(J)
NTPL(J)=IW l NCPL(J}=IW 2 NJSL(J)=IW 3 KPL(J)=IW 4 LCPL(J)=IW 5
≦ 〉
NTMN=NTPL(LPMX)
LPZH=LPZ/2
F
MM=MZ
LPZ=LP
NBMX=ALOG(NMAX)/ALOG(2−1
IEMXP=・1
LPMX=NBMX
MZ=MZ十1
F
1=1十1
i=LPZ−1+1IW l=NTPL(D hW 2=NCPL(1)
hW 3=NJSL(D hW 4=KPL(D hW 5=LCPL(1)
mTPL(1)=NTPL(J)
mCPL(1)=NCPL(J)
mJSL(1)=NJSL(J)
jPL(1)=KPL(J)
kCPL(1)=LCPL(J)
mTPL(」}=IW l mCPL(J)=IW 2 mJSL(J)=IW 3 jPL(J)=IW 4 kCPL(J)=IW 5
<
1:LPZH
│ ≧
hWRITE=4
MS=ME(NE)
lXY=ME(NE十2)
キ
MS=MXY
@ =
JlMX=20 STOP
IEPL(J)=0
DO J=1,LPAR
MJV=IE(NE十1)
cO LP=1,LPZ NC=NCPL(LP)
iS1=NJSL(LP)十1 mTO(NCT十LP).=NTT
mT=NST(NC,JS1)iSTV=JST(NC,JS1)
j=KPL(LP)
旬
CALL CLEAR(N1,N2)
NCTPL=NCT十LPZ lPOLI=MM mTED=NTT RETURN
F (H)
=1 =2
K
JSTV=MOD(JSTV,NLIM) =0
NT=NT/NLIM JSTV=JSTV/NLIMIEPL(LP)=IEMXP峯2東叢(LP−1)
NTT 1=NTT
DO M=1,MZ
一 MC(JSTV,M):0キ
NTT=NTT十1 CM(NTT)=0
DO M=LMZ
MC(NTT, M)=0
DO N=1,NT N1=NSTV−1十N N2=NTT十N
DO M=1,MZ MCV=MC(N1,M)
M=MS キ
IEV=IE(NE)
MCV=MOD(MCV,IEV)
CM(N2)=CM(N1)
NTT=NTT十NT NTPOLI(LP)=NTT−NTT l
III=MC(JSTV,MS)II=III−MOD(III, NJV)
1=LCPL(LP)/100
JニLCPL(LP)−1※100
N1=JSTV十1N2=JSTV十NT−1
AIJ(1,J,1>=AIJ(1, J,1)一(NT−1)
キ =
K:2 NST(NC,JS1)
,
NST(NC,JS1)
=NST(NC JS1)一(NT−1) ;NST(NC,JS1)−NLIM康(NT−1)
CM(JSTV)=1 DO M=1,MZ
MC(JSTV,M)=0 MC(JSTV,MM)=IEPL(LP)キ = MM:MS
MC(JSTV,MS) MC(JSTV,MS)=(JS1−1)遼IE(NE)
=(JS1−1)※IE(NE) +MC(JSTV,MS)+n
付録2 WRTPL
START
=@ キ
10:1
NEX=NE十l NEX=NE十2
DO N=NS 1,NE2 CALL CHGOD(N,NE,0,1)CALL CHGOD(N,NEX,0,1)
IES=IE(NE)
lES=ME(NE)
lM=MPOLI
mG=1mCT 1=NCT十1
jC=0DOI=1,20
JADD(1)=O iPO(1)=0KCOH(1)=O iFACT(1)=2 mTANG(1)=NE 2 iO 1=JO+1 jOPL(IO,JO1)=KK
mTA=NS 1−1 NTW=NTA十1 lCV=MC(NTW,MM)
hEEO=MCV/IEMXP
キ IEEO:0
@ =
NCTPL=NCTPL十1
mTO(NCTPL)=NTTmTED=NTT
mT=NE 2−NTW十l mT 1ニNTm3=NTA+NT DO M=1,MZ
= MC(N3,M):0
@ キ
NT 1=NT+1 mTT=NTT十1
bM(NTT)=0.0
DO M=1,MZ
MC(NTT, M)=0N3=N3十1
A
A
N1=NTT十N N2=N3−N
CM(N1)=CM(N2)
DめM=1,MZ MC(N1,M)=MC(N2,M)
NT=NT l
NTT=NTT十NT NTED=NTT
JADD(NG):1
IA=IADD(NG)
LP=IA−NCT NTIA=NTPOLI(LP)
NCTPL 1=NCTPL
NT l=・NT
NCTPL=NCTPL十l
NTO(NCTPL)=NTTCALL WA(1.0,IANTIANCTPL 1,
NT 1,NCTPL, NT)
NTT=NTT十NT NTED=NTT
CAI」L VANISH(NCTPL 1, NT 1)
CALL VANISH(IA,NTIA)
NTO(IA)=NTO(NCTPL)
NTPOLI(LP)=NT NCTPL=NCTPL−1 JADD(NG)=O K=NTO(IA)十1
LP=NCTPL−NCT NTPOLI(LP)=NT KK=KK十1 1NCA(KK)=NCTPL
DO M=1・MZ KK=KK_1 1NCA(KK)−IA
LP=LEK(KC)
LS=2,肖巌(LP−1)
IEE=MOD(IEEO,LS)
IEE:0
KC=KC十1
X=ALOG(IEE十〇.5)/ALOG(2.0)
LP=X十l LEK(KC)=LP LX=2賄衷(LP−1)
ISTD=IEEO−MOD(IEEO, LX)
IEE=MOD(IEE, LX)
NTKC(KC)=O N=NTA
NTKC(KC)=NTKC(KC)十1
.NTKC(KC):NM
KCZ=KC KCZ1=KCZ十l NTKC(KCZ1)≡O
NT=0NT.NTKC(Kcz) C
KC:Kcz D
KC=KC十1
LP=LEK(KC)
NN==NCT十LP NT=NTPOLI(LP)
KC 1=KC十1
JW=NTKC(KC)−NTKC(KC 1)
JP=JP十l
KK=KK十1 1NCA(KK)=NN
KC:KCZ E
<
JFACT(NG)=l JFACT(NG);2
NGP=NG−l
JPO(NGP)=JPO(NGP)十l JADD(NG)=O
JPO(NG)=O
KCOH(NG)=KC
NTANG(NG)=NTA十NTKC(KC)
NCNG(NG)ニNN
JP=OKK=KK十1 1NCA(KK)=NLIM十4 KKNG(NG)=KK
NTKC(KCZ1)=NTKC(KCZ1)+1
D E
JW=NTKC(KCZ)−NTKC(KCZ十1)
NG 1=NG十1
JFACT(NG l)=0NG 1=NG十1
NCNG(NG 1)=NN> JP:1 =
JFACT(NG l)=2 1JFACT(NG l)=1
、JPO(NG)=JPO(NG)十1
NT=NTKC(KCZ)
DO N=1,NT N2=NTA十N MCV=MC(N2,MM)
MC(N2,MM)=MOD(MCV,IEMXP)
NK=NTKC(Kd乞1)
Nl=NTT
= キ
JW:0
N1=N1十1
CM(N1)=0.0
DO M=1,MZ
NK:0
キ
JFACT(NG l):「1MC(N1,M)=0
NCTPL=NCTPL十1
NTO(NCTPL)=NTTN3=NTA十NK十1
DO N=1,NK Nl=N1十1
キ
N1=N1十1
N2=NTA十NTKC(KCZ)
CM(N1)=CM(N2)』
DO M=1,MZ
MC(N1,M)=0=2 @JFACT(NG、) =1
N2−N3−N − CM(NTA+1):1 ,NCG−NCNG(NG 1)
=0 KK=KK−1
CM(N・)−CM.(N2) C−CM(NTA+1)
DOM=1・MZ G
MC(N1,M)=MC(N2,M)
NT=N1−NTT NTT=Nl NTED=NTT LP=NCTPL−NCT NTPOLI(LP)=NT
NCTPL=NCTPL十1
NTO(NCTPL)=NTTNTT=NTT十1 NTED=NTT
CM(NTT)=CM(NTA十1)
DO M=1,MZ
MC(NTT, M)=0JFACT(NG・):・ NTPOLI(LP)一、
キ
KK=KK十1 1NCA(KK)=NCTPL
LP=NCTPL−NCT
JFACT(NG 1):0
F
NCG=NCTPL
C=1.0
NCG=NCTPL
= K−KK . C=1.0
lJFACT(NG 1):2 、 一・ ㊦
JPO(NG)=JPO(NG)+1
JW:0 キNCG=NCNG(NG 1)
NL=NTA十NTKC(KCZ)
C=CM(NL)
INCA(K十1)=INCA Oく) INCA(K十1)=NCTPL
G F
F
LP=NCG−NCT mTG=NTPOLI(LP)
キ =
JADD(NG):1、
NCTPL=NCTPL十1
PADD(NG):=NCTPL hA=IADD(NG)
mTO(IA)=NTT
IA=IADD(NG)
kP=IA−NCT mTIA=NTPOLI(LP)
mCTPL=NCTPL十l
mTO(NCTPL)=NTTDO N=1,NTG
N1=NTO(IA)+N
m2=NTO(NCG)十NbM(N1)=CM(N2)驚C
CALL WA(C, NCG,NTG,IA,
@ NTIA, NCTPL, NT)
.DO M=1,MZ
NTT=NTT十NT
mTED=NTT
MC(Nl,M)=MC(N2,M)
CALL VANISH(IA, NTIA)
LP=IA−NCT mTPOLI(LP)=NTG iADD(NG)=1 mTT=NTT+NTG mTED=NTT
NTO(IA)=NTO(NCTPL)
mTPOLI(LP)=NT mCTPL=NCTPL−1
INCA(KK):NLIM十2
=KK=KK−1
キ
NTA=・NTA+NTKC(KCZ)
DO KC=1,KCZ
G =
NTKC(KC)=NTKC(KC)
@ −NTKC(KCZ)
=
< =
@ :NTANG(NG) NTA
@ キ
M
JPO(NG):0
@ 士
JADD(NG):0 KK=KK十l
hNCA(KK)=NLIM十2
IA 1ニIADD(NG)
kP=IA 1−NCT
mTIA 1=NTPOLI(LP)m1=NTO(IA 1)十1
KC=KCOH(NG)
J
= NTIA 1:1
L
=H CM(N1):0
@ =
JADD(NG)=0
CM(N1):0
@ キ
iFACT(NG):1
キ J JFACT=
(NG):1
@=
.JADD(NG)=0
I K
1
NCG=NCNG(NG)
LP=NCG−NCT NTG=NTPOLI(LP)
NG 2=NG−1 C=CM(N1)
キ JADD(NG 2):1 = NCTPL=NCTPL十1
1ADD(NG 2)=NCTPL IA=IADD(NG 2)
NTO(IA)=NTT DO K=1,NTG
IA=IADD(NG 2)
LPニ、IA−NCT NTIA=NTPOLI(LP)
NCTPL=NCTPL十1
NTO(NCTPL)=NTTK1=NTO(IA)十K
K2=NTO(NCG)十KCM(K1)=CM(K2)※C
CALL WA(C,NCG, NTG,IA, NTIA,
NCTPL, NT)
DO M=1・MZ NTED=NTT
NTT=NTT十NT
MC(K1,M)=MC(K2,M)
CALL VANISH(IA, NTIA)
LP=IA−NCT NTPOLI(LP)=NTG
JADD(NG 2)=1NTTニNTT十NTG NTED=NTT
NTO(IA)=NTO(NCTPL)
NTPOLI(LP)=NT
NCTPL・=NCTPL−1キ .
JADD(NG).0
CM(N1)=o.o = J
K NG=1 − L
キ
=0 >1 JPO(NG)、
=1
KK・=KK−1 K=KKNG(NG) KK=KK十1
, NG=NG−1
INCA(K)=INCA(K十1)
KK=KK−1 K=K十1
<NLIM INCA(KK) =NLIM+4 、K−KK <
=NLIM+2 KK=KK−1
INCA(KK)=NLIM十5
L
NG=NG−1
NG=0 〉KK=KK−1
RETuRN M
JPo(NG)=JPo WG)−1 L M
K
k キ
JPO(NG)=0
@ =
L KK=KK十1
PNCA(KK)=NLIM十2 jK=KK十1
PNCA(KK)=IA 1 NG=1
@ =
KK=KK十1
=NG=1 INCA(KK)=IA 1
KK=KK
@ キ{1PNCA(KK)=NLIM十5
L