[GiNaC-list] list input

soppon gvitbsord at aol.com
Sun Mar 1 12:48:30 CET 2015


On 03/01/2015 06:01 AM, Vladimir V. Kisil wrote:
>>>>>> On Sun, 01 Mar 2015 05:38:41 -0500, soppon <gvitbsord at aol.com> said:
>      soppon> Hi. I'm trying to use list as input. List as output prints
>      soppon> {expr1,expr2,..}, list.nops() is varying.  When I write list
>      soppon> as: parser reader; somelist=reader(cin); where input to cin:
>      soppon> {expr1,expr2,..} at the end shift-D It returns
>      soppon> somelist={expr1,expr2,..}, somelist.nops()=1.  When
>      soppon> accessing the 2nd and higher element of list, program gets
>      soppon> segmentation fault.
>
>
>      I am not completely sure, but the following example may give you a
>    hint:
>
>    ex l1=lst(a,b,c);
>    lst l2=l1;
>
>    In this case l1.nops()=3, but l2.nops()=1, because l2 has the only
>    element equal to l1 as a whole. To get thing right you may use:
>
>    ex l1=lst(a,b,c);
>    lst l2=ex_to<lst>(l1);
>
>    To analyse situation use somelist.dbgprint() or even
>    somelist.dbgprinttree().
I didn't see dbgprint() in tutorial, so i use tree for debug.
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;

int main()
{
     symbol xs("x");
     lst expr,ep;
     parser reader;
     expr=reader("{x,x}");
     ep=xs,xs;
     cout<<expr<<tree  << endl; //get {{x,x}}
     cout<<ep<<tree  << endl; //some hash table
     return 0;
}



More information about the GiNaC-list mailing list