I’m currently working on making creal and cimag return real data rather than complex, which I’m doing by implementing a “real” type qualifier (in PP terminology), so:
Pars => “a(); real [o] b()” This is also necessary to implement irfftn() in PDL::FFTW3 with native complex data, because the library itself takes complex data and returns real, and currently PDL makes all data parameters be the same unless a type-qualifier is given, and I didn’t want to have to make separate cfloat and cdouble versions. I think that comparisons (including sorting) of complex data other than an equality test (and approx) should simply throw an exception, as they aren’t mathematically valid at all. I also think that the equivalent should be done in PDL::Complex, despite it not currently being an error. What do others think? In a similar vein: is it really useful to call creal/cimag on real data? It seems to me that too should throw an exception. Best regards, Ed From: Luis Mochan<mailto:moc...@icf.unam.mx> Sent: 26 March 2021 05:30 To: pdl-devel@lists.sourceforge.net<mailto:pdl-devel@lists.sourceforge.net> Subject: Re: [Pdl-devel] [Pdl-general] PDL 2.029 released I started playing with the new complex numbers. I find it nice and useful that creal and cimag can be applied to real pdl's, but the results are promoted to complex: pdl> $x=pdl(1) pdl> p $x 1 pdl> p $x->creal 1+0i pdl> p $x->cimag 0+0i Equality and inequality comparisons do work but they also return complex values: pdl> p $x==1 1 pdl> p $x->creal==1 1+0i pdl> p $x->creal==2 0+0i pdl> p $x->creal!=2 1+0i This is troublesome, as their boolean interpretation is not correct: pdl> print +($x->creal==1)?'yes':'no' yes pdl> print +($x->creal==2)?'yes':'no' yes pdl> print +($x==2)?'yes':'no' no On the other hand, greater than, lower than, etc. do compare the real parts only and return a real value. pdl> $y=ci pdl> p $y<1 1 pdl> p $y<ci 0 pdl> p $y<=0.01*ci 1
_______________________________________________ pdl-devel mailing list pdl-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pdl-devel