The ILNumerics Changelog
Major improvements found in an ILNumerics release are listed here. Login to your account in order to download the latest version.
Changes in version 4.9
- bugfix in ILMath.svd(A,U,VT,bool,bool): if the small version of SVD was requested, SVD potentially crashed on large matrices
- speed up SVD for frequent computations on large matrices
- [Viz.Engine] Improved colormaps: new Colormaps.Custom enum value, speed up mapping by factor 40 (for all colormapped plots), more robust handling of colormaps, improved error handling.
- Prevents the license helper class from being recreated on each build for VB projects
- new line plot constructor: individual X and Y values (single, double prec.)
- great speed up for many subarray expressions involving 'full' (right & left side subarrays)
- bugfix in ILMath.find(A,limit, C, V): now correctly returns _empty_ C and V, even if no match was found.
- increased speed and parallel efficiency for many internal functions, incl. diff(), ones(), array(), ...
- more efficient memory handling: allow much larger data sizes before OOMExceptions are generated.
- removed: Settings.AllowInArrayAssignments. Assignements to ILInArray<T> is fully supported (but still not recommended in order to enable future optimizations).
- new highly optimized function for computing squared L2 (euclidean) distances of two point sets: ILMath.distL2sq.
- Default for ILTitle's position is now: TopCenter (was: TopRight).
- Removed obsolete, deprecated properties from ILGroup ('Childs')
- Optimized auto-detection of number of processor cores used for parallelization
- Even more speed improvements regarding more efficient parallelization.
- Deprecated complex.INF and fcomplex.INF in favor of (f)complex.PositiveInfinity.
- bugfix: ILMemoryPool crashed when used with certain enum types (ILArray<enum>).
- bugfix: linspace, meshgrid, repmat are now able to handle and return all empty array shapes.
- bugfix: certain subarray configurations involving A[idx, full] = B failed to throw exception on unmatching array sizes for left side assignments.
- Visual Studio Extension now correctly handles solution folders.
- bugfix: HDF5 resources were left open, creating a memory leak for frequent dataset operations
- bugfix: [Optimization] ILLevMar now tracks intermediate gradient norms in a more stable manner.
- proper HDF5 library initialization now forced, always.
- allow H5Dataset.Set() on such HDF5 datasets larger than possible for in memory arrays (was limitation of ILSize).
Changes in version 4.8
- bugfix in OpenGL driver: clean fallback to GDI on too small GL versions (incl. remote desktop, update recommended).
- Internal restructuring, introduction of ILNumerics.Toolboxes namespace.
- Users of Machine Learning Toolbox from now on have to use ILNumerics.MachineLearning module and class instead of ILMath for the related methods.
- Users of Statistics Toolbox from now on have to use ILNumerics.Statistics module and class instead of ILMath for the related methods.
- Documentation fixes: eigSymm()
- ILNumerics.Drawing: ILTickCollection.MaxNumberDigitsShowFull property of axis ticks is now populated & synchronized to synched scene and recognized for rendering.
- csvread now supports complex and fcomplex types.
- csvread is now extensible with a custom delegate method to support arbitrary type parsing.
- Introduction of ILNumerics.Core, ILNumerics.Computing and ILNumerics.Drawing modules; split from old monolithic 'ILNumerics.dll'.
- The namespaces are not touched, but there are individual assemblies now.
- The ILNumerics.Core module must be referenced for all projects from now on!
- bugfix: when creating ILArray<T> from empty(!) System.Array, T or T[,] the shape of the empty source will be retained.
- moved ILNumerics.ILMath.GenEigenType enumeration to: ILNumerics.GenEigenType (please adjust your references!)
- new function for initializing ILLogical and ILCell as class attributes. See: http://ilnumerics.net/ClassRules.html
- Computing Engine: added support for UInt32, bitand, bitor, bitxor (sponsored features)
- Visualization Engine: added option for rotating around arbitrary 3D points in ILCamera: ILCamera.RotationCenter
- Installer is now able to complete on machines without Visual Studio installed.
- Added new functions to ILMath:
- gamma, gammaLog, factorial, factorialLog, beta, binomialCoefficients, binomialCoefficientsLog,gammaIncomplete, betaIncomplete, errorFunction, errorFunctionComplement, errorFunctionInverse, logistic, logit, besselJ0, besselJ1, besselJn, besselY0, besselY1, besselYn, besselModifiedI0, besselModifiedI1, besselModifiedIn, besselModifiedK0, besselModifiedK1, besselModifiedKn, diGamma. See: http://ilnumerics.net/special-functions.html (partially sponsored features)
- Computing Engine: added support for ~ operator, ILMath.bitnot: bitwise negation of integer elements
- Added Visual Basic item template: simple VB computing module
- Statistics Toolbox: new ILNumerics.Toolboxes.Distributions: Chi, ChiSquare, Hypergeometric, LogNormal, Normal and Student. New functions: hist, histn, histnc, histc
- Added a cmd line tool to license arbitrary machines, w/o internet connection, w/o Visual Studio (see the /bin and /doc folders)
Changes in version 4.7
- bugfix: ILMath.multiply failed for certain cases: num processor cores > 4, Release builds, long thin vectors, vector len < Settings.ManagedMultiplyMaxElementSize, MaxNumThreads > 2. This update is recommended!
- Visual Studio item templates: will pick correct assemblies now and add them to project.
- added new object to ILNumerics.Drawing: ILTitle adds an easy way of labeling scenes.
Changes in version 4.6
- bugfix: quicksort single threaded on large presorted data could cause OutOfRangeException
- Computing Engine: added poly() functions
- bugfix: GDIDriver failed in certain situations on 64bit platforms
- new versioning scheme for all fully licensed products: assembly version: major.minor.0.0, file version: major.minor.rev.build. This simplifies updates and deployment of patches within the same minor version (no recompile necessary). Minor version increase: users must recompile their projects.
- Release of optimization toolbox: http://ilnumerics.net/ilnumerics-optimization-toolbox.html
Changes in version 4.5
- Update MSVCR version for native libs to MSVCR120 (VS2013). Applications must now ensure vcredist[32/64] (VS2013) for redistribution!
- Fixed the "Haswell Bug": 64 bit matrix multiply was crashing on Haswell procs
Changes in version 4.4
- Update MKL 32/64 bit version: 11.1 Update 6
- Added extension support for Visual Studio 2010...VS2015
Changes in version 4.3
fixed ILLineStrip.GetPrimitiveCount(): return 0 for empty shape
fixed: IILMKLFFT.FreePlans() did not correctly free FFT discriptor in MKL (rarely used expert function)
ILGroup.GetLimits(): new optional argument to take the top nodes transformation into account or ignore it
ILColorbar now recognizes/synchronizes ILTickCollection.TickCreationFuncEx (was: must assign to SceneSyncRoot)
ILTickCollection: allow definition of arbitrary styles & label properties within TickCreationFuncEx for custom ticks + labels
bugfix in ILImageSC: interactive data range changes now auto update colorbar infos
ILCircle and ILCylinder now support Copy() and Synchronize() operations properly
ILSurface: convenience overloads for ILArray<double>
ILMath.convert: now handles null arguments correctly
Visual Studio Array Visualizer now fully supports Visual Basic (x86), F# (x86,x64) and C# (x86,x64) debugging
added: ILMath.checknull - simplified syntax for input parameter checks
speedup: more efficient single element Int32 index access on numerics arrays: A[i], A[i1,i2] (left + right side)
Changes in version 4.2
- Removed reference to VisualStudio.DebuggerVisualizer v11 from ILNumerics.dll (causing problems in non-VS setups)
- Fixed #205: ILPlotCube.Reset() now handles very small view limits down to ILMath.eps (10e-16)
- ILTripod: Arrow3D style implemented + interactive capabilities (see reference docu for ILTripod)
- ILCamera: new properties: AllowPan, AllowRotation, AllowZoom eases the control of interactive options
- Shapes: new shapes available, Shapes.Cone(s), Shapes.Cylinder(s), ILArrow3D
- ILShape.Target: made set accessor public, allowing to configure all shapes as RenderTarget World or Screen
- Fixed a bug in OpenGL renderer: auto-hover marking for all shapes now working as expected
- Fixed a bug in ILPanel: the sharing of identical ILScenes in multiple ILPanel.Scene is possible for OGL drivers now
- Added http://ilnumerics.net/scene-management.html
- IO.HDF5.H5Dataset: made constructor parameter 'data' obligatory, preventing from accidentally creating too small chunk sizes
- Beautified debug output (hover datatips) in Visual Studio for Visual Basic code on ILArray(Of T)
Changes in version 4.1
Implicit conversion from System.Array to ILArray: support unmatching element types and scalar ILArray as source elements (#204)
made internal and protected internal members public: ILNode.Copy, ILNode.Synchronize. Allows the creation of custom scene node objects.
Improved Zoom for ILCamera: new property ZoomFactor prevents from Z plane clipping on extreme zoom settings.
Custom colormaps allowed for arbitrary objects. Use ILColormap.Map(ILArray<float>,float min, float max) for mapping values to colors
Colorbar now able to be used on arbitrary objects more easily: see: ILStaticColormapProvider in reference documentation.
Array Visualizer now working with arbitrary language packs on all supported ILArray<T> expressions.
new ILTripod object: shows the current camera rotation as X-Y-Z tripod
fixed colorbar and axis for use in non-plotcube szenarios
fixed ILOGLLabel depth error on non-camera setups (when used in ILScreenObject)
Changes in Version 4.0
- new function on ILLinePlot.Update(): allows more relaxed updates for X, XY or XYZ components
- improved string output alignment for ILArray<float>
- Legends for line plots: allow Visible properties to be used
- PlotCube.Reset() now ignores hidden nodes which are Visible == false
- more robust handling of ILPanel setup for GDI drivers (lazy initialization, removes OpenTK reference)
- improved compatibility: Intel HD Graphics now better supported (f.e. on Optimus powered Laptops)
- more robust disposal for ILPanel & OpenGL renderers (for switching back / forth between different renderers in VS extension)
- fixed AMD OpenGL label rendering bug (issue #0191)
- fixed a bug in ILPanel, preventing the BackColor property to be selected from within the designer
- simplyfied default driver selection: OpenGL on all places except VS designer
- removed default Auto-Dock:Fill for ILPanel (this is a breaking change!)
- ILCamera: supports zoom (mouse wheel) with orthographic projection
- ILCamera: supports Pan (right mouse click) for perspective projection and large objects
- ILCamera: fixed a bug causing the synchronization of certain property changes getting lost
- ILPanel can now timeout after specified number of ms elapsed. Subtrees can be excluded from timeouts and prioritized for rendering.
- new plot type: ILImageSC
- sum: allows summing dimension to be > number of dimensions
- bugfix for Contourplots: contour lines has not been closed in certain cases
- improved label position selection for contour plots
- ILGroup: new optional constructor parameter: target, allows definition of rendering target for subtree
- ILPanel: new option for picking details on shapes
- OpenGL: more robust for legacy cards, compatible context fallback
- switched to new installer
- deprecated nuget packages
- Quicksort: fixed race condition on multithreaded large single vector sorts
- Quicksort: now recognized Settings.MaxNumThread setting; if 0 -> sorts single threaded always
- MemoryPool: adjusted initial max default size: 350MB
- Ultimate VS Extension: now supports EN and DE language packs
- fixed AspectMode.MaintainRatios for Orthograpic views for ILCamera (not for ILPlotCube)
Changes in Version 3.3.3
- XML driver: smaller output, reduced to 10 supported scene node base types
- new ILMath functions: csvread, csvwrite
- bugfix: expanding large arrays by index assignments failed to clear the new array in certain situations
- bugfix: large surfaces may created corrupted colors (rel. to issue #000176)
- bufgix: ILColorbar _completely_ disabled when no suitable colormap provider is found
- bugfix: (issue #000171) corrupted memory pool in special multithreading setups, having multiple pools (double, float...) involved
- bugfix: automatic detection of MKL native dependencies failed if path contained a '#' character
- bugfix: (issue #000179) more robust handling of graphics in VS design mode, defaulting to OpenGL but falling back to GDI within common IDEs (via blacklisting), new Settings switch: ILNDefaultRenderer
- switched to OpenTK nuget packages
- ILPanel/all renderers clean up properly after Dispose() now -> allows utilization in dynamic environments (e.g. LinqPAD)
- bugfix: issue #000185 ILMath.min returned wrong value when used with scalar values only
- improved rendering of logarithmic axes: major/minor ticks/grid, log tick labels, automatic scaling
- deprecated default tick creation methods on ILAxis.Ticks: TickCreationFunc, DefaultTickCreationFunc
- added TickCreationFuncEx: gives more flexibility/context for custom ticks creation
- improved text rendering: OpenGL; small fonts are now rendered crisp
- got rid of unused dummy objects in ILScene (OpenGL renderers)
- homogenized stipple pattern display for GDI and OpenGL renderers
- allow ILSize to be used with != and ==; A.S == B.S is now working intuitively (issue #00186)
- fixed axis tick-/ main label position for negative tick length (ticks inside plotting area; #00168)
- Plot cube: axis tick labels now keep margin (ILAxis.TickLabelMargin) to tick lines
- Axes: more robust creation of "few ticks" on smaller plots
- bugfix: (issue #00189) InArrays were disposed off unintendedly after returning from a nested function in a multiple scoping setup
Changes in Version 3.3.2
- bugfix in GDI driver: points smaller 3px did not render properly
- all nodes are not markable by default (was: ILNode.Markable = true)
- !! This is a potentially breaking change in the API! !!
- DesignMode determination prepared for VS package hosting
- general DesignMode detection for ILPanel simplyfied and made more robust
- fixed an issue with signing ILNumerics in NuGet package builds
- added array conversion functions from/to UInt64 element types
- ILMath.convert<>(), ILMath.touint64() - needed for upcoming HDF5 API
- work around a bug in Xamarin: 'is' operator struggles with generic array value types
- added cumprod (feature request #105)
- set ILPlotPanel internal -> will not show in Toolbox; use ILPanel instead!
- bugfix: dynamic removal of multiple plots from ILScene now working correctly
- bugfix: synchronization after dynamic reordering / removal / addition of groups now working correctly
- bugfix: #172, corrupted memory pool due to a bug in eigSymm()
- bugfix: custom legend item handling improved:
- handling of legends in dynamic situations: adding / removing items, reconnecting plots to items etc.
- bugfix: OpenGL buffers now correctly managed in dynamic trees, recreates once a shape changes its buffers
- improved synchronization of shapes in scene graphs with shared buffers
- improved legend layout: the padding property is now correctly recognized
- moved ILNumerics.Drawing.ILColorbar -> ILNumerics.Drawing.Plotting.ILColorbar
- ILSurface: 2 new constructors
- provide Z, X and Y values individually (optional)
- construct surface from lambda expressions (function evaluator)
Changes in Version 3.2.2
- bugfix: frobenius norm for matrices, homogenized with vector input ('degree' == 0.0)
- ccomplex (complex, fcomplex): allow for scalar arguments for one/both parameters
- bugfix: spaces in path to ILNumerics.dll made AnyCPU resolution via PATH environment fail
- new Settings switch: IsHosted - disable DesignMode checking for Drawing controls in hosted environments (VSTO, LinqPad, ...)
- ILPanel in VSTO: auto disable DesignMode detection; no automatic "Fill" docking
Changes in version 3.2
- ILNumerics targets AnyCPU – restructured all editions/ packages; see: http://ilnumerics.net/blog/?p=398
- Name changed: ILScreenRect.DefaultBorderTag -> BorderTag
- Name changed: ILScreenRect.DefaultFillTag -> BackgroundTag
- Same names changed for ILColorbar ...Tag public static members
- All above -> readonly
- ILGroup.Childs -> deprecated + replaced by ILGroup.Children
Changes in version 3.1
- improved GDI renderer / web component: scan line triangles
- added support for MKL.FreeBuffers() on Windows 32 / 64 bit (requested)
- improved stability contour plots: level values outside range
- CommunityEdition: new _unsigned_ project file provided
- missing terrain.bin data file included
- fixed issue: [#00140] some properties not configuable interactively
- added code documentation on many places
- hide designer visibility for unsupported ILPanel properties
- fixed a threading issue in GDIDriver [#00108] and ILBMPBackBuffer
- fixed GDI triangle depth buffering on 64 bit (reported)
- ILOGLLabel now refreshes render queues after color changes
- bugfix: ILColormap.Map now handles empty input parameters (reported)
- plot cube: removed redundant group node reference attributes
- made ILNode.IsSynchedNode available as protected property (requested)
- increased PolygonOffset => 0.001f for lines (affects GDI Renderer)
Changes in version 3.0
- new scene graph implementation, ILNumerics.Drawing reworked + now supports GDI+ driver and OpenGL 3.1 + scene based plotting implementation (old 2.0 API is no longer supported!)
- bugfix: complete dimension array removal retains other dim sizes
- managed matrix multiply: blocked algorithm, huge speed-up
- all functions returning / expecting INDICES -> element type Int32 (sort, min, max, find, randperm, knn)
- bugfix: subarray remove failed, for row vectors with insufficient dimensions specified
- ILNumerics is now strongly named and runs in a medium trust environment
Changes in version 2.14a (patch)
- reverted to unsigned assemblies due to several reported issues (signed assemblies will be provided in the pro edition seperately in the future)
Changes in version 2.14
- bugfix in mvnrnd: certain input data led to dimension mismatch error
- bugfix in ILSize.IndexFromArray, corrected OOB checks
- Updated MKL: version 11.1 (Windows, large matrix eigSymm bugfix)
- Community + Professional Edition: strongly named assemblies
Changes in version 2.13
- implemented cross(A,B,normalize) for array columns
- included Powershell module into nuget package, see: http://ilnumerics.net/blog
Changes in version 2.12
- Added partial support for ILArray + ToString(), ILMath.convert and vice versa.
- Added Complex.ToILArray and ILArray.ToMSComplex Extension Methods
- bugfix: expansion on emtpy arrays with first dim specified > 0 failed
- bugfix: sort, on arrays with all but the last element sorted and no nans failed in certain cases do only exist for non-temporary arrays (all except ILRet???)
- removed license manager and toolbox license control
- introduced Community (GPL) and Professional Edition
- removed free and evaluation licenses (-> Community Edition)
Changes in version 2.11
- bug in var() fixed: in optimized scenarios may lead to inefficient memory handling
- more robust license file handling for Free Trial Licenses
Changes in version 2.10
- loading of license from resources more robust: Now works even in secondary app domain scenarios. Recommended: Licenses should be loaded from file if the application is not started within a managed application domain (what happens when started from a console f.e.). This bugfix makes the library ignore an empty AppDomain Resource Manager and try to load the license from a regular file instead.
- parallelized randn()
Changes in version 2.9 (bugfix release)
- fixes a bug in repmat: repmat did not handle insufficient dimension specifications for row vectors properly
Changes in version 2.8.4408.34136
- increased speed of all binary and unary functions
- improved vector expansion: more efficient implace operations
- some ML functions 2..3 times faster (especially kmeans)
- new optimized ML function: distL1 (user request)
- more robust license file handling: ignoring common encoding issues
- option to (re)load license file at runtime
- option to embed license file into execution assembly
- removed a common privilege issue with performance counter installation
Changes in version 2.7.4368.41400 (bugfix patch)
- bugfix: qr in economy mode failed in certain situations
Changes in version 2.7.4363.39308
- bugfix: memory management had limited efficiency in certain situations
- ILMath.check: provide "Default" parameter on input 'null'
- reworked threading control for MKL
- added support for 32 bit Linux, MKL, v.10.3
- new Drawing example: LitSurfaceExample
- enabled COM/Interop for ILNumerics
Changes in version 2.6.4343.42870
- removed namespace ILNumerics.BuiltInFunctions -> ILNumerics
- MachineParameterFloat -> MachineParameterSingle
- reduced number of supported types
- removed reference array feature -> lazy full clones instead
- removed CreateReference(), ILArray.R
- removed "shifted subarrays"
- all binary operators receive arrays of same type only! (or System.Value type)
- types array creation: ILMath.create<>, .empty<>, .zeros<>
- removed: ILArray.Diagonal -> use ILMath.diag
- ILArray.GetShifted -> ILArray.Shifted
- removed ILIterator
- improved array debugger display
- ILCell (always) returns ILArrays!, scalars are unboxed
- optional setting: implicitly cast logical array to bool with allall()
- ILArray.Reshape does return reshaped array but does NOT alter self
- binary functions (add, subtract... ) dimension SIZE sufficient to match (was:shape)
- trailing singleton dimensions are not trimmed by default
- renamed: ILMath.vector -> ILMath.vec, explicit element type overloads (double, float, int)
- A[int] is not supported anymore due to conflicts with A[cell(1,2,3,4,5)]
- A[string] is integrated into A[params BaseArray], reducing compiler overload resolution problems .. -> simply replace "new int" (double,string,..) with "new ILBaseArray"
- A[null] -> empty !
- new subarray specifications: cell(A,B,2,full,r(1,2)),r(0:end(A,1)-1),full):
- ILMath.end allows simple calculations (via expressions)
- ILMath.full selects full dimension
- default vector orientation: column (specification by single dimension)
- Reshape on arrays: removed params int overload, use ILMath.size(dim1,dim2,..) instead
- meshgrid -> return arrays as cell
- subarray index specifier can now be mixed between string and array format: A[":",i,end]
- ILNumerics.Drawing is integrated into ILNumerics
- removed ILNumerics.Drawing.Controls namespace -> ILNumerics.Drawing
- changed function signatures for functions with multiple return parameters: removed ref keyword, incoming out parameters (if needed) are expected to be initialized already, f.e. ILMath.empty<>()
- removed ILArray.zeros - use ILMath.zeros() instead
- cart2pol removed result type. regular new ILNumerics API instead
- ILMath.FFT renamed to: ILMath.FFTImplementation (VB compatibility)
- ILMemoryPool: created generic equivalents for some functionality
- ILMath... API: removed all ref parameter (according to new general API parameter type schema)
- C# limited support: var and compound assignment operators are not supported anymore!!
- removed namespace ILNumerics.Settings -> ILSettings renamed to ILNumerics.Settings
- parallelized all internal functions
- complex structs are now serializable
- speed up repmat by factor 200
- changed typed interface for ILCell: indexer return cells only, scalar cells are dereferenced, added GetArray, GetCell, GetScalar
- homogenized interface for ILMatfile
- added xor()
- enabled virtual vector expansion on matching arrays for all binary operators (saving repmats)
- added isempty, mod + % operator, std, var, cov
- default orientation for vectors from elements: column vector
- conf setting: CreateRowVectorByDefault, defaults to: false / 'column'
- renamed ILDimension -> ILSize
- renamed A.Dimensions -> A.Size (original is deprecated)
- renamed A.D -> A.S (orig. is deprecated)
- added pif (single prec. pi constant)
- added epsf (single prec. eps constant)
- added nanmean(), nansum()
- added license management
- reworked all examples
- provided 64 bit binaries (MKL)
- primary support for MKL now, options for FFTW3 and ACML kept
- implemented new memory management
- simplyfied ILNumerics.Drawing namespace
- removed support for ILFigure, ILControl
- removed ILNumerics.BuiltinFunctions namespace; moved ILMath -> ILNumerics
- several new settings -> ILSettings class
- implemented windows performance counters for memory pool
- windows performance counter for thread pool measures