~ubuntu-branches/ubuntu/saucy/libquvi/saucy-proposed

« back to all changes in this revision

Viewing changes to share/lua/website/quvi/bit.lua

  • Committer: Bazaar Package Importer
  • Author(s): Alejandro Garrido Mota
  • Date: 2011-04-25 01:07:41 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110425010741-nalzd12y180qs082
Tags: 0.2.15-1
* New upstream release (Closes: #622253). 
* Update d/watch to sf.net
* Update homepage field to quvi.sourceforge.net (Closes: #615554) 
* d/rules: Add dh_auto_test before NO_INTERNET=1 in override_dh_auto_test 
* Update Standards-Version field to 3.9.2 
* Add symbol (d/libquvi0.symbols) file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
-- quvi
 
3
-- Copyright (C) 2010  Toni Gundogdu <legatvs@gmail.com>
 
4
--
 
5
-- This file is part of quvi <http://quvi.sourceforge.net/>.
 
6
--
 
7
-- This library is free software; you can redistribute it and/or
 
8
-- modify it under the terms of the GNU Lesser General Public
 
9
-- License as published by the Free Software Foundation; either
 
10
-- version 2.1 of the License, or (at your option) any later version.
 
11
--
 
12
-- This library is distributed in the hope that it will be useful,
 
13
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
15
-- Lesser General Public License for more details.
 
16
--
 
17
-- You should have received a copy of the GNU Lesser General Public
 
18
-- License along with this library; if not, write to the Free Software
 
19
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
20
-- 02110-1301  USA
 
21
--
 
22
 
 
23
local M = {}
 
24
 
 
25
function M.bit_or (x, y) -- http://is.gd/iVg4x
 
26
    local p = 1
 
27
    while p < x do p = p + p end
 
28
    while p < y do p = p + p end
 
29
    local z = 0
 
30
    repeat
 
31
        if p <= x or p <= y then
 
32
            z = z + p
 
33
            if p <= x then x = x - p end
 
34
            if p <= y then y = y - p end
 
35
        end
 
36
        p = p * 0.5
 
37
    until p < 1
 
38
    return z
 
39
end
 
40
 
 
41
-- 1-based indexing
 
42
function M.bit (p) return 2 ^ (p - 1) end
 
43
 
 
44
-- e.g. "if has_bit (foo, bit (n)) then ..."
 
45
function M.has_bit(x, p) return x % (p + p) >= p end
 
46
 
 
47
return M
 
48
 
 
49
-- vim: set ts=4 sw=4 tw=72 expandtab: