<Next version of Ox> <Previous version of Ox>

# Ox: Fixes and new features in version 1.07

## New features and remarks, version 1.07

- Matrix cache enhancements. Ox 1.07 can be up to 3 times faster than version 1.06. The speed improvement is obtained by optimization of the run-time engine, and introduction of an internal cache. The size of the cache can be controlled. To switch off caching, use -rc0,0 as a command line argument.

- There are changes in the command line switches, run Ox without source code to see.

- New functions: exit, fft, isdotfeq, lower, limits, vecr, prodc, prodr, setdiagonal, setlower, setupper, strlwr, strupper, sumsqrc, sumsqrr, upper.

- invert() now optionally returns the logarithm of the absolute determinant, and the sign (not the determinant anymore).

- determinant() will now print a message if the result is deemed unreliable. Remaining LU based routines (declu, logdet, invert) can signal in the return code that the result could be unreliable.

- Now interpreting m[a] as m[vecr(a)] if a is a matrix.

- Introduction of dot-relational operators (.|| .&& .!= .== .>= .> .< .<=). These will al return a matrix of zeros and ones. The operators without a dot will return the scalar 1 or 0. Most code will be unaffected, but if you use dot-conditional expressions, you will have to use the dot-relational operators in it.

- Rudimentary Gauss to Ox translator.

- The loadmat() and savemat() functions can now directly load/save the following file types: PcGive (.in7.bn7), Excel (.xls, up to version 4), Lotus (wks, wk1), Gauss data (.xht/.dat) and Gauss matrix (.fmt) files. These can also be loaded directly into a database.

- An external declaration can now specify matrix size, e.g: decl x[5][5] = 1;

- Introduction of 'How to' chapter.

## Fixed bugs in version 1.07

There was a partial rewrite of the run-time engine (especially matrix indexing and function calling).

- When assigning x, when x is const decl x; at external level, to a class member, the class member would suddenly become static.

- Fixed bug in x[][] = , and in |ing from [0][1] matrix.

- There was a problem with declu when giving a upper triangular matrix as input (could think it was singular). Changed the algorithm. Also, returned U didn't have lower triangular part set to zero.

- olsc() and olsr() return the wrong (X'X)^-1 matrix (ols2c and ols2r are correct).

- simnor.ox works fine in OxRun, but gives out of memory message in Oxlw. This is caused by the graphics, but I haven't been able to locate the problem yet.