aboutsummaryrefslogtreecommitdiff
path: root/FEAST/MIToolbox/CalculateProbability.c
diff options
context:
space:
mode:
Diffstat (limited to 'FEAST/MIToolbox/CalculateProbability.c')
-rw-r--r--FEAST/MIToolbox/CalculateProbability.c33
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;