(57)【要約】【課題】簡易な構成で双曲線正接関数を精度良く近似して演算することが可能な演算装置を提供する。【解決手段】入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、前記入力ｘの値が±２のｋ乗（ｋ＝−１，０，１）を境界として前記傾きが変わる折れ線で近似する演算部を備え、前記入力ｘ及び出力ｙは浮動小数点形式の値であり、前記演算部は、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算装置が提供される。【選択図】図１
2018092294.tif 000002
【特許請求の範囲】
【請求項１】
入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、前記入力ｘの値が±２のｋ乗（ｋ＝−１，０，１）を境界として前記傾きが変わる折れ線で近似する演算部を備え、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記演算部は、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算装置。
【請求項２】
前記演算部は、前記入力ｘに対するビットの演算並びに並び替え及び定数を用いて前記出力ｙを生成する、請求項１に記載の演算装置。
【請求項３】
前記演算部は、前記ｋの値が−１〜１の間の区間における演算を１つの演算式で行う、請求項１に記載の演算装置。
【請求項４】
前記演算部は、前記入力ｘの指数部と、前記入力ｘの最大指数とのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果に基づいて出力する第１のセレクタを備える、請求項１に記載の演算装置。
【請求項５】
前記演算部は、前記入力ｘの最大指数から１減算したものと、前記第１のセレクタの出力とのいずれかを、前記指数部の最上位ビットの値に基づいて出力する第２のセレクタを備える、請求項４に記載の演算装置。
【請求項６】
前記演算部は、前記入力ｘの仮数部と、前記入力ｘの指数部の最下位ビットに前記入力ｘの仮数部の最下位ビット以外のビット列を連結したデータとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果に基づいて出力する第３のセレクタを備える、請求項１に記載の演算装置。
【請求項７】
前記演算部は、０と、前記第３のセレクタの出力とのいずれかを、前記指数部の最上位ビットの値に基づいて出力する第４のセレクタを備える、請求項６に記載の演算装置。
【請求項８】
前記演算部は、前記入力ｘの指数部と、前記入力ｘの最大指数と、前記入力ｘの最大指数から１減算したものとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果及び前記入力ｘの指数部の最上位ビットの値に基づいて出力する第１のセレクタを備える、請求項１に記載の演算装置。
【請求項９】
前記演算部は、０と、前記入力ｘの仮数部と、前記入力ｘの指数部の最下位ビットに前記入力ｘの仮数部の最下位ビット以外のビット列を連結したデータとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果及び前記入力ｘの指数部の最上位ビットの値に基づいて出力する第２のセレクタを備える、請求項８に記載の演算装置。
【請求項１０】
プロセッサが、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを含み、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記プロセッサは、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算方法。
【請求項１１】
コンピュータに、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを実行させ、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記コンピュータに、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行わせる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、演算装置、演算方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ニューラルネットワークの分野においては、双曲線正接関数（ｔａｎｈ）が用いられることが多い。双曲線正接関数は、以下の数式で表される関数であり、例えば所定の閾値を超えたかどうかの判定に用いられる。
【０００３】
【数１】
2018092294.tif 000003
【０００４】
双曲線正接関数は非線形な関数であり、双曲線正接関数の演算を容易にするために、例えば特許文献１〜３には、双曲線正接関数を一次式などで近似する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−２１５０２１号公報
【特許文献２】特表２００５−５０９３７１号公報
【特許文献３】特表２０１２−５１３７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
双曲線正接関数を精度良く近似しようとすると回路規模が大きくなる。ニューラルネットワークの活性化関数として双曲線正接関数の回路を並列処理するような場合には、回路規模が大きくなるので、並列数が大きくできない。その一方、双曲線正接関数を粗く近似すると誤差が大きくなり、ニューラルネットワークの活性化関数として用いると誤差が蓄積されて認識精度が低下する。
【０００７】
そこで、本開示では、簡易な構成で双曲線正接関数を精度良く近似して演算することが可能な、新規かつ改良された演算装置、演算方法及びコンピュータプログラムを提案する。
【課題を解決するための手段】
【０００８】
本開示によれば、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、前記入力ｘの値が±２のｋ乗（ｋ＝−１，０，１）を境界として前記傾きが変わる折れ線で近似する演算部を備え、前記入力ｘ及び出力ｙは浮動小数点形式の値であり、前記演算部は、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算装置が提供される。
【０００９】
また本開示によれば、プロセッサが、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを含み、前記入力ｘ及び出力ｙは浮動小数点形式の値であり、前記プロセッサは、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算方法が提供される。
【００１０】
また本開示によれば、コンピュータに、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを実行させ、前記入力ｘ及び出力ｙは浮動小数点形式の値であり、前記コンピュータに、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行わせる、コンピュータプログラムが提供される。
【発明の効果】
【００１１】
以上説明したように本開示によれば、簡易な構成で双曲線正接関数を精度良く近似して演算することが可能な、新規かつ改良された演算装置、演算方法及びコンピュータプログラムを提供することが出来る。
【００１２】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１３】
【図１】本開示の実施の形態に係る演算装置の構成例を示す説明図である。
【図２】双曲線正接関数と、双曲線正接関数の近似に用いる折れ線とを示す説明図である。
【図３】双曲線正接関数を近似する折れ線のそれぞれについての一次式を表した説明図である。
【図４】演算部１１０の具体的な回路構成例を示す説明図である。
【図５】図４に示した演算部１１０に入力されるパラメータを示す説明図である。
【図６】半精度浮動小数点形式の入力に対して双曲線正接関数の近似演算を行う演算部１１０の回路構成を示す説明図である。
【図７】演算部１１０の回路構成例を示す説明図である。
【図８】演算部１１０の回路構成例を示す説明図である。
【図９】演算部１１０の回路構成例を示す説明図である。
【図１０】演算部１１０の回路構成例を示す説明図である。
【図１１】演算部１１０の回路構成例を示す説明図である。
【図１２】同実施の形態に係る演算装置１００を用いることによる効果を示す説明図である。
【図１３】同実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１５】
なお、説明は以下の順序で行うものとする。
１．本開示の実施の形態
１．１．概要
１．２．構成例
１．３．動作例
１．４．変形例
２．ハードウェア構成例
３．まとめ
【００１６】
＜１．本開示の実施の形態＞
［１．１．概要］
本開示の実施の形態について詳細に説明する前に、本開示の実施の形態の概要について説明する。
【００１７】
上述したように、ニューラルネットワークの分野においては、双曲線正接関数（ｔａｎｈ）が用いられることが多い。双曲線正接関数は非線形な関数であり、双曲線正接関数の演算を容易にするために、例えば特許文献１〜３には、双曲線正接関数を一次式などで近似する技術が開示されている。
【００１８】
双曲線正接関数を精度良く近似しようとすると、多項式近似や平方根関数など回路規模が大きくなる演算器が必要となる。ルックアップテーブルを使って双曲線正接関数を近似する場合も回路規模が大きくなる。ニューラルネットワークの活性化関数として双曲線正接関数の回路を並列処理するような場合には、回路規模が大きくなるので、並列数が大きくできない。
【００１９】
その一方、３区間近似などの手法により双曲線正接関数を粗く近似すると、双曲線正接関数の本来の値との誤差が大きくなり、ニューラルネットワークの活性化関数として用いると誤差が蓄積されて認識精度が下がり、また誤差の偏りも大きい。
【００２０】
そこで本件開示者は、上述した点に鑑みて、簡易な構成でありながら、双曲線正接関数を精度良く近似して演算することが出来る技術について鋭意検討を行った。その結果、本件開示者は、以下で説明するように、ビット操作と簡単なビット演算によって、簡易な構成でありながら、双曲線正接関数を精度良く近似して演算することが出来る技術を考案するに至った。
【００２１】
以上、本開示の実施の形態の概要について説明した。続いて、本開示の実施の形態について詳細に説明する。
【００２２】
［１．２．構成例］
図１は、本開示の実施の形態に係る演算装置の構成例を示す説明図である。以下、図１を用いて本開示の実施の形態に係る演算装置の構成例について説明する。
【００２３】
本開示の実施の形態に係る演算装置１００は、双曲線正接関数（ｔａｎｈ）の演算を行う演算部１１０を含んで構成される。演算部１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含んで構成されうる。
【００２４】
演算部１１０には、浮動小数点形式のデータが入力される。演算部１１０は、双曲線正接関数の演算を行って、浮動小数点形式のデータを出力する。演算部１１０は、双曲線正接関数の演算を行う際に、所定のルールで双曲線正接関数を近似した折れ線を用いた演算を行う。そのルールについて説明する。
【００２５】
本実施形態では、双曲線正接関数は、７区間の折れ線で近似する。その傾きは２のｎ乗（ｎ＝−１、０、１）であり、２のｋ乗（ｋ＝−２、−１、０）の値を境界とする入力区間で近似する。図２は、双曲線正接関数と、本実施形態で演算部１１０が双曲線正接関数の近似に用いる折れ線とを示す説明図である。
【００２６】
図２に示したように、双曲線正接関数は、ｘが正の場合はｙが正であり、ｘが負の場合はｙは負である。従って演算部１１０は、入力ｘの符号ｘ＿ｓと同じ符号ｙ＿ｓを出力ｙの符号として出力する。なお、符号ビットは０で正を、１で負を表す。
【００２７】
入力ｘは、指数部ｘ＿ｅを有し、そのビット幅はＥＷである。ＩＥＥＥ７５４形式では、指数部ｘ＿ｅが０の場合に非正規化数を表し、ｘ＿ｅの全ビットが１である最大値の場合に無限大か非数を表し、それ以外の場合に正規化数を表す。また入力ｘは、仮数部ｘ＿ｍを有し、そのビット幅はＭＷである。ＩＥＥＥ７５４形式では、正規化数の場合、本来の仮数の最上位ビット（ＭＷ＋１ビット目）の１が省略されている。なお、指数部が表現する最大の指数値をＥＭＡＸとする。
【００２８】
ＩＥＥＥ７５４形式で表現する値は、半精度の場合は（−１）ｘ＿ｓ×２ｘ＿ｅ−１５×（１＋ｘ＿ｍ／２１０）、単精度の場合は（−１）ｘ＿ｓ×２ｘ＿ｅ−１２７×（１＋ｘ＿ｍ／２２３）、倍精度の場合は（−１）ｘ＿ｓ×２ｘ＿ｅ−１０２３×（１＋ｘ＿ｍ／２５２）、４倍精度の場合は（−１）ｘ＿ｓ×２ｘ＿ｅ−１６３８３×（１＋ｘ＿ｍ／２１１２）である。
【００２９】
また図２に示したように、演算部１１０が双曲線正接関数の近似に用いる折れ線は、入力ｘが−０．５〜０．５の間、すなわち−２−１〜＋２−１の間の区間では、傾きが１、すなわち２０である。この区間の折れ線は原点を通るため、入力ｘが−０．５〜０．５の間、すなわち−２−１〜＋２−１の間の区間では、演算部１１０は、入力ｘと同じ値を出力ｙとして出力することになる。演算部１１０は、入力ｘと同じ値を出力ｙとして出力することで、ＩＥＥＥ７５４形式の非正規化数（指数部が０）にそのまま対応できる。
【００３０】
また入力ｘが−１〜−０．５の間及び０．５〜１の間、すなわち−２０〜−２−１の間及び＋２−１〜＋２０の間の区間では、傾きが０．５、すなわち２−１である。また入力ｘが−２〜−１の間及び１〜２の間、すなわち−２１〜−２０の間及び＋２０〜＋２１の間の区間では、傾きが０．２５、すなわち２−２である。なお、入力ｘが−２以下の場合はｙ＝−１であり、入力ｘが２以上の場合はｙ＝１である。
【００３１】
図３は、双曲線正接関数を近似する折れ線のそれぞれについての一次式を表した説明図である。入力ｘが−２以下の場合はｙ＝−１であるのは上述した通りである。また、入力ｘが−２〜−１の場合はｙ＝ｘ／４−１／２であり、入力ｘが−１〜−０．５の場合はｙ＝ｘ／２−１／４であり、入力ｘが−０．５〜＋０．５の場合はｙ＝ｘであり、入力ｘが＋０．５〜＋１の場合はｙ＝ｘ／２＋１／４であり、入力ｘが＋１〜＋２の場合はｙ＝ｘ／４＋１／２である。入力ｘが＋２以上の場合はｙ＝１であるのは上述した通りである。
【００３２】
そして本実施形態に係る演算部１１０は、加減乗除の演算器を用いず、入力ｘのビットの並び替えと、定数のみで作る信号とをセレクタで選択することにより、双曲線正接関数の近似演算を行うことを特徴としている。以下の説明では、Ｄ［ｉ］をＤ信号のｉビット目の１ビットの数値（０または１）とし、Ｄ［ｅ：ｂ］は以下の数式で表した値とする。
【００３３】
【数２】
2018092294.tif 000004
【００３４】
また、入力ｘの区間を、ｘの指数部ｘ＿ｅを用いて以下のように判定する。入力ｘの指数部ｘ＿ｅのＭＳＢが１なら、入力ｘの絶対値｜ｘ｜が｜ｘ｜≧２の区間と判定する。また入力ｘの指数部ｘ＿ｅのＭＳＢが０で、かつ入力ｘの指数部ｘ＿ｅのＭＳＢとＬＳＢとの間の各ビットが全て１なら、入力ｘの絶対値｜ｘ｜が２＞｜ｘ｜≧０．５の区間と判定する。また、入力ｘの指数部ｘ＿ｅのＭＳＢが０で、かつ入力ｘの指数部ｘ＿ｅのＭＳＢとＬＳＢとの間のビットに０が１つ以上含まれるなら、入力ｘの絶対値｜ｘ｜が０．５≧｜ｘ｜≧０の区間と判定する。
【００３５】
（１）入力ｘの絶対値が２以上の区間の場合
入力ｘの絶対値が２以上の区間の場合は、ｙは＋１または−１である。従って、この場合は１を表現する浮動小数点形式データの仮数部の値を出力ｙの仮数部ｙ＿ｍとし、１を表現する浮動小数点形式データの指数部の値を出力ｙの指数部ｙ＿ｅとする。
【００３６】
（２）入力ｘの絶対値が０．５以上２未満の区間の場合
本実施形態では、入力ｘの絶対値が０．５〜１の間と、１〜２の間とで、それぞれ異なる一次関数で双曲線正接関数を近似するが、この２つの区間を１つにまとめて演算することができる。
【００３７】
入力ｘの絶対値が０．５以上２未満の区間の場合、入力ｘの指数部ｘ＿ｅの最下位ビット（ＬＳＢ）（ｘ＿ｅ［０］）を出力ｙの仮数部ｙ＿ｍの最上位ビット（ＭＳＢ）とし、入力ｘの仮数部のＬＳＢ（ｘ＿ｍ［０］）を削った残りのビット列を連結したデータ｛ｘ＿ｅ［０］，ｘ＿ｍ［ＭＷ−１：１］｝を出力ｙの仮数部ｙ＿ｍとする。また、０．５を表現する浮動小数点形式データの指数部の値を、出力ｙの指数部ｙ＿ｅとする。
【００３８】
すなわち、ｙ＿ｍ＝｛ｘ＿ｅ［０］，ｘ＿ｍ［ＭＷ−１：１］｝であり、ｙ＿ｅ＝ＥＭＡＸ−１であり、ｙ＿ｓ＝ｘ＿ｓである。言い換えれば、ｘ及びｙは以下の数式で表すことが出来る。
【００３９】
ｘ＝（−１）ｘ＿ｓ・２ｘ＿ｅ−ＥＭＡＸ・（２ＭＷ＋ｘ＿ｍ［ＭＷ−１：０］）／２ＭＷ
＝（−１）ｘ＿ｓ・２ｘ＿ｅ−ＥＭＡＸ・（１＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ）
【００４０】
ｙ＝（−１）ｙ＿ｓ・２ｙ＿ｅ−ＥＭＡＸ・（２ＭＷ＋ｙ＿ｍ［ＭＷ−１：０］）／２ＭＷ
＝（−１）ｘ＿ｓ・２−１・（２ＭＷ＋ｘ＿ｅ［０］２ＭＷ−１＋ｘ＿ｍ［ＭＷ−１：１］）／２ＭＷ
＝（−１）ｘ＿ｓ・（１／２＋ｘ＿ｅ［０］２−２＋ｘ＿ｍ［ＭＷ−１：１］２−２／２ＭＷ−１）
＝（−１）ｘ＿ｓ・（１／２＋（ｘ＿ｅ［０］＋ｘ＿ｍ［ＭＷ−１：１］／２ＭＷ−１）／４）
【００４１】
入力ｘの指数部ｘ＿ｅ＝ＥＭＡＸ（ｘ＿ｅ［０］＝１）の場合、すなわちｙ＝ｘ／４±１／２の区間では、ｘ及びｙは以下の数式で表すことが出来る。
【００４２】
ｘ＝（−１）ｘ＿ｓ・（１＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ）
【００４３】
ｙ＝（−１）ｘ＿ｓ・（１／２＋（１＋ｘ＿ｍ［ＭＷ−１：１］／２ＭＷ−１）／４）
≒（−１）ｘ＿ｓ・（１／２＋（１＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ）／４）
＝（−１）ｘ＿ｓ・１／２＋（−１）−ｘ＿ｓ・（１＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ）／４
＝（−１）ｘ＿ｓ／２＋ｘ／４
【００４４】
また、入力ｘの指数部ｘ＿ｅ＝ＥＭＡＸ（ｘ＿ｅ［０］＝０）の場合、すなわちｙ＝ｘ／４±１／２の区間では、ｘ及びｙは以下の数式で表すことが出来る。
【００４５】
ｘ＝（−１）ｘ＿ｓ・２−１・（１＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ）
＝（−１）ｘ＿ｓ・（１／２＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ＋１）
【００４６】
ｙ＝（−１）ｘ＿ｓ・（１／２＋（０＋ｘ＿ｍ［ＭＷ−１：１］／２ＭＷ−１）／４）
＝（−１）ｘ＿ｓ・（１／２＋ｘ＿ｍ［ＭＷ−１：１］／２ＭＷ＋１）
≒（−１）ｘ＿ｓ・（１／２＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ＋１／２
＝（−１）ｘ＿ｓ・（１／４＋（１／２＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ＋１）／２）
＝（−１）−ｘ＿ｓ・１／４＋（−１）−ｘ＿ｓ・（１／２＋ｘ＿ｍ［ＭＷ−１：０］／２ＭＷ＋１）／２
＝（−１）ｘ＿ｓ／４＋ｘ／２
【００４７】
従って、入力ｘの絶対値が０．５〜１の間と、１〜２の間とで、それぞれ異なる一次関数で双曲線正接関数を近似するが、この２つの区間を１つにまとめて演算することができる。
【００４８】
（３）入力ｘの絶対値が０以上０．５未満の区間の場合
入力ｘの絶対値が０以上０．５未満の区間の場合は、入力ｘの仮数部ｘ＿ｍを出力ｙの仮数部ｙ＿ｍとする。つまり、ｙ＿ｍ＝ｘ＿ｍである。また、入力ｘの指数部ｘ＿ｅを出力ｙの指数部ｙ＿ｅとする。つまりｙ＿ｅ＝ｘ＿ｅである。すなわち上述したように、入力ｘの絶対値が０以上０．５未満の区間の場合は、入力ｘをそのまま出力ｙとする。
【００４９】
以上を踏まえて、演算部１１０による、双曲線正接関数の近似演算を擬似的にコードで現すと以下の通りとなる。
【００５０】
if(x_e[EW-1]){
y_e
=  EMAX
y_m = 0
}else
if(x_e[EW-2] & x_e[EW-3] &  ...  & x_e[2] & x_e[1]){
y_e =  EMAX-1
y_m = {x_e[0],x_m[9:1]}
}else{
y_e = x_e
y_m = x_m
}
y_s =
x_s
【００５１】
場合分けを入力ｘの指数部のビット判定ではなく入力ｘの値で行っても良い。その場合のコードは以下の通りとなる。
【００５２】
if(x >= 2.0){
y_e =  EMAX
y_m = 0
}else
if(x >= 0.5){
y_e =  EMAX-1
y_m = {x_e[0],x_m[9:1]}
}else{
y_e = x_e
y_m = x_m
}
y_s =
x_s
【００５３】
このように演算部１１０は、このように双曲線正接関数を一次関数に近似して演算することで、簡易な構成でありながら、双曲線正接関数を精度良く近似して演算することができる。
【００５４】
続いて、演算部１１０の具体的な回路構成例を説明する。
【００５５】
図４は、演算部１１０の具体的な回路構成例を示す説明図である。図４は、入力として入力ｘの符号ｘ＿ｓ［０］、入力ｘの指数部ｘ＿ｅ［ＥＷ−１：０］、入力ｘの仮数部ｘ＿ｍ［ＭＷ−１：０］が演算部１１０に入力され、出力として出力ｙの符号ｙ＿ｓ［０］、出力ｙの指数部ｙ＿ｅ［ＥＷ−１：０］、出力ｙの仮数部ｙ＿ｍ［ＭＷ−１：０］が演算部１１０から出力される様子が示されている。
【００５６】
上述したように、入力ｘの符号ｘ＿ｓ［０］は、そのまま出力ｙの符号ｙ＿ｓ［０］となる。
【００５７】
セレクタ１１１は、入力ｘの指数部ｘ＿ｅ［ＥＷ−１：０］と、ＥＭＡＸ−１とのいずれかを出力するよう構成されるセレクタである。セレクタ１１１には、入力ｘの指数部のビット判定の結果（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）が入力される。セレクタ１１１は、x_e[EW-2] &
x_e[EW-3] &  ...  & x_e[2] & x_e[1]＝１の場合は、ＥＭＡＸ−１を出力し、０の場合はｘ＿ｅ［ＥＷ−１：０］を出力する。
【００５８】
セレクタ１１２は、ビット列｛ｘ＿ｅ［０］，ｘ＿ｍ［ＭＷ−１：１］｝か、入力ｘの仮数部ｘ＿ｍ［ＭＷ−１：０］のいずれかを出力するよう構成されるセレクタである。セレクタ１１２には、セレクタ１１１同様に、入力ｘの指数部のビット判定の結果（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）が入力される。セレクタ１１２は、x_e[EW-2] &
x_e[EW-3] &  ...  & x_e[2] & x_e[1]＝１の場合は、ビット列｛ｘ＿ｅ［０］，ｘ＿ｍ［ＭＷ−１：１］｝を出力し、０の場合はｘ＿ｍ［ＭＷ−１：０］を出力する。
【００５９】
セレクタ１１３は、パラメータＥＭＡＸと、セレクタ１１１の出力とのいずれかを出力して、出力ｙの指数部ｙ＿ｅ［ＥＷ−１：０］とするよう構成されるセレクタである。セレクタ１１３には、入力ｘの指数部ｘ＿ｅのＭＳＢであるｘ＿ｅ［ＥＷ−１］が入力される。セレクタ１１３は、ｘ＿ｅ［ＥＷ−１］＝１の場合は、パラメータＥＭＡＸを出力し、０の場合は、セレクタ１１１の出力を出力する。
【００６０】
セレクタ１１４は、０と、セレクタ１１２の出力とのいずれかを出力して、出力ｙの仮数部ｙ＿ｍ［ＭＷ−１：０］とするよう構成されるセレクタである。セレクタ１１４には、セレクタ１１３と同様に、入力ｘの指数部ｘ＿ｅのＭＳＢであるｘ＿ｅ［ＥＷ−１］が入力される。セレクタ１１４は、ｘ＿ｅ［ＥＷ−１］＝１の場合は０を出力し、１の場合は、セレクタ１１３の出力を出力する。
【００６１】
このように、演算部１１０は、ビット操作を行うブロックと、ビット和を取るブロックと、セレクタとで構成される。従って、演算部１１０は、簡易な構成でありながら、双曲線正接関数を精度良く近似して演算することができることがわかる。
【００６２】
図５は、図４に示した演算部１１０に入力されるパラメータを示す説明図である。半精度、単精度、倍精度、四倍精度の場合で、それぞれパラメータを変えることで、演算部１１０は双曲線正接関数を精度良く近似して演算することができる。以下では、半精度の場合を例に挙げて演算部１１０の回路構成を示す。
【００６３】
図６は、半精度浮動小数点形式の入力に対して双曲線正接関数の近似演算を行う演算部１１０の回路構成を示す説明図である。図５に示したように、半精度浮動小数点形式の場合は、指数部のビット幅ＥＷは５，仮数部のビット幅ＭＷは１５、最大指数ＥＭＡＸは１５（５ビットで表すと「０１１１１」）である。従って、それぞれのパラメータを演算部１１０の回路構成に当てはめると図６に示した通りとなる。
【００６４】
演算部１１０の回路構成は図４に示したものに限定されない。図７〜１０は、演算部１１０の回路構成例を示す説明図である。
【００６５】
図７は、場合分けを入力ｘの指数部のビット判定ではなく入力ｘの値で行う場合の、演算部１１０の回路構成例である。この場合、セレクタ１１１、１１２は、入力ｘの値が０．５以上であれば「１」の方を出力し、０．５未満であれば「０」の方を出力するよう構成される。またセレクタ１１３、１１４は、入力ｘの値が２以上であれば「１」の方を出力し、２未満であれば「０」の方を出力するよう構成される。
【００６６】
図８は、図７と同様に、場合分けを入力ｘの指数部のビット判定ではなく入力ｘの値で行う場合の、演算部１１０の回路構成例である。この場合、セレクタ１１１、１１２は、入力ｘの値が０．５以上であれば「１」の方を出力し、０．５未満であれば「０」の方を出力するよう構成される。またセレクタ１１３、１１４は、入力ｘの値が２以上であれば「１」の方を出力し、２未満であれば「０」の方を出力するよう構成される。
【００６７】
図９は、図７と同様に、場合分けを入力ｘの指数部のビット判定ではなく入力ｘの値で行い、かつ図７の回路からセレクタ１１１、１１２の出力を逆にした場合の、演算部１１０の回路構成例である。すなわち、セレクタ１１１、１１２は、入力ｘの値が０．５未満であれば「１」の方を出力し、０．５以上であれば「０」の方を出力するよう構成される。
【００６８】
図１０は、入力ｘが０．５以上かどうかの場合分けを別のビット判定（｛ｘ＿ｅ［ＥＷ−２：１］，１’ｂ１｝＝＝ＥＭＡＸ）で行う場合の、演算部１１０の回路構成例である。セレクタ１１１、１１２は、｛ｘ＿ｅ［ＥＷ−２：１］，１’ｂ１｝＝＝ＥＭＡＸであれば「１」の方を出力し、｛ｘ＿ｅ［ＥＷ−２：１］，１’ｂ１｝＝＝ＥＭＡＸでなければ「０」の方を出力するよう構成される。
【００６９】
ここまでは、セレクタ１１１〜１１４の入力を１ビットにした場合の演算部１１０の回路構成例を示したが、本開示は係る例に限定されるものではない。セレクタの入力は２ビットであってもよい。
【００７０】
図１１は、演算部１１０の回路構成例を示す説明図である。図１１には、２ビットの入力を受けるセレクタ１２１、１２２が設けられた演算部１１０が示されている。
【００７１】
セレクタ１２１は、入力ｘの指数部のビット判定の結果（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）を１ビット目、入力ｘの指数部ｘ＿ｅのＭＳＢであるｘ＿ｅ［ＥＷ−１］を２ビット目の入力とした２ビットの入力を受けて、その入力結果に応じて１つの出力を選択する。セレクタ１２１は、２ビット目（ｘ＿ｅ［ＥＷ−１］）が１の場合は、パラメータＥＭＡＸを出力し、０の場合は、１ビット目（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）が１であればパラメータＥＭＡＸ−１を出力し、０であればｘ＿ｍ［ＭＷ−１：０］を出力する。
【００７２】
セレクタ１２２は、セレクタ１２１と同様に入力ｘの指数部のビット判定の結果（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）を１ビット目、入力ｘの指数部ｘ＿ｅのＭＳＢであるｘ＿ｅ［ＥＷ−１］を２ビット目の入力とした２ビットの入力を受けて、その入力結果に応じて１つの出力を選択する。セレクタ１２２は、２ビット目（ｘ＿ｅ［ＥＷ−１］）が１の場合は、０を出力し、０の場合は、１ビット目（x_e[EW-2] & x_e[EW-3]
&  ...  & x_e[2] & x_e[1]）が１であればビット列｛ｘ＿ｅ［０］，ｘ＿ｍ［ＭＷ−１：１］｝を出力し、０の場合はｘ＿ｍ［ＭＷ−１：０］を出力する。
【００７３】
このように、２ビットの信号を入力して入力した信号に応じて出力を選択するセレクタ１２１、１２２を備えることによっても、演算部１１０は、ビット操作を行うブロックと、ビット和を取るブロックと、セレクタと、を備える簡易な構成でありながら、双曲線正接関数を精度良く近似して演算することができることがわかる。
【００７４】
なお、図１１に示した演算部１１０の構成を、図７〜１０等に示す変形例のように、場合分けを入力ｘの指数部のビット判定ではなく入力ｘの値で行ったり、セレクタ１２１、１２２の出力を入れ替えたりするものとしてもよいことは言うまでもない。
【００７５】
演算部１１０に入力されるデータの形式は、例えば指数部のビットが反転されたものであってもよい。指数部のビットが反転されている場合は、演算部１１０では、上述した指数部におけるビット判定処理も反転することになる。
【００７６】
演算部１１０に入力されるデータの形式は、例えばＩＥＥＥ７５４における指数部に所定のビットが付加されたようなものであってもよい。この場合は、演算部１１０では、パラメータＥＭＡＸの値を変更して、表現するレンジを変化させることで対応することが可能となる。例えばＩＥＥＥ７５４における指数部に２ビットデータが付加されていれば、演算部１１０では、パラメータＥＭＡＸに２を追加すれば良い。
【００７７】
上述の説明では、演算部１１０に入力されるデータは浮動小数点形式のデータであるとしたが、本開示は係る例に限定されるものではない。例えば、演算部１１０に入力されるデータは固定小数点形式のデータであってもよい。固定小数点形式のデータが入力される場合、演算部１１０は、固定小数点形式のデータを浮動小数点形式のデータに変換する回路を備えていても良い。
【００７８】
本開示の実施の形態に係る演算装置１００は、ビット操作を行うブロックと、ビット和を取るブロックと、セレクタと、を備える演算部１１０を有することにより、簡易な構成でありながらも双曲線正接関数を精度良く近似して演算することができる。演算部１１０の構成が簡易なものであるため、例えば演算部１１０を複数搭載して並列処理をさせても、演算装置１００の回路規模の増加が少なく済む。
【００７９】
本開示の実施の形態に係る演算装置１００は、演算部１１０の構成が簡易なものであるため、例えば固定小数点形式のデータを浮動小数点形式のデータに変換するモジュールに演算部１１０を組み込んだ場合でもパイプラインのステージ追加が不要である。
【００８０】
本開示の実施の形態に係る演算装置１００は、入力される浮動小数点形式のデータにおける仮数部の正規化処理が不要である。従って、正規化処理のための回路（ＣＬＺ（Ｃｏｕｎｔ  Ｌｅａｄｉｎｇ  Ｚｅｒｏ）回路やシフタ回路）が不要となる。
【００８１】
本開示の実施の形態に係る演算装置１００は、７区間で傾きが変わる折れ線で双曲線正接関数を近似するために、これより傾きが変わる区間が少ない折れ線で双曲線正接関数を近似する場合に比べて近似の精度が大きく向上する。また本開示の実施の形態に係る演算装置１００は、近似の際の誤差の偏りも少なくなる。
【００８２】
図１２は、本開示の実施の形態に係る演算装置１００を用いることによる効果を示す説明図である。図１２には、３区間折れ線近似、３区間階段関数近似、そして本開示の実施の形態に係る演算装置１００で用いる７区間折れ線近似のそれぞれにおける誤差が示されている。符号１３１が３区間折れ線近似による誤差を示し、符号１３２が３区間階段関数近似による誤差を示し、符号１３３が７区間折れ線近似による誤差を示している。図１２に示したように、演算装置１００で用いる７区間折れ線近似の場合は、他の近似方法に比べて誤差が極めて小さく、また誤差が現れたとしても正負双方に現れているので、近似を繰り返すことによる誤差の増大も抑えることができる。
【００８３】
本開示の実施の形態に係る演算装置１００は、パラメータの設定により、ＩＥＥＥ７５４形式の非正規化数（指数部が０）にも自動的に対応することが出来る。また本開示の実施の形態に係る演算装置１００は、シグモイド関数（（ｔａｎｈ（ｘ／２）＋１）／２）の近似を、双曲線正接関数の近似を使って求めることにも使える。すなわち、ｔａｎｈ（ｘ／２）／２は、演算装置１００への入出力の指数部から１を減じる操作のみで演算することができる。従って、本開示の実施の形態に係る演算装置１００は、演算装置１００への入出力の指数部から１を減じ、出力結果に１／２を加算することで、シグモイド関数の演算を行うことができる。
【００８４】
＜２．ハードウェア構成例＞
次に、図１３を参照して、本開示の実施形態に係る演算装置１００が設けられる情報処理装置のハードウェア構成について説明する。図１３は、本開示の実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
【００８５】
情報処理装置９００は、ＣＰＵ（Central  Processing  unit）９０１、ＲＯＭ（Read  Only  Memory）９０３、およびＲＡＭ（Random  Access  Memory）９０５を含む。また、情報処理装置９００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、ドライブ９２１、接続ポート９２３、通信装置９２５を含んでもよい。さらに、情報処理装置９００は、必要に応じて、撮像装置９３３、およびセンサ９３５を含んでもよい。情報処理装置９００は、ＣＰＵ９０１に代えて、またはこれとともに、ＤＳＰ（Digital  Signal  Processor）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、またはＦＰＧＡ（Field-Programmable  Gate  Array）などの処理回路を有してもよい。
【００８６】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置９００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータなどを記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５は、ＣＰＵバスなどの内部バスにより構成されるホストバス９０７により相互に接続されている。さらに、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Peripheral  Component  Interconnect/Interface）バスなどの外部バス９１１に接続されている。
【００８７】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなど、ユーザによって操作される装置である。入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置９００の操作に対応した携帯電話などの外部接続機器９２９であってもよい。入力装置９１５は、ユーザが入力した情報に基づいて入力信号を生成してＣＰＵ９０１に出力する入力制御回路を含む。ユーザは、この入力装置９１５を操作することによって、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりする。
【００８８】
出力装置９１７は、取得した情報をユーザに対して視覚や聴覚、触覚などの感覚を用いて通知することが可能な装置で構成される。出力装置９１７は、例えば、ＬＣＤ（Liquid  Crystal  Display）または有機ＥＬ（Electro-Luminescence）ディスプレイなどの表示装置、スピーカまたはヘッドフォンなどの音声出力装置、もしくはバイブレータなどでありうる。出力装置９１７は、情報処理装置９００の処理により得られた結果を、テキストもしくは画像などの映像、音声もしくは音響などの音声、またはバイブレーションなどとして出力する。
【００８９】
ストレージ装置９１９は、情報処理装置９００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置９１９は、例えば、ＨＤＤ（Hard  Disk  Drive）などの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。ストレージ装置９１９は、例えばＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
【００９０】
ドライブ９２１は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体９２７のためのリーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録を書き込む。
【００９１】
接続ポート９２３は、機器を情報処理装置９００に接続するためのポートである。接続ポート９２３は、例えば、ＵＳＢ（Universal  Serial  Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small  Computer  System  Interface）ポートなどでありうる。また、接続ポート９２３は、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポートなどであってもよい。接続ポート９２３に外部接続機器９２９を接続することで、情報処理装置９００と外部接続機器９２９との間で各種のデータが交換されうる。
【００９２】
通信装置９２５は、例えば、通信ネットワーク９３１に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置９２５は、例えば、ＬＡＮ（Local  Area  Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ、またはＷＵＳＢ（Wireless  USB）用の通信カードなどでありうる。また、通信装置９２５は、光通信用のルータ、ＡＤＳＬ（Asymmetric  Digital  Subscriber  Line）用のルータ、または、各種通信用のモデムなどであってもよい。通信装置９２５は、例えば、インターネットや他の通信機器との間で、ＴＣＰ／ＩＰなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置９２５に接続される通信ネットワーク９３１は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信などを含みうる。
【００９３】
撮像装置９３３は、例えば、ＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）またはＣＣＤ（Charge  Coupled  Device）などの撮像素子、および撮像素子への被写体像の結像を制御するためのレンズなどの各種の部材を用いて実空間を撮像し、撮像画像を生成する装置である。撮像装置９３３は、静止画を撮像するものであってもよいし、また動画を撮像するものであってもよい。
【００９４】
センサ９３５は、例えば、加速度センサ、角速度センサ、地磁気センサ、照度センサ、温度センサ、気圧センサ、または音センサ（マイクロフォン）などの各種のセンサである。センサ９３５は、例えば情報処理装置９００の筐体の姿勢など、情報処理装置９００自体の状態に関する情報や、情報処理装置９００の周辺の明るさや騒音など、情報処理装置９００の周辺環境に関する情報を取得する。また、センサ９３５は、ＧＰＳ（Global  Positioning  System）信号を受信して装置の緯度、経度および高度を測定するＧＰＳ受信機を含んでもよい。
【００９５】
以上、情報処理装置９００のハードウェア構成の一例を示した。なお、情報処理装置９００のハードウェア構成は、実施する時々の技術レベルに応じて適宜変更されうる。
【００９６】
＜３．まとめ＞
以上説明したように、本開示の実施の形態によれば、簡易な構成でありながらも双曲線正接関数を精度良く近似して演算することができる演算装置１００が提供される。
【００９７】
本開示の実施の形態に係る演算装置１００は、簡易な構成でありながら双曲線正接関数を精度良く近似して演算することができるので、例えば、双曲線正接関数を用いることが多いニューラルネットワークの分野で幅広く活用されうる。
【００９８】
各装置に内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアを、上述した各装置の構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供されることが可能である。また、機能ブロック図で示したそれぞれの機能ブロックをハードウェアで構成することで、一連の処理をハードウェアで実現することもできる。
【００９９】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１００】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１０１】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、前記入力ｘの値が±２のｋ乗（ｋ＝−１，０，１）を境界として前記傾きが変わる折れ線で近似する演算部を備え、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記演算部は、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算装置。
（２）
前記演算部は、前記入力ｘに対するビットの演算並びに並び替え及び定数を用いて前記出力ｙを生成する、前記（１）に記載の演算装置。
（３）
前記演算部は、前記ｋの値が−１〜１の間の区間における演算を１つの演算式で行う、前記（１）または（２）に記載の演算装置。
（４）
前記演算部は、前記入力ｘの指数部と、前記入力ｘの最大指数とのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果に基づいて出力する第１のセレクタを備える、前記（１）〜（３）のいずれかに記載の演算装置。
（５）
前記演算部は、前記入力ｘの最大指数から１減算したものと、前記第１のセレクタの出力とのいずれかを、前記指数部の最上位ビットの値に基づいて出力する第２のセレクタを備える、前記（４）に記載の演算装置。
（６）
前記演算部は、前記入力ｘの仮数部と、前記入力ｘの指数部の最下位ビットに前記入力ｘの仮数部の最下位ビット以外のビット列を連結したデータとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果に基づいて出力する第３のセレクタを備える、前記（１）〜（５）のいずれかに記載の演算装置。
（７）
前記演算部は、０と、前記第３のセレクタの出力とのいずれかを、前記指数部の最上位ビットの値に基づいて出力する第４のセレクタを備える、前記（６）に記載の演算装置。
（８）
前記演算部は、前記入力ｘの指数部と、前記入力ｘの最大指数と、前記入力ｘの最大指数から１減算したものとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果及び前記入力ｘの指数部の最上位ビットの値に基づいて出力する第１のセレクタを備える、前記（１）〜（３）のいずれかに記載の演算装置。
（９）
前記演算部は、０と、前記入力ｘの仮数部と、前記入力ｘの指数部の最下位ビットに前記入力ｘの仮数部の最下位ビット以外のビット列を連結したデータとのいずれかを、前記入力ｘの指数部に対する所定のビット演算の結果及び前記入力ｘの指数部の最上位ビットの値に基づいて出力する第２のセレクタを備える、前記（８）に記載の演算装置。
（１０）
プロセッサが、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを含み、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記プロセッサは、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行う、演算方法。
（１１）
コンピュータに、入力ｘに対して双曲線正接の演算を行って出力ｙを出力する双曲線正接関数を、２のｎ乗（ｎ＝−２，−１，０）の傾きを有し、２のｋ乗（ｋ＝−１，０，１）の値を境界とする折れ線で近似することを実行させ、
前記入力ｘ及び出力ｙは浮動小数点形式の値であり、
前記コンピュータに、前記折れ線における異なる傾きを有する複数の区間における演算を１つの演算式で行わせる、コンピュータプログラム。
【符号の説明】
【０１０２】
１００    演算装置
１１１、１１２、１１３、１１４、１２１、１２２    セレクタ
【図１】
2018092294.tif 000005
【図２】
2018092294.tif 000006
【図３】
2018092294.tif 000007
【図４】
2018092294.tif 000008
【図５】
2018092294.tif 000009
【図６】
2018092294.tif 000010
【図７】
2018092294.tif 000011
【図８】
2018092294.tif 000012
【図９】
2018092294.tif 000013
【図１０】
2018092294.tif 000014
【図１１】
2018092294.tif 000015
【図１２】
2018092294.tif 000016
【図１３】
2018092294.tif 000017