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

NameTypeRequiredDefaultDescription
XAnyYesReal numeric/logical input.

Returns

NameTypeDescription
pNumericArrayExponent p where 2^p >= abs(X).

Errors

IdentifierWhenMessage
RunMat:nextpow2:InvalidInputInput is not convertible to a supported real numeric tensor.nextpow2: invalid input
RunMat:nextpow2:InternalInternal gather/provider/tensor construction failed.nextpow2: internal error

How nextpow2 works

  • nextpow2 accepts 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.
  • Inf remains infinite and NaN remains NaN.
  • 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.

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

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · eig · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · null · pinv · rank · rcond · rref

Symbolic

digits · int · limit · sym · syms · vpa

Fft

fft · fft2 · fftshift · ifft · ifft2 · ifftshift

Interpolation

interp1 · interp2 · pchip · ppval · spline

Ode

ode15s · ode23 · ode45

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.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.