1 /*****************************************************************************
2    Major portions of this software are copyrighted by the Medical College
3    of Wisconsin, 1994-2000, and are released under the Gnu General Public
4    License, Version 2.  See the file README.Copyright for details.
5 ******************************************************************************/
6 
7 #include "mrilib.h"
8 
9 /*********** find the largest value in a volume of data ***********/
10 
MCW_vol_amax(int nx,int ny,int nz,int ftype,void * fim)11 float MCW_vol_amax( int nx, int ny, int nz , int ftype , void * fim )
12 {
13    register int nxyz = nx * ny * nz , ii ;
14 
15 ENTRY("MCW_vol_amax") ;
16 
17    if( fim == NULL ) RETURN( 0.0 );
18 
19    switch( ftype ){
20 
21       case MRI_byte:{
22          register byte * bfar = (byte *) fim ;
23          register byte max , val ;
24          max = bfar[0] ;
25          for( ii=1 ; ii < nxyz ; ii++ ){
26             val = bfar[ii] ; if( val > max ) max = val ;
27          }
28          RETURN ((float) max) ;
29       }
30       break ;
31 
32       case MRI_short:{
33          register short * sfar = (short *) fim ;
34          register short max , val ;
35          max = abs(sfar[0]) ;
36          for( ii=1 ; ii < nxyz ; ii++ ){
37             val = abs(sfar[ii]) ; if( val > max ) max = val ;
38          }
39          RETURN ((float) max) ;
40       }
41       break ;
42 
43       case MRI_float:{
44          register float * ffar = (float *) fim ;
45          register float max , val ;
46          max = fabs(ffar[0]) ;
47          for( ii=1 ; ii < nxyz ; ii++ ){
48             val = fabs(ffar[ii]) ; if( val > max ) max = val ;
49          }
50          RETURN ((float) max) ;
51       }
52       break ;
53 
54       case MRI_double:{
55          register double * dfar = (double *) fim ;
56          register double max , val ;
57          max = fabs(dfar[0]) ;
58          for( ii=1 ; ii < nxyz ; ii++ ){
59             val = fabs(dfar[ii]) ; if( val > max ) max = val ;
60          }
61          RETURN ((float) max) ;
62       }
63       break ;
64 
65       case MRI_complex:{
66          register complex * cfar = (complex *) fim ;
67          register float max , val ;
68          max = CABS(cfar[0]) ;
69          for( ii=1 ; ii < nxyz ; ii++ ){
70             val = CABS(cfar[ii]) ; if( val > max ) max = val ;
71          }
72          RETURN( max );
73       }
74       break ;
75    }
76    RETURN( 0.0 );
77 }
78