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 · bsxfun · complex · conj · double · erf · erfcinv · exp · expm1 · factorial · flintmax · gamma · gammaln · heaviside · hypot · idivide · imag · intmax · intmin · ldivide · log · log10 · log1p · log2 · minus · plus · pow2 · power · rdivide · real · realmax · realmin · realsqrt · rescale · sign · single · sqrt · swapbytes · times · uint32
Trigonometry
acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · cospi · deg2rad · pol2cart · rad2deg · sin · sind · sinh · sinpi · tan · tand · tanh
Reduction
all · any · bounds · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · maxk · mean · median · min · mink · movmax · movmean · movmedian · movmin · movprod · movstd · movsum · movvar · nnz · prod · rms · std · sum · trapz · var
Structure
bandwidth · isdiag · ishermitian · issymmetric · istril · istriu · symrcm
Signal
blackman · butter · buttord · cheb2ord · conv · conv2 · deconv · downsample · envelope · filter · filtfilt · fir1 · freqz · gauspuls · hamming · hann · hilbert · periodogram · pulstran · pwelch · rectpuls · resample · sawtooth · sinc · spectrogram · square · tripuls · unwrap · upsample · zplane
Optim
coneprog · fminbnd · fminunc · fsolve · fzero · integral · linprog · lsqcurvefit · lsqnonlin · optimset · quad · secondordercone
Ops
cross · ctranspose · dot · mldivide · mpower · mrdivide · mtimes · pagemtimes · pagetranspose · trace · transpose
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.