lookup_util.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:3k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: lookup_util.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:04:11  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: lookup_util.h,v 1000.1 2004/06/01 18:04:11 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's offical duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  */
  34. /** @file lookup_util.h
  35.  * @todo FIXME: need description
  36.  */
  37. #include <algo/blast/core/blast_def.h>
  38. #ifndef UTIL__H
  39. #define UTIL__H
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. /** Integer exponentiation using right to left binary algorithm.
  44.  *  See knuth TAOCP vol. 2, section 4.6.3.
  45.  *
  46.  * @param x x
  47.  * @param n n
  48.  * @return x to the n-th power
  49.  */
  50. Int4 iexp(Int4 x, Int4 n);
  51. /**
  52.  * Integer base two logarithm.
  53.  *
  54.  * @param x x
  55.  * @return lg(x)
  56.  */
  57. Int4 ilog2(Int4 x);
  58. /** Make a bit mask with the low-order x bits set
  59.  *
  60.  * @param x x
  61.  * @return the mask
  62.  */
  63. Int4 makemask(Int4 x);
  64. /**
  65.  * generates a de Bruijn sequence containing all substrings
  66.  * of length n over an alphabet of size k.
  67.  * if alphabet is not NULL, use it as a translation table
  68.  * for the output.
  69.  * expects that "output" has already been allocated and is at
  70.  * least k^n in size.
  71.  *
  72.  * @param n the number of letters in each word
  73.  * @param k the size of the alphabet
  74.  * @param output the output sequence
  75.  * @param alphabet optional translation alphabet
  76.  */
  77. void debruijn(Int4 n, Int4 k, Uint1* output, Uint1* alphabet);
  78. #ifdef __cplusplus
  79. }
  80. #endif
  81. #endif /* UTIL__H */