Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

datscha

macrumors newbie
Original poster
Jan 31, 2012
5
0
Hi all,

Still working on the same project, I have an error I never had before.

Code:
Complex* fft(Complex* x)
{
    int N = sizeof(x)/sizeof(double);
    Complex *w_out;
    w_out = (Complex*) calloc(sizeof(Complex), N);
    
    
    fftw_complex *in, *out;
    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
    
    fftw_plan p;
    
    for (int j = 0; j < N; j++)
    {
        in[j][0] = x[j].GetReal();
        in[j][1] = x[j].GetImaginary();
    }
    
    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
    
    fftw_execute(p);
    
    for (int i = 0; i < N; i++)
    {
        w_out[i].SetReal(out[i][0]);
        w_out[i].SetImaginary(out[i][1]);
        
    }
    fftw_destroy_plan(p);
    fftw_free(in); fftw_free(out);
    
    return w_out;
}

Above is the call from the Fast Fourier Transform, adapted to my program (cf. previous thread for the Complex class) and based on FFTW3 libraries.

Further in my program, I call this function several times.
One time in a function called fftMethod and two other times for frfftMethod.
If the call is straight forward
Code:
 y = fft(x);
and works fine for the fftMethod. It returns me this weird looking Malloc error for the frfftMethod which obviously comes from the fftw_free commands.
Of course when I try to remove those commands, I get a segmentation fault error.

So if you guys have any idea of what might be wrong, I'm pretty stuck here.

D.


PS: I have a reasonable doubt concerning my declaration of int N in my fft function, but didn't seem to be a problem before.
 

datscha

macrumors newbie
Original poster
Jan 31, 2012
5
0
Shame on me.

PS: I have a reasonable doubt concerning my declaration of int N in my fft function, but didn't seem to be a problem before.

Looks like it didn't like this kind of definition.

My bad for the useless post!

Newbie inside, bear with me ;)
 

Sander

macrumors 6502a
Apr 24, 2008
519
66
So how did you solve this? Did you decide to make your fft() function take a std::vector of Complex?

By the way, is there a reason you're not using the C++ std::complex data type?
 

gnasher729

Suspended
Nov 25, 2005
17,980
5,565
So how did you solve this? Did you decide to make your fft() function take a std::vector of Complex?

By the way, is there a reason you're not using the C++ std::complex data type?

Look at the line where N is calculated.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.