[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] gri_mmse_fir_interpolator_cc::interpolate returns
From: |
Kyle Zhou |
Subject: |
Re: [Discuss-gnuradio] gri_mmse_fir_interpolator_cc::interpolate returns NaN |
Date: |
Thu, 01 Jul 2010 10:48:47 +1000 |
User-agent: |
Thunderbird 2.0.0.24 (Windows/20100228) |
Tom Rondeau wrote:
The error suggests that the d_mu value is < 0, which is unrelated to
the inputs being all 0. There should be no problem with inputs being
all 0, and if d_mu is less than 0, something is going wrong. Not sure
what to tell you right now, but more debug information would be
helpful.
Tom
Thanks Tom.
Yes, you are right. the error is unrelated to the inputs being all zeros.
Actually, d_mu is not negative either. d_mu is NaN when the error occurs.
By doing some debugging, I have located the problem in
gr_fir_ccf_simd::filter(), which is called by
gri_mmse_fir_interpolator_cc::interpolate(), which in turn is called by
gr_mpsk_receiver_cc::general_work().
For the first call, gr_fir_ccf_simd::filter() returned a value with NaN
as its imaginary part.
Then this value (interp_sample in gr_mpsk_receiver_cc) is passed into
mm_error_tracking(), which causes mm_error, and particularly, d_mu to be
NaN.
Then when gri_mmse_fir_interpolator_cc::interpolate() is called again
with d_mu passed in, the first line
imu = (int) rint(mu*NSTEPS);
will produced a negative imu, which raises the assertion failure.
So the problem lies in gr_fir_ccf_simd::filter(). But why does it return
NaN? I am not sure.
This only happens in Cygwin.
I put aside the problem and switched to Ubuntu to continue my work.
Strangely, after some time of augmenting my codes, when I return to
Cygwin with the augmented codes, that problem disappeared secretly!
Now I cannot reproduce that problem, which prevents me from further
debugging.
Kyle