# Is there a function for nearest power of 2 in Mathematica like nextpow2 in MATLAB?

I am looking for something like nextpow2 in MATLAB like this:

P = nextpow2(A) returns the exponents for the smallest powers of two that satisfy $2^P \geq\left|A\right|$.

-
Ceiling[Log[2, #]] & –  acl Jul 28 '14 at 14:14
For integers there is IntegerLength[A, 2]. –  Daniel Lichtblau Jul 28 '14 at 20:12

nextpow2[a_] := Ceiling@Log[2, Abs@a];


The same thing in a different style:

f1 = Ceiling @* Log2 @* Abs;  (* v10 syntax *)


Or:

f2 = ⌈Log2 @ Abs @ #⌉ &;


A plot:

Plot[f2[x], {x, -10, 10}, Filling -> 0]


-
@Mr.Wizard, Thank you! I learned something from you. –  Tetsuo Ichii Jul 28 '14 at 14:30
@Mr.Wizard Do you know if the v10 syntax is documented anywhere? Searching for @* in the documentation turns up nothing. –  Rahul Jul 28 '14 at 18:00
@Rahul Yes, it is: Composition. See also RightComposition. (I suppose the search failed because both @ and * are simple wildcards.) –  Mr.Wizard Jul 28 '14 at 18:03
Re "v10 syntax": is it just the shortcut notation @* that was added in Mathematica 10*? Note that Composition dates to version 2.0. –  murray Jul 28 '14 at 18:43
@murray. Yes, it's just the infix notation that was added in V10 –  RunnyKine Jul 28 '14 at 19:51

You have a good answer already, but I'll mention the following since it may be useful in the future.

Many built-in functions are written in MATLAB and can be viewed, in this case edit nextpow2.m brings up the source for this function, which can be used as a starting point to implement in Mathematica.

-