SyFi::ExStatsVisitor Class Reference

List of all members.

Public Member Functions

void visit (const power &e)
void visit (const mul &e)
void visit (const add &e)
void visit (const function &e)

Public Attributes

ExStats es


Detailed Description

Definition at line 1313 of file ginac_tools.cpp.


Member Function Documentation

void SyFi::ExStatsVisitor::visit ( const function &  e  )  [inline]

Definition at line 1357 of file ginac_tools.cpp.

References es, and SyFi::ExStats::functions.

01358                 {
01359                         //cout << "func" << endl;
01360                         es.functions++;
01361                 }

void SyFi::ExStatsVisitor::visit ( const add &  e  )  [inline]

Definition at line 1350 of file ginac_tools.cpp.

References SyFi::ExStats::adds, es, and SyFi::ExStats::flops.

01351                 {
01352                         //cout << "add" << endl;
01353                         es.adds  += e.nops()-1;
01354                         es.flops += e.nops()-1;
01355                 }

void SyFi::ExStatsVisitor::visit ( const mul &  e  )  [inline]

Definition at line 1343 of file ginac_tools.cpp.

References es, SyFi::ExStats::flops, and SyFi::ExStats::muls.

01344                 {
01345                         //cout << "mul" << endl;
01346                         es.muls  += e.nops()-1;
01347                         es.flops += e.nops()-1;
01348                 }

void SyFi::ExStatsVisitor::visit ( const power &  e  )  [inline]

Definition at line 1323 of file ginac_tools.cpp.

References es, SyFi::ExStats::flops, SyFi::ExStats::muls, test::n, and SyFi::ExStats::pows.

01324                 {
01325                         //cout << "pow" << endl;
01326                         ex b = e.op(1);
01327                         ex c = b.evalf();
01328                         if( is_a<numeric>(c) )
01329                         {
01330                                 numeric nu = ex_to<numeric>(c);
01331                                 int n = (int) to_double(nu);
01332                                 if( is_zero(nu-n) )
01333                                 {
01334                                         // is an integer power, interpret as a sequence of multiplications
01335                                         es.muls  += n-1;
01336                                         es.flops += n-1;
01337                                 }
01338                         }
01339 
01340                         es.pows++;
01341                 }


Member Data Documentation

Definition at line 1321 of file ginac_tools.cpp.

Referenced by SyFi::count_ops(), and visit().


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

Generated on Mon Aug 31 16:17:06 2009 for SyFi by  doxygen 1.5.9