@Dennis More or less intentional, yes. Z& just calls Octave's/Matlab's bitand, which doesn't work for negative values. I thought of implementing it myself, but I don't really understand how bit-wise logical operations work for negative numbers...
Not necessarily. Python has bitwise operators for arbitrary integers. Every non-negative integer has an infinite tail of zeroes, while every negative integer has an infinite tail of ones.
@beaker For double the limit is motivated by the fact that 2^53 is the maximum consecutive integer that is representable exactly.
For integer data types the limit would be different. But there are too many cases, and there's the issue of what to do when one input is say double and the other is uint64. Besides, numeric data types other than double are seldom used in MATL.
For all these reasons, and most of all for lazyness :-P I decided to go with double only, at least for now.
of course, assigning uint64 values higher than that is a nightmare
>> a = typecast(int64(-1),'uint64')
a = 18446744073709551615
>> dec2bin(bitand(a,2^63))
ans = 1000000000000000000000000000000000000000000000000000000000000000
* D has been extended with "string representation" functionality, like mat2str but also working for cell arrays (using stackoverflow.com/a/38553646/2586922). Unlike mat2str in Matlab, this produces '', [] or {} for empty arrays, depending on its type, and regardless of dimensions
* X> (max), X< (min), Y> (cummax) and Yz (cummin) now return char output for char input. Flags 'omitnan' and 'includenan' are not supported
* New predefined contents for clipboard L (2j*pi and values for 4D permute)
* Defined & as FFT# for Yk
* In YO with 2 inputs, if the second input is numeric it is interpreted as a format specifier as in datestr
* Bit-wise operations now allow negative values. Values should be of type double and in the range from -2^52 to 2^52-1
* Defined & for Z$ (read file)
Thanks to Suever and Dennis for sugggesting some of the above improvements