Livt packages

Eccelerators.BitTwiddling

Version 0.1.1

Readable 32-bit bit manipulation, counting, scanning, permutation, and arithmetic utilities for Livt.

Published files (26)

tests/counting/BitCountingTest.lvt

namespace Eccelerators.BitTwiddling.Tests.Counting

using Eccelerators.BitTwiddling.Counting

@Test
component BitCountingTest
{
    @Test
    fn TestPopulationCounts()
    {
        assert BitCounting.PopCountIterative(0) == 0
        assert BitCounting.PopCountIterative(0xFFFFFFFF) == 32
        assert BitCounting.PopCountParallel(0) == 0
        assert BitCounting.PopCountParallel(0xFFFFFFFF) == 32
        assert BitCounting.PopCountParallel(0xAAAAAAAA) == 16
        assert BitCounting.PopCountParallel(0x80000001) == 2
        assert BitCounting.PopCount(0x12345678) == 13
        assert BitCounting.PopCountIterative(0x12345678) == BitCounting.PopCountParallel(0x12345678)
    }

    @Test
    fn TestParity()
    {
        assert BitCounting.HasOddParity(0) == false
        assert BitCounting.HasOddParity(1) == true
        assert BitCounting.HasOddParity(3) == false
        assert BitCounting.HasOddParity(0x80000001) == false
        assert BitCounting.HasOddParity(0x80000003) == true
    }
}