*Aug-24, 2020*

**Release 10.7**of the**SDL Component Suite**- Support of the new
**RadStudio 10.4 Sydney / Delphi 10.4 Sydney / C++Builder 10.4 Sydney** - many improvements and new features (see below for detailed list)
- SDL_cdata

- the function GetEDXLines returns analytically interesting EDX lines

- SDL_colsel

- bug fix: TColSel did not trigger the onChange event if the color was redefined via the color dialog

- SDL_cpuid

- the new function GenerateCPUIDEx includes the MAC address of the network adapter (in addition to the CPU info)
- bug fix: the function CheckGeneratedCPUID did not work correctly

- SDL_datatable

- the method ScanForCatValues analyses a categorical variable
- the method Assign implemented
- the new method RemoveMarkedRows removes all marked rows
- the new methods CopyDataColumnFromArray, CopyDataColumnToArray, CopyDataRowFromArray and CopyDataRowToArray support the copying of columns and rows to and from open arrays
- TDataTable.SumOfSquaredMarkedCells and TDatatable.SumOfSquaredNumCells calculate the sum of squared data cells
- TDataTable.ExportAsASC and TDataTable.ImportASC now support the export and import of custom data
- the function QuartilesOfMarkedCells calculates the quartiles of marked cells
- the new methods CopyDataFromArray and CopyDataToArray allow to copy the numeric data to open arrays
- new method IfAnyCellHasCellState allows to test cells states of a range of cells
- the new method CreateContingencyTable calculates the contingency table
- the method CountNominalIDs returns the number of defined nominal IDs
- bug fix: the methods MinRowAttrib, MaxRowAttrib, MinColAttrib and MaxColAttrib returned an invalid row/column index under some circumstances

- SDL_dstruct

- implemented the routines DecodeBase64 and EncodeBase64 to support base-64 encoding
- EncodeASCII85 now allows to insert line breaks
- implemented TAssocArray.Assign
- the new methods InsertColumn and RemoveColumn insert and remove a column to/from the string array
- the new property TByteMatrix.DefaultValue allows to control the returned value, if the index of a byte is out of range
- added the following methods of TFeatureMatrix: RemoveFeature, SetFeatType, RenumberFeatures, GenerateFeatNames

- SDL_filesys

- the new property ParentWnd of the TUnivSaveDialog allows to assign a parent window in order to control the position of the default dialog
- the functions DateTimeToFileTime and FileTimeToDateTime convert file times to date times and vice versa.
- the functions GetFileDates and SetFileDates support the access of file dates
- the functions IsValidFileName and ReplaceInvalidFileNameChars test and process invalid filenames
- the function GetMemoryStatus retrieves the available system memory
- the function IsFN83CompliantPath checks for Windows 8.3 compliant filenames
- the function GetMacAddress retrieves the MAC address of the network adapter

- SDL_math1

- the function modr calculates the remainder of a floating point division
- the function Squash calculates a sigmoid function
- the function InterpolXYTable now supports both ascending and descending pivot tables
- the new function ProductConsecInts calculates the product of consecutive integers

- SDL_math2

- the function CalcRanks calculates the ranks of data in a vector
- the function ReducePolygon allows to remove superfluous vertices from a polygon
- the function CreateSigmoidArray fills an array with values of the sigmoid function
- the function CreateGaussianPeaks generates a signal based on Gaussian peaks
- the function Gauss2D fill an array with value from a Gaussian radial basis function
- the functions ApplyCompassKernel and ApplyKirschKernel filter a 2D matrix by the compass and the Kirsch kernel, respectively
- the new function KernelConvolve is a general 2D kernel convolving function
- TMathExpression.HelperObject implemented
- the function ExtractVarNames scans a mathematical expression for variable names
- the functions ConvertFromDiffPolygon and ConvertToDiffPolygon allow to convert polygons between absolute and relative coordinates

- SDL_matrix

- TMat4D.LoadBinary now checks whether the file is too big for the 32-bit version
- implemented TMat4D.CopyVectorToPixel and TMat4D.CopyPixelToVector
- the LoadBinaryNoFmtCheck has been implemented to be able to load the old binary data format (which did not contain information on the numeric format)
- the methods LoadBinary and SaveBinary have been extended to all four kinds of matrices (TMatrix, TIntMatrix, TMat3D and TMat4D)
- the new methods RemoveRow and RemoveColumn delete specific columns or rows
- the method Read4DLayer reads layer data from a binary TMat4D file
- the method Read4DLayerAndAccumulate accumulates layer data obtained from binary TMat4D files
- the new method TMat4DAccumulateLayer supports the accumulation of layers
- the following methods of TMat4D have been converted to functions: AppendToBinaryFile, LoadBinary, ReadBinary, ReadLayer and SaveBinary
- the new overloaded method TMat4D.FillLayer allows to fill a particular layer with differently distributed values
- the method TMat4D.CopyPixelTo1DArray allows to copy a pixel of the 4D datacube
- the methods TMatrix.Fill, TMatrix.FillRandomGauss and TMatrix.FillRandomUniform are now available in a second overloaded version
- the method CalcHatMatrix calculates the hat matrix
- implemented ExportAsASC and ImportASC
- the classes TMatrix, TIntMatrix, TMat3D and TMat4D now provide public access to their internal data array if SDLPUBLICMAT is defined
- added new overloaded versions of CopyFromArray and CopyToArray
- added the method TMat3D.MeanVar

- SDL_membl

- first implementation of the memory based learner (aka. kNN)

- SDL_ntabed

- the new property ShowCellCursor controls the visibility of the cell cursor
- the new event OnClear allows to replace the clear routine by user-defined code
- bug fix: selection of TNTabEd was wrong after pasting data via PopupMenuClickExtClip

- SDL_openarrays

- the function IsDichotomous tests whether the values of an array are dichotomous
- the function SortAndRemoveDuplicates sorts array values and removes duplicates
- the function SaveArrayAsImg allows to save a matrix as an image (BMP, PNG, JPG or clipboard)
- the functions ReadBinaryArrayHeader, LoadBinaryArray and SaveBinaryArray have been extended to support 3D and 4D matrices
- the functions RemoveColumn and RemoveRow delete columns and rows of an array
- the function CloneAndReverseArray clones an array and reverses the order of the elements
- the function FindInArray search for a value in an array (both integers and strings)
- the function SumOfSquaredDiffs calculates the sum of squared differences
- the function DistanceOfObjects calculates a multivariate distance
- the function FillArrayMasked allows to fill masked regions of a 2-dimensional matrix
- the functions SortArray and ShuffleArray sorts and randomizes one-dimensional arrays, respectively
- the function CalcHatMatrix calculates the hat matrix of a two-dimensional array
- the function EdgeVector calculates various parameters along the edge of a two-dimensional array
- the functions LoadBinaryArray and SaveBinaryArray load and save the 2D open arrays in binary form
- the function ReadBinaryArrayHeader reads the header of a binary array file
- BoolToNumArray converts a boolean array to a dichotomous numeric array
- the function FloodFillArray implements a flood filling algorithm for matrices
- DichotomizeArray extended to support more array types
- implemented an overloaded version of PercentileArray which supports 2-dim. arrays
- FindInSortedArray allows a quick search for array elements
- CloneArray extended to deal with single precision arrays
- InvertArray inverts boolean arrays
- MinMaxArray extended to TSingleArray
- MinArray extended to return the found positions of the minima for TIntArray and TInt2DArray
- MaxArray extended to support TInt3DArray and TInt4DArray
- PercentileArray calculates a quantile of the array values
- FrequDistOfArray calculates the frequency distribution of array values
- DichotomizeArray allows to create a boolean matrix from a numeric matrix
- FillArrayRix fills the array with a running index
- LoadArray loads data from files previously stored by StoreArray
- the functions CopyVectorToArrayColumn and CopyVectorToArrayRow copy a vector to an array
- the function EqualArrays compares two arrays
- bug fix: FillArray of boolean array did not work correctly

- SDL_rchart

- TContourPlot provides a better oversampling resolution for low resolution images
- bug fix: TRChart.Assign did not copy some of the annotation properties
- bug fix: TContourPlot rendered the interpolated (oversampled) pixels at the wrong positions (shifted by half a pixel)
- bug fix: RChart did not correctly calculate the extents of an tkMarkEBar element

- SDL_replist

- the methods TRLData.RemoveColumn and TRLData.InsertColumn allow to delete or insert a column
- the method TRLData.InsertRow inserts a row
- the method TReportListview.RemoveColumn deletes a column of the report listview
- the method TReportListview.InsertColumn inserts a column in the report listview
- SortEnabledState allows to sort the enabled and disabled rows of the report listview separately
- bug fix: reading from XML files did not correctly read data if the number of rows was zero

- SDL_rot3d

- TRot3D supports now an unlimited number of colors of the data points (no longer limited to 32 colors)

- SDL_sdlbase

- the type declaration TDistMode and the definition of the corresponding IDs DistModeId has been moved from SDL_matrix to SDL_sdlbase
- new type declaation TPIntArray for integer point arrays
- the constant array CSVDELIMITERIDS provides now names of CSV delimiters

- SDL_sdlcolors

- the procedures ColorToHSV, HSVtoColor, HSVtoRGB and RGBtoHSV provide conversion routines for the HSV color system
- the procedures ColorToHSL and HSLtoColor convert between TColor and the HSL color model
- the procedures HSLtoRGB and RGBtoHSL convert between HSL and RGB color space
- the functions HSItoColor and ColorToHSI transform a HSI color to the (RGB) TColor and vice versa
- the new method LogTransform allows to create a logarithmic color scale
- the new method TColorArray.ReverseRGB reverses the RGB order
- the new methods TColorArray.Backup and TColorArray.Restore provide a simple backup and restore capability

- SDL_statis

- the new function MedianTest implements the median test
- the new functions Chi2OfContTab and Chi2OfContTabYates calculate the chi-square value of a contingency table
- the new class TCFEvaluator provides an easy way to calculate binary classifier metrics
- the new function AdjustedRandIx calculates the adjusted Rand index
- the new function FriedmanTest provides Friedman's test for homogeneity of groups
- the new function LeveneTest provides Levene's test for equal variances
- the new function Lambda calculates the Lambda value of contingency tables
- the new functions DurbinWatson and DurbinWatsonCrit5pct support the application of a Durbin-Watson test for serial correlation.
- the new function Prob2x2Contingency calculates the probability of a contingency table
- the new function FisherExactTest calculates Fisher's exact test
- the new function PerformChi2DistComp performs a chi
^{2}-test to compare empirical distributions - bug fix: TCrossValidator did not create the matrices XMat and YMat
- bug fix: TCrossValidator.Execute did not correctly recognize the cases when calculating TPRate and FPRate

- SDL_streams

- new function StreamAsByteString reads a byte stream as ASCII string
- the new class TMixedFStream supports the handling of mixed binary/ASCII strings

- SDL_stringl

- the new functions ExtractAfterTrigger and ExtractBeforeTrigger extract substrings
- the new function SplitString splits a string into two halves
- the new function NumberedPosBw searches for a substring backwards
- the function CreateParList has been extended to support boolean arrays as well
- the new function DetectCSVDelimiter scans a string for CSV delimiters
- the new function ConvertVariant returns a string representation of the a variant value

- SDL_univconst

- Math constants uc_MaxInt64 abd uc_lnMaxInt64 added

- SDL_vector

- the new function IsDichotomous tests whether a vector is dichotomous
- implemented ExportAsASC and ImportASC

- SDL_cdata

*Dec-17, 2018*

- Support of the new
**RadStudio 10.3 Rio / Delphi 10.3 Rio / C++Builder 10.3 Rio**

*Mar-09, 2018*

**Release 10.6**of the**SDL Component Suite**- new unit SDL_openarrays provides functions to process open arrays
- many improvements and new features (see below for detailed list)
- SDL_dstruct

- the new class TFeatureMatrix supports mixed-type two-dimensional matrices
- the TStringArray class supports now the Assign method
- the class TAssocArray provides now the method ResolveAsInt

- SDL_filesys

- the function StripExtension has been adjusted to correctly process filenames with more than one dot
- the procedure EnsureCRLFInFile ensures that CRLF characters will terminate lines in text files
- the function ReadLastNLinesOfTextFile reads the N last lines of a text file
- the function CountLinesInTextFile provides now a callback routine

- SDL_geomap

- recording of the mouse trace implemented: ClearMouseTrace, MouseTraceColor, MouseTraceInvert, NumMTracePoints, MouseTrace

- SDL_math1

- the function RoundLimit rounds a number within in an interval
- the function WithinBounds has been extended by the additional parameter Margin
- the new function CcwTriangle tests the order of triangle corners
- the new function SortSwap exchanges two values if they do not satisfy the sort criterion
- the function SegmentsIntersect checks whether to line segments intersect
- the function DistanceToSegment calculates the distance between a point and a line segment
- the function HistoBinRef calculates the bin reference value of a histogram
- the function DistFromEllipse calculates the distance between a point and an ellipse
- the functions Min and Max have been removed (use unit system.math instead)
- the functions MinMaxOfArray and MeanVarOfArray have been renamed to MinMaxArray and MeanVarArray and moved to SDL_openarrays

- SDL_math2

- TCurveFit.CalcLinFit raises now an exception if the slope becomes infinite
- the function PolygonArea provides now a second overloaded version which counts the intersections
- the function DistanceToPolygon calculates the closest distance from a point to a polygon
- the function PolygonLength calculates the length of a polygon
- the functions TCurveFit.CalcPolyFit and TCurveFit.CalcCenteredPolyFit have been extended by alpha (the p-values of the parameters)

- SDL_matrix

- the following methods now support multi-processing to speed up calculations: TMatrix.Square, TMatrix.MeanOfLayersToMatrix, TMat4D.MinimumOfLayersToMatrix, TMat4D.MaximumOfLayersToMatrix, TMat4D.StdDevOfLayersToMatrix
- the function TMat4D.CRCofData is now provided as a second overloaded version
- the new procedure CopyArr3DLayerToArr2D copies a layer of a 3D array to a 2D array
- the procedure CopyMatrixToArray copies a TMatrix to a 2D array
- the procedure CopyArr3DLayerToMatrix copies a layer of a 3D array to a TMatrix
- the methods TMatrix.CopyFromArray and TMatrix.CopyToArray copy matrix data from and to dynamic arrays
- the methods TMat4D.CopyArrayToLayer, TMat4D.CopyLayerToArray, TMat4D.CopyTimeSlotToArray and TMat4D.CopyArrayToTimeSlot copy matrix data to and from dynamic arrays
- the function Dichotomize compares the values of a matrix to a threshold
- bug fix: TMatrix.Histogram created one bin less than required
- bug fix: TIntMatrix.ExchangeRows addressed the wrong rows (offset by 1)
- bug fix: TMat4D.CopyMat3DToTimeSlot used the default values of TMat4D instead of the source matrix if the indices were all zero
- bug fix: TMat4D.Percentile returned a (wrong) zero quantile under certain circumstances

- SDL_numio

- bug fix: the TNumIO2 component did not accept exponential notation when the InputFormat was itDynamic
- TNumIO2 supports now the KeyPreview property of the parent form

- SDL_openarrays

- new functions: AbsValArray, AccumulateArray, AddArrays, AddScalarToArray, CloneArray, CopyArray, CopyArrayColumn, CopyArrayRow, CountTrueCellsOfArray, CountValues, DiscretizeArray, FillArray, FillDiagArray, FillRandomNormal, FillRandomUniform, FlipDimArray, IncArray, MaxArray, MeanArray, MeanVarArray, MinArray, MinMaxArray, MultiplyArrayByScalar, MultiplyArrays, MultiplyArraysElemw, StdDevArray, StoreArray, SubtractArrays, TraceOfArray, TransposeArray, VectorCrossProduct, VectorDotProduct

- SDL_rchart

- the TContourPlot class provides now the following methods and properties to draw on top of the contour plot: DataContainer, NumItems, DataColor, FillColor, LineWidth, TransparentItems, Arc, Bar3D, Ellipse, Arrow, Text, DrawTo, DrawToRelPix, Line, LineOffset, ClassDefault, MoveTo, MoveToRelPix, MarkAt, MarkErrorBar, Rectangle, RectangleRelPix, RectFrame, SaveData, LoadData, PenStyle, TextFontStyle, TextBkStyle, TextBkColor, ClassVisible, Isometric, Font
- TRChart.TextBkColor, TSmithChart.TextBkColor and TContourPlot.TextBkColor are deprecated and have been replaced by FillColor
- the properties TRChart.TextFont, TSmithChart.TextFont and TContourPlot.TextFont provide a global definition of the font of the text elements
- the property TextBkStyle provides now an individual control of the text background style (was formerly global to all text elements)
- RChart now supports long text elements, see Text and DataLongText
- the new event OnBeforeRenderText allow to adjust text items before rendering them
- RChart and its descendants now support annotations, providing the following properties and methods: CountAnnoByClass, CopyAnnoFrom, LoadAnno, SaveAnno, NumAnnos, AnnoClassVisible, FindNearestAnnoElem, AnnoContainer, AnnoMode, ClearAnnotations, RemoveAnnoItem, AnnoBelowChart, AnnoLongText, AnnoTextOnTop, SearchAnnoItem, AnnosVisible
- the methods TRChart.GetTransformParams, TSmithChart.GetTransformParams and TContourPlot.GetTransformParams retrieve the scaling parameters of the axes
- the TContourPlot class now provides the following properties to control the caption of the chart: CaptionPosX, CaptionPosY, CaptionAlignment, CaptionAnchorVert, CaptionAnchorHoriz,
- the property CaptionTrim allows to confine the length of the chart caption
- the functions FindNearestItemScreen, FindNearestItemReal and FindNearestItemAlongAxis now provide an overloaded version to restrict the search to visible layers only
- the new method TContourPlot.ConfineZoomRange allows to confine zoom and pan actions in contour plots
- the new methods TRChart.SearchDataItem, TSmithChart.SearchDataItem and TContourPlot.SearchDataItem allow to search for data items
- the method DrawToRelPix is available in a second overloaded version allowing to specify the origin of the line
- the new properties TRChart.PanGridOffsX, TContourPlot.PanGridOffsX, TRChart.PanGridOffsY and TContourPlot.PanGridOffsY allow to shift the snap positions when MouseAction is set to
`maPanGrid`. - TRChart and TContourPLot now provide three additional drawing elements: TRChart.CursorVert, TContourPlot.CursorVert, TRChart.CursorHoriz, TContourPlot.CursorHoriz, TRChart.DoubleArrow and TContourPlot.DoubleArrow
- TSmithChart.OnScalesRendered and TSmithChart.OnBeforeRenderData are now published
- the following drawing elements support now both world and screen coordinates: Arrow, MarkAt, MoveTo, DrawTo, Line, Rectangle, Text, CursorHoriz, CursorVert, RectFrame
- the property TContourPlot.PlotMode has been extended to support transparent pixel images
- TContourPlot.PercentilePivots supports now the restriction of the percentile calculation to unmasked areas
- the events TContourPlot.OnBeforeRenderData, TContourPlot.OnScalesRendered and TContourPlot.OnScaleTickDrawn are now published properties
- the function ItemDescription returns the description of a chart element
- the properties TRChart.ScalePropsX, TRChart.ScalePropsY, TContourPlot.ScaleX and TContourPlot.ScaleY provide now the sub-property MouseAction which allows to control the interactive panning and zooming of the scales
- the new methods TRChart.DetectScale and TContourPlot.DetectScale allow to check the presence of a scale at a particular position of the chart canvas
- bug fix: TRChart caused slight range change when using maPanGrid
- bug fix: TContourPlot.Assign did not copy the mask palette
- bug fix: components derived from TCustomRChart created an access violation in the Light Edition

- SDL_replist

- the methods ExportCSV and ImportCSV allow you to export or import the cells of the report list to/from a CSV file
- the function FilterAndSort has been changed so that the filter expression evaluates all selected columns together (instead of evaluating the search on a column per column basis)
- the new methods SelectColumn and SelectRow select a specific column or row, deselection all others
- the new event OnReadCell allows to adjust cell contents during reading
- the new event OnCursorKeyAction handles the pressing of the cursor keys
- the methods SetAllCheckmarksOfCol and InvertAllCheckmarksOfCol provide now additional overlaid parameters to affect only enabled rows
- bug fix: the property AsNumber raised an exception if the corresponding cell was checked
- bug fix: FirstCheckedElemInCol created an integer overflow if report listview is empty
- bug fix: AutoColWidth did not correctly process the width of the column header

- SDL_scale

- property MouseAction implemented
- the new OnZoomPan event is triggered if any zooming or panning occurs

- SDL_sdlbase

- declaration of the new types TTriState, TInt3DArray and TDouble4DArray
- the type declaration TCSVDelimiters has been moved from unit SDL_datatable to SDL_sdlbase
- the type declaration TZoomPanMode has been moved from the unit SDL_colorscale to SDL_sdlbase
- the function ResolveCSVDelimiter assigns a CSV delimiter

- SDL_sdlcolors

- the constant array AllSDLColors contains all colors declared in the SDL Component Suite
- the constant array AllSDLColorNames contains the names of all colors declared in the SDL Component Suite
- the function ObtainColorName returns the name of a color

- SDL_sline

- the method Distance now returns the distance including the sign

- SDL_streams

- new functions implemented: ReadSingleFromStream, WriteSingleToStream, WriteDoubleToStream
- bug fix: ReadLnStreams did not read non-printable characters in a stream

- SDL_stringl

- the function Tokenize now supports up to 1000 tokens
- the function StrToTriState converts strings to tri-state variables
- the function TriStateToStr converts tri-state values to their corresponding strings
- the function SortableNumericString rectifies numeric strings to become sortable
- the function AutoFormatData now provides an overloaded version to use commas instead of decimal points
- the function RemoveMultiChars removes duplicate characters in a string
- the function FindFirstDigit searches for the first digit in a string
- the function CreateParList generates a string of comma-separated parameters

- SDL_vector

- the new method FindExact compares all elements of an integer vector to a given value
- the two new methods CopyToArray and CopyFromArray allow to copy data between arrays and a TVector
- bug fix: TVector.Histogram and TIntVector.Histogram created one bin less than required

- SDL_dstruct

*May-01, 2017*

- Support of the new
**RadStudio 10.2 Tokyo / Delphi 10.2 Tokyo / C++Builder 10.2 Tokyo**

*Oct-10, 2016*

- Support of the new
**RadStudio 10.1 Berlin / Delphi 10.1 Berlin / C++Builder 10.1 Berlin** - Release 10.5 of the
**SDL Component Suite** - The support of several older compilers is discontinued (C++Builder 6, BDS 2006, RadStudio 5 to 7, RadStudio XE to XE3 are no longer supported)
- Release 10.5 supports the following compilers: Delphi 6&7, RadStudio XE4 up to RadStudio 10 Seattle and RadStudio 10.1 Berlin
- SDL_colorscale

- bug fix: the Assign method did not copy all internal fields

- SDL_datatable

- the procedures SetRowAttributes and SetColAttributes offer now an overloaded version which allows to mask out bits

- SDL_dendrogram

- the size of the area where the object labels are displayed can now be adjusted interactively if the new property MarginIsMoveable is set TRUE

- SDL_dstruct

- the TBitFld class provides now the Assign method
- the TStringArray class provides now the array property AsInteger
- bug fix: SHA1FromFile, SHA1FromString and SHA1FromStream returned wrong results in 64-bit mode

- SDL_filesys

- the universal save dialog uses now the class TFileSaveDialog as the default dialog
- the function InsertBeforeFileExt allows to insert a substring into a filename

- SDL_htmlsupport

- the function ConvertHTMLBodyToText converts the body of an HTML file into an unformatted string
- the function ExtractHTMLBody returns the body of an HTML file

- SDL_math1

- the functions ConfineValue and ConfinePointToRect adjust a value or a point to be inside a specified range or rectangle
- the function MinMaxOfArray returns the minimum and maximum of an array
- the function MeanVarOfArray returns the mean and the variance of an array
- the function InterpolTable interpolates a function defined by regularly spaced pivot points
- the function InterpolXYTable interpolates a function defined by irregularly spaced pivot points
- the function EuclideanDistance is now available in a second overloaded version
- bug fix: QuickSelect was too slow if all values in an array were the same
- bug fix: QuickSelect crashed for small unusual data sets

- SDL_math2

- the function CheckParanthInExp checks the correctness of parantheses in mathematical expressions
- the OnVarRequest event of TMathExpression has been extended to include the position of the variable name
- the procedure MovingKernelFilter implements a moving kernel filter
- the following sinc filter kernels are now supported: CalcSincLPKernel, CalcSincHPKernel, CalcSincBPKernel, CalcSincBSKernel
- Chebychev filter implemented: ChebychevFilter, CalcChebFilterCoeffs

- SDL_matrix

- TMat4D.ReadBinary allows to read binary data without using memory
- the new event OnReadElement provides elementwise feedback during reading a binary file
- TMat4D.Transpose implemented
- the methods TMat4D.CountValues and TMatrix.CountValues count values falling into an interval
- the methods TMat4D.Resample and TMat4D.CRCofData now trigger the event OnPercentDone
- the methods TMat3D.Fill and TMat4D.Fill now treat the special case of zeroing the data matrix
- the speed of the method TMat4D.MeanOfLayersToMatrix has been improved considerably
- TIntMatrix.SaveBinary, TIntMatrix.LoadBinary and TIntMatrix.OnPercentDone implemented
- the new method TMat4D.SquaredSum calculates the sum of squares
- the method TMat4D.ReadLayer allows to read a specific layer of a Mat4D matrix
- the method CountMaskedZeros counts cells after applying a logical AND with a bitmask
- the method TMat4D.Copy1DArrayToPixel copies a one-dimensional array into a pixel column
- the method CholeskyDecomp decomposes a positive definite matrix into its Cholesky factor
- bug fix: TMat4D.SaveBinary created an integer overflow for very large matrices (more than 2
^{31}cells)

- SDL_rchart

- the new property TContourPlot.InvalidDataBmp indicates changes in the contour plot data area
- the method Arc draws an elliptical arc
- a mask value of 255 has now a special meaning (color inversion of the underlying image)
- the standard layout "rcl_X2Both_Y2Both" has been revised
- the new event OnBeforeCrossHairMove allows to block interactive crosshair movement
- TContourPlot now supports recording the mouse trace: MouseTrace, ClearMouseTrace, NumMTracePoints, MouseTraceColor, MouseTraceInvert
- bug fix: ResetComp was private instead of public

- SDL_replist

- CountCheckedElemsInCol now counts the checked elements of enabled rows only
- the method SetColumnOrder allows to rearrange the visual order of the displayed columns
- the readonly property ColumnOrder returns the visual position of a particular column
- bug fix: the color of the fixed columns was always clSilver (instead of FixedColor)
- bug fix: component displayed spurious lines after resizing
- bug fix: FirstSelectedRow did not take care of disabled rows

- SDL_sdlbase

- the following data types have been declared: TBoolArray, TVariantArray, TStrArray, TBool2DArray, TDouble3DArray, TInt2DArray, TSingleArray
- the class TCrossHair now supports the method SetPos

- SDL_statis

- the function PercentileOfArray calculates the percentile of an array of data values

- SDL_streams

- the function ReadDoubleFromStream reads a double value from a binary stream
- bug fix: ScanStreamFPNum did not set the position of the stream correctly
- bug fix: ScanStreamDecimal did not skip CRLF correctly

- SDL_stringl

- the type declaration TOpenStringArray is now based on strings (instead of ShortStrings)
- the function Tokenize provide now a second overloaded version supporting an escape character

- SDL_vector

- the classes TIntVector and TVector support now the Assign method
- the new method PearsonCorrCoeff calculates Pearson's correlation coefficient of two vectors

- SDL_colorscale

(news prior to October 2016 removed)