diff query.cpp @ 427:adaa6a688a04 api-inversion

Move sequence_foo() functions out of audioDB:: namespace... ... and into the internals header, mostly to get them out of the way. That means they have to be inline, which is probably suboptimal but will do for now.
author mas01cr
date Wed, 24 Dec 2008 10:55:24 +0000
parents 4a22a0bdf9a9
children 2d14d21f826b
line wrap: on
line diff
--- a/query.cpp	Wed Dec 24 10:55:20 2008 +0000
+++ b/query.cpp	Wed Dec 24 10:55:24 2008 +0000
@@ -145,55 +145,6 @@
   return O2_ERR_KEYNOTFOUND;
 }
 
-// This is a common pattern in sequence queries: what we are doing is
-// taking a window of length seqlen over a buffer of length length,
-// and placing the sum of the elements in that window in the first
-// element of the window: thus replacing all but the last seqlen
-// elements in the buffer with the corresponding windowed sum.
-void audioDB::sequence_sum(double *buffer, int length, int seqlen) {
-  double tmp1, tmp2, *ps;
-  int j, w;
-
-  tmp1 = *buffer;
-  j = 1;
-  w = seqlen - 1;
-  while(w--) {
-    *buffer += buffer[j++];
-  }
-  ps = buffer + 1;
-  w = length - seqlen; // +1 - 1
-  while(w--) {
-    tmp2 = *ps;
-    if(isfinite(tmp1)) {
-      *ps = *(ps - 1) - tmp1 + *(ps + seqlen - 1);
-    } else {
-      for(int i = 1; i < seqlen; i++) {
-        *ps += *(ps + i);
-      }
-    }
-    tmp1 = tmp2;
-    ps++;
-  }
-}
-
-// In contrast to sequence_sum() above, sequence_sqrt() and
-// sequence_average() below are simple mappers across the sequence.
-void audioDB::sequence_sqrt(double *buffer, int length, int seqlen) {
-  int w = length - seqlen + 1;
-  while(w--) {
-    *buffer = sqrt(*buffer);
-    buffer++;
-  }
-}
-
-void audioDB::sequence_average(double *buffer, int length, int seqlen) {
-  int w = length - seqlen + 1;
-  while(w--) {
-    *buffer /= seqlen;
-    buffer++;
-  }
-}
-
 void audioDB::initialize_arrays(int track, unsigned int numVectors, double *query, double *data_buffer, double **D, double **DD) {
   unsigned int j, k, l, w;
   double *dp, *qp, *sp;
@@ -340,8 +291,8 @@
   *qnp = new double[*nvp];
   audiodb_l2norm_buffer(*qp, dbH->dim, *nvp, *qnp);
 
-  sequence_sum(*qnp, *nvp, sequenceLength);
-  sequence_sqrt(*qnp, *nvp, sequenceLength);
+  audiodb_sequence_sum(*qnp, *nvp, sequenceLength);
+  audiodb_sequence_sqrt(*qnp, *nvp, sequenceLength);
 
   if (usingPower) {
     *qpp = new double[*nvp];
@@ -356,8 +307,8 @@
       error("short read", powerFileName);
     }
 
-    sequence_sum(*qpp, *nvp, sequenceLength);
-    sequence_average(*qpp, *nvp, sequenceLength);
+    audiodb_sequence_sum(*qpp, *nvp, sequenceLength);
+    audiodb_sequence_average(*qpp, *nvp, sequenceLength);
   }
 
   if (usingTimes) {
@@ -454,15 +405,15 @@
     // Copy L2 norm partial-sum coefficients
     assert(*qnp = new double[*nvp]);
     memcpy(*qnp, l2normTable+trackIndexOffset, *nvp*sizeof(double));
-    sequence_sum(*qnp, *nvp, sequenceLength);
-    sequence_sqrt(*qnp, *nvp, sequenceLength);
+    audiodb_sequence_sum(*qnp, *nvp, sequenceLength);
+    audiodb_sequence_sqrt(*qnp, *nvp, sequenceLength);
     
     if( usingPower ){
       // Copy Power partial-sum coefficients
       assert(*qpp = new double[*nvp]);
       memcpy(*qpp, powerTable+trackIndexOffset, *nvp*sizeof(double));
-      sequence_sum(*qpp, *nvp, sequenceLength);
-      sequence_average(*qpp, *nvp, sequenceLength);
+      audiodb_sequence_sum(*qpp, *nvp, sequenceLength);
+      audiodb_sequence_average(*qpp, *nvp, sequenceLength);
     }
     
     if (usingTimes) {
@@ -527,12 +478,12 @@
 
   for(unsigned int i = 0; i < dbH->numFiles; i++){
     if(trackTable[i] >= sequenceLength) {
-      sequence_sum(snpp, trackTable[i], sequenceLength);
-      sequence_sqrt(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sum(snpp, trackTable[i], sequenceLength);
+      audiodb_sequence_sqrt(snpp, trackTable[i], sequenceLength);
 
       if (usingPower) {
-	sequence_sum(sppp, trackTable[i], sequenceLength);
-        sequence_average(sppp, trackTable[i], sequenceLength);
+	audiodb_sequence_sum(sppp, trackTable[i], sequenceLength);
+        audiodb_sequence_average(sppp, trackTable[i], sequenceLength);
       }
     }
     snpp += trackTable[i];