[GiNaC-list] let_op() and index
mdias at ift.unesp.br
mdias at ift.unesp.br
Sat Feb 26 23:12:06 CET 2005
Thanks Chris,
I would like that my class covdiff be inherited form indexed. I make this a
child class, remove new_index member, but I stupidly cant remove index and arg.
I dont have idea to define for example the method compare_same_type, without
using this. But the question is: It prints my covdiff ok:
D~gamma (A~beta.c)
but when a subs(gamma=nu):
(A~beta.c)~nu
and returns to be a indexed, not a covdiff object. there is a example to write a
subs code like this?
Thanks a lot,
Marco
class covdiff : public indexed{
GINAC_DECLARE_REGISTERED_CLASS(covdiff,indexed)
public:
covdiff(ex arg, ex i1);
ex & let_op(size_t i);
ex subs(const lst & ls, const lst & lr, unsigned options =0) const;
size_t nops() const;
ex op(size_t i) const;
protected:
ex index;
ex arg;
void do_print(const print_context &c, unsigned level = 0) const;
};
covdiff::covdiff(ex arg_, ex i1_): indexed(arg_,i1_),arg(arg_),index(i1_){
tinfo_key = TINFO_covdiff;
}
int covdiff::compare_same_type(const basic &other) const
{
GINAC_ASSERT(is_a<covdiff>(other));
const covdiff &o = static_cast<const covdiff &>(other);
if(arg != o.arg){
//diferent arg
return arg < o.arg ? -1 : 1;
}
return inherited::compare_same_type(other);
}
> Well, you made covdiff inherit from indexed. Indexed already has a .subs()
> method that comes from the type container that it is based on, so you are
> actually subsing in the underlying indexed object. You could, of course,
> add your own .subs()-method, but before you do so, you should ask yourself
> wheter inheriting from indexed is really what you want to do. If you want
> to inherit from indexed, why do you need to define your own member
> variables index and arg? Indexed already has the data structures to hold
> these. Also, making these public looks like a bad idea. Furthermore, why
> does this class have a member index and besides that a member new_index?
>
> If I were to write such a class, my first inclination would be to indeed
> try to make it a child class of indexed, but then to simply hold an
> integer that would hold, say 3, if the indexed object has 3 indices and
> further indices indicate differentiation. This would behave more or less
> as expected with respect to summations conventions and so on.
>
> Best wishes,
> Chris
>
>
>
> _______________________________________________
> GiNaC-list mailing list
> GiNaC-list at ginac.de
> http://thep.physik.uni-mainz.de/mailman/listinfo/ginac-list
>
-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/
More information about the GiNaC-list
mailing list