Add OpenMP parallelism
[ctsim.git] / libctsim / filter.cpp
index 397f8a204120926ed04516653b5e1b2ca1d0f654..6382b5609497d5bc5b37e9e08c4ab3a049e54561 100644 (file)
@@ -198,10 +198,14 @@ SignalFilter::~SignalFilter (void)
 void
 SignalFilter::createFrequencyFilter (double* adFilter) const
 {
-  double x;
-  int i;
-  for (x = m_dFilterMin, i = 0; i < m_nFilterPoints; x += m_dFilterInc, i++)
+  double xstart = m_dFilterMin;
+#if HAVE_OPENMP
+  #pragma omp parallel for
+#endif
+  for (int i = 0; i < m_nFilterPoints; i++) {
+    double x = xstart + (i * m_dFilterInc);
     adFilter[i] = frequencyResponse (x);
+  }
 }
 
 
@@ -218,8 +222,12 @@ SignalFilter::createSpatialFilter (double* adFilter) const
     for (int i = 1; i <= sidelen; i++ )
       m_adFilter [center + i] = m_adFilter [center - i] = c / (4 * (i * i) - 1);
   } else {
-    double x = m_dFilterMin;
-    for (int i = 0; i < m_nFilterPoints; i++, x += m_dFilterInc) {
+    double xstart = m_dFilterMin;
+#if HAVE_OPENMP
+    #pragma omp parallel for
+#endif
+    for (int i = 0; i < m_nFilterPoints; i++) {
+      double x = xstart + (i * m_dFilterInc);
       if (haveAnalyticSpatial(m_idFilter))
         m_adFilter[i] = spatialResponseAnalytic (x);
       else