(57)【要約】【課題】配列である被除数を、スカラ変数である除数で除算する演算を行う場合に、複数の除算演算を高速化すると同時に、演算精度を向上させることができる除算装置、除算方法及びプログラムを提供する。【解決手段】除算装置は、スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、複数の要素ごとの乗算値を演算する乗算値演算部と、乗算値演算部が演算した乗算値のそれぞれに対して、複数回の積和演算を行うことにより、乗算値演算部が演算した乗算値の補正値であって、複数の要素ごとの補正値を演算する補正値演算部と、を備える。【選択図】図５
2020166661.tif 000002
【特許請求の範囲】
【請求項１】
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算する乗算値演算部と、
前記乗算値演算部が演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値演算部が演算した前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する補正値演算部と、
を備える除算装置。
【請求項２】
前記補正値演算部は、前記複数回の積和演算として、２回の積和演算を行う
請求項１に記載の除算装置。
【請求項３】
前記補正値演算部は、前記複数回の積和演算を、ＦＭＡ（Ｆｕｓｅｄ  Ｍｕｌｔｉｐｌｙ  ａｎｄ  Ａｄｄ）演算を用いて行う
請求項１又は２に記載の除算装置。
【請求項４】
前記補正値演算部は、
前記除数と、前記被除数と、前記乗算値演算部が演算した前記乗算値とに基づいて、前記複数の要素ごとに、所定値を演算する第１の演算部を更に備える
請求項１から３のいずれかに記載の除算装置。
【請求項５】
前記補正値演算部は、
前記逆数と、前記乗算値演算部が演算した前記乗算値と、前記第１の演算部が演算した前記所定値とに基づいて、前記複数の要素ごとに、前記乗算値の前記補正値を演算する第２の演算部と、
を備える
請求項４に記載の除算装置。
【請求項６】
前記所定値のｉ番目（ｉは、１からＮまでのいずれかの整数）の要素をＲｉとし、
前記被除数のｉ番目の要素をＢ（ｉ）とし、
前記乗算値のｉ番目の要素をＡ（ｉ）とし、
前記除数をＳとした場合に、
前記第１の演算部は、Ｒｉ＝ＦＭＡ（Ｂ（ｉ）−Ａ（ｉ）＊Ｓ）の式により、前記複数の要素ごとに、前記所定値を演算する
請求項４又は５に記載の除算装置。
【請求項７】
前記補正値のｉ番目の要素を、Ａ’（ｉ）とした場合に、
前記第２の演算部は、Ａ’（ｉ）＝ＦＭＡ（Ａ（ｉ）＋Ｔ＊Ｒｉ）の式により、前記複数の要素ごとに、前記補正値を演算する
請求項５に記載の除算装置。
【請求項８】
前記除数の逆数を演算する処理を、１回のみ行う逆数演算部とを更に備え、
前記乗算値演算部は、前記乗算値を演算する処理を、前記複数の要素の数だけ行う
請求項１から７のいずれかに記載の除算装置。
【請求項９】
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算し、
演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する
除算方法。
【請求項１０】
除算装置のコンピュータを、
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算する乗算値演算手段、
前記乗算値演算手段が演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値演算手段が演算した前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する補正値演算手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、除算装置、除算方法及びプログラムに関する。
【背景技術】
【０００２】
特許文献１及び特許文献２は、演算プログラムにより、繰り返し演算が行われるループ処理内に、固定値である除数による除算を含んでいる場合に、除数の逆数をループ処理の外で先に演算し、ループ処理内では、除算を、除数の逆数との乗算に置き換えて演算することにより、演算プログラムの演算速度を向上させる技術について開示している。
【０００３】
特許文献３は、演算プログラムにより、固定値である被除数を、固定値である除数で除算する演算を行う場合に、除数の逆数を演算し、被除数と乗算した後、乗算後の値を補正する技術について開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１８１７２２号公報
【特許文献２】特開平０１−１４０３３６号公報
【特許文献３】特開平０２−２２７７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１及び特許文献２では、浮動小数点数である除数の逆数を演算する際に、誤差が生じるおそれがあり、また、除算結果について補正を行ったとしても、最下位の１ビットに誤差が生じるおそれがあった。
また、特許文献３では、複数回の除算を行う場合には、複数回の除算ごとに、除数の逆数を演算してから、被除数と乗算を行う必要があり、複数回の除算を行う場合には、演算速度が低下するおそれがあった。
そのため、特許文献１〜３では、配列である被除数を、スカラ変数である除数で除算する演算を行う場合に、複数の除算演算を高速化すると同時に、演算精度を向上させることはできなかった。
【０００６】
そこで、この発明は、上述の課題を解決する除算装置、除算方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明のいくつかの態様は、上述の課題を解決すべくなされたもので、本発明の第１の態様による除算装置は、
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算する乗算値演算部と、
前記乗算値演算部が演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値演算部が演算した前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する補正値演算部と、
を備える。
【０００８】
また、本発明の第２の態様による除算方法は、
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算し、
演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する。
【０００９】
また、本発明の第３の態様によるプログラムは、
除算装置のコンピュータを、
スカラ変数である除数の逆数を、被除数である配列に含まれる複数の要素ごとに乗算することにより、前記複数の要素ごとの乗算値を演算する乗算値演算手段、
前記乗算値演算手段が演算した前記乗算値のそれぞれに対して、複数回の積和演算を行うことにより、前記乗算値演算手段が演算した前記乗算値の補正値であって、前記複数の要素ごとの前記補正値を演算する補正値演算手段、
として機能させる。
【発明の効果】
【００１０】
本発明のいくつかの態様によれば、配列である被除数を、スカラ変数である除数で除算する演算を行う場合に、複数の除算演算を高速化すると同時に、演算精度を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態による除算装置で行われる処理の概要を説明する第１の図である。
【図２】本発明の実施形態による除算装置で行われる処理の概要を説明する第２の図である。
【図３】本発明の実施形態による除算装置で行われる処理の概要を説明する第３の図である。
【図４】本発明の実施形態による除算装置で行われる処理の概要を説明する第４の図である。
【図５】本発明の実施形態による除算装置の構成を示すブロック図である。
【図６】本発明の実施形態による除算装置の処理を示すフローチャートである。
【図７】最小構成を有する除算装置の構成を示すブロック図である。
【図８】最小構成を有する除算装置の処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について説明する。
図１〜図４は、本発明の実施形態による除算装置１０ａ（図５）で行われる処理の概要を説明する図である。
除算装置１０ａは、シミュレーションやデータ解析などを行う計算機などである。除算装置１０ａには、図１の符号（ａ）で示すような、除算演算を含んだ演算命令が入力される。
【００１３】
図１の符号（ａ）に示す演算では、実数（ＲＥＡＬ）の複数（Ｎ個）の要素を含む配列Ａ（Ｎ）、実数の複数（Ｎ個）の要素を含む配列Ｂ（Ｎ）、実数Ｓが用いられる。
図１の符号（ａ）では、値ｉを、１からＮまで増加させながら（ループ処理）、Ａ（ｉ）＝Ｂ（ｉ）／Ｓの演算が行われる。なお、ｉは、１からＮまでの整数のうち、いずれかの整数を示す。また、本願において、記号“／”や記号“÷”は、除算の演算子を示す。
なお、実数Ｓは、ループ処理が行われる間、一定であり、変化しない。
【００１４】
除算装置１０ａは、図１の符号（ａ）で示される演算命令を、図１の符号（ｂ）で示される演算命令に置き換える。
図１の符号（ｂ）に示す演算では、実数の複数（Ｎ個）の要素を含む配列Ａ（Ｎ）、実数の複数（Ｎ個）の要素を含む配列Ｂ（Ｎ）、実数Ｓ、実数Ｔが用いられる。
図１の符号（ｂ）に示す演算では、始めに、実数Ｓの逆数である実数Ｔが、Ｔ＝１．０／Ｓの式により、ループ処理が行われる前に、演算される。
【００１５】
次に、ループ処理が行われる。つまり、値ｉを、１からＮまで増加させながら（ループ処理）、Ａ（ｉ）＝Ｂ（ｉ）＊Ｔの演算が行われる。なお、本願において、記号“＊”や記号“×”は、乗算の演算子を示す。
図１の符号（ａ）の演算では、実数Ｓによる除算が行われるが、図１の符号（ｂ）の演算では、実数Ｔによる乗算が行われる。
【００１６】
図１の符号（ａ）で示す演算命令によれば、図２（ａ）に示すような演算が、配列Ｂを構成する要素Ｂ（ｉ）に対して行われ、レジスタにマッピングされる。
つまり、配列Ｂのｉ番目の要素Ｂ（ｉ）について、実数Ｓによる除算が行われることにより、配列Ａのｉ番目の要素Ａ（ｉ）が演算される。例えば、始めに、配列Ｂの１番目の要素Ｂ（１）について、実数Ｓによる除算が行われることにより、配列Ａの１番目の要素Ａ（１）が演算される。同様の処理が、ｉを、１ずつ増加させながら行われ、最後に、配列ＢのＮ番目の要素Ｂ（Ｎ）について、実数Ｓによる除算が行われることにより、配列ＡのＮ番目の要素Ａ（Ｎ）が演算される。
【００１７】
一方、図１の符号（ｂ）で示す演算命令によれば、図２（ｂ）に示すような演算が、配列Ｂを構成する要素Ｂ（ｉ）に対して行われる。
つまり、配列Ｂのｉ番目の要素Ｂ（ｉ）について、実数Ｔによる乗算が行われることにより、配列Ａのｉ番目の要素Ａ（ｉ）が演算される。例えば、始めに、配列Ｂの１番目の要素Ｂ（１）について、実数Ｔによる乗算が行われることにより、配列Ａの１番目の要素Ａ（１）が演算される。同様の処理が、ｉを、１ずつ増加させながら行われ、最後に、配列ＢのＮ番目の要素Ｂ（Ｎ）について、実数Ｔによる乗算が行われることにより、配列ＡのＮ番目の要素Ａ（Ｎ）が演算される。
【００１８】
図３は、本発明の実施形態による除算装置１０ａにより実行される演算命令を示している。
図３に示す演算では、実数の複数（Ｎ個）の要素を含む配列Ａ（Ｎ）、実数の複数（Ｎ個）の要素を含む配列Ｂ（Ｎ）、実数Ｓ、実数Ｔ、実数Ｒが用いられる。
図３では、図１の符号（ｂ）で説明したように、始めに、実数Ｓの逆数である実数Ｔが、Ｔ＝１．０／Ｓの式により、ループ処理が行われる前に、演算される。
【００１９】
次に、ループ処理が行われる。つまり、図１の符号（ｂ）で説明したように、値ｉを、１からＮまで増加させながら（ループ処理）、Ａ（ｉ）＝Ｂ（ｉ）＊Ｔの演算が行われる。
そして、Ｒ＝ＦＭＡ（Ｂ（ｉ）−Ａ（ｉ）＊Ｓ）の式を用いた１回目のＦＭＡ（Ｆｕｓｅｄ  Ｍｕｌｔｉｐｌｙ  ａｎｄ  Ａｄｄ）演算が行われる。
そして、Ａ’（ｉ）＝ＦＭＡ（Ａ（ｉ）＋Ｔ＊Ｒ）の式を用いた２回目のＦＭＡ演算が行われる。
【００２０】
図３で示す演算命令によれば、図４に示すような演算が、配列Ｂを構成する要素Ｂ（ｉ）に対して行われ、レジスタにマッピングされる。
つまり、始めに、図４の符号（ａ）で示すように、配列Ｂのｉ番目の要素Ｂ（ｉ）について、実数Ｔによる乗算が行われ、配列Ａのｉ番目の要素Ａ（ｉ）が演算される。例えば、始めに、配列Ｂの１番目の要素Ｂ（１）について、実数Ｔによる乗算が行われることにより、配列Ａの１番目の要素Ａ（１）が演算される。同様の処理が、ｉを、１ずつ増加させながら行われ、最後に、配列ＢのＮ番目の要素Ｂ（Ｎ）について、実数Ｔによる乗算が行われることにより、配列ＡのＮ番目の要素Ａ（Ｎ）が演算される。
【００２１】
次に、図４の符号（ｂ）で示すように、図４の符号（ａ）の演算結果を用いて、Ｒｉ＝Ｂ（ｉ）−Ａ（ｉ）＊Ｓの演算が行われる。例えば、始めに、Ｒ１＝Ｂ（１）−Ａ（１）＊Ｓの演算が行われることにより、所定値Ｒ１が演算される。同様の処理が、ｉを、１ずつ増加させながら行われ、最後に、ＲＮ＝Ｂ（Ｎ）−Ａ（Ｎ）＊Ｓの演算が行われることにより、所定値ＲＮが演算される。
次に、図４の符号（ｃ）で示すように、図４の符号（ｂ）の演算結果を用いて、Ａ’（ｉ）＝Ａ（ｉ）＋Ｔ＊Ｒｉの演算が行われる。例えば、始めに、Ａ’（１）＝Ａ（１）＋Ｔ＊Ｒ１の演算が行われることにより、補正値Ａ’（１）が演算される。同様の処理が、ｉを、１ずつ増加させながら行われ、最後に、Ａ’（Ｎ）＝Ａ（Ｎ）＋Ｔ＊ＲＮの演算が行われることにより、補正値Ａ’（Ｎ）が演算される。
【００２２】
次に、上述の図１〜図４を参照して説明した処理であって、本発明の実施形態による除算装置１０ａで行われる処理を実現するための具体的な構成及び処理について説明する。
【００２３】
図５は、本発明の実施形態による除算装置１０ａの構成を示すブロック図である。除算装置１０ａは、被除数取得部１１、除数取得部１２、逆数演算部１３、乗算値演算部１４ａ、補正値演算部１５ａを備える。
補正値演算部１５ａは、第１の演算部１５１、第２の演算部１５２を備える。
【００２４】
被除数取得部１１は、ＰＣ（Ｐｅｓｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のキーボードなどから入力される複数（Ｎ個）の要素であって、実数の要素を含む配列Ｂ＝{Ｂ（１）、Ｂ（２）、Ｂ（３）、・・・、Ｂ（Ｎ）}（Ｎは、正の整数）を取得し、その配列Ｂを、乗算値演算部１４ａ、第１の演算部１５１に出力する。
除数取得部１２は、ＰＣのキーボードなどから入力されるスカラ変数であって、実数である除数Ｓを取得し、その除数Ｓを、逆数演算部１３、第１の演算部１５１に出力する。
【００２５】
逆数演算部１３は、除数取得部１２から出力される除数Ｓの逆数を用いて、Ｔ＝１．０／Ｓの式により、逆数Ｔを演算し、その逆数Ｔを、乗算値演算部１４ａ、第２の演算部１５２に出力する。
乗算値演算部１４ａは、被除数取得部１１から出力される配列Ｂと、逆数演算部１３から出力される逆数Ｔとを用いて、Ａ（ｉ）＝Ｂ（ｉ）＊Ｔの式により、乗算値Ａを演算し、その乗算値Ａを、第１の演算部１５１、第２の演算部１５２に出力する。
【００２６】
第１の演算部１５１は、被除数取得部１１から出力される被除数Ｂ（ｉ）と、除数取得部１２から出力される除数Ｓと、乗算値演算部１４ａから出力される乗算値Ａ（ｉ）とを用いて、Ｒｉ＝ＦＭＡ（Ｂ（ｉ）−Ａ（ｉ）＊Ｓ）の式により、所定値Ｒｉを演算し、その所定値Ｒｉを、第２の演算部１５２に出力する。なお、ＦＭＡ（）は、ＦＭＡ（Ｆｕｓｅｄ  Ｍｕｌｔｉｐｌｙ  ａｎｄ  Ａｄｄ）演算を行うことを示す。
【００２７】
第２の演算部１５２は、逆数演算部１３から出力される逆数Ｔと、乗算値演算部１４ａから出力される乗算値Ａ（ｉ）と、第１の演算部１５１から出力される所定値Ｒｉを用いて、Ａ’（ｉ）＝ＦＭＡ（Ａ（ｉ）＋Ｔ＊Ｒｉ）の式により、補正値Ａ’（ｉ）を演算し、その補正値Ａ’を、除算装置１０ａの外部に出力する。
【００２８】
図６は、本発明の実施形態による除算装置１０ａの処理を示すフローチャートである。
始めに、除数取得部１２は、スカラ変数であり、実数である除数Ｓを取得する（ステップＳ１０１）。
次に、被除数取得部１１は、実数の要素Ｂ（１）、・・・、Ｂ（Ｎ）を含む配列Ｂであって、被除数である配列Ｂを取得する（ステップＳ１０２）。
【００２９】
次に、逆数演算部１３は、ステップＳ１０１で取得した除数Ｓの逆数を用いて、Ｔ＝１．０／Ｓの式により、逆数Ｔを演算する（ステップＳ１０３）。
次に、乗算値演算部１４ａは、変数ｉを、１に設定する（ステップＳ１０４）。
次に、乗算値演算部１４ａは、ステップＳ１０２で取得した配列Ｂの要素Ｂ（ｉ）と、ステップＳ１０３で取得した逆数Ｔとを用いて、Ａ（ｉ）＝Ｂ（ｉ）＊Ｔの式により、乗算値Ａのｉ番目の要素Ａ（ｉ）を演算する（ステップＳ１０５）。
【００３０】
次に、第１の演算部１５１は、ステップＳ１０２で取得した配列Ｂの要素Ｂ（ｉ）と、ステップＳ１０１で取得した除数Ｓと、ステップＳ１０５で演算した乗算値Ａ（ｉ）とを用いて、Ｒｉ＝ＦＭＡ（Ｂ（ｉ）−Ａ（ｉ）＊Ｓ）の式により、所定値Ｒｉを演算する（ステップＳ１０６）。
次に、第２の演算部１５２は、ステップＳ１０３て演算された逆数Ｔと、ステップＳ１０５で演算された乗算値Ａ（ｉ）と、ステップＳ１０６で演算された所定値Ｒｉを用いて、Ａ’（ｉ）＝ＦＭＡ（Ａ（ｉ）＋Ｔ＊Ｒｉ）の式により、補正値Ａ’（ｉ）を演算する（ステップＳ１０７）。
【００３１】
次に、乗算値演算部１４ａは、変数ｉが、配列Ｂに含まれる要素の数である整数Ｎと等しいか否かについて判定する（ステップＳ１０８）。
乗算値演算部１４ａが、変数ｉが、整数Ｎと等しくないと判定した場合には（ステップＳ１０８でＮＯ）、乗算値演算部１４ａは、変数ｉに、１を加算し（ステップＳ１０９）、再度、上述したステップＳ１０５の処理を行う（ループ処理）。
一方、乗算値演算部１４ａが、変数ｉが、整数Ｎと等しいと判定した場合には（ステップＳ１０８でＹＥＳ）、第２の演算部１５２は、それまでに、演算したＮ個の補正値Ａ’（ｉ）を、配列である補正値Ａ’として、除算装置１０ａの外部に出力する（ステップＳ１１０）。
【００３２】
本発明の実施形態によれば、ループ処理中に不変な除数Ｓによる除算を、除数Ｓの逆数との乗算に置き換えることにより、ループ処理中は、配列の各要素ごとに、除数Ｓの逆数を演算する必要がない。つまり、乗算値Ａ（ｉ）を演算する処理については、配列Ｂの要素の数であるＮ回行われるが、除数Ｓの逆数を演算する処理については、１回のみ行われる。そのため、演算速度の高速性を損なうことなく演算誤差を解消することができる。
【００３３】
また、ＦＭＡを用いた演算を行うことにより、除算を実行した場合と同じ値を得ることができ、更に、除算を乗算に置き換えた時に生じる演算誤差を解消することができる。なお、ＦＭＡを用いた演算を行うことにより、演算時間は、増加するものの、ＦＭＡ演算は高速であるため、除算を行う場合と比較すると、演算時間を短縮することができる。
【００３４】
図７は、最小構成を有する除算装置１０ｂの構成を示すブロック図である。除算装置１０ｂは、乗算値演算部１４ｂ、補正値演算部１５ｂを備える。
【００３５】
図８は、最小構成を有する除算装置１０ｂの処理を示すフローチャートである。
始めに、乗算値演算部１４ｂは、スカラ変数である除数Ｓの逆数Ｔ（＝１．０／Ｓ）を、被除数である配列Ｂに含まれる複数の要素Ｂ（ｉ）ごとに乗算することにより、複数の要素Ｂ（ｉ）ごとの乗算値Ａ（ｉ）を演算する（ステップＳ２０１）。
次に、補正値演算部１５ｂは、乗算値演算部１４ｂが演算した乗算値Ａ（ｉ）のそれぞれに対して、複数回（例えば、２回）の積和演算（例えば、ＦＭＡ演算）を行うことにより、乗算値演算部１４ｂが演算した乗算値Ａ（ｉ）の補正値Ａ’（ｉ）であって、複数の要素Ｂ（ｉ）ごとの補正値Ａ’（ｉ）を演算する（ステップＳ２０２）。
【００３６】
なお、図５における各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより図５における各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【産業上の利用可能性】
【００３７】
本発明のいくつかの態様は、配列である被除数を、スカラ変数である除数で除算する演算を行う場合に、複数の除算演算を高速化すると同時に、演算精度を向上させることが必要な除算装置、除算方法及びプログラムなどに適用することができる。
【符号の説明】
【００３８】
１０ａ、１０ｂ・・・除算装置
１１・・・被除数取得部
１２・・・除数取得部
１３・・・逆数演算部
１４ａ、１４ｂ・・・乗算値演算部（乗算値演算手段）
１５ａ、１５ｂ・・・補正値演算部（補正値演算手段）
１５１・・・第１の演算部
１５２・・・第２の演算部
【図１】
2020166661.tif 000003
【図２】
2020166661.tif 000004
【図３】
2020166661.tif 000005
【図４】
2020166661.tif 000006
【図５】
2020166661.tif 000007
【図６】
2020166661.tif 000008
【図７】
2020166661.tif 000009
【図８】
2020166661.tif 000010