# HG changeset patch # User Rik # Date 1318270354 25200 # Node ID 1f075333d9e8fbb020d9dff678b8c82bf2491d93 # Parent 9a83ec29aec9997ab84e255ffbf91fcf9402f9bf dec2base.m: Code tweaks for slightly better performance. * dec2base.m: Code tweaks for slightly better performance. Use Octave syntax guidelines on spacing and 'endfor' keyword. diff --git a/scripts/strings/dec2base.m b/scripts/strings/dec2base.m --- a/scripts/strings/dec2base.m +++ b/scripts/strings/dec2base.m @@ -89,7 +89,7 @@ ## determine number of digits required to handle all numbers, can overflow ## by 1 digit - max_len = round (log (max (max (d), 1)) ./ log (base)) + 1; + max_len = round (log (max (max (d(:)), 1)) / log (base)) + 1; if (nargin == 3) max_len = max (max_len, len); @@ -103,7 +103,7 @@ endfor ## convert digits to symbols - retval = reshape (symbols (digits+1), size (digits)); + retval = reshape (symbols(digits+1), size (digits)); ## Check if the first element is the zero symbol. It seems possible ## that LEN is provided, and is less than the computed MAX_LEN and @@ -111,7 +111,7 @@ ## have a leading zero to remove. But if LEN >= MAX_LEN, we should ## not remove any leading zeros. if ((nargin == 2 || (nargin == 3 && max_len > len)) - && all (retval(:,1) == symbols(1)) && length (retval) != 1) + && length (retval) != 1 && ! any (retval(:,1) != symbols(1))) retval = retval(:,2:end); endif @@ -125,9 +125,9 @@ %! pp = dec2base (b^n+1, b); %! assert (dec2base(b^n, b), ['1',s0,'0']); %! assert (dec2base(b^n+1, b), ['1',s0,'1']); -%! end +%! endfor %! s0 = [s0,'0']; -%! end +%! endfor %!test %! digits='0123456789ABCDEF'; @@ -136,18 +136,19 @@ %! pm = dec2base(b^n-1, b); %! assert (length (pm), n); %! assert (all (pm==digits(b))); -%! end -%! end +%! endfor +%! endfor %!test %! for b = 2:16 %! assert (dec2base (0, b), '0'); -%! end +%! endfor %!assert(dec2base (0, 2, 4), "0000"); %!assert(dec2base (2^51-1, 2), ... %! '111111111111111111111111111111111111111111111111111'); %!assert(dec2base(uint64(2)^63-1, 16), '7FFFFFFFFFFFFFFF'); +%!assert(dec2base([1, 2; 3, 4], 2, 3), ["001"; "011"; "010"; "100"]); %!assert(dec2base({1, 2; 3, 4}, 2, 3), ["001"; "011"; "010"; "100"]); %%Test input validation @@ -158,8 +159,8 @@ %!error dec2base (2i) %!error dec2base (-1) %!error dec2base (1.1) -%!error dec2base (1,"ABA") -%!error dec2base (1,"A B") +%!error dec2base (1, "ABA") +%!error dec2base (1, "A B") %!error dec2base (1, ones(2)) %!error dec2base (1, 1) %!error dec2base (1, 37)