# HG changeset patch # User Jaroslav Hajek # Date 1283854981 -7200 # Node ID 1094868ca10d66b226e9efa22ea1d97567f114ac # Parent aa40bdbfa478b22133c4495ad26075492691ef14 fix bugs in inner convolution diff --git a/libcruft/ChangeLog b/libcruft/ChangeLog --- a/libcruft/ChangeLog +++ b/libcruft/ChangeLog @@ -1,3 +1,9 @@ +2010-09-07 Jaroslav Hajek + + * blas-xtra/cconv2.f, blas-xtra/csconv2.f, blas-xtra/dconv2.f, + blas-xtra/sconv2.f, blas-xtra/zconv2.f, blas-xtra/zdconv2.f: + Fix inner convolution formula. + 2010-07-27 Jaroslav Hajek * lapack-xtra/zrsf2csf.f, lapack-xtra/crsf2csf.f: New sources. diff --git a/libcruft/blas-xtra/cconv2.f b/libcruft/blas-xtra/cconv2.f --- a/libcruft/blas-xtra/cconv2.f +++ b/libcruft/blas-xtra/cconv2.f @@ -52,7 +52,7 @@ c equivalent to the following: c for i = 1:ma-mb+1 c for j = 1:na-nb+1 -c c(i,j) = sum (sum (a(i:i+mb-1,j:j+nb-1) .* b)) +c c(i,j) = sum (sum (a(i+mb-1:-1:i,j+nb-1:-1:j) .* b)) c endfor c endfor c arguments: @@ -70,7 +70,7 @@ do k = 1,na-nb+1 do j = 1,nb do i = 1,mb - call caxpy(ma-mb+1,b(i,j),a(i,k+j-1),1,c(1,k),1) + call caxpy(ma-mb+1,b(i,j),a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do diff --git a/libcruft/blas-xtra/csconv2.f b/libcruft/blas-xtra/csconv2.f --- a/libcruft/blas-xtra/csconv2.f +++ b/libcruft/blas-xtra/csconv2.f @@ -76,7 +76,7 @@ do j = 1,nb do i = 1,mb btmp = b(i,j) - call caxpy(ma-mb+1,btmp,a(i,k+j-1),1,c(1,k),1) + call caxpy(ma-mb+1,btmp,a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do diff --git a/libcruft/blas-xtra/dconv2.f b/libcruft/blas-xtra/dconv2.f --- a/libcruft/blas-xtra/dconv2.f +++ b/libcruft/blas-xtra/dconv2.f @@ -52,7 +52,7 @@ c equivalent to the following: c for i = 1:ma-mb+1 c for j = 1:na-nb+1 -c c(i,j) = sum (sum (a(i:i+mb-1,j:j+nb-1) .* b)) +c c(i,j) = sum (sum (a(i+mb-1:-1:i,j+nb-1:-1:j) .* b)) c endfor c endfor c arguments: @@ -70,7 +70,7 @@ do k = 1,na-nb+1 do j = 1,nb do i = 1,mb - call daxpy(ma-mb+1,b(i,j),a(i,k+j-1),1,c(1,k),1) + call daxpy(ma-mb+1,b(i,j),a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do diff --git a/libcruft/blas-xtra/sconv2.f b/libcruft/blas-xtra/sconv2.f --- a/libcruft/blas-xtra/sconv2.f +++ b/libcruft/blas-xtra/sconv2.f @@ -52,7 +52,7 @@ c equivalent to the following: c for i = 1:ma-mb+1 c for j = 1:na-nb+1 -c c(i,j) = sum (sum (a(i:i+mb-1,j:j+nb-1) .* b)) +c c(i,j) = sum (sum (a(i+mb-1:-1:i,j+nb-1:-1:j) .* b)) c endfor c endfor c arguments: @@ -70,7 +70,7 @@ do k = 1,na-nb+1 do j = 1,nb do i = 1,mb - call saxpy(ma-mb+1,b(i,j),a(i,k+j-1),1,c(1,k),1) + call saxpy(ma-mb+1,b(i,j),a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do diff --git a/libcruft/blas-xtra/zconv2.f b/libcruft/blas-xtra/zconv2.f --- a/libcruft/blas-xtra/zconv2.f +++ b/libcruft/blas-xtra/zconv2.f @@ -52,7 +52,7 @@ c equivalent to the following: c for i = 1:ma-mb+1 c for j = 1:na-nb+1 -c c(i,j) = sum (sum (a(i:i+mb-1,j:j+nb-1) .* b)) +c c(i,j) = sum (sum (a(i+mb-1:-1:i,j+nb-1:-1:j) .* b)) c endfor c endfor c arguments: @@ -70,7 +70,7 @@ do k = 1,na-nb+1 do j = 1,nb do i = 1,mb - call zaxpy(ma-mb+1,b(i,j),a(i,k+j-1),1,c(1,k),1) + call zaxpy(ma-mb+1,b(i,j),a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do diff --git a/libcruft/blas-xtra/zdconv2.f b/libcruft/blas-xtra/zdconv2.f --- a/libcruft/blas-xtra/zdconv2.f +++ b/libcruft/blas-xtra/zdconv2.f @@ -76,7 +76,7 @@ do j = 1,nb do i = 1,mb btmp = b(i,j) - call zaxpy(ma-mb+1,btmp,a(i,k+j-1),1,c(1,k),1) + call zaxpy(ma-mb+1,btmp,a(mb+1-i,k+j-1),1,c(1,k),1) end do end do end do