From b5d9021b39c31bff44f79fc4233480b341b6bdc5 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 5 Feb 2019 12:52:02 +0100
Subject: [PATCH] fix and unify bit parallelism factors algos

---
 alib2algo/src/stringology/query/BitParallelismFactors.h     | 4 ++--
 .../src/stringology/query/CompressedBitParallelismFactors.h | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/alib2algo/src/stringology/query/BitParallelismFactors.h b/alib2algo/src/stringology/query/BitParallelismFactors.h
index f2e2b84a0e..a58aeded56 100644
--- a/alib2algo/src/stringology/query/BitParallelismFactors.h
+++ b/alib2algo/src/stringology/query/BitParallelismFactors.h
@@ -50,14 +50,14 @@ ext::set < unsigned > BitParallelismFactors::query ( const indexes::stringology:
 	if ( symbolVectorIter == bitParallelIndex.getData ( ).end ( ) )
 		return { };
 
-	ext::vector < bool > indexVector = symbolVectorIter->second;
+	ext::vector < bool > indexVector = symbolVectorIter->second << 1;
 
 	for ( ++ symbolIter; symbolIter != string.getContent ( ).end ( ); ++ symbolIter ) {
 		symbolVectorIter = bitParallelIndex.getData ( ).find ( * symbolIter );
 		if ( symbolVectorIter == bitParallelIndex.getData ( ).end ( ) )
 			return { };
 
-		indexVector = ( indexVector << 1 ) & symbolVectorIter->second;
+		indexVector = ( indexVector & symbolVectorIter->second ) << 1;
 	}
 
 	ext::set < unsigned > res;
diff --git a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h
index 474ebe3a4a..e11f45ff92 100644
--- a/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h
+++ b/alib2algo/src/stringology/query/CompressedBitParallelismFactors.h
@@ -51,20 +51,20 @@ ext::set < unsigned > CompressedBitParallelismFactors::query ( const indexes::st
 	if ( symbolVectorIter == compressedBitParallelIndex.getData ( ).end ( ) )
 		return { };
 
-	common::SparseBoolVector indexVector = symbolVectorIter->second;
+	common::SparseBoolVector indexVector = symbolVectorIter->second << 1;
 
 	for ( ++ symbolIter; symbolIter != string.getContent ( ).end ( ); ++ symbolIter ) {
 		symbolVectorIter = compressedBitParallelIndex.getData ( ).find ( * symbolIter );
 		if ( symbolVectorIter == compressedBitParallelIndex.getData ( ).end ( ) )
 			return { };
 
-		indexVector = ( indexVector << 1 ) & symbolVectorIter->second;
+		indexVector = ( indexVector & symbolVectorIter->second ) << 1;
 	}
 
 	ext::set < unsigned > res;
 
 	for ( unsigned i : indexVector )
-		res.insert ( i - string.getContent ( ).size ( ) + 1 );
+		res.insert ( i - string.getContent ( ).size ( ) );
 
 	return res;
 }
-- 
GitLab