/*****************************************************************************
Major portions of this software are copyrighted by the Medical College
of Wisconsin, 1994-2000, and are released under the Gnu General Public
License, Version 2. See the file README.Copyright for details.
******************************************************************************/
#include "mrilib.h"
/*********** find the largest value in a volume of data ***********/
float MCW_vol_amax( int nx, int ny, int nz , int ftype , void * fim )
{
register int nxyz = nx * ny * nz , ii ;
ENTRY("MCW_vol_amax") ;
if( fim == NULL ) RETURN( 0.0 );
switch( ftype ){
case MRI_byte:{
register byte * bfar = (byte *) fim ;
register byte max , val ;
max = bfar[0] ;
for( ii=1 ; ii < nxyz ; ii++ ){
val = bfar[ii] ; if( val > max ) max = val ;
}
RETURN ((float) max) ;
}
break ;
case MRI_short:{
register short * sfar = (short *) fim ;
register short max , val ;
max = abs(sfar[0]) ;
for( ii=1 ; ii < nxyz ; ii++ ){
val = abs(sfar[ii]) ; if( val > max ) max = val ;
}
RETURN ((float) max) ;
}
break ;
case MRI_float:{
register float * ffar = (float *) fim ;
register float max , val ;
max = fabs(ffar[0]) ;
for( ii=1 ; ii < nxyz ; ii++ ){
val = fabs(ffar[ii]) ; if( val > max ) max = val ;
}
RETURN ((float) max) ;
}
break ;
case MRI_double:{
register double * dfar = (double *) fim ;
register double max , val ;
max = fabs(dfar[0]) ;
for( ii=1 ; ii < nxyz ; ii++ ){
val = fabs(dfar[ii]) ; if( val > max ) max = val ;
}
RETURN ((float) max) ;
}
break ;
case MRI_complex:{
register complex * cfar = (complex *) fim ;
register float max , val ;
max = CSQR(cfar[0]) ;
for( ii=1 ; ii < nxyz ; ii++ ){
val = CSQR(cfar[ii]) ; if( val > max ) max = val ;
}
RETURN( (float) sqrt(max) );
}
break ;
}
RETURN( 0.0 );
}
syntax highlighted by Code2HTML, v. 0.9.1