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