Go to the documentation of this file. 31 #ifndef MUMECH_SHARE_H 32 #define MUMECH_SHARE_H 37 #define WIN32_LEAN_AND_MEAN 57 #define _STRCMP _STRCASECMP 58 #define _STRNCMP strncmp 61 #define _STRCMP strcmp 62 #define _STRNCMP strncmp 68 #define MACHINE_EPS 1E-16 //alternatively FLT_EPSILON = 1e-5 69 #define MACHINE_EPS_PRN 1E-8 //alternatively FLT_EPSILON = 1e-5 71 #define PI 3.14159265358979323846 73 #define SQRT_2 1.41421356237309504880168872 74 #define _1_BY_SQRT_2 0.70710678118654752440084436 77 #define FileError(fmode,name) fprintf(stderr,"\033[31mCannot %s file %s in file %s line %d\033[0m\n", fmode, name, __FILE__,__LINE__); exit( 1 ); 78 #define FOPEN(file, name, mode) if( ( file = fopen(name,mode) ) == NULL) {FileError("open", name)} 79 #define FCLOSE(file) if (( fclose(file) ) == EOF) {FileError("close","")} 81 #define FREAD( var, number, file ) fread ( &var, sizeof ( var ), number, file ) 82 #define FWRITE( var, number, file ) fwrite ( &var, sizeof ( var ), number, file ) 86 #define NotImplementedFunction( name ) _errorr2( "Function %s : not implemented yet\n", name ); 87 #define Dprintf( format, var ) printf (" %s = ", #var ); printf ( format, var ) 88 #define Dfprintf( file, format, var ) fprintf (file," %s = ", #var ); fprintf ( file, format, var ) 90 #define NfoPrint(string,value) fprintf( stderr, "\033[31mNotice : \033[0m" ); fprintf(stderr,string,value); 94 #define SWAP(a, b, dummy) dummy=a;a=b;b=dummy 97 #define SQR( a ) ( ( a ) * ( a ) ) 98 #define CUB( a ) ( ( a ) * ( a ) * ( a ) ) 100 #define MIN(a,b) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) 101 #define MAX(a,b) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) 103 #define MID(a,b,c) MIN( MIN(MAX(a,b), MAX(b,c)), MIN(MAX(b,c), MAX(c,a)) ) 105 #ifndef CDMAX //collation of complex numbers' distances, requires <cmath> to be included 106 #define CDMAX(a,b) (((SQR(real(a))+SQR(imag(a)))>(SQR(real(b))+SQR(imag(b)))) ? (a) : (b)) 109 #ifndef CReMAX //collation of complex numbers' real parts, requires <cmath> to be included 110 #define CReMAX(a,b) ( ( real( a ) > real( b ) ) ? ( a ) : ( b ) ) 113 #ifndef CImMAX //collation of complex numbers' imaginary parts, requires <cmath> to be included 114 #define CImMAX(a,b) ( ( imag( a ) > imag( b ) ) ? ( a ) : ( b ) ) 118 #define ABS( a ) ( ( ( a ) > 0 ) ? ( a ) : ( -1 * ( a ) ) ) 126 #define odd_or_even( a ) ( ( ( ( a ) % 2 ) > 0 ) ? ODD : EVEN ) 132 #define DEG2RAD( a ) ( ( a ) * PI / 180. ) 136 #define RAD2DEG( a ) ( ( a ) * 180. / PI ) 143 #define INFTY 1e+36 //alternatively DBL_MAX for douple precision 187 #define delta( i, j ) ( ( i == j ) ? 1. : 0. ) 192 #define jump_empties( p_str ) while( ( * p_str ) <= ' ' && ( * p_str ) != '\0' ){ p_str++; } 196 #define jump_word( p_str ) while( ( * p_str ) > ' ' && ( * p_str ) != '\0' ){ p_str++; } 200 #define sscanff( p_str, format, p_var ) jump_empties( p_str ); sscanf( p_str, format, p_var ); jump_word( p_str ) 204 #define VEC_SQR_NORM_2D( x, y ) ( SQR( x ) + SQR( y ) ) 206 #define VEC_SQR_NORM_3D( x, y, z ) ( SQR( x ) + SQR( y ) + SQR( z ) ) 207 #define VEC_NORM( x, y, z ) sqrt( VEC_SQR_NORM_3D( x, y, z ) ) 209 #define DIST_POINTS_SQR_2D( P1, P2 ) ( SQR( P1[0] - P2[0] ) + SQR( P1[1] - P2[1] ) ) 210 #define DIST_POINTS_SQR_3D( P1, P2 ) ( SQR( P1[0] - P2[0] ) + SQR( P1[1] - P2[1] ) + SQR( P1[2] - P2[2] ) )