[GiNaC-devel] Real and imaginary parts.

Richard B. Kreckel kreckel at ginac.de
Mon Apr 24 22:25:25 CEST 2006


Dear Chris,

Chris Dams wrote:

>
>No, actually, just because I was thinking "what could be a nice name for a
>function that takes the real/imaginary part of something". Do you think
>that it should be changed? I am not sure whether numeric::real() and 
>numeric::imag() would cause trouble in that case.
>  
>

Sure the return type would cause trouble. The return type can only 
change if it's a reference or pointer and if it changes covariantly 
across the class hierarchy. In the case at hand, it's a numeric object, 
however, not a refernece. Even changing covariantly would not be a good 
idea in GiNaC for the very same reason basic::eval() and so many others 
return an ex object.

No, the numeric::real() member function would have to be renamed to make 
place for a new signature ex numeric::real() (the free function 
real(const numeric&) could stay, in principle, I guess). This would 
break compatibility somewhat, however. Alternatively, ex::real() could 
dispatch to a differently named basic member function, like your 
real_part(). Not nice.

Don't misunderstand me. I'm not advocating it, merely pondering aloud...

Cheers
-richy.

-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>



More information about the GiNaC-devel mailing list