/*
* This is the function that implements dempster's rule
* of combination.
* vector1 & vector2 are belief vectors. vector2 will
* hold the result of the combination.
*/
#define LENGTH_OF_BELIEF_VECTOR 8
combine_using_dempsters_rule (vector1, vector2)
float vector1[LENGTH_OF_BELIEF_VECTOR],
vector2[LENGTH_OF_BELIEF_VECTOR];
{
float denominator, sum_vector[LENGTH_OF_BELIEF_VECTOR];
int a, i, place;
/* set the sums to zero */
for(i=0; i<LENGTH_OF_BELIEF_VECTOR; i++)
sum_vector[i] = 0.0;
/* Now go through the intersection tableau.
* Look for the intersection of non-zero beliefs
* and save their products. */
for(a=1; a<LENGTH_OF_BELIEF_VECTOR; a++){
if(vector2[a] > 0.0){
for(i=0; i<LENGTH_OF_BELIEF_VECTOR; i++){
place = i & a;
if(vector1[i] > 0.0)
sum_vector[place] = (vector1[i] * vector2[a])
+ sum_vector[place];
} /* ends loop over i */
} /* ends if vector2[a] > 0.0 */
} /* ends loop over a */
denominator = 1.0 - sum_vector[0];
for(i=1; i<LENGTH_OF_BELIEF_VECTOR; i++)
vectorl[i] = sum_vector[i]/demoninator;
} /* ends combine_using_dempsters_rule */