2017-09-18 14 views
1

: は[algorithms-アンソニーM. Castaldo、R.Clint Whaleyらによって行われま、及びアンソニーT. Chronopouosのスーパーファミリーを用いたドット積で浮動小数点エラーを減らす] [1]「X + = nb; Y + = nb;」とは何ですか? XとYが2つのベクトルで、nbが整数である場合を意味しますか?紙の8ページに

あります次のコード:

typedef double scalar; 
typedef scalar *Vec; 
scalar dotProd(Vec X, Vec Y, int nb) 
{ int n = X.length; 
    int nblks = n/nb; 
    int nsblks = sqrt(nblks); 
    int blksInSblk = nblks/nsblks; 
    scalar dot = 0.0, sdot, cdot; 

    for (s=0; s < nsblks; s++) 
    { sdot = 0.0; 
     for (b=0; b < blksInSblk; b++) 
     { 
     cdot = X[0] * Y[0]; 
     for (i=1; i < nb; i++) 
      cdot += X[i] * Y[i]; 
     sdot += cdot; 
     X += nb; Y += nb; 
     } 
     dot += sdot; 
    } 
    return dot; 
} 

私は擬似コードのこの行を理解していない:XY 2つのベクトルであれば、それは

X += nb; Y+= nb; 

何を意味していますnbは整数ですか?

補足:ポインタを使用していない場合、どのようにnb要素で "インクリメント"するのですか?

int n = x.size(); 
int nblks = n/nb; 

int nsblks = sqrt(nblks); 
int blksInSblk = nblks/nsblks; 
double dot = 0.0; 
double sdot = 0.0; 
double cdot = 0.0; 
for(int s=0;s<nsblks;s++) { 
    std::cout << "iteration s= " << s << std::endl; 
    for(int b=0;b<blksInSblk;b++) { 
    std::cout << "iteration b= " << b << std::endl; 
    cdot += x(0) * y(0); 
    std::cout << "cdot += x(0) * y(0) = " << cdot << std::endl; 
     int pointingTo = 0; 
     for(int i=pointingTo;i<nb;i++) { 
     cdot += x(i) * y(i); 
     } 
     sdot += cdot; 
     // Increment the pointer to x by nb elements: 
     // x += nb; 
     pointingTo += nb; 
     // Increment the pointer to y by nb elements; 
     // y += nb 
    //} 
    } 
    dot += sdot; 
} 
+0

これは、「nb」要素でポインタを「X」にインクリメントすることを意味します。 –

+0

適切なtypedefを使用すると、疑似コードだけでなく、ほぼCコードになります。 –

+0

マッド物理学者ありがとう。私は実際にベクトルに適用された+ = rhs_value要素によってXへのポインタをインクリメントすることを意味することを知らない – user2315094

答えて

0

あなたは

typedef double scalar; 
typedef scalar *Vec; 

を想定して、あなたの最初のループの前にint s, b, i;どこかのような行を追加する場合は、表示されたコードは、Cコードとして解釈することができます。

この場合、X += nbXのポインタをnbスカラーで増分していることは明らかです。これは、アルゴリズムが何をしているのかと一貫しています。サイズの合計をまとめてではなく、nbの塊で集計します。

+0

@ user2315094。あなたは今もupvoteに十分な担当者を持っています:) –

関連する問題