summaryrefslogtreecommitdiffstats
path: root/man3/powerof2.3
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:40:15 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:40:15 +0000
commit399644e47874bff147afb19c89228901ac39340e (patch)
tree1c4c0b733f4c16b5783b41bebb19194a9ef62ad1 /man3/powerof2.3
parentInitial commit. (diff)
downloadmanpages-399644e47874bff147afb19c89228901ac39340e.tar.xz
manpages-399644e47874bff147afb19c89228901ac39340e.zip
Adding upstream version 6.05.01.upstream/6.05.01
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man3/powerof2.3')
-rw-r--r--man3/powerof2.346
1 files changed, 46 insertions, 0 deletions
diff --git a/man3/powerof2.3 b/man3/powerof2.3
new file mode 100644
index 0000000..fae024f
--- /dev/null
+++ b/man3/powerof2.3
@@ -0,0 +1,46 @@
+.\" Copyright (C) 2022 Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH powerof2 3 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+powerof2 \- test if a value is a power of 2
+.SH LIBRARY
+Standard C library
+.RI ( libc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/param.h>
+.PP
+.BI "int powerof2(" x );
+.fi
+.SH DESCRIPTION
+This macro returns true if
+.I x
+is a power of 2,
+and false otherwise.
+.PP
+.B 0
+is considered a power of 2.
+This can make sense considering wrapping of unsigned integers,
+and has interesting properties.
+.SH RETURN VALUE
+True or false,
+if
+.I x
+is a power of 2 or not,
+respectively.
+.SH STANDARDS
+BSD.
+.SH CAVEATS
+The arguments may be evaluated more than once.
+.PP
+Because this macro is implemented using bitwise operations,
+some negative values can invoke undefined behavior.
+For example,
+the following invokes undefined behavior:
+.IR "powerof2(INT_MIN);".
+Call it only with unsigned types to be safe.
+.SH SEE ALSO
+.BR stdc_bit_ceil (3),
+.BR stdc_bit_floor (3)