]> git.donarmstrong.com Git - ape.git/blobdiff - src/mvrs.c
bunch of fixes for ape 3.0-2
[ape.git] / src / mvrs.c
index 14b5fac267fed528b82d8fcd1a9d24c24f2ec4e4..fcfdc2520ff140c02e5ad5d59c2109678f587f4d 100644 (file)
@@ -1,4 +1,4 @@
-/* mvrs.c    2012-02-17 */
+/* mvrs.c    2012-04-02 */
 
 /* Copyright 2011-2012 Andrei-Alin Popescu */
 
@@ -60,6 +60,8 @@ void mvrs(double *D, double* v,int *N, int *edge1, int *edge2, double *edge_leng
 
              if(k==i || k==j)
                {
+                 if(i!=k)R[give_index(i,j,n)]+=D[give_index(i,k,n)];
+                 if(j!=k)R[give_index(i,j,n)]+=D[give_index(j,k,n)];
                   s[give_index(i,j,n)]++;
                   //Rprintf("%i",s[give_index(i,j,n)]);
 
@@ -288,6 +290,8 @@ void mvrs(double *D, double* v,int *N, int *edge1, int *edge2, double *edge_leng
                      {
                        if(j==1 || j==i)
                        {
+                        if(i!=j)newR[give_index(1,i,n-1)]+=new_dist[give_index(i,j,n-1)];
+                        if(1!=j)newR[give_index(1,i,n-1)]+=new_dist[give_index(1,j,n-1)];
                          newS[give_index(1,i,n-1)]++;
                          continue;
                        }
@@ -318,6 +322,7 @@ void mvrs(double *D, double* v,int *N, int *edge1, int *edge2, double *edge_leng
                 {if(new_dist[give_index(1,i,n-1)]==-1)continue;
                  for(j=i+1;j<=n-1;j++)
                   {if(new_dist[give_index(1,j,n-1)]==-1)continue;
+                   if(new_dist[give_index(i,j,n-1)]==-1)continue;
                    newR[give_index(i,j,n-1)]+=(new_dist[give_index(1,i,n-1)]+new_dist[give_index(1,j,n-1)]);
                    newS[give_index(i,j,n-1)]++;
                   }