bugfix and lots of rework and some enhancements

* fix compilation when deactivating SIMD with cmake options
* cmake: replaced 'USE_AVX' option by 'USE_DOUBLE' (and 'USE_FLOAT')
* cmake: option 'USE_SCALVEC',
  fixed big precision errors in test_pffastconv
* cmake: renamed options to be sorted by 'group' in ccmake
* added API function pffft_simd_arch()
* pffft_bench for float and double
  double uses fftw3 for comparison
* moved all simd macro files into subfolder
* fix buffer overrun of acCsvFilename[] in bench_pffft.c

Signed-off-by: hayati ayguen <h_ayguen@web.de>
diff --git a/test_pffft.cpp b/test_pffft.cpp
index f245a1f..eac53ca 100644
--- a/test_pffft.cpp
+++ b/test_pffft.cpp
@@ -256,11 +256,29 @@
 test(int N, bool useComplex, bool useOrdered)
 {
   if (useComplex) {
-    return Ttest< std::complex<float> >(N, useOrdered) &&
-           Ttest< std::complex<double> >(N, useOrdered);
+    return
+#ifdef PFFFT_ENABLE_FLOAT
+           Ttest< std::complex<float> >(N, useOrdered)
+#endif
+#if defined(PFFFT_ENABLE_FLOAT) && defined(PFFFT_ENABLE_DOUBLE)
+        &&
+#endif
+#ifdef PFFFT_ENABLE_DOUBLE
+           Ttest< std::complex<double> >(N, useOrdered)
+#endif
+           ;
   } else {
-    return Ttest<float>(N, useOrdered) &&
-           Ttest<double>(N, useOrdered);
+    return
+#ifdef PFFFT_ENABLE_FLOAT
+           Ttest<float>(N, useOrdered)
+#endif
+#if defined(PFFFT_ENABLE_FLOAT) && defined(PFFFT_ENABLE_DOUBLE)
+        &&
+#endif
+#ifdef PFFFT_ENABLE_DOUBLE
+           Ttest<double>(N, useOrdered)
+#endif
+           ;
   }
 }
 
@@ -276,7 +294,11 @@
   resIsPw2 = 0;
   for (k = 0; k < (sizeof(inp_power_of_two) / sizeof(inp_power_of_two[0]));
        ++k) {
-    N = pffft::nextPowerOfTwo(inp_power_of_two[k]);
+#ifdef PFFFT_ENABLE_FLOAT
+    N = pffft::Fft<float>::nextPowerOfTwo(inp_power_of_two[k]);
+#else
+    N = pffft::Fft<double>::nextPowerOfTwo(inp_power_of_two[k]);
+#endif
     if (N != ref_power_of_two[k]) {
       resNextPw2 = 1;
       printf("pffft_next_power_of_two(%d) does deliver %d, which is not "
@@ -286,7 +308,11 @@
              ref_power_of_two[k]);
     }
 
-    result = pffft::isPowerOfTwo(inp_power_of_two[k]);
+#ifdef PFFFT_ENABLE_FLOAT
+    result = pffft::Fft<float>::isPowerOfTwo(inp_power_of_two[k]);
+#else
+    result = pffft::Fft<double>::isPowerOfTwo(inp_power_of_two[k]);
+#endif
     if (inp_power_of_two[k] == ref_power_of_two[k]) {
       if (!result) {
         resIsPw2 = 1;
@@ -329,8 +355,17 @@
   }
 
   if (!resFFT)
-    printf("all pffft transform tests (FORWARD/BACKWARD, REAL/COMPLEX, float/double) "
-           "succeeded successfully.\n");
+    printf("all pffft transform tests (FORWARD/BACKWARD, REAL/COMPLEX, "
+#ifdef PFFFT_ENABLE_FLOAT
+           "float"
+#endif
+#if defined(PFFFT_ENABLE_FLOAT) && defined(PFFFT_ENABLE_DOUBLE)
+            "/"
+#endif
+#ifdef PFFFT_ENABLE_DOUBLE
+           "double"
+#endif
+           ") succeeded successfully.\n");
 
   resAll = resNextPw2 | resIsPw2 | resFFT;
   if (!resAll)