en fr

LME Release Notes

LME 7.0.1

Bug fixes

  • saxnext could hang upon large text element, processing element or comment; fixed
  • cell2struct could crash with an empty cell array argument; fixed
  • cell2struct with empty cell arrays fixed
  • isempty with char/logical/single/int arrays fixed
  • in command syntax, escaped backslash before closing single-quote (e.g. disp '\\') wasn't parsed correctly; fixed

LME 7.0

New features

  • new functions:
  • acosdacos in degrees
    acotdacot in degrees
    acscdacsc in degrees
    asecdasec in degrees
    asindasin in degrees
    atandatan in degrees
    atan2datan2 in degrees
    base32decodedecode base32-encoded data
    base32encodeencode data using base32
    cosdcos in degrees
    cotdcot in degrees
    cscdcsc in degrees
    cummaxcumulative maximum
    cummincumulative minimum
    hmacHMAC authentication hash
    posixtimecurrent Posix time
    randomrandom generator for distribution functions
    regexpregular expression match
    regexpiregular expression match ignoring case
    rngstate of random number generator
    saxcurrentlinecurrent line number of SAX parser
    saxcurrentposcurrent position in input stream of SAX parser
    saxnewcreate a new SAX parser
    saxnextget next SAX event
    saxreleaserelease a SAX parser
    secdsec in degrees
    sha2SHA-256 or SHA-224 digest
    sindsin in degrees
    superclassesparent classes of an object
    tandtan in degrees
    utf32decodedecode Unicode characters encoded with UTF-32
    utf32encodeencode a string of Unicode characters using UTF-32
  • support for parallel execution (OS-level multithreading), with the following functions:
  • batchcreate a job with a single task
    cancelcancel a job
    createJobcreate a new job
    createTaskcreate a new task
    deletedelete a job or a task
    fetchOutputsfetch output of all tasks in a job
    findTaskfind tasks in a job
    parclusterget a cluster
    pardefaultclusterget or set default cluster
    submitsubmit a job for execution
    waitwait until a job state has changed
  • new built-in functions cart2pol, cart2sph, pol2cart, and sph2cart (were in library stdlib)
  • full support for UTF-16 (Unicode code points beyond 16 bits)
  • new string escape sequence \Uhhhhhhhh for UTF-32
  • Nakagami distribution in pdf, cdf and random
  • second output argument for ismember
  • optional type argument in rand and randn
  • improved default random generator based on KISS
  • option to get uint8 or base64 result from functions md5 and sha1
  • in fopen, new text mode q and T to force output EOL to be LF or CRLF irrespectively of the OS
  • named argument NPrec in fprintf and sprintf for default precision
  • tic with output argument and toc with input argument for multiple simultaneous measurements
  • tic and toc with optional named argument CPUTime to choose between wall-clock time (the new default) and CPU time
  • text inline data with @/text

Minor changes

  • cell arrays accepted by strmatch
  • mpower where the first operand is a square matrix and the second any scalar, not only a real integer
  • in sprintf and other function for formatted output, %x and %o truncated numbers while %d rounded them; now all integer formats round numbers
  • anonymous functions without output argument, such as @(f) format(f)
  • simplified syntax for indices in subsref and subsasgn
  • indices and values returned by find with option 'last' not reversed anymore
  • median gives NaN for vectors which contain NaN
  • in function latex2mathml, new named argument displaymath
  • more character macros defined in latex2mathml
  • horizontal space macros (\;, \quad etc.) defined in latex2mathml
  • \begin{array}{...}, end{array} and \\ defined in latex2mathml
  • \phantom{...} defined in latex2mathml
  • named argument fd in fprintf as an alternative to unnamed argument fd
  • documentation for householder and householderapply
  • better LME source code parsing allowing function definitions not at the beginning of a line

Bug fixes

  • norm 1 or inf of non-square matrices fixed
  • join without input argument fixed
  • nested assignment to struct fields could produce garbage; fixed
  • arrayfun didn't accept cell arrays; fixed
  • bitcmp(scalar,array) fixed
  • care sometimes produced nan results with valid inputs; fixed
  • base64decode could produce garbage when the base64 sequence wasn't properly terminated; fixed
  • concatenation of struct arrays with different number of fields fixed
  • calls to functions in variables without input arguments, such as f() where f is a variable which contains a function reference or an anonymous function, fixed
  • functions without output arguments in anonymous functions used in larger expressions fixed
  • bitall and bitany fixed
  • hypot(0,0) fixed
  • implicit argument name in inline only with exactly one string argument; this permits anonymous functions without argument, such as a=2; fun=@() a;
  • anonymous functions with multiple output arguments fixed
  • assignments to nested lists, cell arrays or structures, which gave sometimes incorrect results or crashes, fixed
  • error with a custom error identifier and no error message reused the previous error message; fixed
  • fwrite with an invalid fd failed silently; now it throws an error
  • padding of formatted integer numbers fixed
  • qr(A,false) memory requirements, previously too high, fixed
  • option PreArg fixed in ode45 and ode23
  • info('u') with an output argument returned a list with only the first used library; fixed

Windows

  • new function cputime
  • function dir fixed
  • in function fopen with mode 'r', no more exclusive access

LME 6.0

New features

  • new functions:
    arrayfunfunction evaluation for each element of a numerical array
    erfcinvinverse complementary error function
    erfcxscaled complementary error function
    filepartsfile path splitting into directory, filename and extension
    filesepfile path separator
    fionreadnumber of bytes which can be read without blocking
    flintmaxlargest of the set of consecutive integers stored as floating point
    frewindrewind current read or write position in a file
    fsolvesolution of set of nonlinear equations
    fullfilefile path construction
    hideimplementationhide the implementation of remaining functions in a library
    inferiortoclass precedence for method calls with arguments of different classes
    inthisthistogram of an integer array
    iscolumncolumn vector test
    isdefinedcheck if a variable is defined
    isequalequality comparison
    isfunfunction test
    ismacCheck whether computer runs under Mac OS X
    ismatrixmatrix test
    isnullnull object test
    isrowrow vector test
    latex2mathmlconvert LaTeX equation to MathML
    lsqcurvefitleast-square curve fitting
    lsqnonlinnonlinear least-square solver
    namedarginnamed input arguments
    nullnull object
    randiuniformly-distributed integer random number
    ratrational approximation
    roundnrounding to a specified precision
    splitstring splitting
    strrepsubstring replacement
    structmergemerge the fields of two structures
    superiortoclass precedence for method calls with arguments of different classes
    unwrapunwrap angle sequence
    xmlreadread an XML string into a DOM object
    zp2ssconversion from transfer function given by zeros and poles to state space
  • named arguments with support in user functions, struct, optimset and friends, direct options in fzero, fminbnd, fminsearch, fsolve, ode23, ode45 and friends
  • dbtype, disp, dumpvar, help, lookfor, info and inmem with optional named argument fd
  • new built-in functions isprime, linspace, logspace, and median (were in library stdlib)
  • new format rat for rational approximations
  • support for new data type null in boolean expressions used by if, elseif, while, until, in conditional expressions, and in comparisons with operators == and ~=
  • in sprintf and friends, new format %P for SI prefix, or engineering for exponent outside -24..24
  • new class names recognized by isa: 'numeric', 'float', and 'integer'
  • interp1 now supports cubic interpolation (method '3' or 'cubic') or piecewise cubic Hermite interpolating polynomial ('p' or 'pchip')
  • ~ can be used as a placeholder for unused output arguments in function calls or for unused input arguments in function definitions
  • isunix and ispc moved from extension to LME, and ismac added
  • cellfun can be used with struct arrays
  • catch with variable to get the error description
  • inline data with @/base64
  • definition of structs and n-by-1 struct arrays with braces and named values
  • apply with support for named arguments
  • named argument throwAsCaller in error and rethrow
  • named argument NPrec in dumpvar
  • in dbtype, optional output argument to get function source code in a string
  • line breaks are ignored between brackets after a comma, which makes the three dot escape sequence superfluous there

Minor changes

  • display of cell arrays and structures improved
  • first argument of optimset, odeset, etc. can be an empty matrix to stand for the default options
  • with keywords, which displays "(keyword)/..."
  • info s gives also the size of double (8 bytes on all current platforms)
  • isa(x,'cell') gives true if x is a list or a cell array
  • findstr renamed strfind for the sake of consistency and compatibility with other applications
  • the profiler can be used with functions whose source code isn't available anymore (e.g. those defined from the command-line interface)
  • dumpvar made faster
  • for each library, info('l') gets the list of its sublibraries
  • info displays or returns the line number of functions and methods
  • quad replaced by integral, with named arguments for options
  • lower and upper convert letter case according to the Unicode Character Database
  • for constructors, help accepts class as well as class::class
  • redefined range (colon operator) with complex values where the end value isn't located on the straight line defined by the start and step values
  • complex dot
  • arguments with default values forbidden in anonymous functions

Bug fixes

  • when a variable fun contained a function reference or an anonymous or inline function, it couldn't be called without input argument with the syntax fun(); fixed
  • in rare cases, anonymous functions with variable number of output arguments could not be compiled correctly and resulted in a syntax error; fixed
  • anonymous functions without input argument but with captured variables failed; fixed
  • odeset option EventTime with fixed events could fail; fixed
  • help and lookfor for functions defined in libraries which weren't loaded sometimes failed; fixed
  • var(indices)=[] or var(select)=[] with a single value in parenthesis didn't always produce the correct result; fixed
  • anonymous function @(x) x threw an error; fixed
  • _pragma line wasn't taken into account for function definitions; fixed
  • fclose all didn't work reliably; fixed
  • dare with three output arguments didn't always gave the correct gain; fixed
  • format int b/o/x displayed integer types in decimal; fixed
  • line number displayed when errors occur in libraries loaded with include or includeifexists fixed
  • cond([]) produced garbage; fixed (gives 0)
  • cov with complex data fixed
  • indexed element deletion of an undefined variable could lead to data corruption or crashes; fixed
  • in fzero, test to stop infinite range expansion (e.g. for fzero(@(x)1,2))

Windows

  • extension functions with the same name as the dll file might cause a crash; fixed

LME 5.1

New features

  • engineering format with format, fprintf, sprintf and bprintf
  • line breaks are ignored between parenthesis and braces, which makes the three dot escape sequence superfluous in many cases
  • anonymous functions can have multiple output arguments (when they have a top-level function call, the number of output arguments is passed from the caller)
  • value sequences, a generalization of the v{:} syntax (now any indexing expression(s) can be provided in the braces, and the resulting item(s) are used as if they were enumerated explicitly and separated with commas in function input arguments, matrix rows, lists, or cell array rows)
  • interp1 (1D interpolation)
  • option Past in odeset to add past time and state values to ODE (useful to integrate delay differential equations)
  • structure arrays; new functions structarray, cell2struct, and struct2cell; support in beginning, cat, ctranspose, disp, dumpvar, end, flipdim, fliplr, flipud, horzcat, ipermute, isempty, length, ndims, permute, repmat, reshape, rot90, size, squeeze, transpose, vertcat, and variable refererence and assignment
  • new built-in function factor (was in library stdlib)
  • info s (size of integers and pointers)

Minor changes

  • interpn now supports any numerical data type and converts the result to double
  • when structures and lists are displayed, control chacters in strings are displayed as question marks
  • support for fflush with files
  • syntax f(...) to evaluate a function reference or an inline or anonymous function stored in a variable f now supports multiple output arguments
  • classdef is a new reserved keyword
  • apply has now a limit of 256 output arguments if their number is not specified
  • horzcat and vertcat accept any number of input arguments
  • in interpn, optional argument for the extrapolated value
  • in ode23 and ode45, time step is reduced before events to improve their precision and reduce the risk of event repeating
  • with an output argument, info, inmem, and dbstack return now a structure array instead of a list of structures

Bug fixes

  • interpn with decreasing input coordinates could produce NaN when it shouldn't; fixed

LME 5.0.1

New features

  • includeifexists

Minor changes

  • fgets and fgetl now return an empty string upon end-of-file, so that while feof(fd) can be used without error catching
  • interpn check the size of input arguments before the coordinate monotonicity, to give a more informative error in case the result of meshgrid is given instead of vectors of coordinates
  • improved help and lookfor: help for functions defined in libraries provided with Sysquake is available also before the library has been loaded with use

Bug fixes

  • when requesting more data than available, fread gave an end-of-file error in text mode only; fixed
  • in the command-line interface, once an attempt to call a function in a library was made before the library was imported, a subsequent use statement didn't define the function in the correct context; fixed
  • ss2tf numerator degree reduction could introduce dummy zeros which become apparent in some cases, such as magnitude frequency responses with loglog scale; fixed

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
  • internal support to mark libraries from some sources as untrusted, so that their functions run in the sandbox
  • 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
  • when built-in functions and operators permitted by str2obj were overridden by an extension, their use became illegal; 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