ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
平方根
立方根
整数指数
実数指数(Exp)
実数指数(一般)
対数
正弦/余弦
正接
逆正弦/逆余弦
逆正接
双曲線正弦/余弦
双曲線正接
逆双曲線正弦
階乗評価関数
級数評価関数
演算時間評価関数

数学関数

演算時間評価関数

最終更新日:2006/06/17 追加

●演算時間系

 EstimateCalculationTime、GetOperationTime 関数

○原理/方法

 演算時間評価システムも参照方。

○基本

 時間を求める表は、実測値や、近似式で算出したものを元に、改めて表を生成(結局はカーブを折線近似したことになる)し、その表を線形補間して求める。

○実測点/折線節点

・FFT系 

 FFT乗除算では、桁数の 2N と 2N + 8 で、不連続となる。これを、統一された線形補間方式で算出するために、2N と 2N + 8 の点をペアにして実測し、折線近似する。

・レガシ一次系

 レガシ演算の Comp、Add/Subt、MulI、DivI、MulS は、精度と時間が線形関係となるので、2N 系列で測定する。

・レガシ二次系

 レガシ乗除算のLMul、LDiv は、精度と時間が二次関係となるので、2N 系列に中間点を加えて実測し、近似式を算出している。

○補間

 関係が線形、非線形に依らず以下の方法で補間する。

 演算時間を求めたい桁数を P とすれば、

  1. 表を検索して、P がどの間になるかを探す。

  2. P = Pk であれば、Pk に対応する時間 Tk が求める値となる。

  3. もし、Pk と Pk+1 の間にあると分かれば、その桁数での時間を、Tk、Tk+1 とすれば、

  4. 求める値は、T = ((Tk+1 - Tk)/(Pk+1 - Pk)) * (P - Pk) + Tk となる。

●二進展開法関数

 BinaryMethosCount は、以下のように、与えられた数値の二進ビット長とビット 1 の数を数え、正確な乗算回数を返す。

D は与えられた冪数

Friend Function BinDigitCount(ByVal D As Long) As Integer
   Dim BB As Long = Math.Abs(D)
   Dim R As Long
   Dim C As Integer = 0
   If D = 0 Then Return 0
   Do
      R = BB Mod 2              '現在の最下位ビットを取り出す
      BB = BB \ 2
      If Not R = 0 Then
         C = C + 1        'ビットが 1 の数をカウント
      End If
      If BB = 0 Then Exit Do
      C = C + 1                      '二進桁数をカウント
   Loop
   Return C - 1
End Function