abc/src/bool/lucky/luckyFast16.c
// It rearranges InOut (swaps and flips through rearrangement of quoters)
// It updates Info at the end
It rearranges InOut (swaps and flips through rearrangement of quoters)
It updates Info at the end
It rearranges InOut ( swaps and flips through rearrangement of quoters ) It updates Info at the end
void arrangeQuoters_superFast_lessThen5(word* pInOut, int start, int iQ, int jQ, int kQ, int lQ, int iVar, int nWords, char * pCanonPerm, unsigned* pCanonPhase)
{
    int i, blockSize = 1<<iVar;
    for(i=start;i>=0;i--)
    {   
        assert( iQ*blockSize < 64 );
        assert( jQ*blockSize < 64 );
        assert( kQ*blockSize < 64 );
        assert( lQ*blockSize < 64 );
        assert( 3*blockSize < 64 );
        pInOut[i] = (pInOut[i] & SFmask[iVar][iQ])<<(iQ*blockSize) |
            (((pInOut[i] & SFmask[iVar][jQ])<<(jQ*blockSize))>>blockSize) |
            (((pInOut[i] & SFmask[iVar][kQ])<<(kQ*blockSize))>>2*blockSize) |
            (((pInOut[i] & SFmask[iVar][lQ])<<(lQ*blockSize))>>3*blockSize);
    }
    updataInfo(iQ, jQ, iVar, pCanonPerm, pCanonPhase);
}
void arrangeQuoters_superFast_lessThen5 ( word * pInOut , int start , int iQ , int jQ , int kQ , int lQ , int iVar , int nWords , char * pCanonPerm , unsigned * pCanonPhase ) { int i , blockSize = 1 << iVar ; for ( i = start ; i >= 0 ; i -- ) { assert ( iQ * blockSize < 64 ) ; assert ( jQ * blockSize < 64 ) ; assert ( kQ * blockSize < 64 ) ; assert ( lQ * blockSize < 64 ) ; assert ( 3 * blockSize < 64 ) ; pInOut [ i ] = ( pInOut [ i ] & SFmask [ iVar ] [ iQ ] ) << ( iQ * blockSize ) | ( ( ( pInOut [ i ] & SFmask [ iVar ] [ jQ ] ) << ( jQ * blockSize ) ) >> blockSize ) | ( ( ( pInOut [ i ] & SFmask [ iVar ] [ kQ ] ) << ( kQ * blockSize ) ) >> 2 * blockSize ) | ( ( ( pInOut [ i ] & SFmask [ iVar ] [ lQ ] ) << ( lQ * blockSize ) ) >> 3 * blockSize ) ; } updataInfo ( iQ , jQ , iVar , pCanonPerm , pCanonPhase ) ; }
It rearranges InOut (swaps and flips through rearrangement of quoters)
It updates Info at the end
It rearranges InOut ( swaps and flips through rearrangement of quoters ) It updates Info at the end
//     printf("in arrangeQuoters_superFast_lessThen5\n"); //     printf("start = %d, iQ = %d,jQ = %d,kQ = %d,lQ = %d, iVar = %d, nWords = %d\n", start, iQ, jQ, kQ , lQ, iVar, nWords); //     printf("out arrangeQuoters_superFast_lessThen5\n");