diff options
Diffstat (limited to 'FEAST/MIToolbox/CalculateProbability.c')
-rw-r--r-- | FEAST/MIToolbox/CalculateProbability.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/FEAST/MIToolbox/CalculateProbability.c b/FEAST/MIToolbox/CalculateProbability.c index 6d4f19b..89c4e01 100644 --- a/FEAST/MIToolbox/CalculateProbability.c +++ b/FEAST/MIToolbox/CalculateProbability.c @@ -31,6 +31,7 @@ #include "MIToolbox.h" #include "ArrayOperations.h" #include "CalculateProbability.h" +#include "util.h" JointProbabilityState calculateJointProbability(double *firstVector, double *secondVector, int vectorLength) { @@ -49,20 +50,30 @@ JointProbabilityState calculateJointProbability(double *firstVector, double *sec double length = vectorLength; JointProbabilityState state; - firstNormalisedVector = (int *) CALLOC_FUNC(vectorLength,sizeof(int)); - secondNormalisedVector = (int *) CALLOC_FUNC(vectorLength,sizeof(int)); + firstNormalisedVector = safe_calloc(vectorLength,sizeof(int)); + secondNormalisedVector = safe_calloc(vectorLength,sizeof(int)); firstNumStates = normaliseArray(firstVector,firstNormalisedVector,vectorLength); secondNumStates = normaliseArray(secondVector,secondNormalisedVector,vectorLength); jointNumStates = firstNumStates * secondNumStates; - firstStateCounts = (int *) CALLOC_FUNC(firstNumStates,sizeof(int)); - secondStateCounts = (int *) CALLOC_FUNC(secondNumStates,sizeof(int)); - jointStateCounts = (int *) CALLOC_FUNC(jointNumStates,sizeof(int)); + firstStateCounts = safe_calloc(firstNumStates,sizeof(int)); + secondStateCounts = safe_calloc(secondNumStates,sizeof(int)); + jointStateCounts = safe_calloc(jointNumStates,sizeof(int)); - firstStateProbs = (double *) CALLOC_FUNC(firstNumStates,sizeof(double)); - secondStateProbs = (double *) CALLOC_FUNC(secondNumStates,sizeof(double)); - jointStateProbs = (double *) CALLOC_FUNC(jointNumStates,sizeof(double)); + firstStateProbs = safe_calloc(firstNumStates,sizeof(double)); + secondStateProbs =safe_calloc(secondNumStates,sizeof(double)); + jointStateProbs = safe_calloc(jointNumStates,sizeof(double)); + + if(firstNormalisedVector == NULL || secondNormalisedVector == NULL || + firstStateCounts == NULL || secondStateCounts == NULL || jointStateCounts == NULL || + firstStateProbs == NULL || secondStateProbs == NULL || jointStateProbs == NULL) { + + fprintf(stderr, "could not allocate enough memory"); + exit(EXIT_FAILURE); + + } + /* optimised version, less numerically stable double fractionalState = 1.0 / vectorLength; @@ -143,12 +154,12 @@ ProbabilityState calculateProbability(double *dataVector, int vectorLength) int i; double length = vectorLength; - normalisedVector = (int *) CALLOC_FUNC(vectorLength,sizeof(int)); + normalisedVector = safe_calloc(vectorLength,sizeof(int)); numStates = normaliseArray(dataVector,normalisedVector,vectorLength); - stateCounts = (int *) CALLOC_FUNC(numStates,sizeof(int)); - stateProbs = (double *) CALLOC_FUNC(numStates,sizeof(double)); + stateCounts = safe_calloc(numStates,sizeof(int)); + stateProbs = safe_calloc(numStates,sizeof(double)); /* optimised version, may have floating point problems fractionalState = 1.0 / vectorLength; |