![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/776678/image.jpeg)
log2() only works with double types?
2 views (last 30 days)
Show older comments
atharva aalok
on 24 Oct 2021
Commented: atharva aalok
on 24 Oct 2021
log2() seems to only work with 'double' types. It throws error when argument is int64.
num = 10000;
d = floor(num / 7);
a = log2(d);
disp(a);
d = int64(num / 7);
b = log2(double(d));
disp(b);
b = log2(d);
disp(b);
0 Comments
Accepted Answer
Simon Chan
on 24 Oct 2021
Check MATLAB documentation and this fucntion log2 supports type single or double as the input argument type.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/776678/image.jpeg)
3 Comments
Steven Lord
on 24 Oct 2021
The output of the log2 function is the same type as the input. [This is a general pattern for many element-wise functions.] There are only a handful of int64 numbers whose base 2 log is representable as an int64 number. If it were defined for int64 we'd likely have a lot of people complaining about "bugs" in log2 when it was returning the correct answer just not the answer they expected.
log2Int64 = @(x) int64(log2(double(x)));
x = int64(10:20);
y = log2Int64(x)
check = x - 2.^y % Is this what you would expect?
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!