SyFi  0.3
ex_inspection.cpp File Reference
#include <iostream>
#include <tools.h>

Go to the source code of this file.

Functions

void print (ex e)
void variants (ex e)
int main ()

Function Documentation

int main ( )

Definition at line 108 of file ex_inspection.cpp.

References SyFi::initSyFi(), SyFi::isymb(), variants(), SyFi::x, SyFi::y, and SyFi::z.

           {
        initSyFi(3);

        ex e;

        e = x*y+y*z+z*x;
        variants(e);

        e = pow(x*y+y*z+z*x,5);
        variants(e);

        e = (x*y*z)*(x*y*z)+(x*y*z)+(x*y*z);
        variants(e);

        e = pow(2-2*y,3) * pow(1+x*y,2) * pow(x-2*y,2) * (x+y);
        variants(e);

        e = 1;
        for(int i=0; i<10; i++)
        {
                e = e*isymb("x",i) + isymb("y",i);
        }
        variants(e);

        return 0;
}
void print ( ex  e)

Definition at line 26 of file ex_inspection.cpp.

References SyFi::ExStats::adds, SyFi::count_ops(), SyFi::count_symbols(), SyFi::ExStats::flops, SyFi::ExStats::functions, SyFi::ExStats::muls, and SyFi::ExStats::pows.

Referenced by check_CrouzeixRaviart(), main(), and variants().

{
        cout << "    e = " << e << endl;

        exhashmap<int> sc = count_symbols(e);
        exhashmap<int>::iterator it;
        int count = 0;
        int maxcount = 0;
        for(it = sc.begin(); it != sc.end(); it++)
        {
                if(it->second > maxcount)
                        maxcount = it->second;
                count += it->second;
                //cout << "        " << it->first << ": " << it->second << endl;
        }
        cout << "    number of symbols / total symbol count  = " << sc.size() << ", " << count << endl;

        ExStats es = count_ops(e);
        cout << "    m,a,p,f,flops = "
                                   << es.muls << ", "
                                   << es.adds << ", "
                                   << es.pows << ", "
                                   << es.functions << ", "
                                   << es.flops << endl;
}
void variants ( ex  e)

Definition at line 52 of file ex_inspection.cpp.

References SyFi::normal(), print(), SyFi::replace_powers(), SyFi::x, SyFi::y, and SyFi::z.

Referenced by main().

{
        cout << "====================" << endl;
        cout << "original:" << endl;
        print(e);

        cout << "expand:" << endl;
        print(expand(e));

        cout << "normal:" << endl;
        print(normal(e));

        cout << "sqrfree in x,y,z:" << endl;
        print(sqrfree(e,lst(x,y,z)));
/*
        cout << "sqrfree in x,y,z of expanded form:" << endl;
        print(sqrfree(expand(e),lst(x,y,z)));
*/

/*
        cout << "collect_common_factors:" << endl;
        print(collect_common_factors(e));

        cout << "collect_common_factors o expand:" << endl;
        print(collect_common_factors(expand(e)));
*/
        cout << "----------------------------------------" << endl;

        list<symexpair> sel;
        list<symbol> sl;
        sl.push_back(x);
        sl.push_back(y);
        sl.push_back(z);

        cout << "replace_powers:" << endl;
        print( replace_powers(e, sl, sel) );

        cout << "replace_powers(expand):" << endl;
        print( replace_powers(expand(e), sl, sel) );

        cout << "replace_powers(sqrfree):" << endl;
        print( replace_powers(sqrfree(e, lst(x,y,z)), sl, sel) );

        cout << "replace_powers(sqrfree(expand)):" << endl;
        print( replace_powers(sqrfree(expand(e), lst(x,y,z)), sl, sel) );
        cout << "====================" << endl;

/*
        list<symexpair>::iterator it = sel.begin();
        for(;it!=sel.end();it++)
        {
                cout << it->first << ", " << it->second << endl;
        }
*/
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator