SNAP Library 2.0, User Reference  2013-05-13 16:33:57
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
mag.cpp File Reference
#include "stdafx.h"
#include "mag.h"

Go to the source code of this file.

Functions

const double LogSumExp (const double LogVal1, const double LogVal2)
const double LogSumExp (const TFltV &LogValV)
const double LogSumExp (const double *LogValArray, const int Len)

Function Documentation

const double LogSumExp ( const double  LogVal1,
const double  LogVal2 
)

Definition at line 675 of file mag.cpp.

                                                                   {
        double MaxExp = (LogVal1 > LogVal2) ? LogVal1 : LogVal2;
        double Sum = exp(LogVal1 - MaxExp) + exp(LogVal2 - MaxExp);
        return (log(Sum) + MaxExp);
}
const double LogSumExp ( const TFltV LogValV)

Definition at line 681 of file mag.cpp.

                                             {
        const int Len = LogValV.Len();
        double MaxExp = -DBL_MAX;
        
        for(int i = 0; i < Len; i++) {
                if(MaxExp < LogValV[i]) {  MaxExp = LogValV[i];  }
        }
        
        double Sum = 0.0;
        for(int i = 0; i < Len; i++) {
                Sum += exp(LogValV[i] - MaxExp);
        }

        return (log(Sum) + MaxExp);
}
const double LogSumExp ( const double *  LogValArray,
const int  Len 
)

Definition at line 697 of file mag.cpp.

                                                                 {
        TFltV TmpV(Len);
        for(int i = 0; i < Len; i++) {  TmpV[i] = LogValArray[i];  }
        return LogSumExp(TmpV);
}