LME Release Notes
LME 5.0
New features
- anonymous functions with captured variables and optional argument to inline
functions for constant parameters
- new _pragma directive, with _pragma line
which changes the current line number (useful in code translated from
another source file)
- new function hypot
- support for styled text with fd=4
- styled text for help
- info b displays u after each untrusted
function (functions which cannot be executed in the sandbox) and
L=info('b') return the trusted flag for each function
Bug fixes
- in some uncommon cases, index expressions in assignments with multiple
output arguments where the indexed array wasn't a variable weren't interpreted
correctly (e.g. (a,b)=size((1:10)(2:6)) threw an error) ; fixed
LME 4.7.1
Bug fixes
- element deletion along one of multiple dimensions with logical
selection, such as V(:,[false,true,false],:)=[], might
corrupt variables; fixed
- fft whose argument length was a multiple of a
prime number larger or equal to 31 was wrong; fixed
LME 4.7
New features
- in command syntax, arguments can be enclosed in single quotes; then
spaces and escape sequences beginning with a backslash are interpreted
like in normal quoted strings
- new functions inmem, goldenratio
- new functions meshgrid and ndgrid (removed
from library stdlib)
- support for complex matrices in built-in versions of null,
orth and pinv
- support for nonsymmetric and complex matrices in built-in version of
eig
Minor changes
- (U,S,V)=svd(M,false) removes not only m-n last
columns of U if m>n, but also n-m last columns
of V if m<n (to have the same behavior as before,
write svd(M,size(M,1)<size(M,2)))
- clc with an optional file descriptor
- format '+' displays negative numbers as -
and pure imaginary nonzero numbers as I
Bug fixes
- when the last element of varargout was an empty array, it was
ignored; fixed
- sort and unique with complex matrices produced
garbage; fixed
- support for single type in sort
- support for single type in operator :
- assignments with a colon in the indices and incompatible dimensions of
the right-hand side expression, such as v=[]; v(:,1)=[1,2], could
cause a crash; fixed
- built-in version of orth didn't always produce
the correct result; fixed
- in rare cases, built-in schur, and functions which depend on
it (lyap, dlyap, care, and dare),
didn't converge (e.g. schur([0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0])); fixed
- d1~=d2, where d1 and/or d2 was complex,
wasn't always correct; fixed
- on platforms using Unicode, disp didn't display correctly strings
with characters code >127 in list elements or structure fields;
fixed
- assignment v(...)=[], where v was undefined and
indices contained at least one colon, corrupted variable data and could lead to
a crash; fixed
- fprintf and sprintf, with format %d,
%i, %o or %x, displayed finite numbers
instead of inf, -inf or nan; fixed
- literal strings beginning with characters between 0 and 127 followed by
characters between 128 and 255 were corrupted; fixed
LME 4.6
New features
- new functions intmin and intmax
- new function num2cell
- new function orderfields
- unique with two or three output arguments
- new functions for sets: union, intersect,
setdiff, setxor, ismember
- fft and ifft use a fast algorithm for any
nonprime size, not only powers of 2
- fft2 and ifft2 are native now
- new functions fftn and ifftn
- moment, var, std, skewness
and kurtosis are native now
- new function interpn
- new functions tsearchn, tsearch,
griddatan, griddata
- new functions cross (removed from library stdlib)
and dot
- new native functions for quaternions (library quaternion.lml
is now mostly obsolete, though linear algebra on quaternions such as LU
factoring have been left out)
- new function strtok
Minor changes
- sinc(x) is defined as sin(pi*x)/(pi*x)
instead of sin(x)/x
- sum, prod and mean now
return an empty array for empty inputs when the dim parameter
is specified
- scalar operators with a scalar operand are faster
- findstr(s1,s2) with an empty s2 returns an empty array
instead of 1:length(s1)+1
- integer and single numbers can be used as indices in array subscripts
- format %i in fscanf and sscanf accept
binary numbers prefixed by 0b or 0B
- in ode23 and ode45, the time step is now reset
when an event occurs to avoid an unlimited growing when the ode is integrated
without error
- operators / and \ throw error "Non-square matrix"
instead of "Incompatible size" when the left or right operand is a
non-square matrix, respectively
Bug fixes
- permute and ipermute converted single
arguments to double; fixed
- isempty with an argument of type single always gave false; fixed
- fft with real argument along second dimension crashed sometimes;
fixed
- ind2sub with scalar size argument for square matrices didn't work
as documented; fixed
- class gave 'binary' instead of the actual name
of built-in objects such as longint; fixed
- List elements were displayed as bin instead of the actual name
of built-in objects such as longint; fixed
- V(:)=expr didn't always set all elements of V; fixed
- in error messages, the symbol wasn't always correct; fixed
- in ode23 and ode45, events were missed if
the OnEvent function provoked a change of sign of the value returned
by the Events function; fixed
- inline without input argument produced undefined results instead
of a clean error; fixed
- in ode23 and ode45, events are disabled during
the integration step following an event, to prevent shattering
- matrix multiplication by empty matrix and division of empty matrix didn't
always give an empty matrix; fixed
LME 4.5.2
New features
- new function numel (number of elements in an array)
- new syntax f(arguments) for calling the inline function or
function reference f which can be a variable or an expression
- new function sha1 (SHA-1 digest)
- new functions reallog, realpow,
realsqrt
- polyder with multiple arguments for derivative of polynomial
products and ratios
- new functions cast, typecast,
swapbytes
- the prompt of command-line interface is associated with file
descriptor 3 instead of 1 (stdout)
Minor changes
- new error message "Undefined input argument"
- with format long, single numbers are displayed with
7 digits
Bug fixes
- spaces weren't supported between a list of variables in the left-hand side
of an assignment and the closing bracket (such as [a,b ]=size(c)); fixed
- parenthesis/brackets mismatch around a list of variable in the left-hand side
of an assignment was accepted (e.g. (a,b]=size(c)); fixed
- linprog didn't always produced the correct result with
both lower and upper bounds on the same variables; fixed
- md5 didn't accept single characters or bytes; fixed
- v(sel)=[], where v was a column vector and
sel a logical vector, didn't produce a result with the correct
size; fixed
- relational operators weren't defined for type single; fixed
- ode45 and ode23 didn't always updated the
integration step in an optimal way; fixed
Mac OS X
- extensions can have the suffix ".dylib" instead of ".so",
to make development with XCode easier
LME 4.5.1
New features
- graycode and igraycode (conversion to and from
Gray code)
- function echo to log a trace of the execution of functions
- functions sec, csc, cot,
asec, acsc, acot,
sech, csch, coth,
asech, acsch, acoth,
and log2 are now built in, not in library stdlib anymore
LME 4.5
New features
- sandboxtrust (unrestricted execution of code from
a sandbox)
- cell arrays (arrays whose elements have arbitrary types, like
lists but with multiple dimensions); semicolon supported between braces
to create 2-dim cell arrays; new functions cell,
cellfun, and iscell; support in
apply,
beginning,
cat,
ctranspose,
disp,
dumpvar,
end,
flipdim,
fliplr,
flipud,
for,
horzcat,
ipermute,
isempty,
join,
length,
map,
ndims,
permute,
repmat,
reshape,
rot90,
size,
squeeze,
subsasgn,
subsref,
transpose,
vertcat,
and variable refererence and assignment
- lookfor on platforms where help is supported
- new functions factorial, ellipam, ellipf,
ellipe, delaunay, delaunayn,
voronoi, voronoin, isdigit
- cal2julian and julian2cal (date conversion)
- c2dm with 'match' method for zeros and poles matching
- matrixrow and matrixcol (row or column index to
be used in index expressions, like beginning and end)
Minor changes
- execution speed has been improved
- to remove element(s) from a list or a cell array, the syntax
listvar(index)=[] is supported in addition to
listvar(index)={}, for compatibility with Matlab
- user breaks (with Control-C or its platoform-dependent equivalent) is not
caught by catch anymore
- global and persistent variables are now forbidden in code executed
by sandbox (sandboxtrust can be used to circumvent this
restriction)
- the transpose operators (' and .') can be
applied to any kind of arrays, not only 2-dim; dimensions 1 and 2 are permuted
- fminbnd and fminsearch with 2 or 3 output arguments
- support for single-precision input arguments in min, max,
sort, unique, find, and repmat
- support for all kinds and dimensions of numerical, char, and logical arrays in
num2list
- new options 'Priority' and 'Sandbox' in
threadset
- the second output argument of sort for lists (and cell arrays)
is now a row vector instead of a column vector, so that S===L(I)
for (S,I)=sort(L)
- x^2, where x is a real scalar double, is
implemented as x*x for faster execution and exact output
when possible
- option for ascending or descending direction in sort
- support for 2 or 3 input arguments in find to limit the number
of values found
- find preserves the type char or logical in the 3rd output
argument to match the input type
- find generates an error with input arrays with more than 2
dimensions and 2 or 3 output arguments (ind2sub can be used
to get the subscripts for arrays of any dimension)
- care with 5 input arguments
- on platforms which use UTF-8, initial BOM (Byte-Ordering Mark) in libraries
are ignored
- tril, triu, and diag accept 2-d arrays
of any numerical, logical or char class
- beginning can be defined as a variable or a function (then
the built-in definition used in index expressions will be hidden)
- fft has been accelerated for real input
- format now accepts option bank for display
with 2 fixed decimal digits, and format '+' for display
of arrays with + for nonzero elements and spaces for zero elements
- functions fprintf, sprintf and bprintf
support the format %i and the flag #
Bug fixes
- end in an index expression for a single-precision array variable
returned an error; fixed
- size wth an empty array and multiple output arguments gave
1 for trailing (superfluous) dimensions instead of 0; fixed
- v{ix} where v was a structure was accepted; fixed
- threadsleep didn't always suspend threads correctly; fixed
- on some platforms, ss2tf with a single output argument crashed
since LME 4.3; fixed
- bitshift with two input arguments, the first one being an
integer, didn't produce the correct result; fixed
- size(A,dim) where A was empty and dim>2
gave 1 instead of 0; fixed
- funm([],fun), sqrtm([]), and logm([])
gave an error; fixed (give [], and 0 for the optional second output
argument of funm)
- the number of libraries was limited to 16 by context; now it's limited only
by memory
- in assignments to subscripted lists where subscripts weren't in ascending
order, the assigned elements weren't in the correct order (for instance
L([2,1])={20,10} set the 2 leading elements of L
to 20 and 10); fixed
- unique didn't produce a row vector when the input was a row
vector of a non-double type; fixed
- dumping the state of LME cleared unused memory space, which was useless
and forced memory allocation on systems with virtual memory; fixed
- there was no error message for unexpected else; fixed
- functions
and,
balance,
chol,
ctranspose,
eig,
eye,
flipdim,
fliplr,
flipud,
funm,
hess,
householder,
householderapply,
ind2sub,
isscalar,
isvector,
kron,
linprog,
lu,
ndims,
ones,
or,
pinv,
rand,
randn,
schur,
str2fun,
sub2ind,
trace,
transpose,
tril,
triu,
unique,
xor,
and zeros
couldn't be overloaded; fixed
- assignments like a(i,j)=[] threw the error
Deleting elements along multiple dimensions even when i
and j selected 0 element because they were empty or false; fixed
- lu works now with singular and rectangular matrices
- c2dm with first-order hold and transfer function didn't
always produce the correct numerator; fixed
- with command syntax, spaces between the last argument and a semicolon or a
comma caused an empty string to be passed as an additional input argument
(e.g. disp a ; was interpreted as disp('a',''));
fixed
- on platforms which supported it (Mac OS X and other unix), loading user extensions
from several places didn't work correctly; fixed
- assignments like A(sel,...)=B with multiple subscripts, where
sel was a logical vector, didn't always produce the correct result; fixed
- repmat didn't copy elements correctly when the result was a
column vector; fixed
- number beginning with 08 or 09 were decoded as decimal; now they're considered
as illegal octal
- dumpvar with a negative file descriptor threw an out of memory
error; now they throw an bad file descriptor error