GSL 学習:配列要素の合計

2017-08-19 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-08-18)の記事:
OpenCV / cvSum : Calculates the sum of array elements」に対応して、
同様なことを、“GSL - GNU Scientific Library”でやってみた。


しかし、・・・・・

“stackoverflow”に、
Sums on GNU Scientific Library (GSL)
があった。

質問
  I have used the 'mean' function on GSL which proved to be more accurate
   than my naive implementation.
  I haven't found a 'sum' function though,
   I'm using 'mean'*N instead, but I think it would be cleaner
   if I use a proper summing function.
  I'm summing a huge quantity of numbers,
   I and was wondering this to avoid
   if possible implementing a stable summing algorithm.
===
  私は、私の素朴な実装よりも正確であることが証明された
   GSLの「平均」関数を使用しました。
  私は 'sum'関数を見つけませんでしたが、
   代わりに 'mean' * N を使用していますが、
   適切な合計関数を使用するときれいになると思います。
  私は膨大な数の数値を集計していますが、
   安定した集計アルゴリズムを実装することを避けるために
   これを避けることを考えていました。

回答
  One sometimes-used trick is to use cblas_ddot function and
   compute the dot product of your data with a vector of ones.
  That will effectively compute the sum of your data.
===
  時々使用されるトリックは、cblas_ddot関数を使用して、
   データのドット積を1のベクトルで計算することです。
  それは効果的にあなたのデータの合計を計算します。

と云うこと!


そこで、
先日(2017-08-16)の記事「GSL 学習:“gsl_a.lua”モジュール?」で作った、
“gsl_a.lua”サブプログラムを使って、
試しにコーディングしてみた:
----- Sum_of_Vec_gsl.gsl -----
require'gsl_a'

----- double 版
v = matrix.vec{ 0.1, 0.2, 0.4, 7.6, 0.8, 1.0 }
sum_of_v = gsl.gsl_stats_mean( v.data, 1, #v ) * #v
print( sum_of_v )

-------------------------------------------------

----- long 版
I = ffi.new( 'int32_t[6]', 1, 2, 4, 76, 8, 10 )
sum_of_I = gsl.gsl_stats_long_mean( I, 1, 6 ) * 6
print( sum_of_I )
2パターンとも行けました。


本日はここまで。


Lua ( GSL Shell ) / GSL 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170709
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク