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
  • 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: