Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
nf_utilities.cc
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5
6#include <stdio.h>
7#include <stdlib.h>
8#include <cmath>
9
10#include "nf_utilities.h"
11
12#ifdef WIN32
13#include <float.h>
14#define is_nan(a) _isnan(a)
15/*#define INFINITY (DBL_MAX+DBL_MAX)*/
16/*#define NAN (INFINITY-INFINITY)*/
17#else
18#define is_nan(a) std::isnan(a)
19#endif
20
21#if defined __cplusplus
22namespace GIDI {
23using namespace GIDI;
24#endif
25
26static const char Okay_message[] = "all is okay";
27static const char mallocError_message[] = "could not allocate memory";
28static const char insufficientMemory_message[] = "user's memory is too small to handle data";
29static const char badIndex_message[] = "bad index";
30static const char XNotAscending_message[] = "x values are not ascending";
31static const char badIndexForX_message[] = "index not correct for x value";
32static const char XOutsideDomain_message[] = "x value not in domain";
33static const char invalidInterpolation_message[] = "bad x,y values for interpolation";
34static const char badSelf_message[] = "source object has bad status value";
35static const char divByZero_message[] = "division by zero";
36static const char unsupportedInterpolation_message[] = "unsupported interpolation";
37static const char unsupportedInterpolationConversion_message[] = "unsupported interpolation conversion";
38static const char empty_message[] = "empty instance";
39static const char tooFewPoints_message[] = "too few points in instance";
40static const char notMutualDomian_message[] = "domains are not mutual";
41static const char unknownStatus_message[] = "unknown (i.e., invalid) status value";
42static const char badInput_message[] = "bad input to function";
43static const char badNorm_message[] = "bad norm";
44static const char badIntegrationInput_message[] = "bad integration input";
45static const char otherInterpolation_message[] = "other integration not supported";
46static const char failedToConverge_message[] = "failed to converge";
47static const char oddNumberOfValues_message[] = "odd number of inputted values";
48
49static int nfu_debugging = 0;
50
51/*
52************************************************************
53*/
54double nfu_getNAN( void ) {
55
56 return( NAN );
57}
58/*
59************************************************************
60*/
61int nfu_isNAN( double d ) {
62
63 return( is_nan( d ) );
64}
65/*
66************************************************************
67*/
68double nfu_getInfinity( double sign ) {
69
70 if( sign < 0 ) return( -INFINITY );
71 return( INFINITY );
72}
73/*
74************************************************************
75*/
76const char *nfu_statusMessage( nfu_status status ) {
77
78 switch( status ) {
79 case nfu_Okay : return( Okay_message );
80 case nfu_mallocError : return( mallocError_message );
81 case nfu_insufficientMemory : return( insufficientMemory_message );
82 case nfu_badIndex : return( badIndex_message );
83 case nfu_XNotAscending : return( XNotAscending_message );
84 case nfu_badIndexForX : return( badIndexForX_message );
85 case nfu_XOutsideDomain : return( XOutsideDomain_message );
86 case nfu_invalidInterpolation : return( invalidInterpolation_message );
87 case nfu_badSelf : return( badSelf_message );
88 case nfu_divByZero : return( divByZero_message );
89 case nfu_unsupportedInterpolation : return( unsupportedInterpolation_message );
90 case nfu_unsupportedInterpolationConversion : return( unsupportedInterpolationConversion_message );
91 case nfu_empty : return( empty_message );
92 case nfu_tooFewPoints : return( tooFewPoints_message );
93 case nfu_domainsNotMutual : return( notMutualDomian_message );
94 case nfu_badInput : return( badInput_message );
95 case nfu_badNorm : return( badNorm_message );
96 case nfu_badIntegrationInput : return( badIntegrationInput_message );
97 case nfu_otherInterpolation : return( otherInterpolation_message );
98 case nfu_failedToConverge : return( failedToConverge_message );
99 case nfu_oddNumberOfValues : return( oddNumberOfValues_message );
100 }
101 return( unknownStatus_message );
102}
103/*
104************************************************************
105*/
106void nfu_setMemoryDebugMode( int mode ) {
107
108 nfu_debugging = mode;
109}
110/*
111************************************************************
112*/
113void *nfu_malloc( size_t size ) {
114
115 void *p = malloc( size );
116
117 if( nfu_debugging ) printf( "nfu_malloc %12p size = %8llu\n", p, (long long unsigned) size );
118 return( p );
119}
120/*
121************************************************************
122*/
123void *nfu_calloc( size_t size, size_t n ) {
124
125 void *p = calloc( size, n );
126
127 if( nfu_debugging ) printf( "nfu_calloc %12p size = %8llu, n = %8llu\n", p, (long long unsigned) size, (long long unsigned) n );
128 return( p );
129}
130/*
131************************************************************
132*/
133void *nfu_realloc( size_t size, void *old ) {
134
135 void *p = realloc( old, size );
136
137 if( nfu_debugging ) printf( "nfu_realloc %12p size = %8llu, old = %12p\n", p, (long long unsigned) size, old );
138 return( p );
139}
140/*
141************************************************************
142*/
143void *nfu_free( void *p ) {
144
145 if( p != NULL ) {
146 if( nfu_debugging ) printf( "nfu_free %12p\n", p );
147 free( p );
148 }
149 return( NULL );
150}
151/*
152********************************************************
153*/
154void nfu_printMsg( char *fmt, ... ) {
155
156 va_list args;
157
158 va_start( args, fmt );
159 vfprintf( stderr, fmt, args );
160 fprintf( stderr, "\n" );
161 va_end( args );
162}
163/*
164********************************************************
165*/
166void nfu_printErrorMsg( char *fmt, ... ) {
167
168 va_list args;
169
170 va_start( args, fmt );
171 vfprintf( stderr, fmt, args );
172 fprintf( stderr, "\n" );
173 va_end( args );
174
175 exit( EXIT_FAILURE );
176}
177
178#if defined __cplusplus
179}
180#endif
#define is_nan(a)
Definition: nf_utilities.cc:18
void nfu_printErrorMsg(char *fmt,...)
int nfu_isNAN(double d)
Definition: nf_utilities.cc:61
@ nfu_unsupportedInterpolation
Definition: nf_utilities.h:28
@ nfu_domainsNotMutual
Definition: nf_utilities.h:28
@ nfu_XNotAscending
Definition: nf_utilities.h:26
@ nfu_invalidInterpolation
Definition: nf_utilities.h:27
@ nfu_Okay
Definition: nf_utilities.h:25
@ nfu_badSelf
Definition: nf_utilities.h:27
@ nfu_oddNumberOfValues
Definition: nf_utilities.h:30
@ nfu_mallocError
Definition: nf_utilities.h:25
@ nfu_insufficientMemory
Definition: nf_utilities.h:25
@ nfu_badNorm
Definition: nf_utilities.h:29
@ nfu_badIntegrationInput
Definition: nf_utilities.h:29
@ nfu_XOutsideDomain
Definition: nf_utilities.h:26
@ nfu_badIndex
Definition: nf_utilities.h:26
@ nfu_failedToConverge
Definition: nf_utilities.h:30
@ nfu_tooFewPoints
Definition: nf_utilities.h:28
@ nfu_unsupportedInterpolationConversion
Definition: nf_utilities.h:27
@ nfu_badInput
Definition: nf_utilities.h:29
@ nfu_badIndexForX
Definition: nf_utilities.h:26
@ nfu_empty
Definition: nf_utilities.h:28
@ nfu_divByZero
Definition: nf_utilities.h:27
@ nfu_otherInterpolation
Definition: nf_utilities.h:29
void nfu_setMemoryDebugMode(int mode)
enum nfu_status_e nfu_status
void * nfu_free(void *p)
void nfu_printMsg(char *fmt,...)
void * nfu_realloc(size_t size, void *old)
void * nfu_calloc(size_t size, size_t n)
double nfu_getInfinity(double sign)
Definition: nf_utilities.cc:68
void * nfu_malloc(size_t size)
const char * nfu_statusMessage(nfu_status status)
Definition: nf_utilities.cc:76
double nfu_getNAN(void)
Definition: nf_utilities.cc:54