

CHANGES SINCE 1.4.0

    o C-function BioStringToCharacter() prototype was declaring wrong type
      unsigned long for arguments 'start' and 'end'.
      This function is always called with real 'start' and 'end' arguments
      being int. Replacing unsigned long by int in the prototype fixed the
      issue of having the show() method for BioString objects display an
      empty string when the starting offset was negative.

    o Fixed the following problems in the ShiftOr_matchInternal() C-function:

      - The reason why fuzzy searching was almost always giving wrong results was
        because the core formula:
        
          ShiftOrWord_t tmp = M_k[0];
          M_k[0] = (tmp << 1) | U[xptr[k]];
          M_k[1] = ((M_k[1] << 1) | U[xptr[k]]) & tmp & (tmp << 1) & (M_k[0] << 1);
          
        was wrong. The correct formula is:
        
          M_k[1] = ((M_k[1] << 1) | U[xptr[k]]) & (tmp << 1) & (M_k[0]);
          
        Note that using formula given in D. Gusfield's book (Algorithms on strings,
        trees, and sequences), p. 73, would result in doing:
        
          M_k[1] = ((M_k[1] << 1) | U[xptr[k]]) & (tmp) & (M_k[0]);
          
        which is wrong too.

      - The 'kerr' arg of ShiftOr_matchInternal() (nb of mismatches) is no
        longer required to be <= 3. Now it can be whatever positive int.

      - The "border problems" occuring with fuzzy searching are partially
        fixed. Now ShiftOr_matchInternal() should find ALL matches, even
        those that are out of bounds (starting before the first character
        of the subject or ending after its last character).
        But the show() method for BioString objects is still buggy when the
        offsets of the object are out of bounds (NOT fixed yet).

      - The bus-error that occured on Solaris 2.9 and Mac OS X with:
          > pattern <- DNAString("AAAA")
          > subject <- DNAString("AAAAC")
          > matchDNAPattern(pattern, subject, mis=2)
        should be fixed.
        
      - Internal change. The ShiftOrWord_t variables used all over
        the ShiftOr_matchInternal() are primarily used to store bitmaks
        where only P bits are relevant (P being the number of characters
        in the pattern). In 1.4.0, the first position in the pattern
        (the most left) was mapped to the most right bit (the weak bit)
        of the bitmask. This has been changed to something more intuitive:
        now it is the last position in the pattern (the most right) that is
        mapped to the most right bit of the bitmask.   

    o Added a test suite. Can be run by testBiostrings(). Also added file
      inst/Exfiles/bigrandomTGCA.txt containing a big random TGCA string
      (10 millions of chars) in order to run tests on it.
    
    o Added NEWS and TODO files.

