Blender V4.3
BLI_math_bits_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "BLI_math_bits.h"
6#include "testing/testing.h"
7#include <iostream>
8
9TEST(math_bits, BitscanReverseClearUint)
10{
11 uint a = 1234;
13 EXPECT_EQ(a, 210);
15 EXPECT_EQ(a, 82);
17 EXPECT_EQ(a, 18);
19 EXPECT_EQ(a, 2);
21 EXPECT_EQ(a, 0);
22
23 a = 3563987529;
25 EXPECT_EQ(a, 1416503881);
27 EXPECT_EQ(a, 342762057);
29 EXPECT_EQ(a, 74326601);
31 EXPECT_EQ(a, 7217737);
33 EXPECT_EQ(a, 3023433);
35 EXPECT_EQ(a, 926281);
37 EXPECT_EQ(a, 401993);
39 EXPECT_EQ(a, 139849);
41 EXPECT_EQ(a, 8777);
43 EXPECT_EQ(a, 585);
45 EXPECT_EQ(a, 73);
47 EXPECT_EQ(a, 9);
49 EXPECT_EQ(a, 1);
51 EXPECT_EQ(a, 0);
52}
53
54TEST(math_bits, PopCount)
55{
56 {
59 }
60 {
61 const int value = (1 << 0) | (1 << 5) | (1 << 7);
62 const int count_32 = count_bits_i(value);
63 const int count_64 = count_bits_uint64(value);
64 EXPECT_EQ(count_32, 3);
65 EXPECT_EQ(count_64, 3);
66 }
67 {
68 const uint64_t value = (uint64_t(1) << 0) | (uint64_t(1) << 50);
69 const int count = count_bits_uint64(value);
70 EXPECT_EQ(count, 2);
71 }
72 {
73 const int value = -1;
74 const int count = count_bits_i(value);
75 EXPECT_EQ(count, 32);
76 }
77 {
78 const uint64_t value = -1;
79 const int count = count_bits_uint64(value);
80 EXPECT_EQ(count, 64);
81 }
82}
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
MINLINE int count_bits_uint64(uint64_t a)
MINLINE int count_bits_i(unsigned int n)
MINLINE unsigned int bitscan_reverse_clear_uint(unsigned int *a)
TEST(math_bits, BitscanReverseClearUint)
unsigned int uint
int count
unsigned __int64 uint64_t
Definition stdint.h:90