nextpow2 — Return next-power-of-two exponents in MATLAB and RunMat.
nextpow2(X) returns exponent values p such that 2^p is the next power of two greater than or equal to abs(X). Element-wise mapping and zero handling follow MATLAB semantics.
Syntax
p = nextpow2(X)Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
X | Any | Yes | — | Real numeric/logical input. |
Returns
| Name | Type | Description |
|---|---|---|
p | NumericArray | Exponent p where 2^p >= abs(X). |
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:nextpow2:InvalidInput | Input is not convertible to a supported real numeric tensor. | nextpow2: invalid input |
RunMat:nextpow2:Internal | Internal gather/provider/tensor construction failed. | nextpow2: internal error |
How nextpow2 works
nextpow2accepts real numeric scalars and tensors.- The transform is applied elementwise for array inputs.
- Zero maps to
0. - Negative values use
abs(X)before computing the exponent. Infremains infinite andNaNremainsNaN.- GPU tensors use a unary provider hook when available and otherwise gather to the host.
- The output preserves the input's scalar/tensor shape.
Examples
Compute an FFT-friendly zero-padding length
x = rand(1000, 1);
N = 2^nextpow2(length(x))Apply nextpow2 elementwise to an array
p = nextpow2([0 1 3 9])Expected output:
p = [0 0 2 4]Using nextpow2 with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how nextpow2 changes the result.
Run a small nextpow2 example, explain the result, then change one input and compare the output.
FAQ
Why does nextpow2 return an exponent instead of the actual power of two?⌄
That matches MATLAB semantics. To get the actual power of two, use 2^nextpow2(x) for a scalar or 2.^nextpow2(X) elementwise for arrays.
How is nextpow2 used in FFT workflows?⌄
A common pattern is N = 2^nextpow2(length(x)), which computes a power-of-two transform length suitable for zero padding before an FFT.
Does nextpow2 preserve array shape?⌄
Yes. The transform is elementwise and the output has the same scalar/tensor shape as the input.
Related Math functions
Elementwise
abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · heaviside · hypot · imag · ldivide · log · log10 · log1p · log2 · minus · plus · pow2 · power · rdivide · real · sign · single · sqrt · times
Trigonometry
acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · deg2rad · rad2deg · sin · sind · sinh · tan · tand · tanh
Reduction
all · any · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · mean · median · min · nnz · prod · std · sum · trapz · var
Structure
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.