> > <mailto:
rjsteed@talk21.com <mailto:
rjsteed@talk21.com>>> wrote:
> >
> >
> > Hi,
> > After my previous email, I have opened a ticket #1117 (correlate
> > not order dependent)
> >
> > I have found that the correlate function is defined in
> > multiarraymodule.c and
> > that inputs are being swapped using the following code
> >
> > n1 = ap1->dimensions[0];
> > n2 = ap2->dimensions[0];
> > if (n1 < n2) {
> > ret = ap1;
> > ap1 = ap2;
> > ap2 = ret;
> > ret = NULL;
> > i = n1;
> > n1 = n2;
> > n2 = i;
> > }
> >
> > I do not know the code well enough to see whether this could
> just
> > be removed (I don't know c either).
> > Maybe the algorithmn requires the inputs to be length ordered? I
> > will try to work it out.
> >
> >
> > If the correlation algorithm doesn't use an fft and is done
> > explicitly, then the maximum overlap for any shift is the length of
> > the shortest input. Swapping the arrays makes that logic easier to
> > implement, but it isn't necessary.
>
> But this logic is also wrong if the swapping is not taken into
> account -
> as the OP mentioned, correlate(a, b) is not equal to correlate(b,
> a) in
> the general case. The output is reversed in the second case
> compared to
> the first case.
>
>
> I didn't say it was *correctly* implemented ;)