diff --git a/miscmaths.cc b/miscmaths.cc index f23ae8cddf7d6a6621fa36377489a1750e25b657..5aed0ce1cfa5f70d303a429afbb4b92460ff0042 100644 --- a/miscmaths.cc +++ b/miscmaths.cc @@ -1,6 +1,6 @@ /* miscmaths.cc - Mark Jenkinson & Mark Woolrich & Christian Beckmann, FMRIB Image Analysis Group + Mark Jenkinson & Mark Woolrich & Christian Beckmann & Tim Behrens, FMRIB Image Analysis Group Copyright (C) 1999-2000 University of Oxford */ @@ -356,7 +356,10 @@ namespace MISCMATHS { if (x>0.0) return ((int) (x+0.5)); else return ((int) (x-0.5)); } - + + double rounddouble(double x){ + return ( floor(x+0.5)); + } int periodicclamp(int x, int x1, int x2) { if (x2<x1) return periodicclamp(x,x2,x1); @@ -1558,7 +1561,7 @@ void element_mod_n(Matrix& Mat,double n) for( int i=1;i<=Mat.Nrows();i++){ if( !( (Mat(i,j)>0) && (Mat(i,j)<n) ) ){ - tmp = ( Mat(i,j) - MISCMATHS::round(Mat(i,j)/n)*n ); + tmp = ( Mat(i,j) - rounddouble(Mat(i,j)/n)*n ); Mat(i,j)= tmp > 0 ? tmp : tmp + n; } diff --git a/miscmaths.h b/miscmaths.h index 382d2e63262eb83349e31736c803294eef20757e..63a19dca54cef5aff9ec00ccce9994ddbe2b9495 100644 --- a/miscmaths.h +++ b/miscmaths.h @@ -71,7 +71,8 @@ namespace MISCMATHS { int round(int x); int round(float x); int round(double x); - + double rounddouble(double x); + inline int sign(int x){ if (x>0) return 1; else { if (x<0) return -1; else return 0; } } inline int sign(float x){ if (x>0) return 1; else { if (x<0) return -1; else return 0; } } inline int sign(double x){ if (x>0) return 1; else { if (x<0) return -1; else return 0; } }