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

Reply via email to