You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Eric Barnhill <er...@gmail.com> on 2015/10/12 20:41:39 UTC
Re: [MATH] Complex.interleaved2Complex()
Bruce and Gilles,
Thanks for thinking through the problem so well. Your suggestions sound
like a good way to do.
For method names, I agree that accessor names are not right. I propose
sticking with the convention I see currently in ComplexUtils e.g.
polar2Complex. That's a fairly typical convention and nicely compact.
Then the methods under discussion would be
Complex[] interleaved2Complex(double[] interleaved, int from, int to)
Complex[] interleaved2Complex(double[] interleaved, Iterable<Integer> range)
Complex[] interleaved2Complex(double[] interleaved) // with one
argument, would convert all
double[] complex2Interleaved(Complex[] complex, int from, int to)
double[] complex2Interleaved(Complex[] complex, Iterable<Integer> range)
double[] complex2Interleaved(Complex[] complex) // op. cit.
I would also want to make float methods as the result could be called
from the constructor of an OpenCL buffer:
Complex[] interleaved2Complex(float[] interleaved, int from, int to)
Complex[] interleaved2Complex(float[] interleaved, Iterable<Integer> range)
Complex[] interleaved2Complex(float[] interleaved)
float[] complex2InterleavedFloat(Complex[] complex, int from, int to)
float[] complex2InterleavedFloat(Complex[] complex, Iterable<Integer> range)
float[] complex2InterleavedFloat(Complex[] complex)
and the internal building blocks would be four helper methods
double[] extractInterleavedAtIndex(Complex[] complex, int index)
float[] extractInterleavedFloatAtIndex(Complex[] complex, int index)
Complex extractComplexAtIndex(double[] interleaved, int index)
Complex extractComplexAtIndex(float[] interleaved, int index)
I can iterate through the Complex[] but for the double[] I think I will
just have to write a loop, as I see is already true in the
ComplexUtils().convertToComplex() method.
Please pass along any further suggestions and I'll get started.
Thanks,
Eric
On 09/10/15 11:31, Gilles wrote:
>
>
> Also, the reverse method could perhaps use additional parameters in
> order to try and signal wrong usage or to extract only some part of
> the input array data.
>
> Maybe something along the lines:
>
> Complex[] convertInterleavedToComplex(double[] interleaved, int
> from, int to)
>
> where "from" and "to" would be the range of complex elements to
> create. Thus, to convert the whole of "interleaved":
> from = 1,
> to = interleaved.length / 2
>
> We could also make it more general and use the new "range" method
> defined in "o.a.c.m.util.IntegerSequence".
>
> Perhaps the basic building block should be a method:
>
> Complex extractInterleavedAtIndex(double[] interleaved, int index)
>
> where the real and imaginary parts to be extracted are the array
> elements located at "index" and "index + 1", respectively.
>
> What do you think?
>
>
> Gilles
>
>> where there already is:
>>
>> Complex[] convertToComplex(double[] real)
>>
>> Bruce
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org