]> git.ipfire.org Git - thirdparty/man-pages.git/commitdiff
powerof2.3: New page documenting powerof2(3)
authorAlejandro Colomar <alx@kernel.org>
Sat, 31 Dec 2022 01:58:34 +0000 (02:58 +0100)
committerAlejandro Colomar <alx@kernel.org>
Sat, 31 Dec 2022 01:58:34 +0000 (02:58 +0100)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
man3/powerof2.3 [new file with mode: 0644]

diff --git a/man3/powerof2.3 b/man3/powerof2.3
new file mode 100644 (file)
index 0000000..04d58db
--- /dev/null
@@ -0,0 +1,46 @@
+.\" Copyright (C) 2022 Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH powerof2 3 (date) "Linux man-pages (unreleased)"
+.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
+This nonstandard macro is present in glibc and the BSDs.
+.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)