Ejemplo n.º 1
0
static void SerialFFTCalculation(complex<double> *signal,
	unsigned int first, unsigned int recursion_depth,
	unsigned int size, unsigned int start_size) {
	if(size == 1) {
		return;
	}

#pragma omp parallel sections if(recursion_depth <= 1)
	{
#pragma omp section
		{
			SerialFFTCalculation(signal, first,
				recursion_depth + 1, size / 2, start_size);
		}

#pragma omp section
		{
			SerialFFTCalculation(signal, first + (size / 2),
				recursion_depth + 1,size / 2, start_size);
		}
	}

	omp_set_dynamic(0);
#pragma omp parallel for schedule(static) if(recursion_depth == 0) num_threads(5)
	for (int k = first; k < first + size / 2; k++) {
		auto w = W(k, size);
		Butterfly(signal, w, k, size / 2);
	}
}
Ejemplo n.º 2
0
void testApp::setup(){
	ofBackground(255, 255, 255);
	Butterfly::addFile("Butterfly_001.svg");
	Butterfly::addFile("Butterfly_002.svg");
	Butterfly::addFile("Butterfly_003.svg");
	Butterfly::addFile("Butterfly_004.svg");
	for(int i = 0; i < 512; i++) {
		butterflies.push_back(Butterfly());
	}
}