The ILNumerics Changelog

Major improvements found in an ILNumerics release are listed here. Go to the update page in order to fetch the latest version. Please have your license keys ready.

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
  • GetArrayForRead()/-Write()
  • 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

Download ILNumerics!

Free Trial

Contact sales: