SNAP Library 2.3, User Reference  2014-06-16 11:58:46
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TExpBi Class Reference

#include <exp.h>

Public Member Functions

 TExpBi ()
 
TExpBioperator= (const TExpBi &)
 
bool operator== (const TExpBi &) const
 
bool IsExpBiId (const TStr &ExpBiNm, TExpBiId &ExpBiId)
 
bool IsExpBiId (const TStr &ExpBiNm)
 
TExpBiArgType GetExpBiArgType (const TExpBiId &ExpBiId)
 
void AssertArgs (const int &RqArgs, const int &ActArgs)
 
void AssertArgValType (const TExpValType &ExpValType, const PExpVal &ExpVal)
 
PExpVal GetBiConstVal (const TExpBiId &ExpBiId)
 
PExpVal GetBiFuncVal (const TExpBiId &ExpBiId, const TExpValV &ArgValV, const PExpEnv &ExpEnv)
 

Private Member Functions

void AddBi (const TStr &ExpBiNm, const TExpBiId &ExpBiId, const TExpBiArgType &ExpBiArgType=ebatUndef)
 

Private Attributes

TStrIntH ExpBiNmToIdH
 
TIntIntH ExpBiIdToArgTypeH
 
PExpVal Val_Undef
 
PExpVal Val_True
 
PExpVal Val_False
 
PExpVal Val_E
 
PExpVal Val_Pi
 

Detailed Description

Definition at line 140 of file exp.h.

Constructor & Destructor Documentation

TExpBi::TExpBi ( )

Definition at line 183 of file exp.cpp.

183  :
184  ExpBiNmToIdH(100), ExpBiIdToArgTypeH(100){
185  // constants
186  AddBi("Undef", ebi_Undef);
187  AddBi("True", ebi_True);
188  AddBi("False", ebi_False);
189  AddBi("E", ebi_E);
190  AddBi("Pi", ebi_Pi);
191 
192  // trigonometric funcions
193  AddBi("Sin", ebi_Sin, ebatFlt);
194  AddBi("Cos", ebi_Cos, ebatFlt);
195  AddBi("Tan", ebi_Tan, ebatFlt);
196  AddBi("ASin", ebi_ASin, ebatFlt);
197  AddBi("ACos", ebi_ACos, ebatFlt);
198  AddBi("ATan", ebi_ATan, ebatFlt);
199  AddBi("SinH", ebi_SinH, ebatFlt);
200  AddBi("CosH", ebi_CosH, ebatFlt);
201  AddBi("TanH", ebi_TanH, ebatFlt);
202 
203  // exponential functions
204  AddBi("Pow", ebi_Pow, ebatFltFlt);
205  AddBi("Exp", ebi_Exp, ebatFlt);
206  AddBi("Sqr", ebi_Sqr, ebatFlt);
207  AddBi("Sqrt", ebi_Sqrt, ebatFlt);
208  AddBi("Log", ebi_Log, ebatFlt);
209  AddBi("Log10", ebi_Log10, ebatFlt);
210 
211  // number manipulation functions
212  AddBi("Ceil", ebi_Ceil, ebatFlt);
213  AddBi("Floor", ebi_Floor, ebatFlt);
214  AddBi("Int", ebi_Int, ebatFlt);
215  AddBi("Frac", ebi_Frac, ebatFlt);
216  AddBi("Abs", ebi_Abs, ebatFlt);
217 
218  // random deviates
219  AddBi("UniDev", ebi_UniDev, ebatVoid);
220  AddBi("NrmDev", ebi_NrmDev, ebatVoid);
221  AddBi("ExpDev", ebi_ExpDev, ebatVoid);
222  AddBi("GamDev", ebi_GamDev, ebatFlt);
223  AddBi("PoiDev", ebi_PoiDev, ebatFlt);
224  AddBi("BinDev", ebi_BinDev, ebatFltFlt);
225  AddBi("UniDevStep", ebi_UniDevStep, ebatFltFlt);
226 
227  // assign values to constants
229  Val_True=TExpVal::New(double(1));
230  Val_False=TExpVal::New(double(0));
233 }
Definition: exp.h:121
Definition: exp.h:116
void AddBi(const TStr &ExpBiNm, const TExpBiId &ExpBiId, const TExpBiArgType &ExpBiArgType=ebatUndef)
Definition: exp.cpp:235
static PExpVal GetUndefExpVal()
Definition: exp.cpp:123
Definition: exp.h:117
Definition: exp.h:116
Definition: exp.h:120
Definition: exp.h:120
Definition: exp.h:115
Definition: exp.h:112
PExpVal Val_E
Definition: exp.h:144
Definition: exp.h:112
Definition: exp.h:135
Definition: exp.h:124
Definition: exp.h:115
PExpVal Val_False
Definition: exp.h:144
TStrIntH ExpBiNmToIdH
Definition: exp.h:142
Definition: exp.h:124
static double Pi
Definition: xmath.h:8
Definition: exp.h:121
Definition: exp.h:112
static PExpVal New(const TExpValType &ValType=evtUndef)
Definition: exp.h:23
Definition: exp.h:112
Definition: exp.h:117
Definition: exp.h:124
Definition: exp.h:115
Definition: exp.h:135
PExpVal Val_Undef
Definition: exp.h:144
Definition: exp.h:120
PExpVal Val_True
Definition: exp.h:144
Definition: exp.h:120
Definition: exp.h:117
Definition: exp.h:124
Definition: exp.h:116
static double E
Definition: xmath.h:7
Definition: exp.h:112
TIntIntH ExpBiIdToArgTypeH
Definition: exp.h:143
Definition: exp.h:124
PExpVal Val_Pi
Definition: exp.h:144

Member Function Documentation

void TExpBi::AddBi ( const TStr ExpBiNm,
const TExpBiId ExpBiId,
const TExpBiArgType ExpBiArgType = ebatUndef 
)
private

Definition at line 235 of file exp.cpp.

236  {
237  ExpBiNmToIdH.AddDat(ExpBiNm.GetUc(), TInt(int(ExpBiId)));
238  ExpBiIdToArgTypeH.AddDat(TInt(int(ExpBiId)), TInt(int(ExpBiArgType)));
239 }
TStr GetUc() const
Definition: dt.h:493
TStrIntH ExpBiNmToIdH
Definition: exp.h:142
Definition: dt.h:1041
TDat & AddDat(const TKey &Key)
Definition: hash.h:196
TIntIntH ExpBiIdToArgTypeH
Definition: exp.h:143
void TExpBi::AssertArgs ( const int &  RqArgs,
const int &  ActArgs 
)

Definition at line 255 of file exp.cpp.

255  {
256  if (RqArgs!=ActArgs){
257  TExcept::Throw("Invalid number of arguments.");
258  }
259 }
static void Throw(const TStr &MsgStr)
Definition: ut.h:187
void TExpBi::AssertArgValType ( const TExpValType ExpValType,
const PExpVal ExpVal 
)

Definition at line 261 of file exp.cpp.

262  {
263  if (ExpValType!=ExpVal->GetValType()){
264  TExcept::Throw("Invalid type of argument.");
265  }
266 }
static void Throw(const TStr &MsgStr)
Definition: ut.h:187
TExpValType GetValType() const
Definition: exp.h:45
PExpVal TExpBi::GetBiConstVal ( const TExpBiId ExpBiId)

Definition at line 268 of file exp.cpp.

268  {
269  switch (ExpBiId){
270  case ebi_Undef: return Val_Undef;
271  case ebi_True: return Val_True;
272  case ebi_False: return Val_False;
273  case ebi_E: return Val_E;
274  case ebi_Pi: return Val_Pi;
275  default: TExcept::Throw("Invalid constant."); return Val_Undef;
276  }
277 }
Definition: exp.h:112
PExpVal Val_E
Definition: exp.h:144
Definition: exp.h:112
static void Throw(const TStr &MsgStr)
Definition: ut.h:187
PExpVal Val_False
Definition: exp.h:144
Definition: exp.h:112
Definition: exp.h:112
PExpVal Val_Undef
Definition: exp.h:144
PExpVal Val_True
Definition: exp.h:144
Definition: exp.h:112
PExpVal Val_Pi
Definition: exp.h:144
PExpVal TExpBi::GetBiFuncVal ( const TExpBiId ExpBiId,
const TExpValV ArgValV,
const PExpEnv ExpEnv 
)

Definition at line 279 of file exp.cpp.

280  {
281  TExpBiArgType ExpBiArgType=TExpBi::GetExpBiArgType(ExpBiId);
282  int Args=ArgValV.Len();
283  double ArgFlt1=0; double ArgFlt2=0;
284  switch (ExpBiArgType){
285  case ebatUndef: Fail; break;
286  case ebatVoid:
287  AssertArgs(0, Args); break;
288  case ebatFlt:
289  AssertArgs(1, Args);
290  AssertArgValType(evtFlt, ArgValV[0]);
291  ArgFlt1=ArgValV[0]->GetFltVal(); break;
292  case ebatFltFlt:
293  AssertArgs(2, Args);
294  AssertArgValType(evtFlt, ArgValV[0]);
295  AssertArgValType(evtFlt, ArgValV[1]);
296  ArgFlt1=ArgValV[0]->GetFltVal();
297  ArgFlt2=ArgValV[1]->GetFltVal(); break;
298  default: Fail;
299  }
300  PExpVal ExpVal;
301  switch (ExpBiId){
302  // trigonometric funcions
303  case ebi_Sin: ExpVal=TExpVal::New(sin(ArgFlt1)); break;
304  case ebi_Cos: ExpVal=TExpVal::New(cos(ArgFlt1)); break;
305  case ebi_Tan: ExpVal=TExpVal::New(tan(ArgFlt1)); break;
306  case ebi_ASin: ExpVal=TExpVal::New(asin(ArgFlt1)); break;
307  case ebi_ACos: ExpVal=TExpVal::New(acos(ArgFlt1)); break;
308  case ebi_ATan: ExpVal=TExpVal::New(atan(ArgFlt1)); break;
309  case ebi_SinH: ExpVal=TExpVal::New(sinh(ArgFlt1)); break;
310  case ebi_CosH: ExpVal=TExpVal::New(cosh(ArgFlt1)); break;
311  case ebi_TanH: ExpVal=TExpVal::New(tanh(ArgFlt1)); break;
312 
313  // exponential functions
314  case ebi_Pow: ExpVal=TExpVal::New(pow(ArgFlt1, ArgFlt2)); break;
315  case ebi_Exp: ExpVal=TExpVal::New(exp(ArgFlt1)); break;
316  case ebi_Sqr: ExpVal=TExpVal::New(TMath::Sqr(ArgFlt1)); break;
317  case ebi_Sqrt: ExpVal=TExpVal::New(sqrt(ArgFlt1)); break;
318  case ebi_Log: ExpVal=TExpVal::New(log(ArgFlt1)); break;
319  case ebi_Log10: ExpVal=TExpVal::New(log10(ArgFlt1)); break;
320 
321  // number manipulation functions
322  case ebi_Ceil: ExpVal=TExpVal::New(ceil(ArgFlt1)); break;
323  case ebi_Floor: ExpVal=TExpVal::New(floor(ArgFlt1)); break;
324  case ebi_Int:{
325  double Int; modf(ArgFlt1, &Int);
326  ExpVal=TExpVal::New(Int); break;}
327  case ebi_Frac:{
328  double Frac, Int; Frac=modf(ArgFlt1, &Int);
329  ExpVal=TExpVal::New(Frac); break;}
330  case ebi_Abs: ExpVal=TExpVal::New(fabs(ArgFlt1)); break;
331 
332  // random deviates
333  case ebi_UniDev: ExpVal=TExpVal::New(ExpEnv->GetRnd().GetUniDev()); break;
334  case ebi_NrmDev: ExpVal=TExpVal::New(ExpEnv->GetRnd().GetNrmDev()); break;
335  case ebi_ExpDev: ExpVal=TExpVal::New(ExpEnv->GetRnd().GetExpDev()); break;
336  case ebi_GamDev:{
337  int ArgInt1=int(ArgFlt1);
338  ExpVal=TExpVal::New(ExpEnv->GetRnd().GetGammaDev(ArgInt1)); break;}
339  case ebi_PoiDev:{
340  ExpVal=TExpVal::New(ExpEnv->GetRnd().GetPoissonDev(ArgFlt1)); break;}
341  case ebi_BinDev:{
342  int ArgInt2=int(ArgFlt2);
343  ExpVal=TExpVal::New(ExpEnv->GetRnd().GetBinomialDev(ArgFlt1, ArgInt2)); break;}
344  case ebi_UniDevStep:{
345  int ArgInt1=int(ArgFlt1); if (ArgInt1<0){ArgInt1=0;}
346  int ArgInt2=int(ArgFlt2);
347  ExpVal=TExpVal::New(TRnd::GetUniDevStep(ArgInt1, ArgInt2)); break;}
348  case ebi_NrmDevStep:{
349  int ArgInt1=int(ArgFlt1); if (ArgInt1<0){ArgInt1=0;}
350  int ArgInt2=int(ArgFlt2);
351  ExpVal=TExpVal::New(TRnd::GetNrmDevStep(ArgInt1, ArgInt2)); break;}
352  case ebi_ExpDevStep:{
353  int ArgInt1=int(ArgFlt1); if (ArgInt1<0){ArgInt1=0;}
354  int ArgInt2=int(ArgFlt2);
355  ExpVal=TExpVal::New(TRnd::GetExpDevStep(ArgInt1, ArgInt2)); break;}
356 
357  default: TExcept::Throw("Invalid function.");
358  }
359  return ExpVal;
360 }
Definition: exp.h:121
Definition: exp.h:116
TExpBiArgType
Definition: exp.h:134
#define Fail
Definition: bd.h:238
Definition: exp.h:117
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:535
Definition: exp.h:116
Definition: exp.h:120
Definition: exp.h:120
static double Sqr(const double &x)
Definition: xmath.h:12
Definition: exp.h:135
static double GetExpDevStep(const int &Seed, const int &Steps)
Definition: dt.h:68
Definition: exp.h:115
void AssertArgs(const int &RqArgs, const int &ActArgs)
Definition: exp.cpp:255
Definition: exp.h:135
TExpBiArgType GetExpBiArgType(const TExpBiId &ExpBiId)
Definition: exp.cpp:250
static void Throw(const TStr &MsgStr)
Definition: ut.h:187
Definition: exp.h:124
static double GetNrmDevStep(const int &Seed, const int &Steps)
Definition: dt.h:66
Definition: exp.h:115
Definition: exp.h:5
Definition: exp.h:124
Definition: exp.h:121
static double GetUniDevStep(const int &Seed, const int &Steps)
Definition: dt.h:64
static PExpVal New(const TExpValType &ValType=evtUndef)
Definition: exp.h:23
Definition: exp.h:117
Definition: exp.h:124
void AssertArgValType(const TExpValType &ExpValType, const PExpVal &ExpVal)
Definition: exp.cpp:261
Definition: exp.h:115
Definition: exp.h:135
Definition: exp.h:120
Definition: exp.h:120
Definition: exp.h:117
Definition: exp.h:124
Definition: exp.h:116
Definition: exp.h:124
TExpBiArgType TExpBi::GetExpBiArgType ( const TExpBiId ExpBiId)

Definition at line 250 of file exp.cpp.

250  {
251  TInt ExpBiArgType=ExpBiIdToArgTypeH.GetDat(TInt(int(ExpBiId)));
252  return TExpBiArgType(int(ExpBiArgType));
253 }
TExpBiArgType
Definition: exp.h:134
const TDat & GetDat(const TKey &Key) const
Definition: hash.h:220
Definition: dt.h:1041
TIntIntH ExpBiIdToArgTypeH
Definition: exp.h:143
bool TExpBi::IsExpBiId ( const TStr ExpBiNm,
TExpBiId ExpBiId 
)

Definition at line 241 of file exp.cpp.

241  {
242  int ExpBiIdP;
243  if (ExpBiNmToIdH.IsKey(ExpBiNm.GetUc(), ExpBiIdP)){
244  ExpBiId=TExpBiId(int(ExpBiNmToIdH[ExpBiIdP])); return true;
245  } else {
246  ExpBiId=ebi_Undef; return false;
247  }
248 }
TStr GetUc() const
Definition: dt.h:493
Definition: exp.h:112
TStrIntH ExpBiNmToIdH
Definition: exp.h:142
TExpBiId
Definition: exp.h:110
bool IsKey(const TKey &Key) const
Definition: hash.h:216
bool TExpBi::IsExpBiId ( const TStr ExpBiNm)
inline

Definition at line 154 of file exp.h.

154  {
155  TExpBiId ExpBiId; return IsExpBiId(ExpBiNm, ExpBiId);}
TExpBiId
Definition: exp.h:110
bool IsExpBiId(const TStr &ExpBiNm, TExpBiId &ExpBiId)
Definition: exp.cpp:241
TExpBi& TExpBi::operator= ( const TExpBi )
inline

Definition at line 150 of file exp.h.

150 {Fail; return *this;}
#define Fail
Definition: bd.h:238
bool TExpBi::operator== ( const TExpBi ) const
inline

Definition at line 151 of file exp.h.

151 {Fail; return false;}
#define Fail
Definition: bd.h:238

Member Data Documentation

TIntIntH TExpBi::ExpBiIdToArgTypeH
private

Definition at line 143 of file exp.h.

TStrIntH TExpBi::ExpBiNmToIdH
private

Definition at line 142 of file exp.h.

PExpVal TExpBi::Val_E
private

Definition at line 144 of file exp.h.

PExpVal TExpBi::Val_False
private

Definition at line 144 of file exp.h.

PExpVal TExpBi::Val_Pi
private

Definition at line 144 of file exp.h.

PExpVal TExpBi::Val_True
private

Definition at line 144 of file exp.h.

PExpVal TExpBi::Val_Undef
private

Definition at line 144 of file exp.h.


The documentation for this class was generated from the following files: