Blender
V4.3
source
blender
blenlib
tests
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
9
TEST
(math_bits, BitscanReverseClearUint)
10
{
11
uint
a = 1234;
12
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 21);
13
EXPECT_EQ
(a, 210);
14
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 24);
15
EXPECT_EQ
(a, 82);
16
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 25);
17
EXPECT_EQ
(a, 18);
18
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 27);
19
EXPECT_EQ
(a, 2);
20
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 30);
21
EXPECT_EQ
(a, 0);
22
23
a = 3563987529;
24
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 0);
25
EXPECT_EQ
(a, 1416503881);
26
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 1);
27
EXPECT_EQ
(a, 342762057);
28
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 3);
29
EXPECT_EQ
(a, 74326601);
30
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 5);
31
EXPECT_EQ
(a, 7217737);
32
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 9);
33
EXPECT_EQ
(a, 3023433);
34
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 10);
35
EXPECT_EQ
(a, 926281);
36
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 12);
37
EXPECT_EQ
(a, 401993);
38
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 13);
39
EXPECT_EQ
(a, 139849);
40
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 14);
41
EXPECT_EQ
(a, 8777);
42
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 18);
43
EXPECT_EQ
(a, 585);
44
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 22);
45
EXPECT_EQ
(a, 73);
46
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 25);
47
EXPECT_EQ
(a, 9);
48
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 28);
49
EXPECT_EQ
(a, 1);
50
EXPECT_EQ
(
bitscan_reverse_clear_uint
(&a), 31);
51
EXPECT_EQ
(a, 0);
52
}
53
54
TEST
(math_bits, PopCount)
55
{
56
{
57
EXPECT_EQ
(
count_bits_i
(0), 0);
58
EXPECT_EQ
(
count_bits_uint64
(0), 0);
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
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
BLI_math_bits.h
count_bits_uint64
MINLINE int count_bits_uint64(uint64_t a)
Definition
math_bits_inline.c:125
count_bits_i
MINLINE int count_bits_i(unsigned int n)
Definition
math_bits_inline.c:118
bitscan_reverse_clear_uint
MINLINE unsigned int bitscan_reverse_clear_uint(unsigned int *a)
Definition
math_bits_inline.c:88
TEST
TEST(math_bits, BitscanReverseClearUint)
Definition
BLI_math_bits_test.cc:9
uint
unsigned int uint
Definition
BLI_sys_types.h:68
count
int count
Definition
interface_widgets.cc:1056
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:90
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0