The atan2() in fft.c computes the phase of each sample of the fft. The only place
this is used is in L3_psycho_analize(), where the cos() and sin() of this angle are
used, as well as the cos() and sin() of functions of this angle. Using trig
identities
sin(A-B) = sin(A) cos(B) - cos(A) sin(B)
cos(A-B) = cos(A) cos(B) + sin(A) sin(B)
sin(2A) = 2 cos(A) sin(A)
cos(2A) = cos(A)**2 - sin(A)**2
I re-formulated caluculations of the form cos(2*atan2(A,B)-atan2(C,D)) as functions
of A, B, C, and D, which are just the real and imaginary parts of one bin of the
DFT.
Anyway, it seems rather complicated to explain now, but it does give a 4% speed
improvement over version "2b-m11" of the code I downloaded. Maybe someone can take a
look and speed up the calculation in L3_psycho_analize() even more? Search for the
constants m1, m2, and m3 to find the two major revisions.
Gregory Hosler wrote:
> I'd certainly be interested in those fixes, but of course they really should
> go back to the maintainer.
>
> On another note. Frequently I notice a "slight pop" at the very begining of a
> (most) track(s). I once saw someone suspect that this might be an uninitialized
> buffer, or variable. has anyone looked into this further, or run purify on 8hz ?
>
> regards,
>
> -Greg
>
> On 01-Sep-98 "J. Droppo" wrote:
> >Hi, I'm new to this list.
> >
> >I've noticed that the sources still have <yuck> unnecessary trig
> >functions </yuck> in fft.c and l3psy.c. They can be removed from the 8hz
> >02b sources, and gain about 10% speed without trying hard. My question
> >is, assuming that speed is good and it hasn't been tried, who should I
> >send the fix to?
> >
>
> ----------------------------------
> E-Mail: Gregory Hosler <[EMAIL PROTECTED]>
> Date: 02-Sep-98
> Time: 09:03:528
>
> "And where were you at 00:00:00 GMT, January 1, 1970?"
>
> --
> As far as the laws of mathematics refer to reality, they are not
> certain, and as far as they are certain, they do not refer to reality.
> -- Albert Einstein
> ----------------------------------
>
fft.h
fft.c
l3psy.c