diff --git a/BJExcelLib.sln b/BJExcelLib.sln new file mode 100644 index 0000000..b202ee7 --- /dev/null +++ b/BJExcelLib.sln @@ -0,0 +1,51 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UDFs", "UDFs", "{C34891EC-85D9-4CCE-880D-9F81F84677C3}" + ProjectSection(SolutionItems) = preProject + BJExcelLib\UDF.American.fs = BJExcelLib\UDF.American.fs + BJExcelLib\UDF.Blackscholes.fs = BJExcelLib\UDF.Blackscholes.fs + BJExcelLib\UDF.Date.fs = BJExcelLib\UDF.Date.fs + BJExcelLib\UDF.Interpolation.fs = BJExcelLib\UDF.Interpolation.fs + BJExcelLib\UDF.Misc.fs = BJExcelLib\UDF.Misc.fs + BJExcelLib\UDF.Volatility.fs = BJExcelLib\UDF.Volatility.fs + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Finance", "Finance", "{733C851A-70E4-44BF-96D5-F361562FA094}" + ProjectSection(SolutionItems) = preProject + BJExcelLib\Finance.Blackscholes.fs = BJExcelLib\Finance.Blackscholes.fs + BJExcelLib\Finance.Date.fs = BJExcelLib\Finance.Date.fs + BJExcelLib\Finance.JuZhong.fs = BJExcelLib\Finance.JuZhong.fs + BJExcelLib\Finance.SVI.fs = BJExcelLib\Finance.SVI.fs + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Math", "Math", "{99FB6D68-12D5-41DC-9272-7BC467A21501}" + ProjectSection(SolutionItems) = preProject + BJExcelLib\Math.Interpolation.fs = BJExcelLib\Math.Interpolation.fs + EndProjectSection +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BJExcelLib", "BJExcelLib\BJExcelLib.fsproj", "{CCCFFCBC-7434-4262-A7C1-730F94362E7F}" +EndProject +Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BJExcelLibTests", "BJExcelLibTests\BJExcelLibTests.fsproj", "{1F3EDE6E-7D84-45BD-9B0C-00198760A714}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CCCFFCBC-7434-4262-A7C1-730F94362E7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CCCFFCBC-7434-4262-A7C1-730F94362E7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CCCFFCBC-7434-4262-A7C1-730F94362E7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CCCFFCBC-7434-4262-A7C1-730F94362E7F}.Release|Any CPU.Build.0 = Release|Any CPU + {1F3EDE6E-7D84-45BD-9B0C-00198760A714}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F3EDE6E-7D84-45BD-9B0C-00198760A714}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F3EDE6E-7D84-45BD-9B0C-00198760A714}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F3EDE6E-7D84-45BD-9B0C-00198760A714}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/BJExcelLib/BJExcelLib-AddIn.dna b/BJExcelLib/BJExcelLib-AddIn.dna new file mode 100644 index 0000000..5f6f2e4 --- /dev/null +++ b/BJExcelLib/BJExcelLib-AddIn.dna @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/BJExcelLib/BJExcelLib-AddIn64.dna b/BJExcelLib/BJExcelLib-AddIn64.dna new file mode 100644 index 0000000..389c8b2 --- /dev/null +++ b/BJExcelLib/BJExcelLib-AddIn64.dna @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/BJExcelLib/BJExcelLib.fsproj b/BJExcelLib/BJExcelLib.fsproj new file mode 100644 index 0000000..4ea6d3b --- /dev/null +++ b/BJExcelLib/BJExcelLib.fsproj @@ -0,0 +1,127 @@ + + + + + Debug + AnyCPU + 2.0 + cccffcbc-7434-4262-a7c1-730f94362e7f + Library + BJExcelLib + BJExcelLib + v4.5 + BJExcelLib + 4.3.0.0 + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + bin\Debug\BJExcelLib.XML + Program + C:\Program Files\Microsoft Office 15\root\office15\EXCEL.EXE + D:\Programmeren\BJExcelLib\BJExcelLib\bin\Debug\BJExcelLib-Addin.xll + + + pdbonly + true + true + bin\Release\ + TRACE + 3 + bin\Release\BJExcelLib.XML + + + 11 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + + + C:\Programming\alglib 3.8.0\alglibnet2.dll + + + ..\packages\Excel-DNA.0.30.3\lib\ExcelDna.Integration.dll + False + + + True + + + ..\packages\FSharpx.Core.1.8.39\lib\40\FSharpx.Core.dll + True + + + ..\packages\MathNet.Numerics.2.6.1\lib\net40\MathNet.Numerics.dll + True + + + ..\packages\MathNet.Numerics.FSharp.2.6.0\lib\net40\MathNet.Numerics.FSharp.dll + True + + + ..\packages\MathNet.Numerics.2.6.1\lib\net40\MathNet.Numerics.IO.dll + True + + + + + + + + echo F | xcopy "D:\Programmeren\BJExcelLib\packages\Excel-DNA.0.30.3\tools\ExcelDna.xll" "$(TargetDir)BJExcelLib-AddIn.xll" /C /Y +echo F | xcopy "D:\Programmeren\BJExcelLib\packages\Excel-DNA.0.30.3\tools\ExcelDna64.xll" "$(TargetDir)BJExcelLib-AddIn64.xll" /C /Y +"D:\Programmeren\BJExcelLib\packages\Excel-DNA.0.30.3\tools\ExcelDnaPack.exe" "$(TargetDir)BJExcelLib-AddIn.dna" /Y +"D:\Programmeren\BJExcelLib\packages\Excel-DNA.0.30.3\tools\ExcelDnaPack.exe" "$(TargetDir)BJExcelLib-AddIn64.dna" /Y + + + \ No newline at end of file diff --git a/BJExcelLib/ExcelDna.Cache.fs b/BJExcelLib/ExcelDna.Cache.fs new file mode 100644 index 0000000..ce9261b --- /dev/null +++ b/BJExcelLib/ExcelDna.Cache.fs @@ -0,0 +1,56 @@ +namespace BJExcelLib.ExcelDna + +open ExcelDna.Integration +open ExcelDna.Integration.Rtd +open System.Collections.Generic + + +/// Module that allows creation of persistent objects from excel. Got the idea +/// (and a big part of the code) from the ExcelDNA group in a post by "DC": +/// https://groups.google.com/forum/#!searchin/exceldna/xlcache/exceldna/E4vIOSNwHm0/yHmVTW4FHA0J +module public Cache = + + /// The cache that holds objects indexed by a key + let private cache = Dictionary<_,_>() + let private tagstore = Dictionary<_,_>() + + /// Registers an object in the cache. The tag is an id for the category the object belongs to + /// The tag is not equal to the final handle the object gets, because a counter will be prepared + let public register tag o = + let counter = + match tagstore.TryGetValue tag with + | true, c -> c + 1 + | _ -> 1 + + tagstore.[tag] <- counter + let handle = tag + "." + counter.ToString() + cache.[handle] <- box o + XlCall.RTD("BJExcelLib.ExcelDna.CacheRTD", null, handle) + + /// Removes a given handle from the cache + let public unregister handle = + if cache.ContainsKey(handle) then cache.Remove(handle) |> ignore + + /// resets the cache by removing all values in there + let public reset = + cache.Clear() + tagstore.Clear() + + /// Finds a value in the cache. If no value is found, None is returned. If a value is found, then + /// the the result is wrapped in Some and returned, otherwise None is returned. + let lookup handle = + match cache.TryGetValue handle with + | true, value -> Some(value) + | _ -> None + +/// Excel RTD server to handle the registering/unregistering of object handles +type public CacheRTD() = + inherit ExcelRtdServer() + let _topics = new Dictionary() + override x.ConnectData(topic:ExcelRtdServer.Topic, topicInfo:IList, newValues:bool byref) = + let name = topicInfo.Item(0) + _topics.[topic] <- name + name |> box + override x.DisconnectData(topic:ExcelRtdServer.Topic) = + _topics.[topic] |> Cache.unregister + _topics.Remove(topic) |> ignore \ No newline at end of file diff --git a/BJExcelLib/ExcelDna.IO.fs b/BJExcelLib/ExcelDna.IO.fs new file mode 100644 index 0000000..44a5f73 --- /dev/null +++ b/BJExcelLib/ExcelDna.IO.fs @@ -0,0 +1,238 @@ +namespace BJExcelLib.ExcelDna + +/// This module provides IO functions for UDFs created by ExcelDNA. +/// Because of a combination of the type inference in F# and performance reasons, all ExcelDNA function inputs in this project have input type "obj". This module contains functionality +/// to cast those variables to other types and conversly convert other types back to obj's (or obj []'s) to return to excel. Next to this, there is some functionality to deal with returning +/// option types to excel. +module public IO = + + open BJExcelLib.Util.Extensions + open ExcelDna.Integration + + let (|ExcelError|_|) x = + if x.GetType() = typeof then Some() else None + + let (|ExcelEmpty|_|) x = + if x.GetType() = typeof then Some() else None + + let (|ExcelMissing|_|) x = + if x.GetType() = typeof then Some() else None + + /// Takes an obj value and check if it's an valid argument coming from excel or not. Returns an obj option. + let private wrapErrorValues x = + match x with + | ExcelError | ExcelEmpty | ExcelMissing -> None + | _ -> Some(x) + + /// wraps primitive values + strings and date times into a Some(value), everything else becomes None + let private wrapprimitive x = if x.GetType().IsPrimitive then Some(x) + elif x.GetType() = typeof then Some(x) // Strings are not primitive types in .NET but for my purpose here I'll consider them to be... + elif x.GetType() = typeof then Some(x) // DateTimes are not primitive types in .NET but for my purpose here I'll consider them to be + else None + + /// Validates an input to a specific type if possible. If not, None is returned. + let private validateType<'T> input = + try Some(System.Convert.ChangeType(input, typeof<'T>) :?> 'T) + with _ -> None //This error catching mechanism is slow, but shouldn't occur to frequently if the wrapErrorValues function is used to catch wrong input first + + /// Validates an input to a specific given type if possible. If not, None is returned. + let private validate<'T> input = + input |> wrapErrorValues + |> Option.bind validateType<'T> + + /// Takes an obj option and tries to cast it into Some(string). If not possible, None is returned + let public validateString input = validate input + + /// Takes an obj option and tries to cast it into Some(float). If not possible, None is returned + let public validateFloat input = validate input + + /// Takes an obj option and tries to cast it into Some(int). If not possible, None is returned + let public validateInt input = validate input + + /// Takes an obj option and tries to cast it into Some(bool). If not possible, None is returned. Numeric types are mapped to true if they are > 0 + let public validateBool input = + input |> validate + |> fun x -> if x.IsSome then x + else input |> validateFloat + |> Option.map (fun x -> x > 0.) //todo : test whether the same issue occurs as with validatedate, i.e. that booleans are passed as numeric types. In that case, it's probably better to first check on numeric types for performance reasons. + + /// Takes an obj option and tries to cast it into Some(DateTime). If not possible, None is returned. Numeric types are mapped to true if they are > 0 + let public validateDate input = + input |> validate |> Option.map (fun x -> System.DateTime.FromOADate(x)) // First check for float rather than date because that's how obj type's typically come through. + // Makes a huge difference on performance, vs try-catching System.DateTime first, because catching + // errors is so slow. + |> fun x -> if x.IsSome then x else input |> validate + |> fun x -> if x.IsSome then x else input |> validate |> Option.bind (fun x -> System.DateTime.tryParse(x)) + + /// transfoms an option type to an UDF return value that excel can handle + /// None values get transformed to an excelerror. + let public valueToExcel value = + value |> Option.map box + |> FSharpx.Option.getOrElse (ExcelError.ExcelErrorNA :> obj) + + /// Transforms a 1D array into a sequence + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// arr is the array to transform + let array1DAsSequence validationfunction = + Seq.map (wrapErrorValues >> Option.bind validationfunction) + + /// Transforms a 1D array into a sequence + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// defaultvalue is the default value to replace missing values with + /// arr is the array to transform + let array1DAsSequenceWithDefault validationfunction defaultvalue = + Seq.map (wrapErrorValues >> Option.bind validationfunction >> (FSharpx.Option.getOrElse defaultvalue)) + + /// Transforms a 1D array into a List + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// arr = the array to transform + let array1DAsList validationfunction arr = + arr |> array1DAsSequence validationfunction + |> Seq.toList + + /// Transforms a 1D array into a List + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// defaultvalue is the default value to replace missing values with + /// arr is the array to transform + let array1DAsListWithDefault validationfunction defaultvalue arr = + arr |> array1DAsSequenceWithDefault validationfunction defaultvalue + |> Seq.toList + + /// Transforms a 1D array into an Array with typed (casted) elements + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// arr = the array to transform + let public array1DAsArray validationfunction = + Array.map (wrapErrorValues >> Option.bind validationfunction) + + /// Transforms a 1D array into an Array with typed (casted) elements + /// Inputs: validationfunction validates the elements of the array elementswise after they've been checked for error/missing values + /// defaultvalue is the default value to replace missing values with + /// arr is the array to transform + let array1DAsArrayWithDefault validationfunction defaultvalue = + Array.map ( wrapErrorValues >> + Option.bind validationfunction >> + (FSharpx.Option.getOrElse defaultvalue)) + + /// Transforms a 2D array into an Array2D with typed (casted) elements and the data elements in the various rows. + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenets of the array elementwise after they've been checked for error/missing values + /// arr is the array to transform + let array2DAsArray roworiented (validationfunction : 'a -> 'b option) arr = + arr |> fun x -> if roworiented then x else Array2D.transpose x + |> Array2D.map (wrapErrorValues >> Option.bind validationfunction) + + /// Transforms a 2D array into an Array2D with typed (casted) elements and the data elements in the various rows. Errors are replaced by a defaultvalue + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// defaultvalue is the value elements get replaced with if the original value is an error + /// arr is the array to transform + let array2DAsArrayWithDefault roworiented validationfunction defaultvalue arr = + arr |> array2DAsArray roworiented validationfunction + |> Array2D.map (defaultArg defaultvalue) + + /// Transforms a 2D array into an sequence with typed (casted) elements and the data elements in the various rows. + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// arr is the array to transform + let array2DAsSeq roworiented validationfunction arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsSequence validationfunction + + /// Transforms a 2D array into an sequence with typed (casted) elements and the data elements in the various rows. Errors are replaced by a defaultvalue + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// defaultvalue is the value elements get replaced with if the original value is an error + /// arr is the array to transform + let array2DAsSeqWithDefault roworiented validationfunction defaultvalue transform arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsSequenceWithDefault validationfunction defaultvalue + + /// Transforms a 2D array into an (1D) List with typed (casted) elements and the data elements in the various rows. + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// arr is the array to transform + let array2DAsList roworiented transform validationfunction arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsList validationfunction + + /// Transforms a 2D array into an (1D) List with typed (casted) elements and the data elements in the various rows. Errors are replaced by a defaultvalue + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// defaultvalue is the value elements get replaced with if the original value is an error + /// arr is the array to transform + let array2DAsListWithDefault roworiented transform validationfunction defaultvalue arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsListWithDefault validationfunction defaultvalue + + /// Transforms a 2D array into an 1D Array with typed (casted) elements and the data elements in the various rows. + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the lemenet so fhte array elementwise after they've been checked for error/missing values + /// arr is the array to transform + let array2DAsArray1D roworiented transform validationfunction arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsArray validationfunction + + /// Transforms a 2D array into an (1D) Array with typed (casted) elements and the data elements in the various rows. Errors are replaced by a defaultvalue + /// Inputs: roworiented defines whether the array is interpreted as having rows contain different data elements. If false, the array gets transposed + /// validationfunction validates the elements of the array elementwise after they've been checked for error/missing values + /// defaultvalue is the value elements get replaced with if the original value is an error + /// arr is the array to transform + let array2DAsArray1DWithDefault roworiented transform validationfunction defaultvalue arr = + let arr = if roworiented then arr else Array2D.transpose arr + [| for r in 0 .. (Array2D.length1 arr) - 1 do + yield [| for c in 0 .. (Array2D.length2 arr) - 1 do yield arr.[r,c] |] |] + |> array1DAsArrayWithDefault validationfunction defaultvalue + + // array to return if an empty aray has to be returned + let private empty2DArray = Array2D.init 1 1 (fun r c -> valueToExcel None) + + + /// Transforms a sequence of generic data into an 2D array that can be returned to excel as UDF output + /// asColumnVector is a boolean that specifies whether the elements of the data sequences are to be + /// interpreted as row elements (if asColumnVector = true) or column elements (asColumnVector=false) + /// data is a sequence of elements that need to be outputted. + /// Transform is a transformation to be applied to the data. There are two things that this funtion + /// must do. It must return an array; the various elements of this array are seen as the column (row) + /// elements of the output array (which depends on asColumnVector). The second requirement is that + /// every element in this array is an option type. Values that equal None are returned as error values + /// to excel. + let public array2DToExcel asColumnVector data transform = + // Not a very efficient implementation as the sequence "data" gets traversed multiple times + // and some superfluous array initialization takes place that probably can be avoided at the + // cost of slightly more verbose code. However, until performance becomes unacceptable, I + // prefer the clarity and simplicity of this code to faster, but more verbose code. + let nmbRows = Seq.length data + if nmbRows = 0 then empty2DArray + else + let nmbCols = data |> Seq.nth 0 + |> transform + |> Array.length + + let res = Array2D.create nmbRows nmbCols (valueToExcel None) + do data |> Seq.iteri (fun row elem -> elem |> transform + |> Array.map (Option.bind wrapprimitive) + |> Array.iteri (fun col value -> res.[row,col] <- valueToExcel value)) + + res |> fun x -> if asColumnVector then x else Array2D.transpose x + + /// Processes a sequence into an 2D array that can be returned to excel. This 2D array contains only one column and (potentially) multiple rows + let public arrayToExcelColumn data = array2DToExcel true data (fun x -> [|Some(x)|] ) + + /// Processes a sequence into an 2D array that can be returned to excel. This 2D array contains only one row and (potentially) multiple columns + let public arrayToExcelRow data = array2DToExcel false data (fun x -> [|Some(x)|] ) + + /// Processes a sequence of values wrapped in options into an 2D array that can be returned to excel. This 2D array contains only one column and (potentially) multiple rows + let public optionArrayToExcelColumn data = array2DToExcel true data (fun x -> [|x|]) + + /// Processes a sequence of values wrapped in options into an 2D array that can be returned to excel. This 2D array contains only one row and (potentially) multiple columns + let public optionArrayToExcelRow data = array2DToExcel false data (fun x -> [|x|]) \ No newline at end of file diff --git a/BJExcelLib/Finance.Blackscholes.fs b/BJExcelLib/Finance.Blackscholes.fs new file mode 100644 index 0000000..7148ff8 --- /dev/null +++ b/BJExcelLib/Finance.Blackscholes.fs @@ -0,0 +1,160 @@ +namespace BJExcelLib.Finance + +type OptionType = + | Call + | Put + +/// Can't have a finance library without blackscholes formulae +module public Blackscholes = + + open BJExcelLib.Math.NormalDistribution + + // Parameters that determine how searching for implied is done. + [] + let private VOL_ITER = 100; // Max iterations to search for volatility + [] + let private LOW_VOL = 0.001 // Don't search for vols below this + [] + let private HIGH_VOL = 5. // Don't search for vols above this + [] + let private VOL_PRECISION = 0.0001 // Search until convergence in option price down to 1 basis point of spot. + // Basically this will fail to converge well for very low premium options (think deep otm with low vol) + // but there you can argue that uncertainty about vega will be large anyway (and is unlikely as well). + + /// Root finding algorithm used to find volatilities. Switch here and its switched everywhere in this module + let private rootfinder spot f = MathNet.Numerics.FindRoots.bisection VOL_ITER (VOL_PRECISION*spot) LOW_VOL HIGH_VOL f + + /// returns (flag,df,d1,d2) + let private getstuff margined flag S K t r b v = + let inputOk = S > 0. && K >=0. && v > 0. && t > 0. + if not inputOk then None else + let flag = if flag = Call then 1. else -1. + let df = if margined then 1. else exp(-r*t) + let vsqrt = v * sqrt t + let d1 = (log(S/K)+b*t)/vsqrt + 0.5*vsqrt + Some(flag,df,d1,d1-vsqrt) + + // Forward of an underlying. Not really specific to BS world, but got to put it somewhere + let public forward S t b = + if S <= 0. || t < 0. then None + else Some(S*exp(b*t)) + + /// Value of a vanilla european option using generalized BS + /// Apart from the usual parameters, there is a parameter + /// margined here which specifies whether the option value gets + /// margined (this happens for example with Brent options on the ICE) + let public value margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,d1,d2) -> df*flag*( S*exp(b*t)*cnd(flag*d1)-K*cnd(flag*d2) ) |>Some + + + /// Value, delta and vega of a vanialla european option using generalized BS + /// Apart from the usual parameters, there is a parameter + /// margined here which specifies whether the option value gets + /// margined (this happens for example with Brent options on the ICE) + let public valuedeltavega margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,d1,d2) -> let expr1 = exp(b*t) + let expr2 = cnd(flag*d1) + let value = df*flag*( S*expr1*expr2 - K*cnd(flag*d2) ) + let delta = df*flag*expr1*expr2 + let vega = df*K*nd(d2)*sqrt(t)*0.01 + Some(value,delta,vega) + + /// Delta of a vanilla european option using generalized BS + let public delta margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,d1,d2) -> Some(flag*df*exp(b*t)*cnd(flag*d1)) + + /// Vega of a vanilla european option using generalized BS + let public vega margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(_,df,_,d2) -> Some(df*K*nd(d2)*sqrt(t)*0.01) + + /// Daily theta of a vanilla european option using generalized BS + let public theta margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,d1,d2) -> let fwd = S*exp(b*t) + Some(df*(-fwd*(nd(d1)*v/(2.*sqrt(t))+flag*(r-b)*cnd(flag*d1))-flag*r*K*cnd(flag*d2))/365.25) + + /// Gamma of a vnailla european option using generalized BS + let public gamma margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(_,df,d1,_) -> Some(df*exp(b*t)*nd(d1)/(S*v*sqrt(t))) + + /// Rho per basis point of a vanilla european option using generalized BS + let public rho margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,_,d2) -> Some(flag*K*t*df*cnd(flag*d2)*0.0001) + + /// Dual delta (sensitivity to strike) of a vanilla european option using generalized BS + let public dualdelta margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,_,d2) -> Some(-flag*df*cnd(flag*d2)) + + /// dVegadSpot = dDeltadVol = Vanna of a vanilla european option in a generalied BS setting + let public dvegadspot margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(_,df,d1,d2) -> Some(-exp(b*t)*df*nd(d1)*d2/v) + + /// dVegadVol = Volga of a vanilla european option in a generalized BS world + let public dvegadvol margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(_,df,d1,d2) -> Some(df*K*nd(d2)*sqrt(t)*0.01*d1*d2/v) + + /// ddeltadtim = Charm = Delta bleed of a vanilla european option in a generalized BS world + let public ddeltadtime margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag,df,d1,d2) -> let bt = b*t + let vsqrt = v*sqrt(t) + Some(df*exp(bt)*((r-b)*flag*cnd(flag*d1)-nd(d1)*(2.*bt-d2*vsqrt)/(2.*t*vsqrt))) + + /// Implied volatility for an european option with a given premium in a black-scholes world + let public impliedvol margined flag S K t r b premium = + let price vol = (value margined flag S K t r b vol) |> Option.bind (fun x -> Some(x-premium)) + match price LOW_VOL, price HIGH_VOL with + | None, _ | _, None -> None + | Some(x), Some(y) -> if x > 0. || y < 0. then None + else let price = price >> Option.get + rootfinder S price + // todo : improve by using stuff from P. Jaeckel's by implication or from the things Axel Vogt has written on numerics. + + + /// Value of a european straddle using generalized BS + let public straddlevalue margined S K t r b v = + match getstuff margined Call S K t r b v with + | None -> None + | Some(_,df,d1,d2) -> df*( S*exp(b*t)*(cnd(d1)-cnd(-d1))-K*(cnd(d2)-cnd(-d2)) ) |>Some + + /// Delta of a european straddle using generalized BS + let public straddledelta margined S K t r b v = + match getstuff margined Call S K t r b v with + | None -> None + | Some(_,df,d1,d2) -> df*exp(b*t)*(cnd(d1)-cnd(-d1)) |> Some + + /// Vega of a european straddle using generalized BS + let public straddlevega margined S K t r b v = + match getstuff margined Call S K t r b v with + | None -> None + | Some(_,df,_,d2) -> Some(2.*df*K*nd(d2)*sqrt(t)*0.01) + + + /// Implied volatility for an european option with a given premium in a black-scholes world + let public straddleimpliedvol margined S K t r b premium = + let price vol = (straddlevalue margined S K t r b vol) |> Option.bind (fun x -> Some(x-premium)) + match price LOW_VOL, price HIGH_VOL with + | None, _ | _, None -> None + | Some(x), Some(y) -> if x > 0. || y < 0. then None + else let price = price >> Option.get + rootfinder S price \ No newline at end of file diff --git a/BJExcelLib/Finance.Date.fs b/BJExcelLib/Finance.Date.fs new file mode 100644 index 0000000..5a49e71 --- /dev/null +++ b/BJExcelLib/Finance.Date.fs @@ -0,0 +1,274 @@ +namespace BJExcelLib.Finance + +// Defines a period as consisting of a start end enddate +type public Period = { startDate:System.DateTime ; endDate:System.DateTime} + +// Describes a calendar; consists of +// - a set describing what days compromise the weekend +// - a set describing the holidays for the particular calendar +type public Calendar = { weekendDays:System.DayOfWeek Set; holidays:System.DateTime Set } + +/// Defines a tenor, which is an offset to a date. Consists of +/// - a years field specifiying the year to offset +/// - a months field specifying the number of months as offset +/// - a days field specifying the number of days offset +type public Tenor = { years:int; months:int; days:int } + +/// The various types of roll rules that are implemented +type public RollRule = + | Unadjusted + | Following + | Previous + | ModifiedFollowing + | ModifiedPrevious + +/// The various daycount conventions implemented +type public DaycountConvention = + | Actual_365qrt + | Actual_365 + | Actual_360 + | Actual_Actual_ISDA + | Thirty_360_E + | Thirty_360_ISDA + | Thirty_360_Eplus + +/// Module containing date related functionality. +/// This module is partially based on http://www.tryfsharp.org/create/lesscode/DiscountCurve.fsx +module Date = + + // Parses a date from a string if possible + let public date = fun s -> match System.DateTime.TryParse(s) with + | false, _ -> None + | true, value -> Some(value) + + /// Function produces a new date from a tenor and a startdate + /// Two input parameters: tenor = tenor to offset with + /// date = date to offset from + let public offset tenor (date:System.DateTime) = date.AddDays(float tenor.days).AddMonths(tenor.months).AddYears(tenor.years) + + /// Function that produces true if a date is a business day in the given calendar and false otherwise + let public isBusinessDay calendar (date:System.DateTime) = not (calendar.weekendDays.Contains date.DayOfWeek || calendar.holidays.Contains date) + + /// Produces the date immediately following the given date + let private dayAfter (date:System.DateTime) = date.AddDays(1.0) + + /// Produces the date immediately preceding the given date + let private dayBefore (date:System.DateTime) = date.AddDays(-1.0) + + /// All businessdays between two dates (inclusive) given a calendar + let public businessDaysBetween calendar (startDate : System.DateTime) (endDate : System.DateTime) = + let rec builder currDate enddate acc = + if currDate > enddate then acc + else + if isBusinessDay calendar currDate then builder (dayAfter currDate) endDate (currDate :: acc) + else builder (dayAfter currDate) endDate acc + builder (min startDate endDate) (max startDate endDate) [] + |> List.rev + + /// Produces the nearest business day to a date given a specific roll rule to + /// apply and given a calendar that defines business days. In particular, if + /// a day already is a business day, it doesn't get rolled. + /// Inputs are: a rule (type RollRule) that defines the rolling rule + /// a calendar that defines the business days + /// a date to start rolling from + let rec public roll rule calendar date = + if isBusinessDay calendar date then date + else match rule with + | RollRule.Unadjusted -> date + | RollRule.Following -> date |> dayAfter |> roll rule calendar + | RollRule.Previous -> date |> dayBefore|> roll rule calendar + | RollRule.ModifiedFollowing -> + let next = roll RollRule.Following calendar date + if next.Month <> date.Month then roll RollRule.Previous calendar date else next + | RollRule.ModifiedPrevious -> + let prev = roll RollRule.Previous calendar date + if prev.Month <> date.Month then roll RollRule.Following calendar date else prev + + /// Rolls a specific date by n days, taking into a account a given roll rule and a + /// calendar defining business days. If we're rolling 0 days or when we're using + /// RollRule.Actual then it's possible to end up on a non-business days. + /// Inputs are: n - the number of days to roll + /// rule - the rolling rule to apply + /// calendar - the calendar that defines business days + /// date - the startdate from which we're rolling + /// Note that rolling backwards in time is achieved by applying rollBy to a positive + /// number of days to roll, but applying a (Modified) Previous roll rule. + let rec public rollBy n rule calendar (date:System.DateTime) = + match n with | 0 -> date + | x -> match rule with + | RollRule.Unadjusted -> date.AddDays(float x) + | RollRule.Following -> date|> dayAfter + |> roll rule calendar + |> rollBy (x - 1) rule calendar + + | RollRule.Previous -> date|> roll rule calendar + |> dayBefore + |> roll rule calendar + |> rollBy (x - 1) rule calendar + + | RollRule.ModifiedFollowing -> // Roll n-1 days Following + let next = rollBy (x - 1) RollRule.Following calendar date + // Roll the last day ModifiedFollowing + let final = roll RollRule.Following calendar (dayAfter next) + if final.Month <> next.Month then (roll RollRule.Previous calendar next) else final + + | RollRule.ModifiedPrevious -> // Roll n-1 days Previous + let next = rollBy (x - 1) RollRule.Previous calendar date + + // Roll the last day ModifiedPrevious + let final = roll RollRule.Previous calendar (dayAfter next) + if final.Month <> next.Month then roll RollRule.Following calendar next else final + + + let private regex s = new System.Text.RegularExpressions.Regex(s,System.Text.RegularExpressions.RegexOptions.IgnoreCase) + + /// Produces a tenor from an input string. Input strings are concatenations + /// of integers and upper case characters in the set "Y,M,W,D" denoting years + /// months, weeks and days respectively. Not all combinations are parseable. + /// To denote this, the result gets wrapped into an option type is it valid and + /// invalid results are encoded by None. + let public tenor (t : string)= + let pattern = regex ( "(?(-)?[0-9]+)Y(?(-)?[0-9]+)M(?(-)?[0-9]+)W(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)M(?(-)?[0-9]+)W" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)M(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)M" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)W(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)W" + + "|(?(-)?[0-9]+)Y(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)Y" + + "|(?(-)?[0-9]+)M(?(-)?[0-9]+)W(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)M(?(-)?[0-9]+)W" + + "|(?(-)?[0-9]+)M(?(-)?[0-9]+)D" + + "|(?(-)?[0-9]+)M" + + "|(?(-)?[0-9]+)W(?(-)?[0-9]+)D"+ + "|(?(-)?[0-9]+)W" + + "|(?(-)?[0-9]+)D" ) + + let m = pattern.Match(t.Replace(" ","")) + if m.Success then + Some( { years = (if m.Groups.["years"].Success then int m.Groups.["years"].Value else 0); + months = (if m.Groups.["months"].Success then int m.Groups.["months"].Value else 0); + days = match (m.Groups.["weeks"].Success), (m.Groups.["days"].Success) with + | true, true -> 7*(int m.Groups.["weeks"].Value ) + (int m.Groups.["days"].Value) + | true, false -> 7*(int m.Groups.["weeks"].Value ) + | false, true -> (int m.Groups.["days"].Value) + | false, false -> 0}) + else None + + let private monthStringToNumber (s : string) = + match s.ToLower() with + | "jan" | "f" -> 1 |> Some + | "feb" | "g" -> 2 |> Some + | "mar" | "h" -> 3 |> Some + | "apr" | "j" -> 4 |> Some + | "may" | "k" -> 5 |> Some + | "jun" | "m" -> 6 |> Some + | "jul" | "n" -> 7 |> Some + | "aug" | "q" -> 8 |> Some + | "sep" | "u" -> 9 |> Some + | "oct" | "v" -> 10 |> Some + | "nov" | "x" -> 11 |> Some + | "dec" | "z" -> 12 |> Some + | _ -> None + + /// Produces a period from an input string. Examples of inputs recognized are: + /// Cal16, Q413, 13Q4, 3Q15, H114, 14H1, 1H14 Jan15, F14, H14-K14 + /// This function cannot recogize periods that are composed of multiple periods, concatenated by a dash. + /// e.g. Cal16-Cal17 or 13Q1-Q4, H214-Cal15, Jan16-Dec18 all do NOT work + let public period (s : string) = + let s = s.Trim().Replace(" ","").Replace("-","").Replace("/","").Replace(@"\","") + + let fallthrough (y : 'a option) (x : 'a option) = // Probably should be refactored to some generic option functionality + if x.IsSome then x else y + + let yearpattern = regex "^cal(?\d{2})$|^cal(?\d{2})$" + let semiyearpattern = regex "^H(?[1-2])(?\d{2})$|^(?\d{2})H(?[1-2])$|^(?[1-2])H(?\d{2})$|^H(?[1-2])(?\d{4})$|^(?\d{4})H(?[1-2])$|^(?[1-2])H(?\d{4})$" + let quarterpattern = regex "^Q(?[1-4])(?\d{2})$|^(?\d{2})Q(?[1-4])$|^(?[1-4])Q(?\d{2})$|^Q(?[1-4])(?\d{4})$|^(?\d{4})Q(?[1-4])$|^(?[1-4])Q(?\d{4})$" + let monthpattern1 = regex "^(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{2})$|^(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{4})$" + let monthpattern2 = regex "^(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{2})(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{2})$|^(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|okt|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{2})(?(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|okt|nov|dec|f|g|h|j|k|m|n|q|u|v|x|z))(?\d{2})$" + + // todo : all logic regarding baseyear won't be working anymore once we get near to the turn of a century + let baseyear = System.DateTime.Today.Year - (System.DateTime.Today.Year % 100) + + let y = yearpattern.Match(s) + if y.Success then + let year = int y.Groups.["year"].Value + let year = if year < 100 then year + baseyear else year + Some({startDate = System.DateTime(year,1,1);endDate = System.DateTime(year,12,31)}) + else + None + |> fallthrough ( let h = semiyearpattern.Match(s) + if h.Success then + let half = int h.Groups.["period"].Value + let year = int h.Groups.["year"].Value + let year = if year < 100 then year + baseyear else year + let start = System.DateTime(year,1+(half-1)*6,1) + Some({startDate = start; endDate = start.AddMonths(6).AddDays(-1.)}) + else None) + |> fallthrough ( let q = quarterpattern.Match(s) + if q.Success then + let half = int q.Groups.["period"].Value + let year = int q.Groups.["year"].Value + let year = if year < 100 then year + baseyear else year + let start = System.DateTime(year,1+(half-1)*3,1) + Some({startDate = start; endDate = start.AddMonths(3).AddDays(-1.)}) + else None) + |> fallthrough ( let m = monthpattern1.Match(s) + if m.Success then + let month = m.Groups.["period"].Value |> monthStringToNumber + if month.IsSome then + let year = int m.Groups.["year"].Value + let year = if year < 100 then year + baseyear else year + let start = System.DateTime(year,month.Value,1) + Some({startDate = start; endDate = start.AddMonths(1).AddDays(-1.)}) + else None + else None) + + |> fallthrough ( let m = monthpattern2.Match(s) + if m.Success then + let month1 = m.Groups.["period1"].Value |> monthStringToNumber + let month2 = m.Groups.["period2"].Value |> monthStringToNumber + if (month1.IsSome) && (month2.IsSome) then + let year1 = int m.Groups.["year1"].Value + let year2 = int m.Groups.["year2"].Value + let year1 = if year1 < 100 then year1 + baseyear else year1 + let year2 = if year2 < 100 then year2 + baseyear else year2 + let start = System.DateTime(year1,month1.Value,1) + let endd = System.DateTime(year2,month2.Value,1).AddMonths(1).AddDays(-1.) + if start < endd then Some({startDate = start; endDate=endd}) else None + else None + else None) + + /// Calculations the fraction of time between startdate and enddate using a specified daycount convention + let public yearfrac daycount (startdate : System.DateTime ) (enddate : System.DateTime)= + + // Helper method for calcultions with 30/360 methods + let helper30360 (y1,m1,d1) (y2,m2,d2) = + let y1,y2,m1,m2,d1,d2 = float y1, float y2, float m1, float m2, float d1, float d2 + (360.*(y2-y1) + 30.*(m2-m1) + d2-d1)/360. + let islastdayofmonth (d : System.DateTime) = d.AddDays(1.).Month <> d.Month + let isleapyear (d : System.DateTime) = System.DateTime.IsLeapYear(d.Year) + + // Main logic + let helper dc (startd : System.DateTime) (endd : System.DateTime) = + match dc with + | Actual_365qrt -> (endd.Subtract(startd).TotalDays + 1.)/365.25 + | Actual_365 -> (endd.Subtract(startd).TotalDays + 1. )/365. + | Actual_360 -> (endd.Subtract(startd).TotalDays + 1. )/360. + | Actual_Actual_ISDA -> match endd.Year = startd.Year with + | true -> (endd.Subtract(startd).TotalDays + 1.)/(if isleapyear startd then 366. else 365.) + | false -> let addon = max ((float) (endd.Year-startd.Year) - 1.) 0. + let frac1 = (System.DateTime(startd.Year,12,31).Subtract(startd).TotalDays + 1.) /(if isleapyear startd then 366. else 365.) + let frac2 = (endd.Subtract(System.DateTime(endd.Year,1,1)).TotalDays + 1.) / (if isleapyear endd then 366. else 365.) + addon+frac1+frac2 + | Thirty_360_E -> helper30360 (startd.Year, startd.Month, min startd.Day 30) (endd.Year, endd.Month, min endd.Day 30) + | Thirty_360_ISDA -> let startdata = (startd.Year, startd.Month, if (islastdayofmonth startd) then 30 else startd.Day) + let enddata = (endd.Year, endd.Month, if endd.Month <> 2 && (islastdayofmonth endd) then 30 else endd.Day) + helper30360 startdata enddata + | Thirty_360_Eplus -> if endd.Day = 31 then helper30360 (startd.Year,startd.Month,min startd.Day 30) (endd.Year,endd.Month+1,1) + else helper30360 (startd.Year,startd.Month,min startd.Day 30) (endd.Year,endd.Month,endd.Month) + + // Deal with input order + if startdate = enddate then 0. + elif startdate > enddate then -(helper daycount enddate startdate) + else helper daycount startdate enddate \ No newline at end of file diff --git a/BJExcelLib/Finance.JuZhong.fs b/BJExcelLib/Finance.JuZhong.fs new file mode 100644 index 0000000..6e1f6dc --- /dev/null +++ b/BJExcelLib/Finance.JuZhong.fs @@ -0,0 +1,92 @@ +namespace BJExcelLib.Finance + +/// American option approximation according to Ju & Zhong +module JuZhong = + open Blackscholes + open BJExcelLib.Math.NormalDistribution + + /// returns (flag,hAh,S*,lambda(h),X,X',X'',d1(S*)) as an option type + let private getstuff margined flag S K t r cc v = + let inputOk = S > 0. && K >=0. && v > 0. && t > 0. + if not inputOk then None else + let flag' = if flag = Call then 1. else -1. + if margined then (flag',0.,1.,0.,0.,0.,0.,0.) |> Some // if margined, return paramters that will default to europena option value + else + let alpha = 2.*r/(v*v) + let beta = 2.*cc/(v*v) - 1. // compared to JZ paper, this is beta-1 + let h = 1.- exp(-r*t) + let mdivy = cc-r //minus one times the div yield + let commonExp = exp(mdivy*t) + let subexpr0 = v*v*t + let subexpr1 = beta*beta + 8./subexpr0 + let subexpr2 = sqrt(subexpr1) + let subexpr3 = sqrt(beta*beta + 4.*alpha/h) + let lambda, lambda', b = + if r = 0. && flag' = 1. then + 0.5*(flag'*subexpr2-beta), 0. (*not used*), -2./(subexpr0*subexpr0*subexpr1) + else + let lambda' = -flag'*alpha/(h*h*subexpr3) + let lambda = 0.5*(flag'*subexpr3-beta) + lambda, lambda', (1.-h)*alpha*lambda'/(2.*(2.* lambda + beta)) + + let d1Func sStar = (log(sStar/K) + (cc + 0.5*v*v)*t)/(v*sqrt(t)) + let sStarFunc S' = -flag' + flag'*commonExp*cnd(flag'*(d1Func S')) + lambda*(flag'*(S'-K) - (Blackscholes.value margined flag S' K t r cc v).Value)/S' + let d f x = + let step = sqrt BJExcelLib.Math.Constants.machine_epsilon + (f (x + step) - f(x - step))/2./step + + let iter = 300 + let acc = (0.0001 * (min S K)) + let lb = (0.5 * (min S K)) + let ub = (5. * (max S K)) + let sStar = MathNet.Numerics.FindRoots.newtonRaphsonGuess iter acc S sStarFunc (d sStarFunc) + if sStar.IsNone then None + else + let sStar = sStar.Value + let hAh = Blackscholes.value margined flag sStar K t r cc v + |> Option.map (fun ve -> flag'*(sStar-K) - ve) + if hAh.IsNone then None + else + let hAh = hAh.Value + let d1S' = d1Func sStar + let d2S' = d1S' - v*sqrt(t) + let c = + if r = 0. && flag' = 1. then + -flag'/subexpr2*(2./subexpr0 + 2.*b + (sStar*commonExp/(hAh*v))*(nd(d1S')/sqrt(t) + 2.*flag'*mdivy/v)) + else + let subexpr4 = 2.*lambda+beta + let sens = (sStar*exp(cc*t)/r)*(nd(d1S')*v/(2.*sqrt(t))+flag'*mdivy*cnd(flag'*d1S'))+flag'*K*cnd(flag'*d2S') + (h-1.)*alpha/subexpr4*(lambda'/subexpr4 + 1./h + sens/hAh) + + let logSS' = log(S/sStar) + let X, X', X'' = b*logSS'*logSS' + c * logSS', + (2.*b*logSS' + c)/S, + (2.*b*(1.-logSS')-c)/(S*S) + + (flag',hAh,sStar,lambda,X,X',X'',d1S') |> Some + + /// Value of an american option in the Ju & Zhong approximation. + let public value margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag',hAh,sStar,lh,X,_,_,_) -> if flag'*(sStar-S) <= 0. then flag'*(S-K) |> Some + else Blackscholes.value margined flag S K t r b v + |> Option.map (fun ve -> ve + hAh*((S/sStar)**lh)/(1.-X)) + + // TODO: these need to be checked + /// Delta of an american option in the JuZhong approximation + let public delta margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flag',hAh,sStar,lh,X,X',_,d1)-> Blackscholes.value margined flag sStar K t r b v + |> Option.map (fun veS' -> flag'*exp((b-r)*t)*cnd(flag'*d1) + (lh/(S*(1.-X))+X'/((1.-X)*(1.-X)))*(flag'*(sStar-K)-veS')*((S/sStar)**lh)) + + /// Gamma of an american option in the Ju & Zhong approximation + let public gamma margined flag S K t r b v = + match getstuff margined flag S K t r b v with + | None -> None + | Some(flg',hAh,sStr,lh,X,X',X'',d1)-> Blackscholes.value margined flag sStr K t r b v + |> Option.map (fun ve -> flg'*exp((b-r)*t)*nd(flg'*d1) + + (flg'*(sStr-K) - ve)*((S/sStr)**lh) * + ((X'' + (2.*X'*(lh/S+X'/(1.-X))))/((1.-X)*(1.-X)) + (lh*lh-lh)/(S*S*(1.-X)))) + diff --git a/BJExcelLib/Finance.SVI.fs b/BJExcelLib/Finance.SVI.fs new file mode 100644 index 0000000..57c0ee2 --- /dev/null +++ b/BJExcelLib/Finance.SVI.fs @@ -0,0 +1,209 @@ +namespace BJExcelLib.Finance + +/// Contains functions relating to Gatheral's SVI function +module SVI = + open BJExcelLib.Math.Optimization + open MathNet.Numerics.LinearAlgebra.Double + + /// Checks some bounds on SVI raw parameters at for which there surely is arbitrage. Note that + /// if this function indicates that bounds aren't exceeded, there still can be arbitrage. However, + /// it still is worthwhile checking for these. + let public rawparameterssane (a,b,rho,m,sigma) ttm = + ttm > 0. && sigma > 0. && abs(rho) <= 1. && (a+b*sigma*sqrt(1.-rho*rho)) >= 0. && (b*(1.+abs(rho)) < 4./ttm) + + /// Computes total variance using the SVI function given SVI Raw parameters a time to maturity, a forward and a strike as input + let public totalvariance (a,b,rho,m,sigma) fwd (strike : float) = + if strike <= 0. || fwd <= 0. then None + else + let rho = max -1. (min 1. rho) + let k = log(strike/fwd)-m + let res = a + b*(rho*k+sqrt(k*k+sigma*sigma)) + if res >= 0. then Some(res) else None + + /// Computes implied vol using the SVI function given SVI Raw parameters a time to maturity, a forward and a strike as input + /// Notice that the parameters are used to calculate total variance which then gets translated into implied volatility. This + /// is different from some implementations where the parameters model implied variance instead of implied total variance. The + /// difference on the parameters is just a factor T + let public impliedvol (a,b,rho,m,sigma) ttm fwd strike = + totalvariance (a,b,rho,m,sigma) fwd strike |> Option.map(fun x -> sqrt(x/ttm)) + + /// Gives the gradient of implied vol w.r.t a,b,rho, m and sigma. Usefol for some numerical + /// optimization schemes + /// This funciton is easily obtained by seeing impliedvol as sqrt(totalvariance/ttm) + /// and then applying the chain rule + let public impliedvolgradient (a,b,rho,m,sigma) ttm fwd strike = + if strike <= 0. || fwd <= 0. || ttm < 0. then None + else + let rho = max -1. (min 1. rho) + let k = log(strike/fwd)-m + let tmp = impliedvol (a,b,rho,m,sigma) ttm fwd strike |> Option.map (fun x -> 0.5/(x*ttm)) + let tmp1 = totalvariance (0.,1.,rho,m,sigma) fwd strike + let tmp2 = totalvariance (0.,1.,0.,m,sigma) fwd strike + if tmp.IsSome && tmp1.IsSome && tmp2.IsSome then + ( tmp.Value, tmp.Value*(tmp1.Value), tmp.Value*b*k, + -tmp.Value*b*(rho+k/tmp2.Value),tmp.Value*b*sigma/tmp2.Value + ) |> Some + else None + + /// Converts SVI raw parameters to SVI jump-wing parameters + let public rawtojumpwing (a,b,rho,m,sigma) ttm = + let helper1 = sqrt(m*m+sigma*sigma) + let rho = max -1. (min 1. rho) + let wt = (a+b*(-rho*m+helper1)) + if ttm <= 0. || wt <= 0. || helper1 = 0. then None + else + let vt,helper2 = wt/ttm,b/sqrt(wt) + let phit,pt,ct,vtilde = 0.5*helper2*(rho-m/helper1),helper2*(1.-rho), helper2*(1.+rho),(a+b*sigma*sqrt(1.-rho*rho))/ttm + Some(vt,phit,pt,ct,vtilde) + + /// Converts SVI jump-wing parametres to SVI raw parameters + let public jumpwingtoraw (vt,phit,pt,ct,vtilde) ttm = + if ttm <= 0. || vt <= 0. || vtilde <= 0. then None + else + let helper1 = sqrt(vt*ttm) + let b = 0.5*helper1*(ct+pt) + let rho = 1.-pt*helper1/b + let helper2,beta = sqrt(1.-rho*rho), rho - 2.*phit*helper1/b + match beta = 0. with + // m = 0 case, not stated explicitly in Gatheral paper, but easily proven that this is equivalent + // In Gatheral's paper, the definitions of sigma form a linear system, here the direct solution of that system is used. + | true -> let m,sigma = 0., (vt-vtilde)*ttm/(b*(1.-helper2)) + let a = vtilde*ttm-b*sigma*helper2 + Some(a,b,rho,m,sigma) + // Default case + | false -> let sign x = sign(x) |> float + if abs(beta) > 1. then None + else + let alpha = sign(beta)*sqrt(-1. + 1./(beta*beta)) + let m = (vt-vtilde)*ttm/(b*(-rho+ sign(alpha)*sqrt(1.+alpha*alpha)-alpha*helper2)) + let sigma = alpha*m + let a = vtilde*ttm-b*sigma*helper2 + Some(a,b,rho,m,sigma) + + + /// Calibrates SVI Raw parameters according to the methodology described in "Quasi-Explicit Calibration of Gatheral's SVI model" + /// smin is the minimum value allowed for the sigma parameter, mguess is the intial guess for m and sguess is the initial guess for sigma. + /// the ttm is the time to maturity for the input given, the forward is the forward of the undelrying for the given maturity and points is + /// an array of tuples where the first element is a weight, the second element is a strike and the third element is the volatility at that strike. + let public calibrate (checkValid,smin) ttm forward points = + // If the number of points provided is very small, this doesn't work. In that case, the + // default paramters below are used. If the initial value calculator gets enough points + // that initial value is used. + let DEFAULT_EST_M = 0. + let DEFAULT_EST_S = 0.1 + + let smin = max 0. smin + let third (_,_,x) = x + let points = points |> Array.map (fun (w,strike,vol) -> (w,log(strike/forward),vol*vol*ttm)) + let maxvar = points |> Array.maxBy third |> third + + /// Checks whether given (transformed zeliade) parameters fall within the boundaries of the region that is potentially arbitrage-free + /// This function returning true does not imply that parameters are arbitragefree, but if the function returns false, the parameters + /// are definitely not arbitrage-free. + let isValid s (a,c,d) = + not checkValid || ( 0. <= c && c <= 4. * s && + abs(d) <= min c (4.*s-c) && + 0. <= a && a <= maxvar) + + /// Converts zeliade parameters into SVI (total variance) parameters + let zeliadeToSVI (m,s) (a,c,d) = if c = 0. then (a,0.,0.,m,s) else (a,c/s,d/c,m,s) + + + /// Provides an initial guess for m and s. Based on stuff from Axel Vogt, but slightly adapted since I encountered + /// negative sInitial on some test inputs. + let initialGuess = + let size = -1 + Array.length points + if size < 3 then (DEFAULT_EST_M,DEFAULT_EST_S) + else + let x,y = points |> Array.map(fun (_,x,v) -> x,v) + |> Array.unzip + let calcA n = (x.[n]*y.[n+1] - y.[n]*x.[n+1])/(x.[n]-x.[n+1]) + let calcB n = (y.[n+1]-y.[n])/(x.[n+1]-x.[n]) |> fun x -> abs(x) + + let aL, bL,aR, bR = calcA 0, -(calcB 0), calcA (size-1), calcB (size-1) + let recurring = if bR=bL then 0. else bL*(aR-aL)/(bL-bR) + //let aInitial = aL + recurring // Not needed here, but given just for convenience so that some initial guess for all parameters is here + let rInitial = if bR=bL then 0. else (bL+bR)/(bR-bL) + let bInitial = 0.5*(bR-bL) + let mInitial = recurring/(bInitial * (rInitial-1.)) + let sigmaInitial = -(-(Array.min y) + aL + recurring) / (bInitial * sqrt( abs (1. - rInitial * rInitial) )) |> abs + mInitial,(max smin sigmaInitial) + + /// For given input m and s, this function calculates the returns a tuple consisting of all the SVI parameters + /// corresponding to the best "Zeliade solution" found and the total error of the parameters + let zeliadeSol (m,s) = + let points = points |> Array.map (fun (w,str,v) -> (abs(w),(str-m)/s,v)) + let sumW = points |> Array.sumBy (fun (wgt,_,_) -> wgt) + let errorFunc (a,c,d) = + points |> Array.sumBy (fun (wgt,y,var) -> let err = a + d*y + c * sqrt(y*y+1.) - var + wgt*err*err) + |> fun sum -> if sumW = 0. then 0. else sum/sumW + |> sqrt + + // OK the below is a bit of a mess, but it's an efficient mess. Basically a number of numerical expressions occur in the + // linear system to be solved. The approach taken below is calculate them all as once in a tuple, while folding over + // the points list. A few helper variables that reoccur in multiple calculations are updated and then the tuple is + // updated elementwise by just summing. + let w, wy, wsqr, wv, wy2, wysqr ,wvy, wvsqr = + points |> Array.fold (fun (acc1,acc2,acc3,acc4,acc5,acc6,acc7,acc8) (wgt,y,var) -> + let wy',wv',sqrh = wgt*y,wgt*var,sqrt(y*y+1.) + (acc1 + wgt, acc2 + wy',acc3 + wgt*sqrh, acc4 + wv', + acc5 + wy'*y,acc6 + wy'*sqrh,acc7+ wy' * var, acc8 + wv' * sqrh) + ) (0.,0.,0.,0.,0.,0.,0.,0.) + + /// Takes an input vector x, the first of which repersents a matrix (in a list) and the second of which represents a vector (as a list) + /// and solves the linear system defined by them. Since the inputs are intedend to be the equations defining the optimal values for a,d and + /// c as defined by zeliade, they then get changed order to coincide with the order of SVI arguments in all other functions in this module. + let solveSystem x = x |> fun (A,b) -> matrix A, vector b + |> fun (A,b) -> A.LU().Solve(b).ToArray() + |> fun arr -> if Array.length arr = 0 then (0.,0.,0.) else (arr.[0],arr.[2],arr.[1]) // Go from [|a;d;c|] to (a,c,d) + + /// Transforms a tuple of a,c,d parametes i a tuple of all parameters, joined with the error corresponding to those parametes. + let output tuple = zeliadeToSVI (m,s) tuple, errorFunc tuple + + let globalSol = solveSystem ([[w;wy;wsqr]; [wy; wy2; wysqr]; [wsqr; wysqr; w + wy2]], [wv; wvy; wvsqr]) + if not (isValid s globalSol) then + /// Finds the solutions for which one of the three parameters is at its bounds + let facetSols = + [[[1.;0.;0.];[wy; wy2; wysqr]; [wsqr; wysqr; w + wy2]], [0.; wvy; wvsqr]; // system for a = 0 + [[1.;0.;0.];[wy; wy2; wysqr]; [wsqr; wysqr; w + wy2]], [maxvar; wvy; wvsqr]; // system for a = maxvar + [[w;wy;wsqr]; [0.;-1.;1.]; [wsqr; wysqr; w + wy2]], [wv; 0.; wvsqr]; // system for d = c + [[w;wy;wsqr]; [0.; 1.;1.]; [wsqr; wysqr; w + wy2]], [wv; 0.; wvsqr]; // system for d = -c + [[w;wy;wsqr]; [0.; 1.;1.]; [wsqr; wysqr; w + wy2]], [wv; 4.*s; wvsqr]; // system part one for |d| <= 4*s-c + [[w;wy;wsqr]; [0.;-1.;1.]; [wsqr; wysqr; w + wy2]], [wv; 4.*s; wvsqr]; // system part two for |d| <= 4*s-c + [[w;wy;wsqr]; [wy; wy2; wysqr]; [0.;0.;1.]], [wv; wvy; 0.]; // system for c = 0 + [[w;wy;wsqr]; [wy; wy2; wysqr]; [0.;0.;1.]], [wv; wvy; 4.*s]] // system for c = 4*s + |> List.map solveSystem + |> List.filter (isValid s) + |> List.map output + + /// Finds the solution for which two of the three parameters are at its bounds. The Zeliade whitepaper speaks about + /// doing one-dimensinal search to find the minimum, but since fixing 2 out of the three parameters just leads to + /// a quadratic equation in the third, finding the global minimum and then cutting it off if it falls outside the + /// valid boundaries, works. + let cornerOrLineSols = + [[[w;wy;wsqr]; [0.;1.;0.];[0.;0.;1.]],[wv; 0.; 0.]; // c = 0, implies d = 0, find optimal a + [[w;wy;wsqr]; [0.;1.;0.];[0.;0.;1.]],[wv; 0.; 4.*s ]; // c = 4s, implied d = 0, find optimal a + [[1.;0.;0.]; [0.;-1.;1.]; [wsqr; wysqr; w + wy2]],[0.;0.;wvsqr]; // a = 0, d = c, find optimal c + [[1.;0.;0.]; [0.; 1.;1.]; [wsqr; wysqr; w + wy2]],[0.;0.;wvsqr]; // a = 0, d = -c, find optimal c + [[1.;0.;0.]; [0.; 1.;1.]; [wsqr; wysqr; w + wy2]],[0.; 4.*s;wvsqr]; // a = 0, d = 4s-c, find optimal c + [[1.;0.;0.]; [0.;-1.;1.]; [wsqr; wysqr; w + wy2]],[0.; 4.*s;wvsqr]] // a = 0, d = c-4s, find optimal c + |> List.map solveSystem + |> List.map (fun (a,c,d) -> let dbound = min c (4.*s-c) + (max 0. (min maxvar a)),(max 0. (min c 4.*s)), max -dbound (min d dbound)) // Cut off at boundary incase we're outside + |> List.filter (isValid s) // There will alwasy be at least two solutions here, since c=d=0 will lead to a=0 or a=maxvar and both are valid. + |> List.map output + + facetSols @ cornerOrLineSols |> List.minBy snd // Because cornerOrLineSols always contains at least one solution, this array is never empty + + else globalSol |> output + + + // TODO: see if this optimization can be improved upon, especially given that the gradient is known explicity. + let errf (arr : float [])= (arr.[0],arr.[1]) |> zeliadeSol |> snd + let lb,ub = [|None;Some(smin)|],[|None;None|] + minimize errf (initialGuess |> fun (m,s) -> [|m;s|]) lb ub + |> fun arr -> arr.[0],arr.[1] + |> zeliadeSol + //zeliadeSol initialGuess //These are just the parameters for a smart intial guess. Typically perform not too shabby, but optimization can still lead to good improvements. + //Just showing it here because it could be useful at some point. \ No newline at end of file diff --git a/BJExcelLib/Math.Constants.fs b/BJExcelLib/Math.Constants.fs new file mode 100644 index 0000000..0499f3c --- /dev/null +++ b/BJExcelLib/Math.Constants.fs @@ -0,0 +1,17 @@ +namespace BJExcelLib.Math + +/// Provides and wraps some mathematical constants +[] +module Constants = + + /// Wraps pi + let public pi = System.Math.PI + + /// Provides the machine_epsilon (smallest float x such that 1+x != x) + let public machine_epsilon = + let rec helper input = + let x = input/2. + match 1.+ x with | 1. -> input + | _ -> helper x + helper 1. + \ No newline at end of file diff --git a/BJExcelLib/Math.Interpolation.fs b/BJExcelLib/Math.Interpolation.fs new file mode 100644 index 0000000..e59d2b0 --- /dev/null +++ b/BJExcelLib/Math.Interpolation.fs @@ -0,0 +1,217 @@ +namespace BJExcelLib.Math + +/// Contains functions for general interpolation and curve fitting. +module Interpolation = + open MathNet.Numerics.Fit + + + + /// Helper function that peforms some typical preprocessing needed for a lot of interpolation functions + let private processTupleArray xydata = + xydata |> Seq.distinctBy fst + |> Seq.sortBy fst + |> Array.ofSeq + |> Array.unzip + + /// Piecewise constant interpolation of given (x,y) input tuples + let public interpolatorPiecewiseConstant (xydata : (float*float) [])= + if Array.length xydata = 0 then None + else + let xdata, ydata = processTupleArray xydata + + //xdata,ydata go into the closure. As a result, they are evaluated only once,but for big arrays + // this might lead to a lot of memory consumption? Probably not an issue for my intended usage. + Some( fun x -> let ix = xdata |> Array.tryFindIndex (fun el -> el > x) + |> FSharpx.Option.getOrElse (Array.length xdata) + |> max -1 + ydata.[ix+1]) + + /// Piecewise linear interpolation of given (x,y) input data + let public interpolatorPiecewiseLinear (xydata : (float*float) []) = + if Array.length xydata < 2 then interpolatorPiecewiseConstant xydata + else + let xdata, ydata = processTupleArray xydata + Some (fun x -> let ix = xdata |> Array.tryFindIndex(fun el -> el > x) + |> Option.map (fun z-> (z-1,z)) + |> FSharpx.Option.getOrElse (-2 + Array.length xdata, -1 + Array.length xdata) + |> fun (u,v) -> if u = -1 then (0,1) else (u,v) + let x1,x2, y1, y2 = xdata.[fst ix], xdata.[snd ix], ydata.[fst ix], ydata.[snd ix] + y1 + (y2-y1)/(x2-x1)*(x-x1)) + + /// Piecewise linear interpolation of given (x,y) input data + let public interpolatorPiecewiseLoglinear (xydata : (float*float) []) = + if Array.length xydata < 2 then interpolatorPiecewiseConstant xydata + else + let xdata, ydata = processTupleArray xydata + Some (fun x -> let ix = xdata |> Array.tryFindIndex(fun el -> el > x) + |> Option.map (fun z-> (z-1,z)) + |> FSharpx.Option.getOrElse (-2 + Array.length xdata, -1 + Array.length xdata) + |> fun (u,v) -> if u = -1 then (0,1) else (u,v) + let x1,x2, y1, y2 = xdata.[fst ix], xdata.[snd ix], ydata.[fst ix], ydata.[snd ix] + y1*((y2/y1)**((x-x1)/(x2-x1)))) + + /// Creates an akima spline that interpolators the given input (x,y) data + let public interpolatorAkimaSpline xydata = + if Array.length xydata < 5 then None + else + let xdata,ydata = processTupleArray xydata + let ip = MathNet.Numerics.Interpolation.Algorithms.AkimaSplineInterpolation(xdata,ydata) + Some (fun x -> ip.Interpolate x) + + /// Creates a natural cubic spline that interpolators given input (x,y) data + let public interpolatorNaturalSpline xydata = + if Array.length xydata <= 1 then interpolatorPiecewiseConstant xydata + else + let xdata,ydata = processTupleArray xydata + let ip = MathNet.Numerics.Interpolation.Algorithms.CubicSplineInterpolation(xdata,ydata) + Some (fun x -> ip.Interpolate x) + + /// Creates a clamped cubic spline that inperpolates given input (x,y) data and has specified derivatives at it's endpoints. + let public interpolatorClampedSpline leftD rightD xydata = + if Array.length xydata <= 1 then interpolatorPiecewiseConstant xydata + else + let xdata,ydata = processTupleArray xydata + try // Not sure if this can ever fail for any inputs, try catch block isn't expensive here as long as no error occurs. + let ip = MathNet.Numerics.Interpolation.Algorithms.CubicSplineInterpolation(xdata,ydata,MathNet.Numerics.Interpolation.SplineBoundaryCondition.FirstDerivative,leftD, + MathNet.Numerics.Interpolation.SplineBoundaryCondition.FirstDerivative,rightD) + Some (fun x -> ip.Interpolate x) + with _ -> None + + /// Creates a hermite spline that interpolators given input (x,y,y') data + let public interpolatorHermiteSpline xyy'data = + if Array.length xyy'data = 0 then None + elif Array.length xyy'data = 1 then + let x1, y1, d1 = xyy'data.[0] + Some(fun x -> y1 + d1*(x-x1)) + else + let xdata, ydata, y'data = xyy'data |> Seq.distinctBy (fun (a,_,_) -> a) + |> Seq.sortBy (fun (a,_,_) -> a) + |> Array.ofSeq + |> Array.unzip3 + try + let ip = MathNet.Numerics.Interpolation.Algorithms.CubicHermiteSplineInterpolation(xdata,ydata,y'data) + Some(fun x -> ip.Interpolate x) + with _ -> None + + + /// Creates a function that provides a linear least-square fit through given (x,y) input tuples + let public fitLinear xydata = + if Array.length xydata <= 1 then interpolatorPiecewiseConstant xydata + else + let xdata, ydata = xydata |> Array.unzip + Some(lineF xdata ydata) + + /// Creates a function that provides a polynomial least-square fit with a degree that is at most equal to "degree" thorugh given (x,y) input tuples + let public fitPolynomial degree xydata = + if degree >= 0 && Array.length xydata > degree then + let xdata, ydata = xydata |> Array.unzip + Some(polynomialF degree xdata ydata) + else None + + + + /// Calculates derivative values using the Arithmetic Mean Method (Wang 2006). Input are xdata and ydata arrays that are assumed to have been preprocessed to be sorted by x-value. + let private AMMDerivatives xdata ydata = + let n = Array.length xdata + if n <> Array.length ydata then raise (new System.ArgumentOutOfRangeException("Arrays of x-values and y-values should have same size")) + match n with + | 0 -> [||] + | 1 -> [|0.|] + | 2 -> [|(ydata.[1]-ydata.[0])/(xdata.[1]-xdata.[0])|] + | _ -> let h,D = Seq.zip xdata ydata |> Seq.windowed 2 + |> Seq.map (fun [| (x1,y1); (x2,y2) |] -> x2-x1,(y2-y1)/(x2-x1)) + |> Seq.toArray + |> Array.unzip + [| for i in 0 .. n-1 do + if i = 0 then yield D.[0] + (D.[0]-D.[1])*h.[0]/(h.[0]+h.[1]) + elif i = n-1 then yield D.[i-1] + (D.[i-1]-D.[i-2])*h.[i-1]/(h.[i-1] + h.[i-2]) + else yield (h.[i]*D.[i-1] + h.[i-1]*D.[i])/(h.[i-1]+h.[i]) |] + + /// Calculates derivative values using the Kruger method which prevents overshoot problems. + let private krugerDerivatives xdata ydata = + let n = Array.length xdata + if n <> Array.length ydata then raise (new System.ArgumentOutOfRangeException("Arrays of x-values and y-values should have same size")) + match n with + | 0 -> [||] + | 1 -> [|0.|] + | 2 -> [|(ydata.[1]-ydata.[0])/(xdata.[1]-xdata.[0])|] + | _ -> let h,D = Seq.zip xdata ydata |> Seq.windowed 2 + |> Seq.map (fun arr -> let (x1,y1) = arr.[0] + let (x2,y2) = arr.[1] + x2-x1,(y2-y1)/(x2-x1)) + |> Seq.toArray + |> Array.unzip + let res = [| for i in 0 .. n-1 do + if i = 0 || i=n-1 then yield 0. + else yield 2./(1./D.[i-1] + 1./D.[i]) |] + res.[0] <- 1.5*D.[0] - 0.5*res.[1] + res.[n-1] <- 1.5*D.[n-2] - 0.5*res.[n-2] + res + + /// Calculates derivative values using the Fritsch-Butland method which ensures local monoticity + let private FBDerivatives xdata ydata = + let n = Array.length xdata + if n <> Array.length ydata then raise (new System.ArgumentOutOfRangeException("Arrays of x-values and y-values should have same size")) + match n with + | 0 -> [||] + | 1 -> [|0.|] + | 2 -> [|(ydata.[1]-ydata.[0])/(xdata.[1]-xdata.[0])|] + | _ -> let h,D = Seq.zip xdata ydata |> Seq.windowed 2 + |> Seq.map (fun arr -> let (x1,y1) = arr.[0] + let (x2,y2) = arr.[1] + x2-x1,(y2-y1)/(x2-x1)) + |> Seq.toArray + |> Array.unzip + let res = [| for i in 0 .. n-1 do + if i = 0 || i=n-1 then yield 0. + else + let dmin = min D.[i] D.[i-1] + let dmax = max D.[i] D.[i-1] + if dmax = 0. && dmin = 0. then yield 0. else yield 3.*dmin*dmax/(dmax+2.*dmin) |] + res.[0] <- ((2.*h.[0]+h.[1])*D.[0] - h.[0]*D.[1])/(h.[0]+h.[1]) + res.[n-1] <- ((2.*h.[n-2] + h.[n-3])*D.[n-2] - h.[n-2]*D.[n-3])/(h.[n-2]+h.[n-3]) + res + + /// Calculates derivative values using a geometric mean approach + let private GMDerivatives xdata ydata = + let n = Array.length xdata + if n <> Array.length ydata then raise (new System.ArgumentOutOfRangeException("Arrays of x-values and y-values should have same size")) + match n with + | 0 -> [||] + | 1 -> [|0.|] + | 2 -> [|(ydata.[1]-ydata.[0])/(xdata.[1]-xdata.[0])|] + | _ -> let h,D = Seq.zip xdata ydata |> Seq.windowed 2 + |> Seq.map (fun arr -> let (x1,y1) = arr.[0] + let (x2,y2) = arr.[1] + x2-x1,(y2-y1)/(x2-x1)) + |> Seq.toArray + |> Array.unzip + let D31 = (ydata.[2]-ydata.[0])/(xdata.[2]-xdata.[0]) + let Dnn = (ydata.[n-1]-ydata.[n-3])/(xdata.[n-1]-xdata.[n-3]) + [| for i in 0 .. n-1 do + if i = 0 then + if D31 = 0. || D.[0] = 0. then yield 0. + else + let frac = h.[0]/h.[1] + yield (D.[0]**(1.+frac))*(D31**(-frac)) + elif i = n-1 then + if Dnn = 0. || D.[n-2] = 0. then yield 0. + else + let frac = h.[n-2]/h.[n-3] + yield (D.[n-2]**(1.+frac))*(Dnn**(-frac)) + else + if D.[i] = 0. || D.[i-1] = 0. then yield 0. + else + yield (D.[i-1]**(h.[i]/(h.[i-1]+h.[i])))*(D.[i]**(h.[i-1]/(h.[i-1]+h.[i]))) |] + + /// Creates a Fritsch-Butland spline, which I think (todo: check) is monotone + let public interpolatorFritschButlandSpline xydata = + if Array.length xydata <= 2 then interpolatorNaturalSpline xydata + else + let xdata,ydata = processTupleArray xydata + let y'data = FBDerivatives xdata ydata + Array.zip3 xdata ydata y'data |> interpolatorHermiteSpline + + + // todo : dougherty/hyman modification of arbitrary derivative values to produce monotone splines + \ No newline at end of file diff --git a/BJExcelLib/Math.Interpolation2D.fs b/BJExcelLib/Math.Interpolation2D.fs new file mode 100644 index 0000000..b9d72fe --- /dev/null +++ b/BJExcelLib/Math.Interpolation2D.fs @@ -0,0 +1,33 @@ +namespace BJExcelLib.Math + +/// Contains functions for general interpolation and curve fitting. +module Interpolation2D = + open BJExcelLib.Math.Interpolation + + let flatten (A:'a[,]) = A |> Seq.cast<'a> + + let getColumn c (A:_[,]) = flatten A.[*,c..c] |> Seq.toArray + + let getRow r (A:_[,]) = flatten A.[r..r,*] |> Seq.toArray + let public build2DInterpolation (ipfunc : (float*float) [] -> (float -> float) option) (xkeys : float option []) (ykeys : float option []) (table : float option [,])= + let nrows = Array.length xkeys + let ncols = Array.length ykeys + fun x y -> + /// For every row of the table of x values, interpolate the current row at the value y + let xtable = + [| for r in 0 .. nrows - 1 do + if xkeys.[r].IsSome then + let rowdata = table |> getRow r + let rowIp = Array.zip ykeys rowdata |> Array.filter (fun (x,y) -> x.IsSome && y.IsSome) + |> Array.map (fun (x,y) -> x.Value, y.Value) + |> ipfunc + yield rowIp|] + /// Create a table of the form xkey,interpolated y value and interpolate this table + |> Array.mapi (fun r f -> xkeys.[r], if f.IsSome then Some(f.Value y) else None) + |> Array.filter (fun (r,rowIp) -> r.IsSome && rowIp.IsSome) + |> Array.map (fun (r,rowIp) -> r.Value,rowIp.Value) + + ipfunc xtable |> fun z -> match z with | Some(f) -> (f x) |> Some + | None -> None + + \ No newline at end of file diff --git a/BJExcelLib/Math.Optimization.fs b/BJExcelLib/Math.Optimization.fs new file mode 100644 index 0000000..b048efc --- /dev/null +++ b/BJExcelLib/Math.Optimization.fs @@ -0,0 +1,23 @@ +namespace BJExcelLib.Math + +/// Contains some optimization functions. These are homebrewn until an implementation in MathNet.Numerics is available. The reason +/// for that is that I would like to avoid using multiple libraries for different math functionality. +module Optimization = + + let private DIFFERENTATION_STEPSIZE = machine_epsilon |> sqrt + + // TODO: see if I can get rid of using alglib here, would like to avoid the dependency altogether if possible + let public minimize f initial lb ub = + let lb = lb |> Array.map (FSharpx.Option.getOrElse System.Double.NegativeInfinity) + let ub = ub |> Array.map (FSharpx.Option.getOrElse System.Double.PositiveInfinity) + + let alglibfvec = new alglib.ndimensional_fvec( fun x func obj -> func.[0] <- f x ) + let epsg,epsf,epsx,maxits = 0.000000001, 0. ,0.,0 + + let sol = initial + let state = alglib.minlmcreatev(Array.length sol, sol, 0.0001) + do alglib.minlmsetcond(state, epsg, epsf, epsx, maxits) + do alglib.minlmsetbc(state,lb,ub) + do alglib.minlmoptimize(state, alglibfvec, null, null) + let final, rep = alglib.minlmresults(state) + final \ No newline at end of file diff --git a/BJExcelLib/NormalDistribution.fs b/BJExcelLib/NormalDistribution.fs new file mode 100644 index 0000000..8f5d5f4 --- /dev/null +++ b/BJExcelLib/NormalDistribution.fs @@ -0,0 +1,88 @@ +namespace BJExcelLib.Math + +/// Module with functions for the normal distribution (univariate and bivariate at the moment) +module public NormalDistribution = + + // Other internal helper functions, self explanatory what they do + let private dist = MathNet.Numerics.Distributions.Normal() + let public nd x = dist.Density x + let public cnd x = dist.CumulativeDistribution x + let public cndc x = 1. - cnd x + + + /// Density of a bivariate normal distribution where the first marginal distribution is N(m1,s1^2) distributed and the second + /// marginal is N(m2,s2^2). The correlation between the variables is rho. The distribution is evaluated at X1=x1 and X2=x2. + let public pdf2 (m1,s1) (m2,s2) rho x1 x2 = + let x1 = (x1-m1)/s1 + let x2 = (x2-m2)/s2 + let rfac = (1.-rho*rho) + exp(-0.5*(x1*x1-2.*rho*x1*x2+x2*x2)/rfac)/(rfac*s1*s2) + + + /// Some constants for the below bivariate cumulative distribution function + let private weights1 = [ 0.17132449237917; 0.17132449237917;0.360761573048138; 0.360761573048138;0.46791393457269;0.46791393457269 ] + let private values1 = [ 0.966234757101576;0.033765242898424;0.830604693233133; 0.169395306766867;0.619309593041598;0.380690406958402 ] + let private weights2 = [ 0.0471753363865118; 0.0471753363865118; 0.106939325995318; 0.106939325995318;0.160078328543346; 0.160078328543346; 0.203167426723066; 0.20316742672306; 0.233492536538355; 0.233492536538355; 0.249147045813403; 0.249147045813403] + let private values2 = [ 0.99078031712336; 0.00921968287664;0.95205862818524; 0.04794137181476;0.88495133709715;0.11504866290285;0.79365897714331;0.20634102285669;0.68391574949909;0.31608425050091;0.56261670425574;0.43738329574427] + let private weights3 = [0.0176140071391521; 0.0176140071391521; 0.0406014298003869;0.0406014298003869; 0.0626720483341091; 0.0626720483341091;0.0832767415767048; 0.0832767415767048; 0.1019301198172400;0.1019301198172400; 0.1181945319615180; 0.1181945319615180;0.1316886384491770; 0.1316886384491770; 0.1420961093183820;0.1420961093183820; 0.1491729864726040; 0.1491729864726040;0.1527533871307260; 0.1527533871307260] + let private values3 = [ 0.99656429959255; 0.00343570040745; 0.98198596363896;0.01801403636104; 0.95611721412566; 0.04388278587434;0.91955848591111; 0.08044151408889; 0.87316595323008;0.12683404676992; 0.81802684036326; 0.18197315963674;0.75543350097541; 0.24456649902459; 0.68685304435771;0.31314695564229; 0.61389292557082; 0.38610707442918;0.53826326056675; 0.46173673943325 ] + let private values4 = [ 0.000047216149159;3.972561612889520;0.001298022024068;3.857185731135710;0.007702795584372;3.656640508589690;0.025883348755653;3.382351236044530;0.064296126805960;3.050028889390040;0.136503050785829;2.658650279846430;0.239251089780572;2.282719097583890;0.392244063312137;1.887068418173820;0.596314691697034;1.507458096263630;0.984753258857668;1.015363867311070 ] + + + /// Cumulative bivariate normal distribution, adapted from Haug's Option Pricing formulas, + /// who credits Graeme West, who implemented an algorithm of Genze. (mi,si) are the mean and + /// standard deviation of the i-th variable, rho is the correlation and x1 and x2 are the + /// points where the cumulative distribution is evaluated at. + let public cdf2 (m1,s1) (m2,s2) rho x1 x2 = + let x = (x1-m1)/s1 + let y = (x2-m2)/s2 + + let rho = min 1. (max -1. rho) + let h = -x + let k = if rho < -0.925 then y else -y + let hk = h * k + match rho with + | x when x = 0. -> cnd(-h) * cnd(-k) + | x when rho = 1. -> cnd(-(max h k)) + | x when rho = -1. -> if k > h then cnd(k)-cnd(h) else 0. + | x when abs(x) < 0.925 -> let weights, values = match x with + | r when abs(r) < 0.3 -> weights1,values1 + | r when abs(r) < 0.75 -> weights2,values2 + | _ -> weights3,values3 + let hs = 0.5*(h*h+k*k) + let asr_ = System.Math.Asin(rho) + values |> List.map(fun z -> let sn = System.Math.Sin(asr_ * z) + exp((sn*hk-hs)/(1.-sn*sn)) ) + |> List.zip weights + |> List.sumBy (fun (w,v) -> w*v) + |> fun x -> x * asr_/(4.*System.Math.PI) + cnd(-h) *cnd(-k) + + | _ -> // 0.925 < abs(x) < 1 + let ass = (1.-rho)*(1.+rho) + let A = sqrt(ass) + let bs = (h-k)*(h-k) + let c = (4.-hk) / 8. + let d = (12.-hk)/16. + let asr_ = -0.5*(bs / ass + hk) + let BVN = if asr_ <= -100. then 0. + else A*exp(asr_)*(1.-c*(bs-ass)*(1.-0.2*d*bs) / 3. + 0.2*c* d*ass*ass) + let BVN = if -hk >= 100. then BVN + else + let B = sqrt(bs) + BVN - sqrt(2.*System.Math.PI)*exp(-0.5*hk)*cnd(-B/A)*B*(1.-c*bs*(1.-0.2*d*bs)/3.) + + let A = 0.5*A + let A2 = A*A + + values4 |> List.zip weights3 + |> List.sumBy(fun (w,x) -> let xs = A2*x + let asr_ = -0.5*(bs / xs + hk) + if asr_ < -100. then 0. + else + let rs = sqrt(1.-xs) + A*w*exp(asr_)*(exp(-hk*(1.-rs)/(2.*(1.+rs)))/rs - (1.+c*xs*(1.+d*xs)))) + |> fun x -> let BVN = -(BVN+x)/(2.*System.Math.PI) + match rho > 0. with + | true -> BVN + cnd(-(max h k)) + | false -> if k > h then -BVN + cnd(k)-cnd(h) else -BVN + diff --git a/BJExcelLib/UDF.American.fs b/BJExcelLib/UDF.American.fs new file mode 100644 index 0000000..92f808d --- /dev/null +++ b/BJExcelLib/UDF.American.fs @@ -0,0 +1,67 @@ +namespace BJExcelLib.UDF + +/// Contains UDFs for american option approximations functions +module public American= + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + open BJExcelLib.Finance + + /// Validates black-scholes input parameters + let private validateBS S K v r b T flag marg = + let S = S |> validateFloat |> Option.bind (fun x -> if x < 0. then None else Some(x)) + let K = K |> validateFloat |> Option.bind (fun x -> if x < 0. then None else Some(x)) + let v = v |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + let r = r |> validateFloat |> FSharpx.Option.getOrElse 0. + let b = b |> validateFloat |> FSharpx.Option.getOrElse r + let T = T |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + let flag = flag |> validateString + |> Option.bind (fun (x : string)-> let z = (x.ToUpper()) + if z.Length = 0 then None + else + let z = z.[0] + if z = 'C' then Some(Call) elif z = 'P' then Some(Put) else None ) + |> FSharpx.Option.getOrElse (if S <= K then Call else Put) + let marg = marg |> validateBool |> FSharpx.Option.getOrElse false + if S.IsSome && K.IsSome && T.IsSome && v.IsSome then Some(S.Value,K.Value,v.Value,r,b,T.Value,flag,marg) else None + + + [] + let UDFJZValue ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> JuZhong.value marg flag S K T r b v) + |> valueToExcel + +(*TODO: these need to be checked first + [] + let UDFJZDelta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> JuZhong.delta marg flag S K T r b v) + |> valueToExcel + + [] + let UDFJZGamma ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> JuZhong.gamma marg flag S K T r b v) + |> valueToExcel + *) diff --git a/BJExcelLib/UDF.Blackscholes.fs b/BJExcelLib/UDF.Blackscholes.fs new file mode 100644 index 0000000..c41b3da --- /dev/null +++ b/BJExcelLib/UDF.Blackscholes.fs @@ -0,0 +1,294 @@ +namespace BJExcelLib.UDF + +/// Contains UDFs for black-scholes functions +module public Blackscholes= + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + open BJExcelLib.Finance + + /// Validates black-scholes input parameters + let private validateBS S K v r b T flag marg = + let S = S |> validateFloat |> Option.bind (fun x -> if x < 0. then None else Some(x)) + let K = K |> validateFloat |> Option.bind (fun x -> if x < 0. then None else Some(x)) + let v = v |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + let r = r |> validateFloat |> FSharpx.Option.getOrElse 0. + let b = b |> validateFloat |> FSharpx.Option.getOrElse r + let T = T |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + let flag = flag |> validateString + |> Option.bind (fun (x : string)-> let z = (x.ToUpper()) + if z.Length = 0 then None + else + let z = z.[0] + if z = 'C' then Some(Call) elif z = 'P' then Some(Put) else None ) + |> FSharpx.Option.getOrElse (if S <= K then Call else Put) + let marg = marg |> validateBool |> FSharpx.Option.getOrElse false + if S.IsSome && K.IsSome && T.IsSome && v.IsSome then Some(S.Value,K.Value,v.Value,r,b,T.Value,flag,marg) else None + + // Generalized BS UDFs + [] + let UDFForward ([] S : obj, + [] T : obj, + [] b : obj) = + validateBS S S 0.1 0. b T Call false + |> Option.bind (fun (S,_,_,_,b,T,_,marg) -> Blackscholes.forward S T b) + |> valueToExcel + + [] + let UDFBSValue ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.value marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSDelta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.delta marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSvega ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.vega marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSgamma ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.gamma marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSdualdelta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.dualdelta marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSrho ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.rho marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBStheta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.theta marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSdvegadspot([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.dvegadspot marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSdvegadvol ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.dvegadvol marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSddeltadtime ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.ddeltadtime marg flag S K T r b v) + |> valueToExcel + + [] + let UDFBSvaldeltavega ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r b T flag marg + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.valuedeltavega marg flag S K T r b v) + |> Option.map (fun (v,d,vega)-> [|v;d;vega|]) + |> FSharpx.Option.getOrElse Array.empty + |> arrayToExcelRow + + [] + let UDFBSImplied ([] S : obj, + [] K : obj, + [] prem : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K 0.10 r b T flag marg // Just use some dummy value for v + |> Option.bind (fun (S,K,_,r,b,T,flag,marg) -> let prem = prem |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + if prem.IsNone then None else Blackscholes.impliedvol marg flag S K T r b prem.Value) + |> valueToExcel + + + // UDF for Black-Scholes on futures + [] + let USDBSFutureValue ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r 0. T flag marg + |> Option.bind (fun (S,K,v,r,_,T,flag,marg) -> Blackscholes.value marg flag S K T r 0. v) + |> valueToExcel + + [] + let USDBSFutureDelta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r 0. T flag marg + |> Option.bind (fun (S,K,v,r,_,T,flag,marg) -> Blackscholes.delta marg flag S K T r 0. v) + |> valueToExcel + + [] + let USDBSFuturevega([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K v r 0. T flag marg + |> Option.bind (fun (S,K,v,r,_,T,flag,marg) -> Blackscholes.vega marg flag S K T r 0. v) + |> valueToExcel + + [] + let UDFBSFutureImplied ([] S : obj, + [] K : obj, + [] prem : obj, + [] T : obj, + [] r : obj, + [] flag : obj, + [] marg : obj) = + validateBS S K 0.10 r 0. T flag marg // Just use some dummy value for v + |> Option.bind (fun (S,K,_,r,_,T,flag,marg) -> let prem = prem |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + if prem.IsNone then None else Blackscholes.impliedvol marg flag S K T r 0. prem.Value) + |> valueToExcel + + // UDFs for Black-scholes on straddles + [] + let UDFBSStraddleValue ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] marg : obj) = + validateBS S K v r b T Call marg // Just use some dummy value for flag + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.straddlevalue marg S K T r b v) + |> valueToExcel + + [] + let UDFBSStraddleDelta ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] marg : obj) = + validateBS S K v r b T Call marg // Just use some dummy value for flag + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.straddledelta marg S K T r b v) + |> valueToExcel + + [] + let UDFBSStraddlevega ([] S : obj, + [] K : obj, + [] v : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] marg : obj) = + validateBS S K v r b T Call marg // Just use some dummy value for flag + |> Option.bind (fun (S,K,v,r,b,T,flag,marg) -> Blackscholes.straddlevega marg S K T r b v) + |> valueToExcel + + [] + let UDFBSStraddleImplied ([] S : obj, + [] K : obj, + [] prem : obj, + [] T : obj, + [] r : obj, + [] b : obj, + [] marg : obj) = + validateBS S K 0.10 r b T Call marg // Just use some dummy value for v & flag + |> Option.bind (fun (S,K,_,r,b,T,flag,marg) -> let prem = prem |> validateFloat |> Option.bind (fun x -> if x <= 0. then None else Some(x)) + if prem.IsNone then None else Blackscholes.straddleimpliedvol marg S K T r b prem.Value) + |> valueToExcel \ No newline at end of file diff --git a/BJExcelLib/UDF.CalendarManager.fs b/BJExcelLib/UDF.CalendarManager.fs new file mode 100644 index 0000000..61de80c --- /dev/null +++ b/BJExcelLib/UDF.CalendarManager.fs @@ -0,0 +1,76 @@ +namespace BJExcelLib.UDF + +/// This module contains UDFs to add and remove calendars via UDFs to a calendar manager (just a simple dictionary). Unlike with the ExcelCache +/// I am not using an RTD here since I don't want to deal with keeping track of which version of the object is available in excel. Also, lifetime +/// management is not much of an issue since I typically expect these kind of functionality to remain in memory during an entire excel session. Finally, +/// the most usage out of these UDFs is probably obtained by calling them in VBA code rather than in excel directly +module calendarManager = + + open BJExcelLib.ExcelDna.IO + open BJExcelLib.Finance + open BJExcelLib.Finance.Date + open ExcelDna.Integration + open System.Collections.Generic + + let calendarDict = new Dictionary() + + //Todo: automatic loading of calendar dictionary from file + + [] + let public addCalendar ([] name : obj, + [] dates : obj []) = + let name = name |> validateString |> Option.map (fun x -> x.ToUpper()) + if name.IsSome then + let dates = dates |> array1DAsList validateDate + |> List.fold (fun acc x -> if x.IsSome then x.Value :: acc else acc) [] // filter and map in one + |> Set.ofList + + let we = [System.DayOfWeek.Saturday;System.DayOfWeek.Sunday] |> Set.ofList + let cal = { weekendDays = we; holidays = dates } + if calendarDict.ContainsKey(name.Value) then calendarDict.[name.Value] <- cal else calendarDict.Add(name.Value,cal) + + name |> valueToExcel + + [] + let public removeCalendar ([] name : obj) = + name |> validateString + |> Option.map (fun x -> x.ToUpper()) + |> Option.map (fun x -> calendarDict.Remove(x)) + |> valueToExcel + + [] + let public getCalendarNames() = + calendarDict.Keys |> Seq.toArray + |> arrayToExcelColumn + + [] + let public getCalendarHolidays ([] name : obj, + [] startDate : obj, + [] endDate : obj) = + name |> validateString |> Option.map (fun x -> x.ToUpper()) + |> Option.map(fun calname -> let calendar = if calendarDict.ContainsKey(calname) then calendarDict.[calname] else { weekendDays =Set.empty; holidays = Set.empty } + let startDate = startDate |> validateDate + let endDate = endDate |> validateDate + calendar.holidays |> Set.toList + |> fun x -> if startDate.IsSome then List.filter (fun date -> date >= startDate.Value) x else x + |> fun x -> if endDate.IsSome then List.filter (fun date -> date <= endDate.Value) x else x + ) + |> fun z -> if z.IsSome then z.Value else [] + |> arrayToExcelColumn + + [] + let public getCalendarBDays([] name : obj, + [] startDate : obj, + [] endDate : obj) = + + let startDate = startDate |> validateDate + let endDate = endDate |> validateDate + if startDate.IsSome && endDate.IsSome then + name |> validateString |> Option.map (fun x -> x.ToUpper()) + |> Option.map(fun calname -> if calendarDict.ContainsKey(calname) then calendarDict.[calname] else { weekendDays =Set.empty; holidays = Set.empty } + |> fun cal -> businessDaysBetween cal startDate.Value endDate.Value) + |> fun x -> x.Value + else [] + |> List.toArray + |> arrayToExcelColumn + \ No newline at end of file diff --git a/BJExcelLib/UDF.Date.fs b/BJExcelLib/UDF.Date.fs new file mode 100644 index 0000000..647068d --- /dev/null +++ b/BJExcelLib/UDF.Date.fs @@ -0,0 +1,90 @@ +namespace BJExcelLib.UDF + +/// Contains excel UDFs for date related functions +module public Date = + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + open BJExcelLib.Finance + open BJExcelLib.Finance.Date + + /// Non-volatile version of Excel's today() function + [] + let public today_nonvolatile = fun () -> System.DateTime.Today + + /// Number of calendar days in the calendar month specified by a given date + [] + let public calendardaysinmonth ([] date : obj) = + date |> validateDate + |> Option.bind(fun x -> let thisMonthStart = new System.DateTime(x.Year, x.Month,1) + thisMonthStart.AddMonths(1).Subtract(thisMonthStart).Days |> Some) + |> valueToExcel + + /// Computes an enddate from a tenor string + [] + let public datefromtenor ([] tenor : obj, + [] startdate : obj) = + + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse (System.DateTime.Today) + tenor |> validateString + |> Option.bind BJExcelLib.Finance.Date.tenor + |> Option.bind (fun t -> (offset t startdate) |> Some) + |> valueToExcel + + /// Computes a year fraction between two dates on an Act/Act (ISDA) daycount + [] + let public TTM( [] enddate : obj, + [] startdate : obj) = + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse System.DateTime.Today + enddate |> validateDate + |> Option.map (fun e -> yearfrac Actual_Actual_ISDA startdate e) + |> valueToExcel + + /// Computes a year fraction between two dates on an 30/360 (ISDA) daycount + [] + let public TTM30360([] enddate : obj, + [] startdate : obj) = + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse System.DateTime.Today + enddate |> validateDate + |> Option.map (fun e -> yearfrac Thirty_360_ISDA startdate e) + |> valueToExcel + + /// Computes a year fraction between two dates on an Act/360 daycount + [] + let public TTMAct360([] enddate : obj, + [] startdate : obj) = + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse System.DateTime.Today + enddate |> validateDate + |> Option.map (fun e -> yearfrac Actual_360 startdate e) + |> valueToExcel + + /// Computes a year fraction between two dates on an Act/365 daycount + [] + let public TTMAct365([] enddate : obj, + [] startdate : obj) = + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse System.DateTime.Today + enddate |> validateDate + |> Option.map (fun e -> yearfrac Actual_365 startdate e) + |> valueToExcel + + /// Computes a year fraction between two dates on an Act/365 daycount + [] + let public TTMAct365qrt([] enddate : obj, + [] startdate : obj) = + let startdate = startdate |> validateDate |> FSharpx.Option.getOrElse System.DateTime.Today + enddate |> validateDate + |> Option.map (fun e -> yearfrac Actual_365qrt startdate e) + |> valueToExcel + + [] + let public PeriodStartDate([] period : obj) = + period |> validateString + |> Option.bind BJExcelLib.Finance.Date.period + |> Option.map (fun z -> z.startDate) + |> valueToExcel + + [] + let public PeriodEndDate([] period : obj) = + period |> validateString + |> Option.bind BJExcelLib.Finance.Date.period + |> Option.map (fun z -> z.endDate) + |> valueToExcel \ No newline at end of file diff --git a/BJExcelLib/UDF.Interpolation.fs b/BJExcelLib/UDF.Interpolation.fs new file mode 100644 index 0000000..12f7ba3 --- /dev/null +++ b/BJExcelLib/UDF.Interpolation.fs @@ -0,0 +1,320 @@ +namespace BJExcelLib.UDF + +/// Contains UDFs for interpolation functions. Two types of functions exists. One are UDFS whose excel name is of the form Interpolate.XXX. Those +/// UDFs are UDFs that directly do interpolation. For efficiency reasons, when interpolating multiple data points, array formulae on the new x-values +/// can be used. The other are UDFs of the form BuildInterpolator.XXX. These UDFs create a function in memory which can later be used for interpolation +/// by calling Interpolate.FromObject. The idea here is that array formulae are never needed. These functions are useful if the input data is relatively +/// fixed but the value to interpolate at can change one-by-one (in which case recalculating all of them is inefficient). +module public Interpolation = + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + open BJExcelLib.ExcelDna.Cache + open BJExcelLib.Math.Interpolation + open BJExcelLib.Math.Interpolation2D + + let private INTERPOLATOR_TAG = "BJ1DInterpolator" + let private INTERPOLATOR2D_TAG = "BJ2DInterpolator" + + let private validateArray = array1DAsArray validateFloat + + /// Helper function for most of the interpolation calculation functions + let private ipcalc f xold yold xnew = + let xold = validateArray xold + let yold = validateArray yold + let ipfunc = + if Array.length xold = Array.length yold then + Array.zip xold yold + |> Array.filter(fun (x,y) -> x.IsSome && y.IsSome) + |> Array.map (fun (x,y) -> x.Value,y.Value) + |> f + else None + match ipfunc with + | None -> xnew |> Array.map (fun _ -> None) + | Some(f) -> xnew |> validateArray + |> Array.map (Option.map f) + |> optionArrayToExcelColumn + + /// Helper function for building an interpolator object for most of the interpolation functions + let private ipbuild f xold yold = + let xold = validateArray xold + let yold = validateArray yold + if Array.length xold = Array.length yold then + Array.zip xold yold + |> Array.filter(fun (x,y) -> x.IsSome && y.IsSome) + |> Array.map (fun (x,y) -> x.Value,y.Value) + |> f + else None + |> fun x -> match x with + | None -> None |> valueToExcel + | Some(f) -> register INTERPOLATOR_TAG f + + /// Interpolation function that interpolates using a given object in the cache. Interpolates on only a single value because the entire purpose of building an object + /// in the cache is that you avoid array formulas and trigger only a single calculation if a single value changes. + [] + let public udfipfromobj ([] name : obj, + [] xnew : obj) = + validateString name + |> fun s -> if s.IsSome && (s.Value.Contains(INTERPOLATOR_TAG)) then (Option.bind lookup s) else None + |> fun s -> match s with + | None -> None + | Some(f) -> xnew |> validateFloat |> Option.map ( f :?> (float->float) ) + |> valueToExcel + + /// Performs piecewise constant interpolation on input data + [] + let public udfipconstant ([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorPiecewiseConstant xold yold xnew + + /// Builds a piecewise contant interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldconstant([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorPiecewiseConstant xold yold + + /// Performs piecewise linear interpolation on input data + [] + let public udfiplinear ([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorPiecewiseLinear xold yold xnew + + /// Builds a piecewise contant interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldlinear ([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorPiecewiseLinear xold yold + + /// Performs piecewise Loglinear interpolation on input data + [] + let public udfipLoglinear ([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorPiecewiseLoglinear xold yold xnew + + /// Builds a piecewise contant interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldLoglinear ([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorPiecewiseLoglinear xold yold + + /// Performs interpolation on the input data using an akima spline + [] + let public udfipakima ([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorAkimaSpline xold yold xnew + + /// Builds a akima spline interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldakima ([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorAkimaSpline xold yold + + /// Performs interpolation on the input data using a natural spline + [] + let public udfipnatural([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorNaturalSpline xold yold xnew + + /// Builds a natural spline interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldnatural ([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorNaturalSpline xold yold + + /// Performs interpolation on the input data using a natural spline + [] + let public udfipclamped([] xold : obj [], + [] yold : obj [], + [] left : obj, + [] right : obj, + [] xnew : obj []) = + let l = validateFloat left |> FSharpx.Option.getOrElse 0. + let r = validateFloat right |> FSharpx.Option.getOrElse 0. + ipcalc (interpolatorClampedSpline l r) xold yold xnew + + /// Builds a natural spline interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldclamped ([] xold : obj [], + [] yold : obj [], + [] left : obj, + [] right : obj) = + let l = validateFloat left |> FSharpx.Option.getOrElse 0. + let r = validateFloat right |> FSharpx.Option.getOrElse 0. + ipbuild (interpolatorClampedSpline l r) xold yold + + /// Performs linear gitting on input data + [] + let public udffitlinear([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc fitLinear xold yold xnew + + /// Builds a piecewise contant interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldlinfit([] xold : obj [], + [] yold : obj []) = + ipbuild fitLinear xold yold + + /// Performs polynomial fitting + [] + let public udffitpoly ([] xold : obj [], + [] yold : obj [], + [] degree : obj, + [] xnew : obj []) = + let degree = degree |> validateInt |> FSharpx.Option.getOrElse 1 + ipcalc (fitPolynomial degree) xold yold xnew + + /// Builds a piecewise contant interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldpolyft([] xold : obj [], + [] yold : obj [], + [] degree : obj) = + let degree = degree |> validateInt |> FSharpx.Option.getOrElse 1 + ipbuild (fitPolynomial degree) xold yold + + /// Performs interpolation on the input data using a Fritsch-Butland spline + [] + let public udfipfbsplin([] xold : obj [], + [] yold : obj [], + [] xnew : obj []) = + ipcalc interpolatorFritschButlandSpline xold yold xnew + + /// Builds a Fritsch-Butland spline interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldfbspline ([] xold : obj [], + [] yold : obj []) = + ipbuild interpolatorFritschButlandSpline xold yold + + /// Performs interpolation on the input data using a hermitel spline + [] + let public udfiphermite([] xold : obj [], + [] yold : obj [], + [] y'old : obj [], + [] xnew : obj []) = + let xold = validateArray xold + let yold = validateArray yold + let y'old = validateArray y'old + let ipfunc = + if Array.length xold = Array.length yold && Array.length xold = Array.length y'old then + Array.zip3 xold yold y'old + |> Array.filter(fun (x,y,y') -> x.IsSome && y.IsSome && y'.IsSome) + |> Array.map (fun (x,y,y') -> x.Value,y.Value, y'.Value) + |> interpolatorHermiteSpline + else None + match ipfunc with + | None -> xnew |> Array.map (fun _ -> None) + | Some(f) -> xnew |> validateArray + |> Array.map (Option.map f) + |> optionArrayToExcelColumn + + /// Builds a hermite spline interpolator object in the cache + // functions that create an object in the cache cannot be marked threadsafe and exception safe + [] + let public udfbldhermite ([] xold : obj [], + [] yold : obj [], + [] y'old : obj []) = + let xold = validateArray xold + let yold = validateArray yold + let y'old = validateArray y'old + if Array.length xold = Array.length yold && Array.length xold = Array.length y'old then + Array.zip3 xold yold y'old + |> Array.filter(fun (x,y,y') -> x.IsSome && y.IsSome && y'.IsSome) + |> Array.map (fun (x,y,y') -> x.Value,y.Value, y'.Value) + |> interpolatorHermiteSpline + else None + |> fun x -> match x with + | None -> None |> valueToExcel + | Some(f) -> register INTERPOLATOR_TAG f + + + let private buildip2D xkeys ykeys table ipFunc = + let xkeys = validateArray xkeys + let ykeys = validateArray ykeys + let table = array2DAsArray true validateFloat table + build2DInterpolation ipFunc xkeys ykeys table + + let private registerip2D xkeys ykeys table ipFunc = + buildip2D xkeys ykeys table ipFunc + |> register INTERPOLATOR2D_TAG + + let private ip2D xkeys ykeys table xnew ynew ipFunc= + let ipfunc = buildip2D xkeys ykeys table ipFunc + let xnew = validateArray xnew + let ynew = validateArray ynew + let res = Array2D.init (Array.length xnew) + (Array.length ynew) + (fun r c -> if xnew.[r].IsSome && ynew.[c].IsSome then ipfunc (xnew.[r].Value) (ynew.[c].Value) else None) + res |> Array2D.map valueToExcel + + [] + let public udfipblinear([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,], + [] xnew : obj [], + [] ynew : obj []) = + ip2D xkeys ykeys table xnew ynew interpolatorPiecewiseLinear + + [] + let public udfblblinear([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,]) = + registerip2D xkeys ykeys table interpolatorPiecewiseLinear + + [] + let public udfipbicubic([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,], + [] xnew : obj [], + [] ynew : obj []) = + ip2D xkeys ykeys table xnew ynew interpolatorNaturalSpline + + [] + let public udfblbicubic([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,]) = + registerip2D xkeys ykeys table interpolatorNaturalSpline + + [] + let public udfipbcubicA([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,], + [] xnew : obj [], + [] ynew : obj []) = + ip2D xkeys ykeys table xnew ynew interpolatorAkimaSpline + + [] + let public udfblbicubiA([] xkeys : obj [], + [] ykeys : obj [], + [] table: obj [,]) = + registerip2D xkeys ykeys table interpolatorAkimaSpline + + /// Interpolation function that interpolates using a given object in the cache. Interpolates on only a single value because the entire purpose of building an object + /// in the cache is that you avoid array formulas and trigger only a single calculation if a single value changes. + [] + let public udfip2frmobj ([] name : obj, + [] xnew : obj, + [] ynew : obj) = + validateString name + |> fun s -> if s.IsSome && (s.Value.Contains(INTERPOLATOR2D_TAG)) then (Option.bind lookup s) else None + |> fun s -> match s with + | None -> None + | Some(f) -> let xnew = xnew |> validateFloat + let ynew = ynew |> validateFloat + if xnew.IsSome && ynew.IsSome then + (f :?> (float->float-> float option)) (xnew.Value) (ynew.Value) + else None + + |> valueToExcel diff --git a/BJExcelLib/UDF.Misc.fs b/BJExcelLib/UDF.Misc.fs new file mode 100644 index 0000000..e2a88d4 --- /dev/null +++ b/BJExcelLib/UDF.Misc.fs @@ -0,0 +1,53 @@ +namespace BJExcelLib.UDF + +/// Contains miscelleaneous UDFs for which I haven't bothered to create modules implementing their functionality. +/// As this library expands and more modules start to exists, consider moving functions from here to a UDF module +/// that contains all related functionality. +module public Misc = + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + + let private fwdfunc (t1 : float) y1 t2 y2 = + (y2*t2-y1*t1)/(t2-t1) + + /// Computes a year fraction between two dates on an Act/Act (ISDA) daycount + [] + let public ForwardVol ([] t1 : obj, + [] v1 : obj, + [] t2 : obj, + [] v2 : obj, + [] startdate : obj) = + let ttm1, vol1, ttm2, vol2 = t1 |> validateFloat, v1 |> validateFloat, t2 |> validateFloat, v2 |> validateFloat + if (ttm1.IsSome) && vol1.IsSome && ttm2.IsSome && vol2.IsSome && vol1.Value >= 0. && vol2.Value >= 0. && ttm1.Value >= 0. && ttm2.Value >= 0. then + let ttm1, vol1, ttm2, vol2 = ttm1.Value, vol1.Value, ttm2.Value, vol2.Value + let fwdvar = if ttm1 < ttm2 then fwdfunc ttm1 (vol1*vol1) ttm2 (vol2*vol2) else fwdfunc ttm2 (vol2*vol2) ttm1 (vol1*vol1) + if fwdvar < 0. then None else Some(sqrt(fwdvar)) + else None + |> valueToExcel + + /// Computes a year fraction between two dates on an Act/Act (ISDA) daycount + [] + let public ForwardRate( [] t1 : obj, + [] v1 : obj, + [] t2 : obj, + [] v2 : obj, + [] startdate : obj) = + let ttm1, rate1, ttm2, rate2 = t1 |> validateFloat, v1 |> validateFloat, t2 |> validateFloat, v2 |> validateFloat + if (ttm1.IsSome) && rate1.IsSome && ttm2.IsSome && rate2.IsSome && rate1.Value >= 0. && rate2.Value >= 0. && ttm1.Value >= 0. && ttm2.Value >= 0. then + let ttm1, rate1, ttm2, rate2 = ttm1.Value, rate1.Value, ttm2.Value, rate2.Value + let fwdrate = if ttm1 < ttm2 then fwdfunc ttm1 (rate1) ttm2 (rate2) else fwdfunc ttm2 (rate2) ttm1 (rate1) + Some(fwdrate) + else None + |> valueToExcel + + [] + let public DiscountFactor( [] t : obj, + [] r : obj, + [] f : obj) = + + let ttm, rate, freq = t |> validateFloat, r |> validateFloat, f |> validateFloat |> FSharpx.Option.getOrElse 0. |> max 0. + if ttm.IsSome && rate.IsSome then + if freq = 0. then exp(-rate.Value * ttm.Value) |> Some + else (1. + rate.Value/freq)**(-freq*ttm.Value) |> Some + else None + |> valueToExcel \ No newline at end of file diff --git a/BJExcelLib/UDF.Volatility.fs b/BJExcelLib/UDF.Volatility.fs new file mode 100644 index 0000000..c197834 --- /dev/null +++ b/BJExcelLib/UDF.Volatility.fs @@ -0,0 +1,117 @@ +namespace BJFinanceLib.Excel.UDF + +/// Contains excel UDFs for various volatility related functions +module public Volatility = + open ExcelDna.Integration + open BJExcelLib.ExcelDna.IO + open BJExcelLib.Finance + + let private INTERPOLATOR_TAG = "VolInterpolator" + + let private SVI_CALIB_CHECK_FOR_ARB = true + let private SVI_CALIB_MIN_SIGMA = 0.001 + + let private validate5tuple (a,b,c,d,e) = + (a |> validateFloat, b |> validateFloat, c |> validateFloat, d |> validateFloat, e|> validateFloat) + |> fun (v,w,x,y,z) -> if v.IsNone || w.IsNone || x.IsNone || y.IsNone || z.IsNone then None + else Some(v.Value,w.Value,x.Value,y.Value,z.Value) + let private validaterawparams a b m r s = + validate5tuple(a,b,m,r,s) + + /// Validates jump-wing parameters. En passent converts atm vol and min vol to variance as well + let private validatejwparameters atm skew put call minv = + validate5tuple(atm,skew,put,call,minv) + |> Option.bind (fun (atm,skew,put,call,minv) -> if atm <= 0. || minv <= 0. then None + else Some(atm*atm,skew,put,call,minv*minv)) + + [] + let UDF_SVI_RAW_Vol([] a : obj, + [] b : obj, + [] r : obj, + [] m : obj, + [] s : obj, + [] ttm : obj, + [] fwd : obj, + [] strike : obj) = + validaterawparams a b m r s + |> Option.bind (fun (a,b,m,r,s) -> let ttm = ttm |> validateFloat + let fwd = fwd |> validateFloat + let strike = strike |> validateFloat + if ttm.IsNone || fwd.IsNone || strike.IsNone then None + else SVI.impliedvol(a,b,r,m,s) ttm.Value fwd.Value strike.Value) + |> valueToExcel + + [] + let UDF_SVI_JW_Vol ([] atm : obj, + [] skew : obj, + [] put : obj, + [] call : obj, + [] minv : obj, + [] ttm : obj, + [] fwd : obj, + [] strike : obj) = + validatejwparameters atm skew put call minv + |> Option.bind (fun (atm,skew,put,call,minv) -> let ttm = ttm |> validateFloat + let fwd = fwd |> validateFloat + let strike = strike |> validateFloat + if ttm.IsNone || fwd.IsNone || strike.IsNone then None + else + let rparams = SVI.jumpwingtoraw (atm,skew,put,call,minv) ttm.Value + if rparams.IsNone then None else SVI.impliedvol rparams.Value ttm.Value fwd.Value strike.Value) + |> valueToExcel + + [] + let UDF_SVI_RAW_2_J([] a : obj, + [] b : obj, + [] r : obj, + [] m : obj, + [] s : obj, + [] ttm : obj) = + validaterawparams a b m r s + |> Option.bind (fun (a,b,m,r,s) -> ttm |> validateFloat + |> Option.bind (fun t -> if t <= 0. then None else SVI.rawtojumpwing(a,b,r,m,s) t)) + |> Option.bind( fun (vt,phit,pt,ct,vtilde) -> Some(arrayToExcelRow [|sqrt(vt);phit;pt;ct;sqrt(vtilde)|])) + |> fun x -> match x with + | None -> Array2D.init 1 5 (fun i j -> ExcelError.ExcelErrorNA :> obj) + | Some(v) -> v + + [] + let UDF_SVI_JW_2_R([] atm : obj, + [] skew : obj, + [] put : obj, + [] call : obj, + [] minv : obj, + [] ttm : obj) = + validatejwparameters atm skew put call minv + |> Option.bind(fun (atm,skew,put,call,minv) -> ttm |> validateFloat + |> Option.bind (fun t -> if t <= 0. then None else SVI.jumpwingtoraw(atm,skew,put,call,minv) t)) + |> Option.bind( fun (a,b,r,m,s) -> Some(arrayToExcelRow [|a;b;r;m;s|])) + |> fun x -> match x with + | None -> Array2D.init 1 5 (fun i j -> ExcelError.ExcelErrorNA :> obj) + | Some(v) -> v + + [] + let UDF_SVI_CALIB([] strikes : obj [], + [] vols : obj [], + [] ttm : obj, + [] fwd : obj, + [] vegaWeighted : obj) = + let strikes = array1DAsArray validateFloat strikes + let vols = array1DAsArray validateFloat vols + let ttm = validateFloat ttm |> FSharpx.Option.getOrElse -1. + let fwd = validateFloat fwd |> FSharpx.Option.getOrElse 1. + let vegaWeighted = validateBool vegaWeighted |> FSharpx.Option.getOrElse false + if Array.length strikes = Array.length vols && ttm > 0. && fwd > 0. then + let weightfunc = + if vegaWeighted then + let maxvega = BJExcelLib.Finance.Blackscholes.vega false (Call) fwd fwd ttm 0. 0. 0.30 |> FSharpx.Option.getOrElse 1. // Not exactly equal to maxvega, but close enough for scaling + fun (strike,vol) -> BJExcelLib.Finance.Blackscholes.vega false (Call) fwd strike ttm 0. 0. vol |> FSharpx.Option.getOrElse 0. |> fun v -> v/maxvega + else fun (strike,vol) -> 1. + Array.zip strikes vols |> Array.filter (fun (s,v) -> s.IsSome && v.IsSome) + |> Array.map (fun (s,v) -> s.Value, v.Value) + |> Array.map (fun (s,v) -> weightfunc (s,v),s,v) + |> fun points -> SVI.calibrate (SVI_CALIB_CHECK_FOR_ARB,SVI_CALIB_MIN_SIGMA) ttm fwd points + |> fst + |> fun (a,b,r,m,s) -> [|a;b;r;m;s|] + else [| 0.;0.;0.;0.;0.|] + |> arrayToExcelRow \ No newline at end of file diff --git a/BJExcelLib/Util.Extensions.fs b/BJExcelLib/Util.Extensions.fs new file mode 100644 index 0000000..dcd1949 --- /dev/null +++ b/BJExcelLib/Util.Extensions.fs @@ -0,0 +1,51 @@ +namespace BJExcelLib.Util + +// Defines a number of useful extension methods +module public Extensions = + + let private countfunc f = fun x -> if f x then 1. else 0. + + // Extension methods on list + type public Microsoft.FSharp.Collections.List<'a> with + /// Returns the number of elements in the list that satisfy the condition defined by f + static member countBy (f : 'a -> bool) x = List.sumBy (countfunc f) x + + /// Folds partway through a list returning the accumulator and the remaining tail + static member foldTo i f accu list = + let rec folder j g acc l = + match j, l with | 0,t -> acc,t + | i, h::t -> folder (i-1) f (f accu h) t + | _, [] -> accu, [] + folder i f accu list + + /// Splits a list into two sublists at the given index + static member chop i list = + let front,back = List<'a>.foldTo i (fun t h -> h :: t) [] list + (List.rev front), back + + // Extension methods on System.DateTime + type public System.DateTime with + /// Override for the System.DateTime.tryParse that is more idiotmatic for F# + static member tryParse (s : string) = + let ok, res = System.DateTime.TryParse(s) + if ok then Some(res) else None + + /// Extensions to the Array module + module public Array = + /// Returns the number of elements int he array that satisfy the condition defined by f + let countBy (f : 'a -> bool) x = Array.sumBy (countfunc f) x + + /// Extension methods on Array2D + module public Array2D = + // Transposes a 2D array. Very simple at the moment with no bound checking or memory optimizations. + let transpose (data : 'a [,]) = + let l1 = data.GetLength(0) + let l2 = data.GetLength(1) + Array2D.init l2 l1 (fun x y -> data.[y,x]) + + + + + + + \ No newline at end of file diff --git a/BJExcelLib/packages.config b/BJExcelLib/packages.config new file mode 100644 index 0000000..f5a6867 --- /dev/null +++ b/BJExcelLib/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/BJExcelLibTests/App.config b/BJExcelLibTests/App.config new file mode 100644 index 0000000..0280c01 --- /dev/null +++ b/BJExcelLibTests/App.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/BJExcelLibTests/BJExcelLibTests.fsproj b/BJExcelLibTests/BJExcelLibTests.fsproj new file mode 100644 index 0000000..5f0e6e3 --- /dev/null +++ b/BJExcelLibTests/BJExcelLibTests.fsproj @@ -0,0 +1,82 @@ + + + + Debug + AnyCPU + 2.0 + 1f3ede6e-7d84-45bd-9b0c-00198760a714 + Library + BJExcelLibTests + BJExcelLibTests + 4.5 + FsUnitTest + 4.3.0.0 + + + true + full + false + false + bin\Debug\ + DEBUG;TRACE + 3 + bin\Debug\FsUnitTest.XML + + + pdbonly + true + true + bin\Release\ + TRACE + 3 + bin\Release\FsUnitTest.XML + + + + True + + + + + + + + + + + + + + + + + + BJExcelLib + {cccffcbc-7434-4262-a7c1-730f94362e7f} + True + + + + 11 + + + + + $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets + + + + + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets + + + + + + \ No newline at end of file diff --git a/BJExcelLibTests/BlackScholesTests.fs b/BJExcelLibTests/BlackScholesTests.fs new file mode 100644 index 0000000..70bfb34 --- /dev/null +++ b/BJExcelLibTests/BlackScholesTests.fs @@ -0,0 +1,216 @@ +namespace BJExcelLibTests + +open System +open Microsoft.VisualStudio.TestTools.UnitTesting +open BJExcelLib.Finance + + +[] +type BlackScholesTest() = + + let TOLERANCE_PUTCALLPARITY = 0.0001 // Tolerance for put-call parity errors (as percentage of spot) + let TOLERANCE_BSVALUES = 0.0001 // Tolerance for option values + let TOLERANCE_BSGREEKS = 0.001 // Tolerance on numerical greek values + let TOLERANCE_VOL = 0.0005; // Tolerance on search for vol + + + /// All blackscholes functions that have the same input types. Basically all of them except for the forward and inverse search functions. + let mostBSfuncs = [ Blackscholes.value; Blackscholes.delta; Blackscholes.vega; Blackscholes.gamma; Blackscholes.rho; Blackscholes.theta; Blackscholes.dvegadspot; Blackscholes.dvegadspot; Blackscholes.ddeltadtime] + let straddlefuncs = [Blackscholes.straddlevalue; Blackscholes.straddledelta; Blackscholes.straddlevega] + // Checks whether all blackscholes functions return none if time to maturity is negative. Splitting out per function would be more atomic, but too much work for the gain. + [] + member x.``All Black-scholes functions return None if time to maturity is negative`` () = + let marg, flag,S,K,t,r,b,v = false, Call,100.,100.,-1.,0.05,0.03,0.20 + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> acc && Option.isNone (f marg flag S K t r b v)) true + let straddleresult = straddlefuncs |> List.fold (fun acc f -> acc && Option.isNone (f marg S K t r b v)) true + let forwardResult = Option.isNone (Blackscholes.forward S t b) + Assert.AreEqual(true, mostfuncresult && forwardResult && straddleresult) + + // Checks whether all blackscholes functions return none if the spot is negative. Splitting out per function would be more atomic, but too much work for the gain. + [] + member x.``All Black-scholes functions return None if the spot is negative`` () = + let marg, flag,S,K,t,r,b,v = false, Call,-100.,100.,1.,0.05,0.03,0.20 + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> acc && Option.isNone (f marg flag S K t r b v)) true + let straddleresult = straddlefuncs |> List.fold (fun acc f -> acc && Option.isNone (f marg S K t r b v)) true + let forwardResult = Option.isNone (Blackscholes.forward S t b) + Assert.AreEqual(true, mostfuncresult && forwardResult && straddleresult) + + // Checks whether all relevant blackscholes functions return none if the strike. Splitting out per function would be more atomic, but too much work for the gain. + [] + member x.``All Black-scholes functions return None if the strike is negative`` () = + let marg, flag,S,K,t,r,b,v = false, Call,100.,-100.,1.,0.05,0.03,0.20 + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> acc && Option.isNone (f marg flag S K t r b v)) true + let straddleresult = straddlefuncs |> List.fold (fun acc f -> acc && Option.isNone (f marg S K t r b v)) true + Assert.AreEqual(true, mostfuncresult && straddleresult) + + // Checks whether all blackscholes functions return none if the spot is zero. Splitting out per function would be more atomic, but too much work for the gain. + [] + member x.``All Black-scholes functions return None if the spot is zero`` () = + let marg, flag,S,K,t,r,b,v = false, Call,0.,100.,1.,0.05,0.03,0.20 + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> acc && Option.isNone (f marg flag S K t r b v)) true + let straddleresult = straddlefuncs |> List.fold (fun acc f -> acc && Option.isNone (f marg S K t r b v)) true + let forwardResult = Option.isNone (Blackscholes.forward S t b) + Assert.AreEqual(true, mostfuncresult && forwardResult && straddleresult) + + // Checks whether all blackscholes functions return none if volatility is negative. Splitting out per function would be more atomic, but too much work for the gain. + [] + member x.``All relevant Black-scholes functions return None if the volatility is negative`` () = + let marg, flag,S,K,t,r,b,v = false, Call,100.,100.,1.,0.05,0.03,-0.20 + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> acc && Option.isNone (f marg flag S K t r b v)) true + let straddleresult = straddlefuncs |> List.fold (fun acc f -> acc && Option.isNone (f marg S K t r b v)) true + Assert.AreEqual(true, mostfuncresult && straddleresult) + + // Checks whether the implementation of option valuation is consistent with the forward function up to specified tolerance. + [] + member x.``Blackscholes option values preserve put call parity up to required tolerance`` () = + let result = [(100., 100., 1., 0.05, 0.03, 0.20); + (100., 80., 2., 0.05, 0.03, 0.80); + (100., 200., 1.2,-0.02, 0.01, 0.30); + (100., 110., 0.3, 0.02, -0.01, 0.35)] + |> List.fold (fun acc (spot,strike,ttm,rate,cc,vol) -> + let call = Blackscholes.value false Call spot strike ttm rate cc vol + let put = Blackscholes.value false Put spot strike ttm rate cc vol + let forward = Blackscholes.forward spot ttm cc + if call.IsNone || put.IsNone || forward.IsNone then false + else ((call.Value-put.Value)*exp(rate*ttm)+strike-forward.Value)/spot |> abs |> fun x -> x < TOLERANCE_PUTCALLPARITY) true + Assert.AreEqual(true,result) + + [] + member x.``Blackscholes option values and greeks when the premium are margined differ from non-margined options by a multiplicative factor equal to the discountfactor``() = + let flag,S,K,t,r,b,v = Call,100.,100.,0.3,0.05,0.03,0.20 + let df = exp(-r*t) + let mostfuncresult = mostBSfuncs |> List.fold(fun acc f -> let unmargined = f false flag S K t r b v + let margined = f true flag S K t r b v + if unmargined.IsNone || margined.IsNone then false + else acc && ((unmargined.Value/(margined.Value*df)) - 1. |> abs |> fun x -> x < 0.000000001 )) true + let straddleresult = straddlefuncs |> List.fold(fun acc f ->let unmargined = f false S K t r b v + let margined = f true S K t r b v + if unmargined.IsNone || margined.IsNone then false + else acc && ((unmargined.Value/(margined.Value*df)) - 1. |> abs |> fun x -> x < 0.000000001)) true + + Assert.AreEqual(true,mostfuncresult && straddleresult) + + [] + member x.``Blackscholes value is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.value marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp)/S < TOLERANCE_BSVALUES) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes delta is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.delta marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp) < TOLERANCE_BSGREEKS) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes vega is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.vega marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp) < TOLERANCE_BSGREEKS) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes gamma is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.gamma marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp) < TOLERANCE_BSGREEKS) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes theta is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.theta marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp) < TOLERANCE_BSGREEKS) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes rho is correct``() = + let test = [((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : get correct values for expected results and increase number of tests + ((false,Call,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,flag,S,K,t,r,b,v),exp) -> Blackscholes.rho marg flag S K t r b v + |> Option.map (fun res -> abs(res-exp) < TOLERANCE_BSGREEKS) + |> fun x -> if x.IsNone then false else x.Value && acc) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes straddle price is equal to sum of put and call prices``() = + let test = [((false,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : increase number of tests + ((false,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,S,K,t,r,b,v),exp) -> let call = Blackscholes.value marg Call S K t r b v + let put = Blackscholes.value marg Put S K t r b v + let straddle = Blackscholes.straddlevalue marg S K t r b v + if call.IsNone || put.IsNone || straddle.IsNone then false + else (call.Value+put.Value-straddle.Value)/S < TOLERANCE_BSVALUES) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes straddle vega is equal to sum of put and call prices``() = + let test = [((false,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : increase number of tests + ((false,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,S,K,t,r,b,v),exp) -> let call = Blackscholes.vega marg Call S K t r b v + let put = Blackscholes.vega marg Put S K t r b v + let straddle = Blackscholes.straddlevega marg S K t r b v + if call.IsNone || put.IsNone || straddle.IsNone then false + else (call.Value+put.Value-straddle.Value)/S < TOLERANCE_BSVALUES) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes straddle delta is equal to sum of put and call prices``() = + let test = [((false,100.,100.,1., 0.05, 0.02, 0.30),1.); //todo : increase number of tests + ((false,100.,100.,1., 0.05, 0.02, 0.30),1.)] + |> List.fold (fun acc ((marg,S,K,t,r,b,v),exp) -> let call = Blackscholes.delta marg Call S K t r b v + let put = Blackscholes.delta marg Put S K t r b v + let straddle = Blackscholes.straddledelta marg S K t r b v + if call.IsNone || put.IsNone || straddle.IsNone then false + else (call.Value+put.Value-straddle.Value)/S < TOLERANCE_BSVALUES) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes implied vol search returns expected vol up to required tolerance``() = + let test = [(false,Call,100.,100., 1., 0.10, 0.00, 0.30); + (false,Put, 25.,30., 2., 0.05, 0.02, 0.25); + (true,Call, 10.,5., 4., 0.01, 0.03, 0.10); + (false,Put, 1.,0.7, 0.5, 0.02, 0.02, 0.15); + (true,Call, 0.1,0.12, 2., 0.00, 0.00, 1.33); + (false,Put, 100.,100., 10., 0.00, -0.05, 0.10); + (true,Call, 100.,100., 0.05, 0.03, 0.04, 0.55); + (false,Put, 100.,100., 0.20, 0.02, 0., 0.08); + (false,Call, 100.,100., 7., 0.07, 0.01, 0.36);] + |> List.fold (fun acc (marg,flag,S,K,t,r,b,v) -> let vega = Blackscholes.vega marg flag S K t r b v + Blackscholes.value marg flag S K t r b v + |> Option.bind (fun premium -> Blackscholes.impliedvol marg flag S K t r b premium + |> Option.map (fun r -> abs(r-v) < TOLERANCE_VOL || vega.Value / premium < 0.00001 || premium / S < 0.00001 )) // Vega converged or worthless option and/or worthless time value in option + |> fun x -> if x.IsNone then false else acc && x.Value) true + Assert.AreEqual(true,test) + + [] + member x.``Blackscholes straddle implied vol search returns expected vol up to required tolerance``() = + let test = [(false,100.,100.,1., 0.05, 0.02, 0.30); + (false,100., 40.,1., 0.05, 0.02, 0.35); + (false,10.,30., 1., 0.05, 0.02, 0.80); + (false,100.,150.,2.5, 0.05, 0.02, 1.30); + (false,1., 1.1,0.2, 0.05, 0.02, 0.26); + (true,100.,95.,0.06, 0.05, 0.02, 0.28); + (false,100.,101.,8., 0.05, 0.02, 0.15); + (true,100.,99.,0.5, 0.05, 0.02, 0.05); + (false,100.,103.,3., 0.05, 0.02, 0.25) + ] + |> List.fold (fun acc (marg,S,K,t,r,b,v) -> Blackscholes.straddlevalue marg S K t r b v + |> Option.bind (fun premium -> let vega = Blackscholes.straddlevega marg S K t r b v + Blackscholes.straddleimpliedvol marg S K t r b premium + |> Option.map (fun r -> abs(r-v) < TOLERANCE_VOL || vega.Value / premium < 0.00001 || premium / S < 0.00001 )) // Vega converged or worthless option and/or worthless time value in option + |> fun x -> if x.IsNone then false else acc && x.Value) true + Assert.AreEqual(true,test) + diff --git a/BJExcelLibTests/DaycountTests.fs b/BJExcelLibTests/DaycountTests.fs new file mode 100644 index 0000000..555e0c2 --- /dev/null +++ b/BJExcelLibTests/DaycountTests.fs @@ -0,0 +1,126 @@ +namespace BJExcelLibTests + +open System +open Microsoft.VisualStudio.TestTools.UnitTesting +open BJExcelLib.Finance +open BJExcelLib.Finance.Date + + +[] +type DaycountTests() = + + let testperiod = + [ { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) }; + { startDate = System.DateTime(2010,1,1); endDate = System.DateTime(2010,12,31) } ] + + [] + member x.``Actual/Actual (ISDA) convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.] //todo + let test = testperiod |> List.map (fun x -> yearfrac Actual_Actual_ISDA x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + + + [] + member x.``30/360 (ISDA) convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.]//todo + let test = testperiod |> List.map (fun x -> yearfrac Thirty_360_ISDA x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + + [] + member x.``30E/360 convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.]//todo + let test = testperiod |> List.map (fun x -> yearfrac Thirty_360_E x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + + [] + member x.``30E+/360 convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.]//todo + let test = testperiod |> List.map (fun x -> yearfrac Thirty_360_Eplus x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + + [] + member x.``Act/360 convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.]//todo + let test = testperiod |> List.map (fun x -> yearfrac Actual_360 x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + + [] + member x.``Act/365 convention results are correct`` () = + let expected = [0.; + 1.; + 2.; + 3.; + 4.; + 5.; + 6.; + 7.; + 8.; + 9.]//todo + let test = testperiod |> List.map (fun x -> yearfrac Actual_365 x.startDate x.endDate) + |> List.zip expected + |> List.fold (fun acc (act,exp) -> acc && (act = exp)) true + Assert.AreEqual(true,test) + diff --git a/BJExcelLibTests/Interpolationtest.fs b/BJExcelLibTests/Interpolationtest.fs new file mode 100644 index 0000000..1f572e0 --- /dev/null +++ b/BJExcelLibTests/Interpolationtest.fs @@ -0,0 +1,42 @@ +namespace BJExcelLibTests + +open System +open Microsoft.VisualStudio.TestTools.UnitTesting +open BJExcelLib.Finance +open BJExcelLib.Finance.Date + + +[] +type InterpolationTests() = + + [] + member x.``Linear fitting reproduces expected values`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Polynomial fitting reproduces expected values at various degrees`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Polynomial fitting fails on negative degree`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Polynomial fitting fails if number of input pairs <= degree of the polynomial to fit`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Natural cubic spline produces expected output values`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Clamped cubic spline produces expected output values`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Hermite cubic spline produces expected output values`` () = + Assert.AreEqual(true,false) //todo + + [] + member x.``Akima cubic spline produces expected output values`` () = + Assert.AreEqual(true,false) //todo diff --git a/BJExcelLibTests/MSTest.runsettings b/BJExcelLibTests/MSTest.runsettings new file mode 100644 index 0000000..00e480a --- /dev/null +++ b/BJExcelLibTests/MSTest.runsettings @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/BJExcelLibTests/PeriodTests.fs b/BJExcelLibTests/PeriodTests.fs new file mode 100644 index 0000000..3e07885 --- /dev/null +++ b/BJExcelLibTests/PeriodTests.fs @@ -0,0 +1,30 @@ +namespace BJExcelLibTests + +open System +open Microsoft.VisualStudio.TestTools.UnitTesting +open BJExcelLib.Finance +open BJExcelLib.Finance.Date + + +[] +type PeriodTests() = + + let testdata = + [ ("Cal15", System.DateTime(2015,1,1), System.DateTime(2015,12,31)); + ("Q413", System.DateTime(2013,10,1), System.DateTime(2013,12,31)); + ("2023H1", System.DateTime(2023,1,1), System.DateTime(2023,6,30)); + ("F15-Z15", System.DateTime(2015,1,1), System.DateTime(2015,12,31)); + ("14Q2", System.DateTime(2014,4,1), System.DateTime(2014,6,30)); + ("Aug16", System.DateTime(2016,8,1), System.DateTime(2016,8,31)); + ("Q18", System.DateTime(2018,8,1), System.DateTime(2018,8,31)); + ("Q18-Q19", System.DateTime(2018,8,1), System.DateTime(2019,8,31)); + ("H14G15", System.DateTime(2014,3,1), System.DateTime(2015,2,28)); + ("H12", System.DateTime(2012,3,1), System.DateTime(2012,3,31)) ] + + [] + member x.``Period function returns the correct periods``() = + let test = testdata |> List.map(fun (t, s, e) -> let per = period t + per.IsSome && per.Value.startDate = s && per.Value.endDate = e) + |> List.fold (fun acc v -> acc && v) true + Assert.AreEqual(true,test) + diff --git a/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nupkg b/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nupkg new file mode 100644 index 0000000..6b7d42d Binary files /dev/null and b/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nupkg differ diff --git a/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nuspec b/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nuspec new file mode 100644 index 0000000..1711320 --- /dev/null +++ b/packages/Excel-DNA.0.30.3/Excel-DNA.0.30.3.nuspec @@ -0,0 +1,27 @@ + + + + Excel-DNA + 0.30.3 + Excel-DNA + Govert van Drimmelen + Govert van Drimmelen + http://excel-dna.net/ + http://docs.excel-dna.net/NuGetIcon.png + false + Excel-DNA eases the development of Excel add-ins using .NET. + Add-ins created with Excel-DNA can export high-performance user-defined functions and macros, and can be packed into a single file for easy distribution and installation. + + Excel versions 97 through 2010 can be targeted with a single add-in. + Advanced Excel features are supported, including multi-threaded recalculation (Excel 2007 and later), registration-free RTD servers (Excel 2002 and later) and customized Ribbon and Task Pane interfaces (Excel 2007 and 2010) and asynchronous functions (Excel 2002 and later). + + Excel-DNA supports the .NET runtime version 2.0 (which is used by .NET versions 2.0, 3.0 and 3.5) and version 4.0 (the version number used by .NET 4 and 4.5). + + The Excel-Dna Runtime is free for all use, and distributed under a permissive open-source license that also allows commercial use. + Excel-DNA is an independent project to integrate .NET into Excel. + + + + excel + + \ No newline at end of file diff --git a/packages/Excel-DNA.0.30.3/content/ExcelDna-Template.dna b/packages/Excel-DNA.0.30.3/content/ExcelDna-Template.dna new file mode 100644 index 0000000..e93d207 --- /dev/null +++ b/packages/Excel-DNA.0.30.3/content/ExcelDna-Template.dna @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/Excel-DNA.0.30.3/lib/ExcelDna.Integration.dll b/packages/Excel-DNA.0.30.3/lib/ExcelDna.Integration.dll new file mode 100644 index 0000000..cfc341e Binary files /dev/null and b/packages/Excel-DNA.0.30.3/lib/ExcelDna.Integration.dll differ diff --git a/packages/Excel-DNA.0.30.3/readme.txt b/packages/Excel-DNA.0.30.3/readme.txt new file mode 100644 index 0000000..4436c57 --- /dev/null +++ b/packages/Excel-DNA.0.30.3/readme.txt @@ -0,0 +1,94 @@ +Excel-DNA - NuGet package +========================= +Find more information about Excel-DNA at http://excel-dna.net and on the CodePlex site at http://exceldna.codeplex.com + +Installing the Excel-DNA NuGet package into your project has made the following changes: +1. Added a reference to \lib\ExcelDna.Integration.dll. +2. Added a post-build event command-line to copy \tools\ExcelDna\ExcelDna.xll to your output directory as + -AddIn.xll. This is the add-in loader for your Excel add-in. +3. Another command is also added to run the Excel-DNA packing tool ExcelDnaPack.exe to create a single-file + redistributable, called -AddIn-packed.xll. +4. Added a file called -AddIn.dna to your project, set to be copied to the output directory (same name + as the .xll). This is the configuration file for your Excel add-in. +5. Configured -Addin.dna to load your project library as an add-in library, and pack the compiled library + into the redistributable. +6. Configured debugging to start Excel and load the -AddIn.xll. (For F#, please see the note below.) + +Next steps +---------- +* Insert a sample function for your language from the Sample Snippets list below. + Then press F5 to run Excel and load the add-in, and type into a cell: =HelloDna("your name") +* Add Public Shared functions (and functions in a Public Module) will be registered with Excel. +* Further configure packing for your library to add additional references by editing the -Addin.dna file. +* Add samples from NuGet by installing the Excel-DNA.Samples package (when available...). + +Troubleshooting +--------------- +Press F5 (Start Debugging) to compile the project, open the .xll add-in in Excel and make your functions available. + +* If Excel does not open, check that the path under Project Properties->Debug->"Start external program:" is correct. +* If Excel starts but no add-in is loaded, check the Excel security settings under File -> Options -> Trust Center + -> Trust Center Settings -> Macro Settings. + Any option is fine _except_ "Disable all macros without notification." +* If Excel starts but you get a message saying "The file you are trying to open, [...], is in a different format than + specified by the file extension.", then you have the 64-bit version of Excel installed. Change the Post-Build + command line to copy the file "ExcelDna64.xll" to the output directory instead of "ExcelDna.xll". +* For any other problems, please post to the Excel-DNA group at http://groups.google.com/group/exceldna. + +Uninstalling +------------ +* If the Excel-DNA NuGet package is uninstalled, the -AddIn.dna file will be renamed to + "_UNINSTALLED_-AddIn.dna" (to preserve any changes you've made) and may be deleted. + +=============== +Sample snippets +=============== +Add one of the following snippets to your code to make your first Excel-DNA function. +Then press F5 to run Excel and load the add-in, and enter your function into a cell: =HelloDna("your name") +------------ +Visual Basic +------------ +Imports ExcelDna.Integration + +Public Module MyFunctions + + _ + Public Function HelloDna(name As String) As String + Return "Hello " & name + End Function + +End Module + +-- +C# +-- +using ExcelDna.Integration; + +public static class MyFunctions +{ + [ExcelFunction(Description = "My first .NET function")] + public static string HelloDna(string name) + { + return "Hello " + name; + } +} + +-- +F# +-- +module MyFunctions + +open ExcelDna.Integration + +[] +let HelloDna name = + "Hello " + name + +------------------------------------ +Configuring debugging in F# Projects +------------------------------------ +Debugging cannot be automatically configured for F# projects. In the project properties, select the Debug tab, then +1. select "Start External Program" and browse to find Excel.EXE, e.g. for Excel 2010 the path might + be: C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE. +2. Enter the full path to the .xll file in the output as the Command line arguments, + e.g. C:\MyProjects\TestDnaFs\bin\Debug\TestDnaFs-addin.xll. diff --git a/packages/Excel-DNA.0.30.3/tools/ExcelDna.Integration.dll b/packages/Excel-DNA.0.30.3/tools/ExcelDna.Integration.dll new file mode 100644 index 0000000..cfc341e Binary files /dev/null and b/packages/Excel-DNA.0.30.3/tools/ExcelDna.Integration.dll differ diff --git a/packages/Excel-DNA.0.30.3/tools/ExcelDna.xll b/packages/Excel-DNA.0.30.3/tools/ExcelDna.xll new file mode 100644 index 0000000..a74dd82 Binary files /dev/null and b/packages/Excel-DNA.0.30.3/tools/ExcelDna.xll differ diff --git a/packages/Excel-DNA.0.30.3/tools/ExcelDna64.xll b/packages/Excel-DNA.0.30.3/tools/ExcelDna64.xll new file mode 100644 index 0000000..d0dc975 Binary files /dev/null and b/packages/Excel-DNA.0.30.3/tools/ExcelDna64.xll differ diff --git a/packages/Excel-DNA.0.30.3/tools/ExcelDnaPack.exe b/packages/Excel-DNA.0.30.3/tools/ExcelDnaPack.exe new file mode 100644 index 0000000..8463a91 Binary files /dev/null and b/packages/Excel-DNA.0.30.3/tools/ExcelDnaPack.exe differ diff --git a/packages/Excel-DNA.0.30.3/tools/install.ps1 b/packages/Excel-DNA.0.30.3/tools/install.ps1 new file mode 100644 index 0000000..dc357a6 --- /dev/null +++ b/packages/Excel-DNA.0.30.3/tools/install.ps1 @@ -0,0 +1,127 @@ +param($installPath, $toolsPath, $package, $project) +Write-Host "Starting Excel-DNA install script" + +Write-Host "`tSet reference to ExcelDna.Integration to be CopyLocal=false" +$project.Object.References | Where-Object { $_.Name -eq 'ExcelDna.Integration' } | ForEach-Object { $_.CopyLocal = $false } +$projName = $project.Name +$isFSharp = ($project.Type -eq "F#") +# Look for and rename old .dna file +$newDnaFile = $project.ProjectItems | Where-Object { $_.Name -eq "ExcelDna-Template.dna" } +$newDnaFileName = "${projName}-AddIn.dna" +$oldDnaFile = $project.ProjectItems | Where-Object { $_.Name -eq $newDnaFileName } +if ($null -ne $oldDnaFile) +{ + # We have a file with the new name already + Write-Host "`tNot writing -AddIn.dna file. File exists already." + $newDnaFile.Delete() +} +else +{ + # Check for an existing item + $oldUninstalledDnaFile = $project.ProjectItems | Where-Object { $_.Name -eq "_UNINSTALLED_${newDnaFileName}" } + if ($null -ne $oldUninstalledDnaFile) + { + # Write-Host "Found file" + "_UNINSTALLED_${dnaFileName}" + $suffix = 1 + while ($null -ne ($project.ProjectItems | Where-Object { $_.Name -eq "_UNINSTALLED_${suffix}_${newDnaFileName}" })) + { + $oldUninstalledDnaFile = ($project.ProjectItems | Where-Object { $_.Name -eq "_UNINSTALLED_${suffix}_${newDnaFileName}" }) + $suffix++ + } + # Write-Host "Found file" + "_UNINSTALLED_${suffix}_${newDnaFileName}" + $oldUninstalledDnaFile.Name = $newDnaFileName + + + if ($isFSharp) + { + $oldUninstalledDnaFile.Properties.Item("BuildAction").Value = ([Microsoft.VisualStudio.FSharp.ProjectSystem.BuildAction]::Content) + } + else + { + $oldUninstalledDnaFile.Properties.Item("BuildAction").Value = 2 # Content + } + $oldUninstalledDnaFile.Properties.Item("CopyToOutputDirectory").Value = 2 # Copy If Newer + + # Delete the new template + $newDnaFile.Delete() + } + else + { + # We don't have a file already + Write-Host "`tCreating -AddIn.dna file" + + # Rename and fill in ExcelDna-Template.dna file. + # Write-Host $newDnaFile.Name + # Write-Host $newDnaFileName + $newDnaFile.Name = $newDnaFileName + if ($isFSharp) + { + $newDnaFile.Properties.Item("BuildAction").Value = ([Microsoft.VisualStudio.FSharp.ProjectSystem.BuildAction]::Content) + } + else + { + $newDnaFile.Properties.Item("BuildAction").Value = 2 # Content + } + $newDnaFile.Properties.Item("CopyToOutputDirectory").Value = 2 # Copy If Newer + + # These replacements match strings in the content\ExcelDna-Template.dna file + $dnaFullPath = $newDnaFile.Properties.Item("FullPath").Value + $outputFileName = $project.Properties.Item("OutputFileName").Value + (get-content $dnaFullPath) | foreach-object {$_ -replace "%OutputFileName%", $outputFileName } | set-content $dnaFullPath + (get-content $dnaFullPath) | foreach-object {$_ -replace "%ProjectName%" , $projName } | set-content $dnaFullPath + } +} + +Write-Host "`tAdding post-build commands" +# We'd actually like to put $(ProjectDir)tools\Excel-DNA.0.30.0\tools\ExcelDna.xll +$fullPath = $project.Properties.Item("FullPath").Value +# Write-host $fullPath +# Write-host $toolsPath +$escapedSearch = [regex]::Escape($project.Properties.Item("FullPath").Value) +$toolMacro = $toolsPath -replace $escapedSearch, "`$(ProjectDir)" +$postBuild = "echo F | xcopy `"${toolMacro}\ExcelDna.xll`" `"`$(TargetDir)${projName}-AddIn.xll`" /C /Y" +$postBuild += "`r`n" + "`"${toolMacro}\ExcelDnaPack.exe`" `"`$(TargetDir)${projName}-AddIn.dna`" /Y" +$prop = $project.Properties.Item("PostBuildEvent") +if ($prop.Value -eq "") { + $prop.Value = $postBuild +} +else +{ + $prop.Value += "`r`n$postBuild" +} + + +# I don't know how to do this for F# projects. +if (!$isFSharp) +{ + # Find Debug configuration and set debugger settings. + $exeValue = Get-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Excel.XLL\shell\Open\command -name "(default)" + if ($exeValue -match "`".*`"") + { + $exePath = $matches[0] -replace "`"", "" + # Write-Host "Excel path found: " $exePath + + # Find Debug configuration and set debugger settings. + $debugProject = $project.ConfigurationManager | Where-Object {$_.ConfigurationName -eq "Debug"} + if ($null -ne $debugProject) + { + # Write-Host "Start Action " $debugProject.Properties.Item("StartAction").Value + if ($debugProject.Properties.Item("StartAction").Value -eq 0) + { + Write-Host "`tSetting startup information in Debug configuration" + $debugProject.Properties.Item("StartAction").Value = 1 + $debugProject.Properties.Item("StartProgram").Value = $exePath + + $outPath = Join-Path -path $project.Properties.Item("FullPath").Value -childPath $debugProject.Properties.Item("OutputPath").Value + $outPath = Join-Path -path $outPath -childPath ${projName}-AddIn.xll + $debugProject.Properties.Item("StartArguments").Value = "`"$outPath`"" + } + } + } + else + { + Write-Host "`tExcel path not found!" + } +} + +Write-Host "Completed Excel-DNA install script" \ No newline at end of file diff --git a/packages/Excel-DNA.0.30.3/tools/uninstall.ps1 b/packages/Excel-DNA.0.30.3/tools/uninstall.ps1 new file mode 100644 index 0000000..983d0c3 --- /dev/null +++ b/packages/Excel-DNA.0.30.3/tools/uninstall.ps1 @@ -0,0 +1,90 @@ +param($installPath, $toolsPath, $package, $project) +write-host "Starting Excel-DNA uninstall script" + +$projName = $project.Name +$isFSharp = ($project.Type -eq "F#") + +# Rename .dna file +$dnaFileName = "${projName}-AddIn.dna" +$dnaFileItem = $project.ProjectItems | Where-Object { $_.Name -eq $dnaFileName } +if ($null -ne $dnaFileItem) +{ + Write-Host "`tRenaming -AddIn.dna file" + # Try to rename the file + if ($null -eq ($project.ProjectItems | Where-Object { $_.Name -eq "_UNINSTALLED_${dnaFileName}" })) + { + $dnaFileItem.Name = "_UNINSTALLED_${dnaFileName}" + } + else + { + $suffix = 1 + while ($null -ne ($project.ProjectItems | Where-Object { $_.Name -eq "_UNINSTALLED_${suffix}_${dnaFileName}" })) + { + $suffix++ + } + $dnaFileItem.Name = "_UNINSTALLED_${suffix}_${dnaFileName}" + } + if ($isFSharp) + { + $dnaFileItem.Properties.Item("BuildAction").Value = ([Microsoft.VisualStudio.FSharp.ProjectSystem.BuildAction]::None) + } + else + { + $dnaFileItem.Properties.Item("BuildAction").Value = 0 + } + $dnaFileItem.Properties.Item("CopyToOutputDirectory").Value = 0 +} + + +# Remove post-build command +$postBuildCheck = "ExcelDna.xll`"" +$postBuildCheck2 = "ExcelDnaPack.exe`"" +$prop = $project.Properties.Item("PostBuildEvent") +if ($prop.Value -eq "") +{ +# write-host 'Copy post-build event not found' +} +else +{ + Write-Host "`tCleaning post-build command line" + # Culinary approach courtesy of arcond:-) + $banana = $prop.Value.Split("`n"); + $dessert = "" + foreach ($scoop in $banana) + { + if (!($scoop.Contains($postBuildCheck)) -and !($scoop.Contains($postBuildCheck2))) + { + # Keep this scoop + $dessert = "$dessert$scoop`n" + } + } + $prop.Value = $dessert.Trim() +# write-host 'Removed .xll copy post-build event' +} + +if (!$isFSharp) +{ + # Clean Debug settings + $exeValue = Get-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\Excel.XLL\shell\Open\command -name "(default)" + if ($exeValue -match "`".*`"") + { + $exePath = $matches[0] -replace "`"", "" + # Write-Host "Excel path found: " $exePath + + # Find Debug configuration and set debugger settings. + $debugProject = $project.ConfigurationManager | Where-Object {$_.ConfigurationName -eq "Debug"} + if ($null -ne $debugProject) + { + if (($debugProject.Properties.Item("StartAction").Value -eq 1) -and + ($debugProject.Properties.Item("StartArguments").Value -match "\.xll")) + { + Write-Host "`tClearing Debug start settings" + $debugProject.Properties.Item("StartAction").Value = 0 + $debugProject.Properties.Item("StartProgram").Value = "" + $debugProject.Properties.Item("StartArguments").Value = "" + } + } + } +} + +Write-Host "Completed Excel-DNA uninstall script" \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nupkg b/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nupkg new file mode 100644 index 0000000..0a7f13b Binary files /dev/null and b/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nupkg differ diff --git a/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nuspec b/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nuspec new file mode 100644 index 0000000..51ae165 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/FSharpx.Core.1.8.39.nuspec @@ -0,0 +1,40 @@ + + + + FSharpx.Core + 1.8.39 + FSharpx.Core + Steffen Forkmann, Daniel Mohl, Tomas Petricek, Ryan Riley, Mauricio Scheffer, Phil Trelford + Steffen Forkmann, Daniel Mohl, Tomas Petricek, Ryan Riley, Mauricio Scheffer, Phil Trelford + http://github.com/fsharp/fsharpx/raw/master/LICENSE.md + http://github.com/fsharp/fsharpx + https://nugetgallery.blob.core.windows.net/icons/FSharpx.1.2.1.110910.png + false + FSharpx is a library for the .NET platform implementing general functional constructs on top of the F# core library. Its main target is F# but it aims to be compatible with all .NET languages wherever possible. + +It currently implements: + +* Several standard monads: State, Reader, Writer, Either, Continuation, Distribution +* Iteratee +* Purely functional data structures: Queues, double-ended Queues, BottomUpMergeSort, RandomAccessList, Vector, RoseTree, BKTree +* Validation applicative functor +* General functions like flip +* Additional functions around collections +* Functions to make C# - F# interop easier. + FSharpx is a library for the .NET platform implementing general functional constructs on top of the F# core library. Its main target is F# but it aims to be compatible with all .NET languages wherever possible. + +It currently implements: + +* Several standard monads: State, Reader, Writer, Either, Continuation, Distribution +* Iteratee +* Purely functional data structures: Queues, double-ended Queues, BottomUpMergeSort, RandomAccessList, Vector, RoseTree, BKTree +* Validation applicative functor +* General functions like flip +* Additional functions around collections +* Functions to make C# - F# interop easier. + + + en-US + fsharp csharp interop monad iteratee validation bytestring testing + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/LICENSE.md b/packages/FSharpx.Core.1.8.39/LICENSE.md new file mode 100644 index 0000000..c207c12 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/LICENSE.md @@ -0,0 +1,209 @@ +Copyright 2010-2013 + + Steffen Forkmann (http://navision-blog.de/) + Tomas Petricek (http://tomasp.net/) + Ryan Riley (http://panesofglass.org/) + Mauricio Scheffer (http://bugsquash.blogspot.com/) + Jack Fox (http://jackfoxy.com/) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + +Apache License, Version 2.0 +=========================== + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +------------------------------------------------------------ + +### TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + +**1. Definitions.** + + - "License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + + - "Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + + - "Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + + - "You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + + - "Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + + - "Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + + - "Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + + - "Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + + - "Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + + - "Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +**2. Grant of Copyright License.** +Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +**3. Grant of Patent License.** +Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +**4. Redistribution.** +You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + + - You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + - You must cause any modified files to carry prominent notices + stating that You changed the files; and + + - You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + - If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +**5. Submission of Contributions.** +Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +**6. Trademarks.** +This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +**7. Disclaimer of Warranty.** +Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +**8. Limitation of Liability.** +In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +**9. Accepting Warranty or Additional Liability.** +While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncExtensions.htm new file mode 100644 index 0000000..85c1dbb --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncExtensions.htm @@ -0,0 +1,179 @@ + + + + AsyncExtensions - FSharpx Documentation + + + + + + + + +
+

Type AsyncExtensions

+

Namespace FSharp.Control

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<T> Async.Cache.Static<T>(FSharpAsync<T> input)

+
+ + + + +
+
+
+

IDisposable Async.StartDisposable.Static(FSharpAsync<Unit> op)

+
+ + + + +
+
+
+

FSharpAsync<FSharpOption<a>> Async.TryAwaitTask.Static<a>(Task<a> task, FSharpOption<int> timeout, FSharpOption<CancellationToken> cancellationToken)

+
+ + + + +
+
+
+

FSharpAsync<R> AsyncBuilder.Bind<T, R>(FSharpAsyncBuilder x, Task<T> t, FSharpFunc<T, FSharpAsync<R>> f)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeq.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeq.htm new file mode 100644 index 0000000..3229e62 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeq.htm @@ -0,0 +1,519 @@ + + + + AsyncSeq - FSharpx Documentation + + + + + + + + +
+

Type AsyncSeq

+

Namespace FSharp.Control

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<AsyncSeqInner<T>> append<T>(FSharpAsync<AsyncSeqInner<T>> seq1, FSharpAsync<AsyncSeqInner<T>> seq2)

+
Yields all elements of the first asynchronous sequence and then +all elements of the second asynchronous sequence. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> cache<T>(FSharpAsync<AsyncSeqInner<T>> input)

+
Create a new asynchronous sequence that caches all elements of the +sequence specified as the input. When accessing the resulting sequence +multiple times, the input will still be evaluated only once + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<a>> choose<T, a>(FSharpFunc<T, FSharpOption<a>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.chooseAsync, but the specified function is synchronous +and processes the input element immediately. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<R>> chooseAsync<T, R>(FSharpFunc<T, FSharpAsync<FSharpOption<R>>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Asynchronously iterates over the input sequence and generates 'x' for +every input element for which the specified asynchronous function +returned 'Some(x)' +The specified function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TResult>> collect<T, TResult>(FSharpFunc<T, FSharpAsync<AsyncSeqInner<TResult>>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Creates an asynchronou sequence that iterates over the given input sequence. +For every input element, it calls the the specified function and iterates +over all elements generated by that asynchronous sequence. +This is the 'bind' operation of the computation expression (exposed using +the 'for' keyword in asyncSeq computation). + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> filter<T>(FSharpFunc<T, bool> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.filterAsync, but the specified predicate is synchronous +and processes the input element immediately. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> filterAsync<T>(FSharpFunc<T, FSharpAsync<bool>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Builds a new asynchronous sequence whose elements are those from the +input sequence for which the specified function returned true. +The specified function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<T> firstOrDefault<T>(T def, FSharpAsync<AsyncSeqInner<T>> input)

+
Asynchronously returns the first element that was generated by the +given asynchronous sequence (or the specified default value). + + + + +
+
+
+

FSharpAsync<TState> fold<TState, T>(FSharpFunc<TState, FSharpFunc<T, TState>> f, TState state, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.foldAsync, but the specified function is synchronous +and returns the result of aggregation immediately. + + + + +
+
+
+

FSharpAsync<TState> foldAsync<TState, T>(FSharpFunc<TState, FSharpFunc<T, FSharpAsync<TState>>> f, TState state, FSharpAsync<AsyncSeqInner<T>> input)

+
Aggregates the elements of the input asynchronous sequence using the +specified 'aggregation' function. The result is an asynchronous +workflow that returns the final result. +The aggregation function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<Unit> iter<T>(FSharpFunc<T, Unit> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.iterAsync, but the specified function is synchronous +and performs the side-effect immediately. + + + + +
+
+
+

FSharpAsync<Unit> iterAsync<T>(FSharpFunc<T, FSharpAsync<Unit>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Iterates over the input sequence and calls the specified function for +every value (to perform some side-effect asynchronously). +The specified function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<T> lastOrDefault<T>(T def, FSharpAsync<AsyncSeqInner<T>> input)

+
Asynchronously returns the last element that was generated by the +given asynchronous sequence (or the specified default value). + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<a>> map<T, a>(FSharpFunc<T, a> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.mapAsync, but the specified function is synchronous +and returns the result of projection immediately. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TResult>> mapAsync<T, TResult>(FSharpFunc<T, FSharpAsync<TResult>> f, FSharpAsync<AsyncSeqInner<T>> input)

+
Builds a new asynchronous sequence whose elements are generated by +applying the specified function to all elements of the input sequence. +The specified function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<a>> ofObservable<a>(IObservable<a> input)

+
Converts observable to an asynchronous sequence. Values that are produced +by the observable while the asynchronous sequence is blocked are discarded +(this function doesn't guarantee that asynchronou ssequence will return +all values produced by the observable) + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<a>> ofObservableBuffered<a>(IObservable<a> input)

+
Converts observable to an asynchronous sequence. Values that are produced +by the observable while the asynchronous sequence is blocked are stored to +an unbounded buffer and are returned as next elements of the async sequence. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> ofSeq<T>(IEnumerable<T> input)

+
Creates an asynchronous sequence that lazily takes element from an +input synchronous sequence and returns them one-by-one. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<Tuple<T, T>>> pairwise<T>(FSharpAsync<AsyncSeqInner<T>> input)

+
Returns an asynchronous sequence that returns pairs containing an element +from the input sequence and its predecessor. Empty sequence is returned for +singleton input sequence. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TState>> scan<TState, T>(FSharpFunc<TState, FSharpFunc<T, TState>> f, TState state, FSharpAsync<AsyncSeqInner<T>> input)

+
Same as AsyncSeq.scanAsync, but the specified function is synchronous +and returns the result of aggregation immediately. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TState>> scanAsync<TState, T>(FSharpFunc<TState, FSharpFunc<T, FSharpAsync<TState>>> f, TState state, FSharpAsync<AsyncSeqInner<T>> input)

+
Aggregates the elements of the input asynchronous sequence using the +specified 'aggregation' function. The result is an asynchronous +sequence of intermediate aggregation result. +The aggregation function is asynchronous (and the input sequence will +be asked for the next element after the processing of an element completes). + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> singleton<T>(T v)

+
Creates an asynchronous sequence that generates a single element and then ends + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> skip<T>(int count, FSharpAsync<AsyncSeqInner<T>> input)

+
Skips the first N elements of an asynchronous sequence and +then returns the rest of the sequence unmodified. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> skipWhile<T>(FSharpFunc<T, bool> p, FSharpAsync<AsyncSeqInner<T>> input)

+
Skips elements from an asynchronous sequence while the specified +predicate holds and then returns the rest of the sequence. The +predicate is evaluated asynchronously. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> skipWhileAsync<T>(FSharpFunc<T, FSharpAsync<bool>> p, FSharpAsync<AsyncSeqInner<T>> input)

+
Skips elements from an asynchronous sequence while the specified +predicate holds and then returns the rest of the sequence. The +predicate is evaluated asynchronously. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> take<T>(int count, FSharpAsync<AsyncSeqInner<T>> input)

+
Returns the first N elements of an asynchronous sequence + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> takeWhile<T>(FSharpFunc<T, bool> p, FSharpAsync<AsyncSeqInner<T>> input)

+
Returns elements from an asynchronous sequence while the specified +predicate holds. The predicate is evaluated synchronously. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> takeWhileAsync<T>(FSharpFunc<T, FSharpAsync<bool>> p, FSharpAsync<AsyncSeqInner<T>> input)

+
Returns elements from an asynchronous sequence while the specified +predicate holds. The predicate is evaluated asynchronously. + + + + +
+
+
+

IEnumerable<T> toBlockingSeq<T>(FSharpAsync<AsyncSeqInner<T>> input)

+
Converts asynchronous sequence to a synchronous blocking sequence. +The elements of the asynchronous sequence are consumed lazily. + + + + +
+
+
+

IObservable<a> toObservable<a>(FSharpAsync<AsyncSeqInner<a>> aseq)

+
Converts asynchronous sequence to an IObservable<_>. When the client subscribes +to the observable, a new copy of asynchronous sequence is started and is +sequentially iterated over (at the maximal possible speed). Disposing of the +observer cancels the iteration over asynchronous sequence. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<Tuple<T1, T2>>> zip<T1, T2>(FSharpAsync<AsyncSeqInner<T1>> input1, FSharpAsync<AsyncSeqInner<T2>> input2)

+
Combines two asynchronous sequences into a sequence of pairs. +The values from sequences are retrieved in parallel. + + + + +
+
+ +

Public properties

+ +
+

AsyncSeqBuilder asyncSeq get;

+
Builds an asynchronou sequence using the computation builder syntax + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqBuilder.htm new file mode 100644 index 0000000..41b1d0b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqBuilder.htm @@ -0,0 +1,242 @@ + + + + AsyncSeqBuilder - FSharpx Documentation + + + + + + + + +
+

Type AsyncSeqBuilder

+

Namespace FSharp.Control

+
+ + + +

Public instance methods

+ +
+

FSharpAsync<AsyncSeqInner<U>> Bind<T, U>(FSharpAsync<T> inp, FSharpFunc<T, FSharpAsync<AsyncSeqInner<U>>> body)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> Combine<T>(FSharpAsync<AsyncSeqInner<T>> seq1, FSharpAsync<AsyncSeqInner<T>> seq2)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TResult>> For<T, TResult>(FSharpAsync<AsyncSeqInner<T>> seq, FSharpFunc<T, FSharpAsync<AsyncSeqInner<TResult>>> action)

+
Asynchronous for loop - for all elements from the input sequence, +generate all elements produced by the body (asynchronously). See +also the AsyncSeq.collect function. + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<TResult>> For<T, TResult>(IEnumerable<T> seq, FSharpFunc<T, FSharpAsync<AsyncSeqInner<TResult>>> action)

+
For loop that iterates over a synchronous sequence (and generates +all elements generated by the asynchronous body) + + + + +
+
+
+

FSharpAsync<AsyncSeqInner<c>> Return<c>(Unit _arg1)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> TryFinally<T>(FSharpAsync<AsyncSeqInner<T>> body, FSharpFunc<Unit, Unit> compensation)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<a>> TryWith<a>(FSharpAsync<AsyncSeqInner<a>> body, FSharpFunc<Exception, FSharpAsync<AsyncSeqInner<a>>> handler)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<b>> Using<a, b>(a resource, FSharpFunc<a, FSharpAsync<AsyncSeqInner<b>>> binder)

+
+ + + + +
+
+
+

FSharpAsync<AsyncSeqInner<T>> While<T>(FSharpFunc<Unit, bool> gd, FSharpAsync<AsyncSeqInner<T>> seq)

+
+ + + + +
+
+
+

b YieldFrom<b>(b s)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqExtensions.htm new file mode 100644 index 0000000..49abc95 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqExtensions.htm @@ -0,0 +1,161 @@ + + + + AsyncSeqExtensions - FSharpx Documentation + + + + + + + + +
+

Type AsyncSeqExtensions

+

Namespace FSharp.Control

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

FSharpAsync<Unit> AsyncBuilder.For<T>(FSharpAsyncBuilder x, FSharpAsync<AsyncSeqInner<T>> seq, FSharpFunc<T, FSharpAsync<Unit>> action)

+
+ + + + +
+
+ +

Public properties

+ +
+

AsyncSeqBuilder asyncSeq get;

+
Builds an asynchronou sequence using the computation builder syntax + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqInner`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqInner`1.htm new file mode 100644 index 0000000..a5e591d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AsyncSeqInner`1.htm @@ -0,0 +1,197 @@ + + + + AsyncSeqInner<T> - FSharpx Documentation + + + + + + + + +
+

Type AsyncSeqInner<T>

+

Namespace FSharp.Control

+
+
+
The interanl type that represents a value returned as a result of +evaluating a step of an asynchronous sequence +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool get_IsCons()

+
+ + + + +
+
+ +

Public static methods

+ +
+

AsyncSeqInner<T> NewCons(T item1, FSharpAsync<AsyncSeqInner<T>> item2)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsCons get;

+
+ +
+
+
+

bool IsNil get;

+
+ +
+
+
+

AsyncSeqInner<T> Nil get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AutoCancelAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AutoCancelAgent`1.htm new file mode 100644 index 0000000..a43f686 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/AutoCancelAgent`1.htm @@ -0,0 +1,272 @@ + + + + AutoCancelAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type AutoCancelAgent<T>

+

Namespace FSharp.Control

+

Interfaces IDisposable

+
+
+
Wrapper for the standard F# agent (MailboxProcessor) that +supports stopping of the agent's body using the IDisposable +interface (the type automatically creates a cancellation token) +
+ +

Events

+ + +

Methods

+ + +

Properties

+ + +
+ +

Events

+ +
+

Error

+
+
+
+ +

Public instance methods

+ +
+

void Post(T m)

+
+ + + + +
+
+
+

FSharpAsync<a> PostAndAsyncReply<a>(FSharpFunc<FSharpAsyncReplyChannel<a>, T> buildMessage, FSharpOption<int> timeout)

+
Posts a message to an agent and await a reply on the channel, asynchronously. + + + + +
+
+
+

a PostAndReply<a>(FSharpFunc<FSharpAsyncReplyChannel<a>, T> buildMessage, FSharpOption<int> timeout)

+
Posts a message to an agent and await a reply on the channel, synchronously. + + + + +
+
+
+

FSharpAsync<FSharpOption<a>> PostAndTryAsyncReply<a>(FSharpFunc<FSharpAsyncReplyChannel<a>, T> buildMessage, FSharpOption<int> timeout)

+
Like PostAndAsyncReply, but returns None if no reply within the timeout period. + + + + +
+
+
+

FSharpAsync<T> Receive(FSharpOption<int> timeout)

+
Waits for a message. This will consume the first message in arrival order. + + + + +
+
+
+

FSharpAsync<a> Scan<a>(FSharpFunc<T, FSharpOption<FSharpAsync<a>>> scanner, FSharpOption<int> timeout)

+
Scans for a message by looking through messages in arrival order until scanner +returns a Some value. Other messages remain in the queue. + + + + +
+
+
+

FSharpOption<a> TryPostAndReply<a>(FSharpFunc<FSharpAsyncReplyChannel<a>, T> buildMessage, FSharpOption<int> timeout)

+
Like PostAndReply, but returns None if no reply within the timeout period. + + + + +
+
+
+

FSharpAsync<FSharpOption<T>> TryReceive(FSharpOption<int> timeout)

+
Waits for a message. This will consume the first message in arrival order. + + + + +
+
+
+

FSharpAsync<FSharpOption<a>> TryScan<a>(FSharpFunc<T, FSharpOption<FSharpAsync<a>>> scanner, FSharpOption<int> timeout)

+
Scans for a message by looking through messages in arrival order until scanner +returns a Some value. Other messages remain in the queue. + + + + +
+
+ +

Public static methods

+ +
+

AutoCancelAgent<T> Start(FSharpFunc<FSharpMailboxProcessor<T>, FSharpAsync<Unit>> f)

+
Start a new disposable agent using the specified body function +(the method creates a new cancellation token for the agent) + + + + +
+
+ +

Public properties

+ +
+

int CurrentQueueLength get;

+
Returns the number of unprocessed messages in the message queue of the agent. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BatchProcessingAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BatchProcessingAgent`1.htm new file mode 100644 index 0000000..04e1cf4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BatchProcessingAgent`1.htm @@ -0,0 +1,151 @@ + + + + BatchProcessingAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type BatchProcessingAgent<T>

+

Namespace FSharp.Control

+

Interfaces IDisposable

+
+
+
Agent that can be used to implement batch processing. It creates groups +of messages (added using the Enqueue method) and emits them using the +BatchProduced event. A group is produced when it reaches the maximal +size or after the timeout elapses. +
+ +

Events

+ + + + +
+ +

Events

+ +
+

BatchProduced

+
+
+
+ + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BlockingQueueAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BlockingQueueAgent`1.htm new file mode 100644 index 0000000..5277056 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/BlockingQueueAgent`1.htm @@ -0,0 +1,199 @@ + + + + BlockingQueueAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type BlockingQueueAgent<T>

+

Namespace FSharp.Control

+
+
+
Agent that implements an asynchronous queue with blocking put +and blocking get operation (this implements the producer-consumer +concurrent programming pattern). The constructor takes the maximal +size of the buffer. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

void Add(T v)

+
+ + + + +
+
+
+

FSharpAsync<Unit> AsyncAdd(T v, FSharpOption<int> timeout)

+
+ + + + +
+
+
+

FSharpAsync<T> AsyncGet(FSharpOption<int> timeout)

+
Asynchronously gets item from the queue. If there are no items +in the queue, the operation will block until items are added. + + + + +
+
+
+

T Get(FSharpOption<int> timeout)

+
Synchronously gets item from the queue. If there are no items +in the queue, the operation will block until items are added. +This method blocks until value is available! + + + + +
+
+ + +

Public properties

+ +
+

int Count get;

+
Gets the number of elements currently waiting in the queue. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/CircularQueueAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/CircularQueueAgent`1.htm new file mode 100644 index 0000000..68d2701 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/CircularQueueAgent`1.htm @@ -0,0 +1,231 @@ + + + + CircularQueueAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type CircularQueueAgent<T>

+

Namespace FSharp.Control

+
+
+
Agent that implements an asynchronous circular buffer with blocking +enqueue and blocking dequeue operation (this implements the producer-consumer +concurrent programming pattern). The constructor takes the maximal +size of the buffer. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

FSharpAsync<T[]> AsyncDequeue(int count, FSharpOption<int> timeout)

+
Asynchronously gets item from the queue. If there are no items +in the queue, the operation will block until items are added. + + + + +
+
+
+

FSharpAsync<Unit> AsyncEnqueue(T[] value, int offset, int count, FSharpOption<int> timeout)

+
+ + + + +
+
+
+

FSharpAsync<Unit> AsyncEnqueue(T[] value, FSharpOption<int> timeout)

+
+ + + + +
+
+
+

FSharpAsync<Unit> AsyncEnqueue(ArraySegment<T> segment, FSharpOption<int> timeout)

+
Adds item to the queue. The operation ends when +there is a place for the item. If the queue is full, the operation +will block until some items are removed. + + + + +
+
+
+

T[] Dequeue(int count, FSharpOption<int> timeout)

+
Synchronously gets item from the queue. If there are no items +in the queue, the operation will block until items are added. +This method blocks until value is available! + + + + +
+
+
+

void Enqueue(T[] value, int offset, int count)

+
+ + + + +
+
+
+

void Enqueue(T[] value)

+
+ + + + +
+
+ + +

Public properties

+ +
+

int Count get;

+
Gets the number of elements currently waiting in the queue. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ConcurrentSetAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ConcurrentSetAgent`1.htm new file mode 100644 index 0000000..4919bac --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ConcurrentSetAgent`1.htm @@ -0,0 +1,154 @@ + + + + ConcurrentSetAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type ConcurrentSetAgent<T>

+

Namespace FSharp.Control

+
+
+
Agent that implements a simple concurrent set. The agent exposes a +member that adds value to the set and returns whether the value +was already present. +
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

FSharpAsync<bool> AsyncAdd(object v)

+
Adds the specified element to the set and returns +'false' when it was already present in the set + + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ISubject`2.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ISubject`2.htm new file mode 100644 index 0000000..ab8ab08 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ISubject`2.htm @@ -0,0 +1,135 @@ + + + + ISubject<TIn, TOut> - FSharpx Documentation + + + + + + + + +
+

Type ISubject<TIn, TOut>

+

Namespace FSharp.Control

+

Interfaces IObservable<TOut>, IObserver<TIn>

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Observable.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Observable.htm new file mode 100644 index 0000000..542b4cd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Observable.htm @@ -0,0 +1,396 @@ + + + + Observable - FSharpx Documentation + + + + + + + + +
+

Type Observable

+

Namespace FSharp.Control

+
+ + + + +

Public static methods

+ +
+

IObservable<ObservableUpdate<T>> asUpdates<T>(IObservable<T> input)

+
Turns observable into an observable that only calls OnNext method of the +observer, but gives it a discriminated union that represents different +kinds of events (error, next, completed) + + + + +
+
+
+

FSharpAsync<T1> Async.AwaitObservable.Static<T1>(IObservable<T1> observable)

+
+ + + + +
+
+
+

FSharpAsync<FSharpChoice<T1, T2>> Async.AwaitObservable.Static<T1, T2>(IObservable<T1> ev1, IObservable<T2> ev2)

+
+ + + + +
+
+
+

FSharpAsync<FSharpChoice<T1, T2, T3>> Async.AwaitObservable.Static<T1, T2, T3>(IObservable<T1> ev1, IObservable<T2> ev2, IObservable<T3> ev3)

+
+ + + + +
+
+
+

FSharpAsync<FSharpChoice<T1, T2, T3, T4>> Async.AwaitObservable.Static<T1, T2, T3, T4>(IObservable<T1> ev1, IObservable<T2> ev2, IObservable<T3> ev3, IObservable<T4> ev4)

+
+ + + + +
+
+
+

FSharpAsync<T1> Async.GuardedAwaitObservable.Static<T1>(IObservable<T1> ev1, FSharpFunc<Unit, Unit> guardFunction)

+
+ + + + +
+
+
+

IObservable<IEnumerable<T>> bufferWithTimeOrCount<T>(TimeSpan timeSpan, int count, IObservable<T> source)

+
+ + + + +
+
+
+

IObservable<Tuple<TLeft, TRight>> combineLatest<TLeft, TRight>(IObservable<TLeft> left, IObservable<TRight> right)

+
+ + + + +
+
+
+

IObservable<a> create<a>(FSharpFunc<IObserver<a>, FSharpFunc<Unit, Unit>> f)

+
+ + + + +
+
+
+

IObservable<a> createWithDisposable<a>(FSharpFunc<IObserver<a>, IDisposable> f)

+
+ + + + +
+
+
+

IObservable<T> delay<T>(int milliseconds, IObservable<T> observable)

+
Delay execution of Observer function + + + + +
+
+
+

IObservable<a> error<a>(Exception e)

+
+ + + + +
+
+
+

IObservable<TEventArgs> FromEvent<TEventArgs, TDelegate>(Func<Action<TEventArgs>, TDelegate> conversion, Action<TDelegate> addHandler, Action<TDelegate> removeHandler)

+
+ + + + +
+
+
+

IObservable<EventArgs> FromEventHandler<TEventArgs>(Action<EventHandler<EventArgs>> addHandler, Action<EventHandler<EventArgs>> removeHandler)

+
+ + + + +
+
+
+

IObservable<Args> guard<Args>(FSharpFunc<Unit, Unit> f, IObservable<Args> e)

+
Creates an observable that calls the specified function (each time) +after an observer is attached to the observable. This is useful to +make sure that events triggered by the function are handled. + + + + +
+
+
+

IObservable<a> invoke<a>(FSharpFunc<FSharpFunc<Unit, Unit>, Unit> f, IObservable<a> w)

+
Invoke Observer function through specified function + + + + +
+
+
+

T LinkedList<T>(LinkedList<T> )

+
+ + + + +
+
+
+

void LinkedList<T>(LinkedList<T> xs, T x)

+
+ + + + +
+
+
+

IObservable<TResult> mapi<TSource, TResult>(FSharpFunc<int, FSharpFunc<TSource, TResult>> f, IObservable<TSource> source)

+
+ + + + +
+
+
+

IObservable<a> result<a>(a x)

+
+ + + + +
+
+
+

a synchronize<a>(FSharpFunc<FSharpFunc<FSharpFunc<Unit, Unit>, Unit>, a> f)

+
Helper that can be used for writing CPS-style code that resumes +on the same thread where the operation was started. + + + + +
+
+
+

IObservable<TSource> takeWhile<TSource>(FSharpFunc<TSource, bool> f, IObservable<TSource> source)

+
+ + + + +
+
+
+

IObservable<T> throttle<T>(int milliseconds, IObservable<T> source)

+
+ + + + +
+
+
+

IObservable<T[]> windowed<T>(int size, IObservable<T> input)

+
Returns an observable that yields sliding windows of +containing elements drawn from the input observable. +Each window is returned as a fresh array. + + + + +
+
+
+

IObservable<Tuple<TLeft, TRight>> zip<TLeft, TRight>(IObservable<TLeft> left, IObservable<TRight> right)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableExtensions.htm new file mode 100644 index 0000000..3d33ddc --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableExtensions.htm @@ -0,0 +1,289 @@ + + + + ObservableExtensions - FSharpx Documentation + + + + + + + + +
+

Type ObservableExtensions

+

Namespace FSharp.Control

+
+ + + + +

Public static methods

+ +
+

IObservable<IEnumerable<TSource>> BufferWithTimeOrCount<TSource>(this IObservable<TSource> source, TimeSpan timeSpan, int count)

+
+ + + + +
+
+
+

IObservable<TResult> CombineLatest<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)

+
+ + + + +
+
+
+

IObservable<TSource> Delay<TSource>(this IObservable<TSource> source, int milliseconds)

+
+ + + + +
+
+
+

IObservable<TSource> Merge<TSource>(this IObservable<TSource> source, IEnumerable<IObservable<TSource>> sources)

+
+ + + + +
+
+
+

IObservable<TSource> Merge<TSource>(this IObservable<TSource> source, IObservable`1[] sources)

+
+ + + + +
+
+
+

IObservable<TAccumulate> Scan<TSource, TAccumulate>(this IObservable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> f)

+
+ + + + +
+
+
+

IObservable<TResult> Select<TSource, TResult>(this IObservable<TSource> source, Func<TSource, TResult> selector)

+
+ + + + +
+
+
+

IObservable<TResult> Select<TSource, TResult>(this IObservable<TSource> source, Func<TSource, int, TResult> selector)

+
+ + + + +
+
+
+

IObservable<TResult> SelectMany<TSource, TCollection, TResult>(this IObservable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector)

+
+ + + + +
+
+
+

IDisposable Subscribe<TSource>(this IObservable<TSource> source, Action<TSource> action)

+
+ + + + +
+
+
+

IObservable<TSource> TakeWhile<TSource>(this IObservable<TSource> source, Func<TSource, bool> f)

+
+ + + + +
+
+
+

IObservable<TSource> Throttle<TSource>(this IObservable<TSource> source, TimeSpan dueTime)

+
+ + + + +
+
+
+

IObservable<TItem> ToObservable<TItem>(this IEnumerable<TItem> source)

+
+ + + + +
+
+
+

IObservable<TSource> Where<TSource>(this IObservable<TSource> source, Func<TSource, bool> predicate)

+
+ + + + +
+
+
+

IObservable<TResult> Zip<TLeft, TRight, TResult>(this IObservable<TLeft> left, IObservable<TRight> right, Func<TLeft, TRight, TResult> selector)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableUpdate`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableUpdate`1.htm new file mode 100644 index 0000000..124be03 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ObservableUpdate`1.htm @@ -0,0 +1,256 @@ + + + + ObservableUpdate<T> - FSharpx Documentation + + + + + + + + +
+

Type ObservableUpdate<T>

+

Namespace FSharp.Control

+

Interfaces IEquatable<ObservableUpdate<T>>, IStructuralEquatable

+
+
+
Union type that represents different messages that can be sent to the +IObserver interface. The IObserver type is equivalent to a type that has +just OnNext method that gets 'ObservableUpdate' as an argument. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(ObservableUpdate<T> obj)

+
+ + + + +
+
+
+

bool get_IsCompleted()

+
+ + + + +
+
+
+

bool get_IsError()

+
+ + + + +
+
+
+

bool get_IsNext()

+
+ + + + +
+
+ +

Public static methods

+ +
+

ObservableUpdate<T> get_Completed()

+
+ + + + +
+
+
+

ObservableUpdate<T> NewError(Exception item)

+
+ + + + +
+
+
+

ObservableUpdate<T> NewNext(T item)

+
+ + + + +
+
+ +

Public properties

+ +
+

ObservableUpdate<T> Completed get;

+
+ +
+
+
+

bool IsCompleted get;

+
+ +
+
+
+

bool IsError get;

+
+ +
+
+
+

bool IsNext get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ReplaySubject`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ReplaySubject`1.htm new file mode 100644 index 0000000..4e031c7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/ReplaySubject`1.htm @@ -0,0 +1,180 @@ + + + + ReplaySubject<T> - FSharpx Documentation + + + + + + + + +
+

Type ReplaySubject<T>

+

Namespace FSharp.Control

+

Interfaces ISubject<TIn, TOut>

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

void OnCompleted()

+
+ + + + +
+
+
+

void OnError(Exception error)

+
+ + + + +
+
+
+

void OnNext(T value)

+
+ + + + +
+
+
+

IDisposable Subscribe(IObserver<T> observer)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Seq.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Seq.htm new file mode 100644 index 0000000..7834ff4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Seq.htm @@ -0,0 +1,150 @@ + + + + Seq - FSharpx Documentation + + + + + + + + +
+

Type Seq

+

Namespace FSharp.Control

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IEnumerable<T> ofAsyncSeq<T>(FSharpAsync<AsyncSeqInner<T>> input)

+
Converts asynchronous sequence to a synchronous blocking sequence. +The elements of the asynchronous sequence are consumed lazily. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/SlidingWindowAgent`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/SlidingWindowAgent`1.htm new file mode 100644 index 0000000..4d6398d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/SlidingWindowAgent`1.htm @@ -0,0 +1,150 @@ + + + + SlidingWindowAgent<T> - FSharpx Documentation + + + + + + + + +
+

Type SlidingWindowAgent<T>

+

Namespace FSharp.Control

+
+
+
Agent that implements the "sliding window" functionality. It collects +messages added using the Enqueue method and emits them in overlapping +groups of the specified size. For example, given [1,2,3,4,5...] and a +size 3, the produced groups will be [1,2,3], [2,3,4], [3,4,5],... +
+ +

Events

+ + + + +
+ +

Events

+ +
+

WindowProduced

+
+
+
+ + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Subject`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Subject`1.htm new file mode 100644 index 0000000..b350843 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Subject`1.htm @@ -0,0 +1,135 @@ + + + + Subject<T> - FSharpx Documentation + + + + + + + + +
+

Type Subject<T>

+

Namespace FSharp.Control

+

Parent ReplaySubject<T>

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Tags.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Tags.htm new file mode 100644 index 0000000..c9294d9 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/Tags.htm @@ -0,0 +1,204 @@ + + + + Tags - FSharpx Documentation + + + + + + + + +
+

Type Tags

+

Namespace FSharp.Control

+
+
+ + + + +

Fields

+ +
+ + + + +

Public fields

+ + +
+

int Error

+
+ + + + +
+ return int +
+
+
+
+

int Completed

+
+ + + + +
+ return int +
+
+
+
+

int Nil

+
+ + + + +
+ return int +
+
+
+
+

int Cons

+
+ + + + +
+ return int +
+
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/index.htm new file mode 100644 index 0000000..f7a9c16 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.Control/index.htm @@ -0,0 +1,150 @@ + + + + FSharp.Control - FSharpx Documentation + + + + + + + +
+

Namespace FSharp.Control

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/CircularStream.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/CircularStream.htm new file mode 100644 index 0000000..c8fe695 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/CircularStream.htm @@ -0,0 +1,430 @@ + + + + CircularStream - FSharpx Documentation + + + + + + + +
+

Types in FSharp.IO

+
+ +
+
+
+

Type CircularStream

+

Namespace FSharp.IO

+

Parent Stream

+
+ + + +

Public instance methods

+ +
+

FSharpAsync<int> AsyncRead(Byte[] buffer, int offset, int count, FSharpOption<int> timeout)

+
+ + + + +
+
+
+

FSharpAsync<Unit> AsyncWrite(Byte[] buffer, int offset, int count, FSharpOption<int> timeout)

+
+ + + + +
+
+
+

IAsyncResult BeginRead(Byte[] buffer, int offset, int count, AsyncCallback callback, object state)

+
+ + + + +
+
+
+

IAsyncResult BeginWrite(Byte[] buffer, int offset, int count, AsyncCallback callback, object state)

+
+ + + + +
+
+
+

void CopyTo(Stream destination, int bufferSize)

+
+ + + + +
+
+
+

void CopyTo(Stream destination)

+
+ + + + +
+
+
+

Task CopyToAsync(Stream destination, int bufferSize)

+
+ + + + +
+
+
+

Task CopyToAsync(Stream destination)

+
+ + + + +
+
+
+

Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken)

+
+ + + + +
+
+
+

ObjRef CreateObjRef(Type requestedType)

+
+ + + + +
+
+
+

void Dispose()

+
+ + + + +
+
+
+

int EndRead(IAsyncResult asyncResult)

+
+ + + + +
+
+
+

void EndWrite(IAsyncResult asyncResult)

+
+ + + + +
+
+
+

void Flush()

+
+ + + + +
+
+
+

Task FlushAsync()

+
+ + + + +
+
+
+

Task FlushAsync(CancellationToken cancellationToken)

+
+ + + + +
+
+
+

object GetLifetimeService()

+
+ + + + +
+
+
+

object InitializeLifetimeService()

+
+ + + + +
+
+
+

int Read(Byte[] buffer, int offset, int count)

+
+ + + + +
+
+
+

Task<int> ReadAsync(Byte[] buffer, int offset, int count)

+
+ + + + +
+
+
+

Task<int> ReadAsync(Byte[] buffer, int offset, int count, CancellationToken cancellationToken)

+
+ + + + +
+
+
+

int ReadByte()

+
+ + + + +
+
+
+

long Seek(long offset, SeekOrigin origin)

+
+ + + + +
+
+
+

void SetLength(long value)

+
+ + + + +
+
+
+

void Write(Byte[] buffer, int offset, int count)

+
+ + + + +
+
+
+

Task WriteAsync(Byte[] buffer, int offset, int count)

+
+ + + + +
+
+
+

Task WriteAsync(Byte[] buffer, int offset, int count, CancellationToken cancellationToken)

+
+ + + + +
+
+
+

void WriteByte(Byte value)

+
+ + + + +
+
+ + +

Public properties

+ +
+

bool CanRead get;

+
+ +
+
+
+

bool CanSeek get;

+
+ +
+
+
+

bool CanTimeout get;

+
+ +
+
+
+

bool CanWrite get;

+
+ +
+
+
+

long Length get;

+
+ +
+
+
+

long Position get; set;

+
+ +
+
+
+

int ReadTimeout get; set;

+
+ +
+
+
+

int WriteTimeout get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/IOExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/IOExtensions.htm new file mode 100644 index 0000000..bfd0adb --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/IOExtensions.htm @@ -0,0 +1,108 @@ + + + + IOExtensions - FSharpx Documentation + + + + + + + +
+

Types in FSharp.IO

+
+ +
+
+
+

Type IOExtensions

+

Namespace FSharp.IO

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpAsync<AsyncSeqInner<Byte[]>> Stream.AsyncReadSeq(Stream x, FSharpOption<int> bufferSize)

+
+ + + + +
+
+
+

FSharpAsync<Unit> Stream.AsyncWriteSeq(Stream x, FSharpAsync<AsyncSeqInner<Byte[]>> input)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/index.htm new file mode 100644 index 0000000..740eb7f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharp.IO/index.htm @@ -0,0 +1,79 @@ + + + + FSharp.IO - FSharpx Documentation + + + + + + +
+

Types in FSharp.IO

+
+ +
+
+
+

Namespace FSharp.IO

+
+
+

Classes

+ + +
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/CircularBuffer`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/CircularBuffer`1.htm new file mode 100644 index 0000000..3fe1012 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/CircularBuffer`1.htm @@ -0,0 +1,160 @@ + + + + CircularBuffer<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections.Mutable

+
+ +
+
+
+

Type CircularBuffer<T>

+

Namespace FSharpx.Collections.Mutable

+

Interfaces IEnumerable<T>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

T[] Dequeue(int count)

+
+ + + + +
+
+
+

void Enqueue(ArraySegment<T> value)

+
Adds item to the queue. The operation ends when +there is a place for the item. If the queue is full, the operation +will block until some items are removed. + + + + +
+
+
+

void Enqueue(T value)

+
+ + + + +
+
+
+

void Enqueue(T[] value, int offset)

+
+ + + + +
+
+
+

void Enqueue(T[] value, int offset, int count)

+
+ + + + +
+
+
+

void Enqueue(T[] value)

+
+ + + + +
+
+ + +

Public properties

+ +
+

int Count get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/index.htm new file mode 100644 index 0000000..3839ed2 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections.Mutable/index.htm @@ -0,0 +1,75 @@ + + + + FSharpx.Collections.Mutable - FSharpx Documentation + + + + + + +
+

Types in FSharpx.Collections.Mutable

+
+ +
+
+
+

Namespace FSharpx.Collections.Mutable

+
+
+

Classes

+ + +
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ArrayModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ArrayModule.htm new file mode 100644 index 0000000..5c4ca08 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ArrayModule.htm @@ -0,0 +1,249 @@ + + + + ArrayModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type ArrayModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

a[][] centeredWindow<a>(int n, a[] source)

+
+ + + + +
+
+
+

t[] centralMovingAverage<t>(int n, t[] a)

+
+ + + + +
+
+
+

FSharpOption`1[] centralMovingAverageOfOption<t>(int n, FSharpOption`1[] a)

+
+ + + + +
+
+
+

void copyTo<a>(int sourceStartIndx, int startIndx, a[] source, a[] target)

+
+ + + + +
+
+
+

a nth<a>(int i, a[] arr)

+
+ + + + +
+
+
+

Object[] ofTuple(object source)

+
+ + + + +
+
+
+

a[] setAt<a>(int i, a v, a[] arr)

+
+ + + + +
+
+
+

t toTuple<T, t>(T[] source)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteString.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteString.htm new file mode 100644 index 0000000..15522a1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteString.htm @@ -0,0 +1,221 @@ + + + + ByteString - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type ByteString

+

Namespace FSharpx.Collections

+

Parent ValueType

+

Interfaces IEnumerable<Byte>, IComparable

+
+
+
An ArraySegment with structural comparison and equality. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IEnumerator<Byte> GetEnumerator()

+
Gets an enumerator for the bytes stored in the byte string. + + + + +
+
+ +

Public static methods

+ +
+

int Compare(ByteString a, ByteString b)

+
Compares two byte strings based on their structure. + + + + +
+
+ +

Public properties

+ +
+

Byte[] Array get;

+
+ +
+
+
+

int Count get;

+
+ +
+
+
+

int Offset get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteStringModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteStringModule.htm new file mode 100644 index 0000000..89c2f2b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/ByteStringModule.htm @@ -0,0 +1,452 @@ + + + + ByteStringModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type ByteStringModule

+

Namespace FSharpx.Collections

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

ByteString append(ByteString a, ByteString b)

+
append uses Buffer.BlockCopy for efficient array operations. +Please note that a new array is created and both arrays are copied in, +disregarding any additional bytes in the original, underlying arrays. + + + + +
+
+
+

ByteString cons(Byte hd, ByteString bs)

+
cons uses Buffer.SetByte and Buffer.BlockCopy for efficient array operations. +Please note that a new array is created and both the head and tail are copied in, +disregarding any additional bytes in the original tail array. + + + + +
+
+
+

ByteString create(Byte[] arr)

+
+ + + + +
+
+
+

int findIndex(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

a fold<a>(FSharpFunc<a, FSharpFunc<Byte, a>> f, a seed, ByteString bs)

+
+ + + + +
+
+ +
+

Byte index(ByteString bs, int pos)

+
+ + + + +
+
+
+

bool isEmpty(ByteString bs)

+
+ + + + +
+
+
+

int length(ByteString bs)

+
+ + + + +
+
+
+

ByteString ofArraySegment(ArraySegment<Byte> segment)

+
+ + + + +
+
+
+

ByteString ofString(string s)

+
+ + + + +
+
+
+

ByteString singleton(Byte c)

+
+ + + + +
+
+ +
+

ByteString skipUntil(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

ByteString skipWhile(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

Tuple<ByteString, ByteString> span(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

Tuple<ByteString, ByteString> split(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

Tuple<ByteString, ByteString> splitAt(int n, ByteString bs)

+
+ + + + +
+
+
+

ByteString tail(ByteString bs)

+
+ + + + +
+
+
+

ByteString take(int n, ByteString bs)

+
+ + + + +
+
+
+

ByteString takeUntil(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

ByteString takeWhile(FSharpFunc<Byte, bool> pred, ByteString bs)

+
+ + + + +
+
+
+

Byte[] toArray(ByteString bs)

+
+ + + + +
+
+
+

FSharpList<Byte> toList(ByteString bs)

+
+ + + + +
+
+
+

IEnumerable<Byte> toSeq(ByteString bs)

+
+ + + + +
+
+
+

string toString(ByteString bs)

+
+ + + + +
+
+ +

Public properties

+ +
+

ByteString empty get;

+
+ +
+
+
+

Monoid<T> monoid get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DListModule.htm new file mode 100644 index 0000000..f8fdde8 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DListModule.htm @@ -0,0 +1,320 @@ + + + + DListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type DListModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

DList<T> append<T>(DList<T> left, DList<T> right)

+
O(1). Returns a new DList of two lists. + + + + +
+
+
+

DList<T> conj<T>(T x, DList<T> l)

+
O(1). Returns a new DList with the element added to the end. + + + + +
+
+
+

DList<T> cons<T>(T hd, DList<T> l)

+
O(1). Returns a new DList with the element added to the beginning. + + + + +
+
+
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, DList<T> l)

+
+ + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, DList<T> l, State state)

+
O(n). Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. +See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +
+
+
+

T head<T>(DList<T> l)

+
O(log n). Returns the first element. + + + + +
+
+
+

bool isEmpty<T>(DList<T> l)

+
O(1). Returns true if the DList has no elements. + + + + +
+
+
+

int length<T>(DList<T> l)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

DList<T> tail<T>(DList<T> l)

+
O(log n). Returns a new DList of the elements trailing the first element. + + + + +
+
+
+

FSharpList<T> toList<T>(DList<T> l)

+
O(n). Returns a list of the DList elements. + + + + +
+
+
+

IEnumerable<T> toSeq<T>(DList<T> l)

+
O(n). Returns a seq of the DList elements. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(DList<T> l)

+
O(log n). Returns option first element. + + + + +
+
+
+

FSharpOption<DList<T>> tryTail<T>(DList<T> l)

+
O(log n). Returns option DList of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<Tuple<T, DList<T>>> tryUncons<T>(DList<T> l)

+
O(log n). Returns option first element and tail. + + + + +
+
+
+

Tuple<T, DList<T>> uncons<T>(DList<T> l)

+
O(log n). Returns the first element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DList`1.htm new file mode 100644 index 0000000..81c1de4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DList`1.htm @@ -0,0 +1,233 @@ + + + + DList<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type DList<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
DList is an ordered linear structure implementing the List signature (head, tail, cons), +end-insertion (conj), and O(1) append. Ordering is by insertion history. +DList is an implementation of John Hughes' append list. +See http://dl.acm.org/citation.cfm?id=8475 for more information. +An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 +List-like structure naming semantics: http://jackfoxy.com/semantics-and-list-like-data-structures +
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the DList has no elements. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

DList<T> Tail get;

+
O(log n). Returns a new DList of the elements trailing the first element. + +
+
+
+

FSharpOption<T> TryHead get;

+
O(log n). Returns option first element + +
+
+
+

FSharpOption<DList<T>> TryTail get;

+
O(log n). Returns option DList of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<T, DList<T>>> TryUncons get;

+
O((log n). Returns option first element and tail. + +
+
+
+

Tuple<T, DList<T>> Uncons get;

+
O(log n). Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DequeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DequeModule.htm new file mode 100644 index 0000000..6c3dc7a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DequeModule.htm @@ -0,0 +1,369 @@ + + + + DequeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type DequeModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

Deque<T> conj<T>(T x, Deque<T> q)

+
O(1). Returns a new deque with the element added to the end. + + + + +
+
+
+

Deque<T> cons<T>(T x, Deque<T> q)

+
O(1). Returns a new deque with the element added to the beginning. + + + + +
+
+
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, Deque<T> q)

+
O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, left to right + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, Deque<T> q, State state)

+
O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, right to left + + + + +
+
+
+

T head<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns the first element. + + + + +
+
+
+

Deque<T> initial<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +
+
+
+

bool isEmpty<T>(Deque<T> q)

+
O(1). Returns true if the deque has no elements. + + + + +
+
+
+

T last<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns the last element. + + + + +
+
+
+

int length<T>(Deque<T> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

Deque<T> rev<T>(Deque<T> q)

+
O(1). Returns deque reversed. + + + + +
+
+
+

Deque<T> tail<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +
+
+
+

IEnumerable<T> toSeq<T>(Deque<T> q)

+
O(n). Views the given deque as a sequence. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<Deque<T>> tryInitial<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +
+
+
+

FSharpOption<T> tryLast<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option last element. + + + + +
+
+
+

FSharpOption<Deque<T>> tryTail<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<Tuple<Deque<T>, T>> tryUnconj<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +
+
+
+

FSharpOption<Tuple<T, Deque<T>>> tryUncons<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +
+
+
+

Tuple<Deque<T>, T> unconj<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +
+
+
+

Tuple<T, Deque<T>> uncons<T>(Deque<T> q)

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Deque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Deque`1.htm new file mode 100644 index 0000000..18466ea --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Deque`1.htm @@ -0,0 +1,305 @@ + + + + Deque<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Deque<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
Double-ended queue is an ordered linear linear structure implementing the signature of List +(head, tail, cons) as well as the mirror-image Vector signature (last, initial, conj). "head" inspects +the first or left-most element in the structure, while "last" inspects the last or +right-most element. "rev" (reverse) has time complexity O(1). Ordering is by insertion history. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

Deque<T> Conj(T x)

+
+ + + + +
+
+
+

Deque<T> Cons(T x)

+
+ + + + +
+
+ + +

Public properties

+ + +
+

Deque<T> Initial get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the deque has no elements. + +
+
+
+

T Last get;

+
O(1) amortized, O(n), worst case. Returns the last element. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

Deque<T> Rev get;

+
O(1). Returns deque reversed. + +
+
+
+

Deque<T> Tail get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + +
+
+
+

FSharpOption<T> TryHead get;

+
O(1) amortized, O(n), worst case. Returns option first element. + +
+
+
+

FSharpOption<Deque<T>> TryInitial get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

FSharpOption<T> TryLast get;

+
O(1) amortized, O(n), worst case. Returns option last element. + +
+
+
+

FSharpOption<Deque<T>> TryTail get;

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<Deque<T>, T>> TryUnconj get;

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + +
+
+
+

FSharpOption<Tuple<T, Deque<T>>> TryUncons get;

+
O(1) amortized, O(n), worst case. Returns option first element and tail. + +
+
+
+

Tuple<Deque<T>, T> Unconj get;

+
O(1) amortized, O(n), worst case. Returns init and the last element. + +
+
+
+

Tuple<T, Deque<T>> Uncons get;

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DictionaryModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DictionaryModule.htm new file mode 100644 index 0000000..a215811 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/DictionaryModule.htm @@ -0,0 +1,179 @@ + + + + DictionaryModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type DictionaryModule

+

Namespace FSharpx.Collections

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpOption<b> tryFind<a, b>(a key, IDictionary<a, b> d)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/HeapModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/HeapModule.htm new file mode 100644 index 0000000..a6c0f80 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/HeapModule.htm @@ -0,0 +1,309 @@ + + + + HeapModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type HeapModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

T head<T>(Heap<T> xs)

+
O(1) worst case. Returns the min or max element. + + + + +
+
+
+

Heap<T> insert<T>(T x, Heap<T> xs)

+
O(log n) amortized time. Returns a new heap with the element inserted. + + + + +
+
+
+

bool isDescending<T>(Heap<T> xs)

+
O(1). Returns true if the heap has max element at head. + + + + +
+
+
+

bool isEmpty<T>(Heap<T> xs)

+
O(1). Returns true if the heap has no elements. + + + + +
+
+
+

int length<T>(Heap<T> xs)

+
O(n). Returns the count of elememts. + + + + +
+
+
+

Heap<T> merge<T>(Heap<T> xs, Heap<T> ys)

+
O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +
+
+
+

Heap<T> rev<T>(Heap<T> xs)

+
O(n). Returns heap reversed. + + + + +
+
+
+

Heap<T> tail<T>(Heap<T> xs)

+
O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +
+
+
+

IEnumerable<T> toSeq<T>(Heap<T> xs)

+
O(n). Views the given heap as a sequence. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(Heap<T> xs)

+
O(1) worst case. Returns option first min or max element. + + + + +
+
+
+

FSharpOption<Heap<T>> tryMerge<T>(Heap<T> xs, Heap<T> ys)

+
O(log n) amortized time. Returns heap option from merging two heaps. + + + + +
+
+
+

FSharpOption<Heap<T>> tryTail<T>(Heap<T> xs)

+
O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<Tuple<T, Heap<T>>> tryUncons<T>(Heap<T> xs)

+
O(log n) amortized time. Returns option head element and tail. + + + + +
+
+
+

Tuple<T, Heap<T>> uncons<T>(Heap<T> xs)

+
O(log n) amortized time. Returns the head element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Heap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Heap`1.htm new file mode 100644 index 0000000..fd1055b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Heap`1.htm @@ -0,0 +1,297 @@ + + + + Heap<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Heap<T>

+

Namespace FSharpx.Collections

+

Interfaces IPriorityQueue`1

+
+
+
Heap is an ordered linear structure where the ordering is either ascending or descending. +"head" inspects the first element in the ordering, "tail" takes the remaining structure +after head, and "insert" places elements within the ordering. PriorityQueue is available +as an alternate interface. +According to Okasaki the time complexity of the heap functions in this Heap implementation +(based on the "pairing" heap) have "resisted" time complexity analysis. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

Heap<T> Insert(T x)

+
+ + + + +
+
+
+

Heap<T> Merge(Heap<T> xs)

+
O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +
+
+
+

Heap<T> Rev()

+
O(n). Returns heap reversed. + + + + +
+
+
+

Heap<T> Tail()

+
O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<Heap<T>> TryMerge(Heap<T> xs)

+
O(log n) amortized time. Returns heap option from merging two heaps. + + + + +
+
+
+

FSharpOption<Heap<T>> TryTail()

+
O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<Tuple<T, Heap<T>>> TryUncons()

+
O(log n) amortized time. Returns option head element and tail. + + + + +
+
+
+

Tuple<T, Heap<T>> Uncons()

+
O(log n) amortized time. Returns the head element and tail. + + + + +
+
+ + +

Public properties

+ + +
+

bool IsDescending get;

+
O(1). Returns true if the heap has max element at head. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the heap has no elements. + +
+
+
+

int Length get;

+
O(n). Returns the count of elememts. + +
+
+
+

FSharpOption<T> TryHead get;

+
O(1) worst case. Returns option first min or max element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue.htm new file mode 100644 index 0000000..8fee5bd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue.htm @@ -0,0 +1,164 @@ + + + + IPriorityQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type IPriorityQueue

+

Namespace FSharpx.Collections

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue`1.htm new file mode 100644 index 0000000..6c6af6a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/IPriorityQueue`1.htm @@ -0,0 +1,191 @@ + + + + IPriorityQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type IPriorityQueue`1

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

bool IsEmpty get;

+
+ +
+
+
+

T Peek get;

+
+ +
+
+
+

FSharpOption<T> TryPeek get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyListModule.htm new file mode 100644 index 0000000..220be54 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyListModule.htm @@ -0,0 +1,494 @@ + + + + LazyListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type LazyListModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

LazyList<T> append<T>(LazyList<T> l1, LazyList<T> source)

+
O(1). Return the list which contains on demand the elements of the first list followed +by the elements of the second list + + + + +
+
+
+

LazyList<T> concat<T>(LazyList<T> s1)

+
O(1). Return the list which contains on demand the list of elements of the list of lazy lists. + + + + +
+
+
+

LazyList<T> cons<T>(T x, LazyList<T> l)

+
O(1). Return a new list which contains the given item followed by the +given list. + + + + +
+
+
+

LazyList<T> consDelayed<T>(T x, FSharpFunc<Unit, LazyList<T>> l)

+
O(1). Return a new list which on consumption contains the given item +followed by the list returned by the given computation. The + + + + +
+
+
+

LazyList<T> delayed<T>(FSharpFunc<Unit, LazyList<T>> f)

+
O(1). Return a list that is in effect the list returned by the given computation. +The given computation is not executed until the first element on the list is +consumed. + + + + +
+
+
+

LazyList<T> filter<T>(FSharpFunc<T, bool> predicate, LazyList<T> source)

+
O(1). Return a new collection which on consumption will consist of only the elements of the collection +for which the given predicate returns "true" + + + + +
+
+
+

T find<T>(FSharpFunc<T, bool> predicate, LazyList<T> source)

+
O(n), worst case. Return the first element for which the given function returns true. +Raise KeyNotFoundException if no such element exists. + + + + +
+
+
+

T head<T>(LazyList<T> s)

+
O(1). Return the first element of the list. Forces the evaluation of +the first cell of the list if it is not already evaluated. + + + + +
+
+
+

bool isEmpty<T>(LazyList<T> s)

+
O(1). Test if a list is empty. Forces the evaluation of +the first element of the stream if it is not already evaluated. + + + + +
+
+
+

void iter<T>(FSharpFunc<T, Unit> action, LazyList<T> list)

+
O(n). Apply the given function to each element of the collection. + + + + +
+
+
+

int length<T>(LazyList<T> list)

+
O(n). Return the length of the list + + + + +
+
+
+

LazyList<T> map<T, U>(FSharpFunc<T, U> mapping, LazyList<T> source)

+
O(1). Build a new collection whose elements are the results of applying the given function +to each of the elements of the collection. + + + + +
+
+
+

LazyList<T> map2<T1, T2, U>(FSharpFunc<T1, FSharpFunc<T2, U>> mapping, LazyList<T> s1, LazyList<T> s2)

+
O(1). Build a new collection whose elements are the results of applying the given function +to the corresponding elements of the two collections pairwise. + + + + +
+
+
+

Tuple<T1, LazyList<T3>> mapAccum<T1, T2, T3>(FSharpFunc<T1, FSharpFunc<T2, Tuple<T1, T3>>> f, T1 s, LazyList<T> l)

+
O(n). Behaves like a combination of map and fold; +it applies a function to each element of a list, +passing an accumulating parameter from left to right, +and returning a final value of this accumulator together with the new list. + + + + +
+
+
+

LazyList<T> ofArray<T>(T[] a)

+
+ + + + +
+
+
+

LazyList<T> scan<State, T>(FSharpFunc<State, FSharpFunc<T, State>> folder, State acc, LazyList<T> source)

+
O(1). Return a new list consisting of the results of applying the given accumulating function +to successive elements of the list + + + + +
+
+
+

LazyList<T> skip<T>(int count, LazyList<T> source)

+
O(n), where n is count. Return the list which on consumption will skip the first 'n' elements of +the input list. + + + + +
+
+
+

LazyList<T> tail<T>(LazyList<T> s)

+
O(1). Return the list corresponding to the remaining items in the sequence. +Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +
+
+
+

LazyList<T> take<T>(int count, LazyList<T> source)

+
O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of +the input list. + + + + +
+
+
+

T[] toArray<T>(LazyList<T> s)

+
O(n). Build an array from the given collection + + + + +
+
+
+

FSharpList<T> toList<T>(LazyList<T> s)

+
O(n). Build a non-lazy list from the given collection. This function will eagerly evaluate all of the +list (and thus may not terminate). + + + + +
+
+
+

IEnumerable<T> toSeq<T>(LazyList<T> s)

+
O(n). Return a view of the collection as an enumerable object + + + + +
+
+
+

FSharpOption<T> tryFind<T>(FSharpFunc<T, bool> predicate, LazyList<T> source)

+
O(n), worst case. Apply the given function to successive elements of the list, returning the first +result where function returns Some(x) for some x. If the function never returns +true, 'None' is returned. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(LazyList<T> s)

+
O(1). Return option the first element of the list. Forces the evaluation of +the first cell of the list if it is not already evaluated. + + + + +
+
+
+

FSharpOption<LazyList<T>> trySkip<T>(int count, LazyList<T> source)

+
O(n), where n is count. Return option the list which skips the first 'n' elements of +the input list. + + + + +
+
+
+

FSharpOption<LazyList<T>> tryTail<T>(LazyList<T> s)

+
O(1). Return option the list corresponding to the remaining items in the sequence. +Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +
+
+
+

FSharpOption<LazyList<T>> tryTake<T>(int count, LazyList<T> source)

+
O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of +the input list. + + + + +
+
+
+

FSharpOption<Tuple<T, LazyList<T>>> tryUncons<T>(LazyList<T> s)

+
O(1). Returns option tuple of head element and tail of the list. + + + + +
+
+
+

Tuple<T, LazyList<T>> uncons<T>(LazyList<T> s)

+
O(1). Returns tuple of head element and tail of the list. + + + + +
+
+
+

LazyList<T> zip<T1, T2>(LazyList<T> s1, LazyList<T> s2)

+
O(1). Return the list which contains on demand the pair of elements of the first and second list + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyList`1.htm new file mode 100644 index 0000000..447e05c --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/LazyList`1.htm @@ -0,0 +1,252 @@ + + + + LazyList<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type LazyList<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
LazyLists are possibly-infinite, cached sequences. See also IEnumerable/Seq for +uncached sequences. LazyLists normally involve delayed computations without +side-effects. The results of these computations are cached and evaluations will be +performed only once for each element of the lazy list. In contrast, for sequences +(IEnumerable) recomputation happens each time an enumerator is created and the sequence +traversed. +LazyLists can represent cached, potentially-infinite computations. Because they are +cached they may cause memory leaks if some active code or data structure maintains a +live reference to the head of an infinite or very large lazy list while iterating it, +or if a reference is maintained after the list is no longer required. +Lazy lists may be matched using the LazyList.Cons and LazyList.Nil active patterns. +These may force the computation of elements of the list. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int Length()

+
O(n). Return the length of the list + + + + +
+
+ + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Test if a list is empty. Forces the evaluation of +the first element of the stream if it is not already evaluated. + +
+
+
+

LazyList<T> Tail get;

+
O(1). Return the list corresponding to the remaining items in the sequence. +Forces the evaluation of the first cell of the list if it is not already evaluated. + +
+
+
+

FSharpOption<T> TryHead get;

+
O(1). Return option the first element of the list. Forces the evaluation of +the first cell of the list if it is not already evaluated. + +
+
+
+

FSharpOption<LazyList<T>> TryTail get;

+
O(1). Return option the list corresponding to the remaining items in the sequence. +Forces the evaluation of the first cell of the list if it is not already evaluated. + +
+
+
+

FSharpOption<Tuple<T, LazyList<T>>> TryUncons get;

+
O(1). Returns option tuple of head element and tail of the list. + +
+
+
+

Tuple<T, LazyList<T>> Uncons get;

+
O(1). Returns tuple of head element and tail of the list. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/List.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/List.htm new file mode 100644 index 0000000..e3ec994 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/List.htm @@ -0,0 +1,352 @@ + + + + List - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type List

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

FSharpList<a> cons<a>(a hd, FSharpList<a> tl)

+
Curried cons + + + + +
+
+
+

FSharpList<a> fill<a>(int total, a elem, FSharpList<a> list)

+
+ + + + +
+
+
+

FSharpFunc<FSharpList<b>, a> foldMap<a, b>(Monoid<T> monoid, FSharpFunc<b, a> f)

+
+ + + + +
+
+
+

FSharpList<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpList<a> l1, FSharpList<b> l2)

+
+ + + + +
+
+
+

Tuple<a, FSharpList<c>> mapAccum<a, b, c>(FSharpFunc<a, FSharpFunc<b, Tuple<a, c>>> f, a s, FSharpList<b> l)

+
Behaves like a combination of map and fold; +it applies a function to each element of a list, +passing an accumulating parameter from left to right, +and returning a final value of this accumulator together with the new list. + + + + +
+
+
+

FSharpFunc<FSharpList<a>, FSharpList<a>> mapIf<a>(FSharpFunc<a, bool> pred, FSharpFunc<a, a> f)

+
+ + + + +
+
+
+

FSharpList<a> mergeBy<a, b>(FSharpFunc<a, b> f, FSharpList<a> a, FSharpList<a> b)

+
Merges to sequences using the given function to transform the elements for comparision + + + + +
+
+
+

FSharpList<a> pad<a>(int amt, a elem, FSharpList<a> list)

+
+ + + + +
+
+
+

FSharpList<a> skip<a>(int n, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> skipUntil<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> skipWhile<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

Tuple<FSharpList<a>, FSharpList<a>> span<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

Tuple<FSharpList<a>, FSharpList<a>> split<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

Tuple<FSharpList<a>, FSharpList<a>> splitAt<a>(int n, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> take<a>(int n, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> takeUntil<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> takeWhile<a>(FSharpFunc<a, bool> pred, FSharpList<a> l)

+
+ + + + +
+
+
+

FSharpList<FSharpList<a>> transpose<a>(FSharpList<FSharpList<a>> lst)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Map.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Map.htm new file mode 100644 index 0000000..79618c7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Map.htm @@ -0,0 +1,292 @@ + + + + Map - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Map

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

FSharpMap<T, c> choose<T, b, c>(FSharpFunc<T, FSharpFunc<b, FSharpOption<c>>> f, FSharpMap<T, b> map)

+
+ + + + +
+
+
+

b findOrDefault<T, b>(T key, b defaultValue, FSharpMap<T, b> map)

+
+ + + + +
+
+
+

FSharpMap<b, a> insertWith<a, b>(FSharpFunc<a, FSharpFunc<a, a>> f, b key, a value, FSharpMap<b, a> map)

+
insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. +If the key does exist, the function will insert f new_value old_value. + + + + +
+
+
+

IEnumerable<T> keys<T, b>(FSharpMap<T, b> map)

+
Retrieves the keys from a Map + + + + +
+
+
+

Monoid<T> monoid<key, value>()

+
+ + + + +
+
+
+

FSharpMap<T, b> removeMany<T, b>(IEnumerable<T> keys, FSharpMap<T, b> map)

+
Allows to remove many keys from a Map + + + + +
+
+
+

Tuple<FSharpMap<a, b>, FSharpMap<a, b>> spanWithKey<a, b>(FSharpFunc<a, bool> pred, FSharpMap<a, b> map)

+
+ + + + +
+
+
+

Tuple<FSharpMap<a, b>, FSharpMap<a, b>> splitWithKey<a, b>(FSharpFunc<a, bool> pred, FSharpMap<a, b> d)

+
+ + + + +
+
+
+

FSharpMap<a, b> union<a, b>(FSharpMap<a, b> map1, FSharpMap<a, b> map2)

+
Combines the two Maps into a single Map + + + + +
+
+
+

FSharpMap<b, a> updateWith<a, b>(FSharpFunc<a, FSharpOption<a>> f, b key, FSharpMap<b, a> map)

+
update f k map updates the value x at key k (if it is in the map). +If f x is None , the element is deleted. +If it is Some y , the key is bound to the new value y. + + + + +
+
+
+

FSharpList<b> valueList<a, b>(FSharpMap<a, b> map)

+
+ + + + +
+
+
+

IEnumerable<b> values<T, b>(FSharpMap<T, b> map)

+
Retrieves the values from a Map + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NameValueCollectionModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NameValueCollectionModule.htm new file mode 100644 index 0000000..17de1fb --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NameValueCollectionModule.htm @@ -0,0 +1,272 @@ + + + + NameValueCollectionModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type NameValueCollectionModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

NameValueCollection add(string name, string value, NameValueCollection x)

+
Adds an element to a copy of an existing NameValueCollection + + + + +
+
+
+

void addInPlace(NameValueCollection x, string a, string b)

+
In-place add of a key-value pair to a meValueCollection + + + + +
+
+
+

IDictionary<string, String[]> AsDictionary(this NameValueCollection x)

+
+ + + + +
+
+
+

ILookup<string, string> AsLookup(this NameValueCollection this)

+
+ + + + +
+
+
+

IDictionary<string, String[]> AsReadonlyDictionary(this NameValueCollection x)

+
+ + + + +
+
+
+

NameValueCollection Concat(this NameValueCollection a, NameValueCollection b)

+
Returns a new meValueCollection with the concatenation of two meValueCollection s + + + + +
+
+
+

Tuple`2[] ToArray(this NameValueCollection a)

+
Returns a meValueCollection as an array of key-value pairs. +Note that keys may be duplicated. + + + + +
+
+
+

IEnumerable<Tuple<string, string>> ToEnumerable(this NameValueCollection a)

+
Returns a meValueCollection as a sequence of key-value pairs. +Note that keys may be duplicated. + + + + +
+
+
+

FSharpList<Tuple<string, string>> toList(NameValueCollection a)

+
Returns a meValueCollection as a list of key-value pairs. +Note that keys may be duplicated. + + + + +
+
+
+

ILookup<string, string> ToLookup(this NameValueCollection a)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList.htm new file mode 100644 index 0000000..3eb89d8 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList.htm @@ -0,0 +1,309 @@ + + + + NonEmptyList - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type NonEmptyList

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

a Aggregate<a>(FSharpFunc<a, FSharpFunc<a, a>> reduction, NonEmptyList<T> list)

+
+ + + + +
+
+
+

IEnumerable<a> AsEnumerable<a>(this NonEmptyList<T> list)

+
+ + + + +
+
+
+

NonEmptyList<T> Cons<a>(a head, NonEmptyList<T> tail)

+
+ + + + +
+
+
+

NonEmptyList<T> Create<a>(a head, FSharpList<a> tail)

+
+ + + + +
+
+
+

NonEmptyList<T> Create<a>(a head, a[] tail)

+
+ + + + +
+
+
+

a Head<a>(NonEmptyList<T> x)

+
+ + + + +
+
+
+

a Last<a>(NonEmptyList<T> list)

+
+ + + + +
+
+
+

int Length<a>(NonEmptyList<T> x)

+
+ + + + +
+
+
+

NonEmptyList<T> Reverse<a>(this NonEmptyList<T> list)

+
+ + + + +
+
+
+

NonEmptyList<T> Select<a, b>(FSharpFunc<a, b> f, NonEmptyList<T> list)

+
+ + + + +
+
+
+

NonEmptyList<T> SelectMany<a, b>(FSharpFunc<a, NonEmptyList<b>> mapping, NonEmptyList<T> list)

+
+ + + + +
+
+
+

FSharpList<a> Tail<a>(NonEmptyList<T> x)

+
+ + + + +
+
+
+

a[] ToArray<a>(this NonEmptyList<T> list)

+
+ + + + +
+
+
+

FSharpList<a> ToFSharpList<a>(this NonEmptyList<T> x)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyListSemigroup`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyListSemigroup`1.htm new file mode 100644 index 0000000..3c1a429 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyListSemigroup`1.htm @@ -0,0 +1,165 @@ + + + + NonEmptyListSemigroup`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type NonEmptyListSemigroup`1

+

Namespace FSharpx.Collections

+

Interfaces ISemigroup<T>

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList`1.htm new file mode 100644 index 0000000..a8b647e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/NonEmptyList`1.htm @@ -0,0 +1,256 @@ + + + + NonEmptyList<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type NonEmptyList<T>

+

Namespace FSharpx.Collections

+

Interfaces IEquatable<NonEmptyList<T>>, IStructuralEquatable, IComparable<NonEmptyList<T>>, IComparable, IStructuralComparable, IEnumerable<T>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(object obj, IComparer comp)

+
+ + + + +
+
+
+

int CompareTo(object obj)

+
+ + + + +
+
+
+

int CompareTo(NonEmptyList<T> obj)

+
+ + + + +
+
+
+

bool Equals(object obj, IEqualityComparer comp)

+
+ + + + +
+
+
+

bool Equals(NonEmptyList<T> obj)

+
+ + + + +
+
+
+

int GetHashCode(IEqualityComparer comp)

+
+ + + + +
+
+ + +

Public properties

+ + +
+

int Length get;

+
+ +
+
+
+

FSharpList<T> Tail get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/PriorityQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/PriorityQueue.htm new file mode 100644 index 0000000..193f6b8 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/PriorityQueue.htm @@ -0,0 +1,229 @@ + + + + PriorityQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type PriorityQueue

+

Namespace FSharpx.Collections

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IPriorityQueue`1 insert<T>(T element, IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

bool isEmpty<T>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

T peek<T>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

Tuple<T, IPriorityQueue`1> pop<T>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

FSharpOption<T> tryPeek<T>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

FSharpOption<Tuple<T, IPriorityQueue`1>> tryPop<T>(IPriorityQueue`1 pq)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/QueueModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/QueueModule.htm new file mode 100644 index 0000000..e11e290 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/QueueModule.htm @@ -0,0 +1,299 @@ + + + + QueueModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type QueueModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

Queue<T> conj<T>(T x, Queue<T> q)

+
O(1). Returns a new queue with the element added to the end. (enqueue) + + + + +
+
+
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, Queue<T> q)

+
O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, Queue<T> q, State state)

+
O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +
+
+
+

T head<T>(Queue<T> q)

+
O(1). Returns the first element. (peek) + + + + +
+
+
+

bool isEmpty<T>(Queue<T> q)

+
O(1). Returns true if the queue has no elements. + + + + +
+
+
+

int length<T>(Queue<T> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

Queue<T> rev<T>(Queue<T> q)

+
O(n). Returns queue reversed. + + + + +
+
+
+

Queue<T> tail<T>(Queue<T> q)

+
O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (dequeue) + + + + +
+
+
+

IEnumerable<T> toSeq<T>(Queue<T> q)

+
O(n). Views the given queue as a sequence. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(Queue<T> q)

+
O(1). Returns option first element. + + + + +
+
+
+

FSharpOption<Queue<T>> tryTail<T>(Queue<T> q)

+
O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element + + + + +
+
+
+

FSharpOption<Tuple<T, Queue<T>>> tryUncons<T>(Queue<T> q)

+
O(1) amortized, O(n) worst-case. Returns option first element and tail. + + + + +
+
+
+

Tuple<T, Queue<T>> uncons<T>(Queue<T> q)

+
O(1) amortized, O(n) worst-case. Returns the first element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Queue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Queue`1.htm new file mode 100644 index 0000000..cfbb999 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Queue`1.htm @@ -0,0 +1,235 @@ + + + + Queue<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Queue<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
Queue is an ordered linear data structure where elements are added at the end (right) +and inspected and removed at the beginning (left). Ordering is by insertion history. +The qualities of the Queue structure make elements first in, first out (fifo). +"head" inspects the first or left-most element in the structure, while "conj" +inserts an element at the end, or right of the structure. +Purely functional (immutable) Queue based on Okasaki's batched queue. +Value and function naming standard based on consistent List-like naming: http://jackfoxy.com/semantics-and-list-like-data-structures +Original F# implementation http://lepensemoi.free.fr/index.php/2009/12/10/batched-queue +
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the queue has no elements. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

Queue<T> Tail get;

+
O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (Dequeue) + +
+
+
+

FSharpOption<T> TryHead get;

+
O(1). Returns option first element + +
+
+
+

FSharpOption<Queue<T>> TryTail get;

+
O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<T, Queue<T>>> TryUncons get;

+
O(1) amortized, O(n) worst-case. Returns option first element and tail. + +
+
+
+

Tuple<T, Queue<T>> Uncons get;

+
O(1) amortized, O(n) worst-case. Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessListModule.htm new file mode 100644 index 0000000..4b18d56 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessListModule.htm @@ -0,0 +1,349 @@ + + + + RandomAccessListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type RandomAccessListModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

RandomAccessList<T> cons<T>(T x, RandomAccessList<T> randomAccessList)

+
O(1). Returns a new random access list with the element added at the end. + + + + +
+
+
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, RandomAccessList<T> v)

+
O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, RandomAccessList<T> v, State state)

+
O(n). Returns a state from the supplied state and a function operating from right to left. + + + + +
+
+
+

T head<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns the last element in the random access list. If the random access list is empty it throws an exception. + + + + +
+
+
+

bool isEmpty<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns true if the random access list has no elements. + + + + +
+
+
+

int length<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns the number of items in the random access list. + + + + +
+
+
+

RandomAccessList<T> map<T, T1>(FSharpFunc<T, T1> f, RandomAccessList<T> randomAccessList)

+
O(n). Returns a random access list whose elements are the results of applying the supplied function to each of the elements of a supplied random access list. + + + + +
+
+
+

T nth<T>(int i, RandomAccessList<T> randomAccessList)

+
O(log32n). Returns the value at the index. + + + + +
+
+
+

RandomAccessList<T> rev<T>(RandomAccessList<T> randomAccessList)

+
O(n). Returns new random access list reversed. + + + + +
+
+
+

RandomAccessList<T> tail<T>(RandomAccessList<T> randomAccessList)

+
O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + + + + +
+
+
+

IEnumerable<T> toSeq<T>(RandomAccessList<T> randomAccessList)

+
O(n). Views the given random access list as a sequence. + + + + +
+
+
+

FSharpOption<T> tryHead<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns option last element in the random access list. + + + + +
+
+
+

FSharpOption<T> tryNth<T>(int i, RandomAccessList<T> randomAccessList)

+
O(log32n). Returns option value at the index. + + + + +
+
+
+

FSharpOption<RandomAccessList<T>> tryTail<T>(RandomAccessList<T> randomAccessList)

+
O(n). Returns option random access list without the last item. + + + + +
+
+
+

FSharpOption<Tuple<T, RandomAccessList<T>>> tryUncons<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns option tuple last element and random access list without last item + + + + +
+
+
+

FSharpOption<RandomAccessList<T>> tryUpdate<T>(int i, T x, RandomAccessList<T> randomAccessList)

+
O(log32n). Returns option random access list that contains the given value at the index. + + + + +
+
+
+

Tuple<T, RandomAccessList<T>> uncons<T>(RandomAccessList<T> randomAccessList)

+
O(1). Returns tuple last element and random access list without last item + + + + +
+
+
+

RandomAccessList<T> update<T>(int i, T x, RandomAccessList<T> randomAccessList)

+
O(log32n). Returns a new random access list that contains the given value at the index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessList`1.htm new file mode 100644 index 0000000..36b6a9e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/RandomAccessList`1.htm @@ -0,0 +1,263 @@ + + + + RandomAccessList<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type RandomAccessList<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
RandomAccessList is an ordered linear structure implementing the List signature +(head, tail, cons), as well as inspection (lookup) and update (returning a new +immutable instance) of any element in the structure by index. Ordering is by insertion history. +Adapted from Steffen Forkmann's F# implementation of Clojure Vector.. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

FSharpOption<RandomAccessList<T>> TryUpdate(int i, T x)

+
+ + + + +
+
+
+

RandomAccessList<T> Update(int i, T x)

+
+ + + + +
+
+ + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the random access list has no elements. + +
+
+
+

T Item get;

+
O(log32n). Returns random access list element at the index. + +
+
+
+

int Length get;

+
O(1). Returns the number of items in the random access list. + +
+
+
+

RandomAccessList<T> Tail get;

+
O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + +
+
+
+

FSharpOption<T> TryHead get;

+
O(1). Returns option last element in the random access list. + +
+
+
+

FSharpOption<RandomAccessList<T>> TryTail get;

+
O(n). Returns option random access list without the last item. + +
+
+
+

FSharpOption<Tuple<T, RandomAccessList<T>>> TryUncons get;

+
O(1). Returns option tuple last element and random access list without last item + +
+
+
+

Tuple<T, RandomAccessList<T>> Uncons get;

+
O(1). Returns tuple last element and random access list without last item + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Seq.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Seq.htm new file mode 100644 index 0000000..f674ec8 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Seq.htm @@ -0,0 +1,412 @@ + + + + Seq - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Seq

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

IEnumerable<a> asCircular<a>(IEnumerable<a> values)

+
Creates a infinite sequences of the given values + + + + +
+
+
+

IEnumerable<a> asCircularOnLoop<a>(FSharpFunc<Unit, Unit> f, IEnumerable<a> values)

+
Creates a infinite sequences of the given values, executing the given function everytime the given seq is exhausted + + + + +
+
+
+

IEnumerable<FSharpOption<a>> asCircularWithBreak<a>(IEnumerable<a> values)

+
Creates a infinite sequences of the given values returning None everytime the given seq is exhausted + + + + +
+
+
+

IEnumerable<c> combine<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, IEnumerable<a> a, IEnumerable<b> b)

+
Creates a new collection whose elements are the results of applying the given function to the corresponding pairs of elements from the two sequences. +Unlike Seq.map2, if one input sequence is shorter than the other then the remaining elements of the longer sequence are not ignored, they are yielded at the end of the resulting sequence. + + + + +
+
+
+

IEnumerable<a> contract<a>(int n, IEnumerable<a> source)

+
Contracts a seq selecting every n values + + + + +
+
+
+

FSharpFunc<IEnumerable<a>, IEnumerable<a>> grow<a>(int n)

+
Replicates each element in the seq n-times + + + + +
+
+
+

IEnumerable<Tuple<int, a>> index<a>(IEnumerable<a> a)

+
Adds an index to a sequence + + + + +
+
+
+

IEnumerable<a> intersperse<a>(a sep, IEnumerable<a> list)

+
+ + + + +
+
+
+

void iterBreak<T>(FSharpFunc<T, bool> f, IEnumerable<T> seq)

+
Will iterate the current sequence until the given predicate is statisfied + + + + +
+
+
+

IEnumerable<int> ofStreamByByte(Stream stream)

+
Converts a Stream into a sequence of bytes + + + + +
+
+
+

IEnumerable<Byte[]> ofStreamByChunk(int chunkSize, Stream stream)

+
Converts a stream into a seq of byte[] where the array is of the length given +Note: the last chunk maybe less than the given chunk size + + + + +
+
+
+

IEnumerable<string> ofStreamReader(StreamReader streamReader)

+
Converts a streamReader into a seq yielding on each line + + + + +
+
+
+

IEnumerable<a> page<a>(int page, int pageSize, IEnumerable<a> source)

+
Pages the underlying sequence + + + + +
+
+
+

IEnumerable<a> prependToAll<a>(a sep, IEnumerable<a> list)

+
+ + + + +
+
+
+

IEnumerable<a> repeat<a>(a a)

+
O(1). Return the list which on consumption will consist of an infinite sequence of +the given item + + + + +
+
+
+

IEnumerable<a> skipNoFail<a>(int count, IEnumerable<a> source)

+
The same as Seq.skip except it returns empty if the sequence is empty or does not have enough elements. +Alias for Enumerable.Skip + + + + +
+
+
+

Tuple<IEnumerable<a>, IEnumerable<a>> splitAt<a>(int n, IEnumerable<a> seq)

+
Splits a sequences at the given index + + + + +
+
+
+

IEnumerable<a> tail<a>(IEnumerable<a> source)

+
+ + + + +
+
+
+

IEnumerable<a> tailNoFail<a>(IEnumerable<a> source)

+
+ + + + +
+
+
+

FSharpOption<a> tryAverage<a>(IEnumerable<a> seq)

+
The same as Seq.average except will return None if the seq is empty + + + + +
+
+
+

FSharpOption<Tuple<int, a>> tryFindWithIndex<a>(FSharpFunc<a, bool> pred, IEnumerable<a> l)

+
Returns the first element (with its index) for which the given function returns true. +Return None if no such element exists. + + +
+
Parameters
+ +
FSharpFunc<a, bool> pred
+

Predicate

+
IEnumerable<a> l
+

Sequence

+
+ + +
+
+
+

FSharpOption<a> tryHead<a>(IEnumerable<a> source)

+
A safe version of seq head + + + + +
+
+
+

FSharpOption<a> tryNth<a>(int index, IEnumerable<a> source)

+
The same as Seq.nth except returns None if the sequence is empty or does not have enough elements + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Set.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Set.htm new file mode 100644 index 0000000..eb2d743 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Set.htm @@ -0,0 +1,164 @@ + + + + Set - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Set

+

Namespace FSharpx.Collections

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/VectorModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/VectorModule.htm new file mode 100644 index 0000000..df8ba36 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/VectorModule.htm @@ -0,0 +1,419 @@ + + + + VectorModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type VectorModule

+

Namespace FSharpx.Collections

+
+ + + + +

Public static methods

+ +
+

Vector<T> append<T>(Vector<T> vectorA, Vector<T> vectorB)

+
O(n). Returns a new vector with the elements of the second vector added at the end. + + + + +
+
+
+

Vector<T> conj<T>(T x, Vector<T> vector)

+
O(1). Returns a new vector with the element added at the end. + + + + +
+
+
+

IEnumerable<T> flatten<T>(Vector<T> v)

+
O(m,n). Returns a seq from a vector of vectors. + + + + +
+
+
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, Vector<T> v)

+
O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, Vector<T> v, State state)

+
O(n). Returns a state from the supplied state and a function operating from right to left. + + + + +
+
+
+

Vector<T> initial<T>(Vector<T> vector)

+
O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + +
+
+
+

bool isEmpty<T>(Vector<T> vector)

+
O(1). Returns true if the vector has no elements. + + + + +
+
+
+

T last<T>(Vector<T> vector)

+
O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + + + + +
+
+
+

int length<T>(Vector<T> vector)

+
O(1). Returns the number of items in the vector. + + + + +
+
+
+

Vector<T> map<T, T1>(FSharpFunc<T, T1> f, Vector<T> vector)

+
O(n). Returns a vector whose elements are the results of applying the supplied function to each of the elements of a supplied vector. + + + + +
+
+
+

T nth<T>(int i, Vector<T> vector)

+
O(log32n). Returns the value at the index. If the index is out of bounds it throws an exception. + + + + +
+
+
+

T nthNth<T>(int i, int j, Vector<T> vector)

+
O(log32(m,n)). Returns the value at the outer index, inner index. If either index is out of bounds it throws an exception. + + + + +
+
+
+

Vector<T> rev<T>(Vector<T> vector)

+
O(n). Returns vector reversed. + + + + +
+
+
+

IEnumerable<T> toSeq<T>(Vector<T> vector)

+
O(n). Views the given vector as a sequence. + + + + +
+
+
+

FSharpOption<Vector<T>> tryInitial<T>(Vector<T> vector)

+
O(n). Returns option vector without the last item. + + + + +
+
+
+

FSharpOption<T> tryLast<T>(Vector<T> vector)

+
O(1). Returns option last element in the vector. + + + + +
+
+
+

FSharpOption<T> tryNth<T>(int i, Vector<T> vector)

+
O(log32n). Returns option value at the index. + + + + +
+
+
+

FSharpOption<T> tryNthNth<T>(int i, int j, Vector<T> vector)

+
O(log32(m,n)). Returns option value at the indices. + + + + +
+
+
+

FSharpOption<Tuple<Vector<T>, T>> tryUnconj<T>(Vector<T> vector)

+
O(1). Returns option tuple last element and vector without last item + + + + +
+
+
+

FSharpOption<Vector<T>> tryUpdate<T>(int i, T x, Vector<T> vector)

+
O(log32n). Returns option vector that contains the given value at the index. + + + + +
+
+
+

FSharpOption<Vector<Vector<T>>> tryUpdateNth<T>(int i, int j, T x, Vector<T> vector)

+
O(log32(m,n)). Returns option vector that contains the given value at the indices. + + + + +
+
+
+

Tuple<Vector<T>, T> unconj<T>(Vector<T> vector)

+
O(1). Returns tuple last element and vector without last item + + + + +
+
+
+

Vector<T> update<T>(int i, T x, Vector<T> vector)

+
O(log32n). Returns a new vector that contains the given value at the index. + + + + +
+
+
+

Vector<T> updateNth<T>(int i, int j, T x, Vector<T> vector)

+
O(log32(m,n)). Returns a new vector of vectors that contains the given value at the indices. + + + + +
+
+
+

Vector<T> windowSeq<T>(int windowLength, IEnumerable<T> items)

+
O(n). Returns a vector of vectors of given length from the seq. Result may be a jagged vector. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Vector`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Vector`1.htm new file mode 100644 index 0000000..2b38157 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/Vector`1.htm @@ -0,0 +1,239 @@ + + + + Vector<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Type Vector<T>

+

Namespace FSharpx.Collections

+

Interfaces IEnumerable<T>

+
+
+
Vector is an ordered linear structure implementing the inverse of the List signature, +(last, initial, conj) in place of (head, tail, cons). Indexed lookup or update +(returning a new immutable instance of Vector) of any element is O(log32n). Length is O(1). +Ordering is by insertion history. +Original F# adaptation from the clojure implementation by Steffen Forkmann. +
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

Vector<T> Initial get;

+
O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the vector has no elements. + +
+
+
+

T Item get;

+
O(log32n). Returns vector element at the index. + +
+
+
+

T Last get;

+
O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + +
+
+
+

int Length get;

+
O(1). Returns the number of items in the vector. + +
+
+
+

FSharpOption<Vector<T>> TryInitial get;

+
O(n). Returns option vector without the last item. + +
+
+
+

FSharpOption<T> TryLast get;

+
O(1). Returns option last element in the vector. + +
+
+
+

FSharpOption<Tuple<Vector<T>, T>> TryUnconj get;

+
O(1). Returns option tuple last element and vector without last item + +
+
+
+

Tuple<Vector<T>, T> Unconj get;

+
O(1). Returns tuple last element and vector without last item + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/index.htm new file mode 100644 index 0000000..691762e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Collections/index.htm @@ -0,0 +1,190 @@ + + + + FSharpx.Collections - FSharpx Documentation + + + + + + +
+

Types in FSharpx.Collections

+ +
+
+

Namespace FSharpx.Collections

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/AssemblyInfo.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/AssemblyInfo.htm new file mode 100644 index 0000000..a90dcae --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/AssemblyInfo.htm @@ -0,0 +1,86 @@ + + + + AssemblyInfo - FSharpx Documentation + + + + + + + + +
+

Type AssemblyInfo

+

Namespace FSharpx.Core

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnException183c26a427ae489c8fd92ec21a0c9a59.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnException183c26a427ae489c8fd92ec21a0c9a59.htm new file mode 100644 index 0000000..aec0246 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnException183c26a427ae489c8fd92ec21a0c9a59.htm @@ -0,0 +1,181 @@ + + + + ReturnException183c26a427ae489c8fd92ec21a0c9a59 - FSharpx Documentation + + + + + + + + +
+

Type ReturnException183c26a427ae489c8fd92ec21a0c9a59

+

Namespace FSharpx.Core

+

Parent Exception

+

Interfaces IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(Exception obj)

+
+ + + + +
+
+
+

Exception GetBaseException()

+
+ + + + +
+
+ + +

Public properties

+ +
+

IDictionary Data get;

+
+ +
+
+
+

object Data0 get;

+
+ +
+
+ +
+

int HResult get; set;

+
+ +
+
+
+

Exception InnerException get;

+
+ +
+
+
+

string Message get;

+
+ +
+
+
+

string Source get; set;

+
+ +
+
+
+

string StackTrace get;

+
+ +
+
+
+

MethodBase TargetSite get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnNoneException183c26a427ae489c8fd92ec21a0c9a59.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnNoneException183c26a427ae489c8fd92ec21a0c9a59.htm new file mode 100644 index 0000000..5406410 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/ReturnNoneException183c26a427ae489c8fd92ec21a0c9a59.htm @@ -0,0 +1,149 @@ + + + + ReturnNoneException183c26a427ae489c8fd92ec21a0c9a59 - FSharpx Documentation + + + + + + + + +
+

Type ReturnNoneException183c26a427ae489c8fd92ec21a0c9a59

+

Namespace FSharpx.Core

+

Parent Exception

+

Interfaces IStructuralEquatable

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

IDictionary Data get;

+
+ +
+
+ +
+

int HResult get; set;

+
+ +
+
+
+

Exception InnerException get;

+
+ +
+
+
+

string Message get;

+
+ +
+
+
+

string Source get; set;

+
+ +
+
+
+

string StackTrace get;

+
+ +
+
+
+

MethodBase TargetSite get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/index.htm new file mode 100644 index 0000000..893e24e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Core/index.htm @@ -0,0 +1,83 @@ + + + + FSharpx.Core - FSharpx Documentation + + + + + + + +
+

Namespace FSharpx.Core

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinRndAccList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinRndAccList`1.htm new file mode 100644 index 0000000..b7245ab --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinRndAccList`1.htm @@ -0,0 +1,462 @@ + + + + AltBinRndAccList<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type AltBinRndAccList<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<AltBinRndAccList<a>>, IStructuralEquatable, IComparable<AltBinRndAccList<a>>, IComparable, IStructuralComparable, IRandomAccessList`1

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(AltBinRndAccList<a> obj)

+
+ + + + +
+
+
+

bool Equals(AltBinRndAccList<a> obj)

+
+ + + + +
+
+
+

bool get_IsOne()

+
+ + + + +
+
+
+

bool get_IsZero()

+
+ + + + +
+
+
+

FSharpOption<a> TryGetHead()

+
O(log n). Returns option first element. + + + + +
+
+ +

Public static methods

+ +
+

AltBinRndAccList<a> NewOne(a item1, AltBinRndAccList<a> item2)

+
+ + + + +
+
+
+

AltBinRndAccList<a> NewZero(AltBinRndAccList<a> item)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the random access list has no elements. + +
+
+
+

bool IsNil get;

+
+ +
+
+
+

bool IsOne get;

+
+ +
+
+
+

bool IsZero get;

+
+ +
+
+
+

AltBinRndAccList<a> Nil get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+
+

AltBinRndAccList<a> Tail get;

+
O(log n). Returns a new random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<AltBinRndAccList<a>> TryGetTail get;

+
O(log n). Returns a option random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, AltBinRndAccList<a>>> TryUncons get;

+
O(log n). Returns the option first element and tail. + +
+
+
+

Tuple<a, AltBinRndAccList<a>> Uncons get;

+
O(log n). Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinaryRandomAccessListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinaryRandomAccessListModule.htm new file mode 100644 index 0000000..2d467cd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/AltBinaryRandomAccessListModule.htm @@ -0,0 +1,477 @@ + + + + AltBinaryRandomAccessListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type AltBinaryRandomAccessListModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

AltBinRndAccList<a> append<a>(AltBinRndAccList<a> xs, AltBinRndAccList<a> ys)

+
O(xs). Returns random access list from elements of 2 random access lists concatenated. + + + + +
+
+
+

AltBinRndAccList<a> cons<a>(a x, AltBinRndAccList<a> xs)

+
O(log n). Returns a new random access list with the element added to the beginning. + + + + +
+
+
+

a head<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(AltBinRndAccList<a> xs)

+
O(1). Returns true if the random access list has no elements. + + + + +
+
+
+

int length<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, AltBinRndAccList<a> xs)

+
O(log n). Returns element by index. + + + + +
+
+
+

AltBinRndAccList<a> remove<a>(int i, AltBinRndAccList<a> xs)

+
O(n). Returns random access list with element removed by index. + + + + +
+
+
+

AltBinRndAccList<a> rev<a>(AltBinRndAccList<a> xs)

+
O(n). Returns random access list reversed. + + + + +
+
+
+

AltBinRndAccList<a> tail<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns a new random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns option first element. + + + + +
+
+
+

FSharpOption<AltBinRndAccList<a>> tryGetTail<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns a option random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, AltBinRndAccList<a> xs)

+
O(log n). Returns option element by index. + + + + +
+
+
+

FSharpOption<AltBinRndAccList<a>> tryRemove<a>(int i, AltBinRndAccList<a> xs)

+
O(n). Returns option random access list with element removed by index. + + + + +
+
+
+

FSharpOption<Tuple<a, AltBinRndAccList<a>>> tryUncons<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns the option first element and tail. + + + + +
+
+
+

FSharpOption<AltBinRndAccList<a>> tryUpdate<a>(int i, a y, AltBinRndAccList<a> xs)

+
O(log n). Returns option random access list with element updated by index. + + + + +
+
+
+

Tuple<a, AltBinRndAccList<a>> uncons<a>(AltBinRndAccList<a> xs)

+
O(log n). Returns the first element and tail. + + + + +
+
+
+

AltBinRndAccList<a> update<a>(int i, a y, AltBinRndAccList<a> xs)

+
O(log n). Returns random access list with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree.htm new file mode 100644 index 0000000..c202e24 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree.htm @@ -0,0 +1,393 @@ + + + + BKTree - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BKTree

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

bool isEmpty<a>(BKTree<a> _arg1)

+
+ + + + +
+
+
+

Functions`1 List<a>()

+
+ + + + +
+
+
+

int size<a>(BKTree<a> _arg1)

+
+ + + + +
+
+
+

a[] toArray<a>(BKTree<a> tree)

+
+ + + + +
+
+
+

FSharpList<a> toList<a>(BKTree<a> tree)

+
+ + + + +
+
+
+

IEnumerable<a> toSeq<a>(BKTree<a> tree)

+
+ + + + +
+
+ +

Public properties

+ +
+

Functions`1 ByteString get;

+
+ +
+
+
+

Functions`1 Char get;

+
+ +
+
+
+

Functions`1 Int get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree`1.htm new file mode 100644 index 0000000..fd02edc --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BKTree`1.htm @@ -0,0 +1,393 @@ + + + + BKTree<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BKTree<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<BKTree<a>>, IStructuralEquatable, IComparable<BKTree<a>>, IComparable, IStructuralComparable, IEnumerable<a>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(BKTree<a> obj)

+
+ + + + +
+
+
+

bool Equals(BKTree<a> obj)

+
+ + + + +
+
+
+

bool get_IsEmpty()

+
+ + + + +
+
+ +

Public static methods

+ +
+

BKTree<a> get_Empty()

+
+ + + + +
+
+
+

BKTree<a> NewNode(a item1, int item2, IntMap<a> item3)

+
+ + + + +
+
+ +

Public properties

+ +
+

BKTree<a> Empty get;

+
+ +
+
+
+

bool IsEmpty get;

+
+ +
+
+
+

bool IsNode get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDequeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDequeModule.htm new file mode 100644 index 0000000..ce24b9c --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDequeModule.htm @@ -0,0 +1,617 @@ + + + + BankersDequeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BankersDequeModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

BankersDeque<a> append<a>(BankersDeque<a> xs, BankersDeque<a> ys)

+
O(ys-xs). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + +
+
+
+

BankersDeque<a> appendC<a>(int c, BankersDeque<a> xs, BankersDeque<a> ys)

+
O(ys-xs). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +
+
+
+

BankersDeque<a> cons<a>(a x, BankersDeque<a> q)

+
O(1), amortized. Returns a new deque with the element added to the beginning. + + + + +
+
+
+

BankersDeque<a> empty<a>(int c)

+
O(1). Returns deque of no elements, c is front-back stream ration constant, should be at least 2. + + + + +
+
+
+

a head<a>(BankersDeque<a> q)

+
O(1), amortized. Returns the first element. + + + + +
+
+
+

BankersDeque<a> init<a>(BankersDeque<a> q)

+
O(1), amortized. Returns a new deque of the elements before the last element. + + + + +
+
+
+

bool isEmpty<a>(BankersDeque<a> q)

+
O(1). Returns true if the deque has no elements. + + + + +
+
+
+

a last<a>(BankersDeque<a> q)

+
O(1), amortized. Returns the last element. + + + + +
+
+
+

int length<a>(BankersDeque<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, BankersDeque<a> q)

+
O(n), worst case. Returns element by index. + + + + +
+
+
+

BankersDeque<a> ofCatListsC<a>(int c, FSharpList<a> xs, FSharpList<a> ys)

+
O(ys-xs). Returns a deque of the two lists concatenated, c is front-back stream ration constant, should be at least 2. + + + + +
+
+
+

BankersDeque<a> ofCatSeqs<a>(IEnumerable<a> xs, IEnumerable<a> ys)

+
O(ys). Returns a deque of the two seqs concatenated, front-back stream ratio constant defaulted to 2. + + + + +
+
+
+

BankersDeque<a> ofCatSeqsC<a>(int c, IEnumerable<a> xs, IEnumerable<a> ys)

+
O(ys). Returns a deque of the two seqs concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +
+
+
+

BankersDeque<a> ofSeqC<a>(int c, IEnumerable<a> xs)

+
O(1). Returns a deque of the seq, c is front-back stream ratio constant, should be at least 2. + + + + +
+
+
+

BankersDeque<a> remove<a>(int i, BankersDeque<a> q)

+
O(n), worst case. Returns deque with element removed by index. + + + + +
+
+
+

BankersDeque<a> rev<a>(BankersDeque<a> q)

+
O(1). Returns deque reversed. + + + + +
+
+
+

BankersDeque<a> singletonC<a>(int c, a x)

+
O(1). Returns a deque of one element, c is front-back stream ratio constant, should be at least 2. + + + + +
+
+
+

BankersDeque<a> snoc<a>(a x, BankersDeque<a> q)

+
O(1), amortized. Returns a new deque with the element added to the end. + + + + +
+
+
+

BankersDeque<a> tail<a>(BankersDeque<a> q)

+
O(1), amortized. Returns a new deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option first element. + + + + +
+
+
+

FSharpOption<BankersDeque<a>> tryGetInit<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option deque of the elements before the last element. + + + + +
+
+
+

FSharpOption<a> tryGetLast<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option last element. + + + + +
+
+
+

FSharpOption<BankersDeque<a>> tryGetTail<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, BankersDeque<a> q)

+
O(n), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<BankersDeque<a>> tryRemove<a>(int i, BankersDeque<a> q)

+
O(n), worst case. Returns option deque with element removed by index. + + + + +
+
+
+

FSharpOption<Tuple<a, BankersDeque<a>>> tryUncons<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option first element and tail. + + + + +
+
+
+

FSharpOption<Tuple<BankersDeque<a>, a>> tryUnsnoc<a>(BankersDeque<a> q)

+
O(1), amortized. Returns option init and the last element. + + + + +
+
+
+

FSharpOption<BankersDeque<a>> tryUpdate<a>(int i, a y, BankersDeque<a> q)

+
O(n), worst case. Returns option deque with element updated by index. + + + + +
+
+
+

Tuple<a, BankersDeque<a>> uncons<a>(BankersDeque<a> q)

+
O(1), amortized. Returns the first element and tail. + + + + +
+
+
+

Tuple<BankersDeque<a>, a> unsnoc<a>(BankersDeque<a> q)

+
O(1), amortized. Returns init and the last element. + + + + +
+
+
+

BankersDeque<a> update<a>(int i, a y, BankersDeque<a> q)

+
O(n), worst case. Returns deque with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDeque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDeque`1.htm new file mode 100644 index 0000000..50b3554 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersDeque`1.htm @@ -0,0 +1,413 @@ + + + + BankersDeque<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BankersDeque<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IDeque`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

BankersDeque<a> Init get;

+
O(1), amortized. Returns a new deque of the elements before the last element. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the deque has no elements. + +
+
+
+

a Last get;

+
O(1), amortized. Returns the last element. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

BankersDeque<a> Rev get;

+
O(1). Returns deque reversed. + +
+
+
+

BankersDeque<a> Tail get;

+
O(1), amortized. Returns a new deque of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1), amortized. Returns option first element. + +
+
+
+

FSharpOption<BankersDeque<a>> TryGetInit get;

+
O(1), amortized. Returns option deque of the elements before the last element. + +
+
+
+

FSharpOption<a> TryGetLast get;

+
O(1), amortized. Returns option last element. + +
+
+
+

FSharpOption<BankersDeque<a>> TryGetTail get;

+
O(1), amortized. Returns option deque of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, BankersDeque<a>>> TryUncons get;

+
O(1), amortized. Returns option first element and tail. + +
+
+
+

FSharpOption<Tuple<BankersDeque<a>, a>> TryUnsnoc get;

+
O(1), amortized. Returns option init and the last element. + +
+
+
+

Tuple<a, BankersDeque<a>> Uncons get;

+
O(1), amortized. Returns the first element and tail. + +
+
+
+

Tuple<BankersDeque<a>, a> Unsnoc get;

+
O(1), amortized. Returns init and the last element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueueModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueueModule.htm new file mode 100644 index 0000000..b5ea83d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueueModule.htm @@ -0,0 +1,407 @@ + + + + BankersQueueModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BankersQueueModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

a head<a>(BankersQueue<a> q)

+
O(1), amortized. Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(Unit unitVar0, BankersQueue<a> q)

+
O(1). Returns true if the queue has no elements. + + + + +
+
+
+

int length<a>(Unit unitVar0, BankersQueue<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

BankersQueue<a> rev<a>(BankersQueue<a> q)

+
O(1). Returns queue reversed. + + + + +
+
+
+

BankersQueue<a> snoc<a>(a x, BankersQueue<a> q)

+
O(1), amortized. Returns a new queue with the element added to the end. + + + + +
+
+
+

BankersQueue<a> tail<a>(BankersQueue<a> q)

+
O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BankersQueue<a> q)

+
O(1), amortized. Returns option first element. + + + + +
+
+
+

FSharpOption<BankersQueue<a>> tryGetTail<a>(BankersQueue<a> q)

+
O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<Tuple<a, BankersQueue<a>>> tryUncons<a>(BankersQueue<a> q)

+
O(1), amortized. Returns option first element and tail. + + + + +
+
+
+

Tuple<a, BankersQueue<a>> uncons<a>(BankersQueue<a> q)

+
O(1), amortized. Returns the first element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueue`1.htm new file mode 100644 index 0000000..29b7239 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BankersQueue`1.htm @@ -0,0 +1,371 @@ + + + + BankersQueue<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BankersQueue<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IQueue`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the queue has no elements. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

BankersQueue<a> Rev get;

+
O(1). Returns queue reversed + +
+
+
+

BankersQueue<a> Tail get;

+
O(1), amortized. Returns a new queue of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1), amortized. Returns option first element. + +
+
+
+

FSharpOption<BankersQueue<a>> TryGetTail get;

+
O(1), amortized. Returns option queue of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, BankersQueue<a>>> TryUncons get;

+
O(1), amortized. Returns option first element and tail. + +
+
+
+

Tuple<a, BankersQueue<a>> Uncons get;

+
O(1), amortized. Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDequeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDequeModule.htm new file mode 100644 index 0000000..f38ca3d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDequeModule.htm @@ -0,0 +1,537 @@ + + + + BatchedDequeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BatchedDequeModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

BatchedDeque<a> cons<a>(a x, BatchedDeque<a> q)

+
O(1). Returns a new deque with the element added to the beginning. + + + + +
+
+
+

a head<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns the first element. + + + + +
+
+
+

BatchedDeque<a> init<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +
+
+
+

bool isEmpty<a>(BatchedDeque<a> q)

+
O(1). Returns true if the deque has no elements. + + + + +
+
+
+

a last<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns the last element. + + + + +
+
+
+

int length<a>(BatchedDeque<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, BatchedDeque<a> q)

+
O(n), worst case. Returns element by index. + + + + +
+
+
+

BatchedDeque<a> remove<a>(int i, BatchedDeque<a> q)

+
O(n), worst case. Returns deque with element removed by index. + + + + +
+
+
+

BatchedDeque<a> rev<a>(BatchedDeque<a> q)

+
O(1). Returns deque reversed. + + + + +
+
+
+

BatchedDeque<a> snoc<a>(a x, BatchedDeque<a> q)

+
O(1). Returns a new deque with the element added to the end. + + + + +
+
+
+

BatchedDeque<a> tail<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<BatchedDeque<a>> tryGetInit<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +
+
+
+

FSharpOption<a> tryGetLast<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option last element. + + + + +
+
+
+

FSharpOption<BatchedDeque<a>> tryGetTail<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, BatchedDeque<a> q)

+
O(n), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<BatchedDeque<a>> tryRemove<a>(int i, BatchedDeque<a> q)

+
O(n), worst case. Returns option deque with element removed by index. + + + + +
+
+
+

FSharpOption<Tuple<a, BatchedDeque<a>>> tryUncons<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +
+
+
+

FSharpOption<Tuple<BatchedDeque<a>, a>> tryUnsnoc<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +
+
+
+

FSharpOption<BatchedDeque<a>> tryUpdate<a>(int i, a y, BatchedDeque<a> q)

+
O(n), worst case. Returns option deque with element updated by index. + + + + +
+
+
+

Tuple<a, BatchedDeque<a>> uncons<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +
+
+
+

Tuple<BatchedDeque<a>, a> unsnoc<a>(BatchedDeque<a> q)

+
O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +
+
+
+

BatchedDeque<a> update<a>(int i, a y, BatchedDeque<a> q)

+
O(n), worst case. Returns deque with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDeque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDeque`1.htm new file mode 100644 index 0000000..d0d724a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedDeque`1.htm @@ -0,0 +1,413 @@ + + + + BatchedDeque<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BatchedDeque<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IDeque`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

BatchedDeque<a> Init get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the deque has no elements. + +
+
+
+

a Last get;

+
O(1) amortized, O(n), worst case. Returns the last element. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

BatchedDeque<a> Rev get;

+
O(1). Returns deque reversed. + +
+
+
+

BatchedDeque<a> Tail get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1) amortized, O(n), worst case. Returns option first element. + +
+
+
+

FSharpOption<BatchedDeque<a>> TryGetInit get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

FSharpOption<a> TryGetLast get;

+
O(1) amortized, O(n), worst case. Returns option last element. + +
+
+
+

FSharpOption<BatchedDeque<a>> TryGetTail get;

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, BatchedDeque<a>>> TryUncons get;

+
O(1) amortized, O(n), worst case. Returns option first element and tail. + +
+
+
+

FSharpOption<Tuple<BatchedDeque<a>, a>> TryUnsnoc get;

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + +
+
+
+

Tuple<a, BatchedDeque<a>> Uncons get;

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + +
+
+
+

Tuple<BatchedDeque<a>, a> Unsnoc get;

+
O(1) amortized, O(n), worst case. Returns init and the last element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueueModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueueModule.htm new file mode 100644 index 0000000..15cd05f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueueModule.htm @@ -0,0 +1,427 @@ + + + + BatchedQueueModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BatchedQueueModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, BatchedQueue<a> q)

+
applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, BatchedQueue<a> q, State state)

+
applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +
+
+
+

a head<a>(BatchedQueue<a> q)

+
returns the first element + + + + +
+
+
+

bool isEmpty<a>(BatchedQueue<a> q)

+
returns true if the queue has no elements + + + + +
+
+
+

int length<a>(BatchedQueue<a> q)

+
returns the count of elememts + + + + +
+
+
+

BatchedQueue<a> rev<a>(BatchedQueue<a> q)

+
returns queue reversed + + + + +
+
+
+

BatchedQueue<a> snoc<a>(a x, BatchedQueue<a> q)

+
returns a new queue with the element added to the end + + + + +
+
+
+

BatchedQueue<a> tail<a>(BatchedQueue<a> q)

+
returns a new queue of the elements trailing the first element + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BatchedQueue<a> q)

+
returns option first element + + + + +
+
+
+

FSharpOption<BatchedQueue<a>> tryGetTail<a>(BatchedQueue<a> q)

+
returns option queue of the elements trailing the first element + + + + +
+
+
+

FSharpOption<Tuple<a, BatchedQueue<a>>> tryUncons<a>(BatchedQueue<a> q)

+
returns option first element and tail + + + + +
+
+
+

Tuple<a, BatchedQueue<a>> uncons<a>(BatchedQueue<a> q)

+
returns the first element and tail + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueue`1.htm new file mode 100644 index 0000000..5cebdda --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BatchedQueue`1.htm @@ -0,0 +1,371 @@ + + + + BatchedQueue<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BatchedQueue<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IQueue`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
returns true if the queue has no elements + +
+
+
+

int Length get;

+
returns the count of elememts + +
+
+
+

BatchedQueue<a> Rev get;

+
returns queue reversed + +
+
+
+

BatchedQueue<a> Tail get;

+
returns a new queue of the elements trailing the first element + +
+
+
+

FSharpOption<a> TryGetHead get;

+
returns option first element + +
+
+
+

FSharpOption<BatchedQueue<a>> TryGetTail get;

+
returns option queue of the elements trailing the first element + +
+
+
+

FSharpOption<Tuple<a, BatchedQueue<a>>> TryUncons get;

+
returns option first element and tail + +
+
+
+

Tuple<a, BatchedQueue<a>> Uncons get;

+
returns the first element and tail + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessListModule.htm new file mode 100644 index 0000000..933bb2b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessListModule.htm @@ -0,0 +1,447 @@ + + + + BinaryRandomAccessListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinaryRandomAccessListModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

BinaryRandomAccessList<a> cons<a>(a x, BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns a new random access list with the element added to the beginning. + + + + +
+
+
+

a head<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(BinaryRandomAccessList<a> xs)

+
O(1). Returns true if the random access list has no elements. + + + + +
+
+
+

int length<a>(BinaryRandomAccessList<a> xs)

+
O(log n). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns element by index. + + + + +
+
+
+

BinaryRandomAccessList<a> rev<a>(BinaryRandomAccessList<a> xs)

+
O(n). Returns random access list reversed. + + + + +
+
+
+

BinaryRandomAccessList<a> tail<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns a new random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<BinaryRandomAccessList<a>> tryGetTail<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns a option random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<Tuple<a, BinaryRandomAccessList<a>>> tryUncons<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns the option first element and tail. + + + + +
+
+
+

FSharpOption<BinaryRandomAccessList<a>> tryUpdate<a>(int i, a y, BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns option random access list with element updated by index. + + + + +
+
+
+

Tuple<a, BinaryRandomAccessList<a>> uncons<a>(BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns the first element and tail. + + + + +
+
+
+

BinaryRandomAccessList<a> update<a>(int i, a y, BinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns random access list with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessList`1.htm new file mode 100644 index 0000000..bcdee81 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryRandomAccessList`1.htm @@ -0,0 +1,403 @@ + + + + BinaryRandomAccessList<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinaryRandomAccessList<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IRandomAccessList`1

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

FSharpFunc<FSharpList<Digit<a>>, FSharpOption<FSharpList<Digit<a>>>> tryUpdate(int i, a y)

+
+ + + + +
+
+
+

FSharpFunc<FSharpList<Digit<a>>, FSharpList<Digit<a>>> update(int i, a y)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the random access list has no elements. + +
+
+
+

FSharpList<Digit<a>> randomAccessList get;

+
+ +
+
+
+

BinaryRandomAccessList<a> Tail get;

+
O(log n), worst case. Returns a new random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(log n), worst case. Returns option first element. + +
+
+
+

FSharpOption<BinaryRandomAccessList<a>> TryGetTail get;

+
O(log n), worst case. Returns a option random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, BinaryRandomAccessList<a>>> TryUncons get;

+
O(log n), worst case. Returns the option first element and tail. + +
+
+
+

FSharpFunc<Tuple<int, a, TreeBRAL<a>>, FSharpOption<TreeBRAL<a>>> tryUpdateTree get;

+
+ +
+
+
+

Tuple<a, BinaryRandomAccessList<a>> Uncons get;

+
O(log n), worst case. Returns the first element and tail. + +
+
+
+

FSharpFunc<Tuple<int, a, TreeBRAL<a>>, TreeBRAL<a>> updateTree get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper.htm new file mode 100644 index 0000000..172600b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper.htm @@ -0,0 +1,400 @@ + + + + BinaryTreeZipper - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinaryTreeZipper

+

Namespace FSharpx.DataStructures

+
+
+
TreeZipper +original implementation taken from http://blog.xquant.net/?p=156 +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

BinaryTree`1 branch<a>(a x)

+
Creates a new branch with the label x and two leafs as subbranches + + + + +
+
+
+

FSharpFunc<BinaryTreeZipper`1, BinaryTreeZipper`1> getMove<a>(TreeZipperDirection direction)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 left<a>(BinaryTreeZipper`1 z)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 move<a>(IEnumerable<TreeZipperDirection> directions, BinaryTreeZipper`1 z)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 right<a>(BinaryTreeZipper`1 z)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 setFocus<a>(BinaryTree`1 newFocus, BinaryTreeZipper`1 zipper)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 top<a>(BinaryTreeZipper`1 z)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 up<a>(BinaryTreeZipper`1 z)

+
+ + + + +
+
+
+

BinaryTreeZipper`1 zipper<a>(BinaryTree`1 t)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper`1.htm new file mode 100644 index 0000000..1943d42 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTreeZipper`1.htm @@ -0,0 +1,347 @@ + + + + BinaryTreeZipper`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinaryTreeZipper`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<BinaryTreeZipper`1>, IStructuralEquatable, IComparable<BinaryTreeZipper`1>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(BinaryTreeZipper`1 obj)

+
+ + + + +
+
+
+

bool Equals(BinaryTreeZipper`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

BinaryTree`1 Focus get;

+
+ +
+
+
+

FSharpList<Tuple<TreeDirection, a, BinaryTree`1>> Path get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTree`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTree`1.htm new file mode 100644 index 0000000..3a81453 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinaryTree`1.htm @@ -0,0 +1,393 @@ + + + + BinaryTree`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinaryTree`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<BinaryTree`1>, IStructuralEquatable, IComparable<BinaryTree`1>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(BinaryTree`1 obj)

+
+ + + + +
+
+
+

bool Equals(BinaryTree`1 obj)

+
+ + + + +
+
+
+

bool get_IsBranch()

+
+ + + + +
+
+ +

Public static methods

+ +
+

BinaryTree`1 get_Leaf()

+
+ + + + +
+
+
+

BinaryTree`1 NewBranch(a item1, BinaryTree`1 item2, BinaryTree`1 item3)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsBranch get;

+
+ +
+
+
+

bool IsLeaf get;

+
+ +
+
+
+

BinaryTree`1 Leaf get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap.htm new file mode 100644 index 0000000..dff0dc1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap.htm @@ -0,0 +1,427 @@ + + + + BinomialHeap - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinomialHeap

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

a head<a>(BinomialHeap<a> xs)

+
O(log n). Returns the min or max element. + + + + +
+
+
+

BinomialHeap<a> insert<a>(a x, BinomialHeap<a> xs)

+
O(log n). Returns a new heap with the element inserted. + + + + +
+
+
+

bool isDescending<a>(BinomialHeap<a> xs)

+
O(1). Returns true if the heap has max element at head. + + + + +
+
+
+

bool isEmpty<a>(BinomialHeap<a> xs)

+
O(1). Returns true if the heap has no elements. + + + + +
+
+
+

int length<a>(BinomialHeap<a> xs)

+
O(log n). Returns the count of elememts. + + + + +
+
+
+

BinomialHeap<a> merge<a>(BinomialHeap<a> xs, BinomialHeap<a> ys)

+
O(log n) Returns heap from merging two heaps, both must have same isDescending. + + + + +
+
+
+

BinomialHeap<a> tail<a>(BinomialHeap<a> xs)

+
O(log n). Returns a new heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BinomialHeap<a> xs)

+
O(log n). Returns option first min or max element. + + + + +
+
+
+

FSharpOption<BinomialHeap<a>> tryGetTail<a>(BinomialHeap<a> xs)

+
O(log n). Returns option heap of the elements trailing the head + + + + +
+
+
+

FSharpOption<BinomialHeap<a>> tryMerge<a>(BinomialHeap<a> xs, BinomialHeap<a> ys)

+
O(log n). Returns heap option from merging two heaps. + + + + +
+
+
+

FSharpOption<Tuple<a, BinomialHeap<a>>> tryUncons<a>(BinomialHeap<a> xs)

+
O(log n). Returns option head element and tail. + + + + +
+
+
+

Tuple<a, BinomialHeap<a>> uncons<a>(BinomialHeap<a> xs)

+
O(log n). Returns the head element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap`1.htm new file mode 100644 index 0000000..633f136 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialHeap`1.htm @@ -0,0 +1,357 @@ + + + + BinomialHeap<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinomialHeap<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IPriorityQueue`1, IHeap`2

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ + +
+

BinomialHeap<a> Merge(BinomialHeap<a> xs)

+
O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + +
+
+
+

FSharpOption<BinomialHeap<a>> TryMerge(BinomialHeap<a> xs)

+
O(log n). Returns heap option from merging two heaps. + + + + +
+
+ + +

Public properties

+ +
+

bool IsDescending get;

+
O(1). Returns true if the heap has max element at head. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the heap has no elements. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialTree`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialTree`1.htm new file mode 100644 index 0000000..0e93ce5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BinomialTree`1.htm @@ -0,0 +1,369 @@ + + + + BinomialTree<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BinomialTree<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<BinomialTree<a>>, IStructuralEquatable, IComparable<BinomialTree<a>>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(BinomialTree<a> obj)

+
+ + + + +
+
+
+

bool Equals(BinomialTree<a> obj)

+
+ + + + +
+
+
+

Tuple<int, a, FSharpList<BinomialTree<a>>> get_Item()

+
+ + + + +
+
+ +

Public static methods

+ +
+

BinomialTree<a> NewNode(Tuple<int, a, FSharpList<BinomialTree<a>>> item)

+
+ + + + +
+
+ +

Public properties

+ +
+

Tuple<int, a, FSharpList<BinomialTree<a>>> Item get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue.htm new file mode 100644 index 0000000..3e49d0b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue.htm @@ -0,0 +1,377 @@ + + + + BootstrappedQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BootstrappedQueue

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

a head<a>(BootstrappedQueue`1 queue)

+
+ + + + +
+
+
+

bool isEmpty<a>(BootstrappedQueue`1 _arg1)

+
+ + + + +
+
+
+

int length<a>(BootstrappedQueue`1 queue)

+
+ + + + +
+
+
+

BootstrappedQueue`1 snoc<a>(a x, BootstrappedQueue`1 queue)

+
+ + + + +
+
+
+

BootstrappedQueue`1 tail<a>(BootstrappedQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(BootstrappedQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<BootstrappedQueue`1> tryGetTail<a>(BootstrappedQueue`1 queue)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue`1.htm new file mode 100644 index 0000000..68e897e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BootstrappedQueue`1.htm @@ -0,0 +1,428 @@ + + + + BootstrappedQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BootstrappedQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<BootstrappedQueue`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(BootstrappedQueue`1 obj)

+
+ + + + +
+
+
+

bool get_IsNonEmpty()

+
+ + + + +
+
+ +

Public static methods

+ + + +
+

BootstrappedQueue`1 NewNonEmpty(NonEmptyBootstrappedQueue`1 item)

+
+ + + + +
+
+ +

Public properties

+ +
+

BootstrappedQueue`1 Empty get;

+
+ +
+
+ +
+

bool IsEmpty get;

+
+ +
+
+
+

bool IsNonEmpty get;

+
+ +
+
+
+

FSharpFunc<BootstrappedQueue`1, int> length get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+
+

FSharpFunc<BootstrappedQueue`1, BootstrappedQueue`1> tail get;

+
+ +
+
+
+

FSharpFunc<BootstrappedQueue`1, FSharpOption<a>> tryGetHead get;

+
+ +
+
+
+

FSharpFunc<BootstrappedQueue`1, FSharpOption<BootstrappedQueue`1>> tryGetTail get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BottomUpMergeSort.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BottomUpMergeSort.htm new file mode 100644 index 0000000..7515230 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/BottomUpMergeSort.htm @@ -0,0 +1,367 @@ + + + + BottomUpMergeSort - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type BottomUpMergeSort

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Sortable`1 add<a>(a x, Sortable`1 y)

+
+ + + + +
+
+
+

FSharpList<FSharpList<a>> addSeg<a>(FSharpList<a> seg, FSharpList<FSharpList<a>> segs, int size)

+
+ + + + +
+
+
+

bool isEmpty<a>(Sortable`1 x)

+
+ + + + +
+
+
+

FSharpList<a> merge<a>(FSharpList<a> xs, FSharpList<a> ys)

+
Merges two sequences by the default comparer for 'T + + + + +
+
+
+

FSharpList<a> mergeAll<a>(FSharpList<a> xs, FSharpList<FSharpList<a>> ys)

+
+ + + + +
+
+
+

FSharpList<a> sort<a>(Sortable`1 x)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DListModule.htm new file mode 100644 index 0000000..02d8abc --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DListModule.htm @@ -0,0 +1,418 @@ + + + + DListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type DListModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

DList<a> append<a>(DList<a> left, DList<a> right)

+
O(1). Returns a new DList of two lists. + + + + +
+
+
+

DList<a> cons<a>(a hd, DList<a> tl)

+
O(1). Returns a new DList with the element added to the beginning. + + + + +
+
+
+

a fold<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, a seed, DList<a> l)

+
Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. +See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +
+
+
+

a head<a>(DList<a> l)

+
O(log n). Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(DList<a> l)

+
O(1). Returns true if the DList has no elements. + + + + +
+
+
+

int length<a>(DList<a> l)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

DList<a> snoc<a>(DList<a> l, a x)

+
O(1). Returns a new DList with the element added to the end. + + + + +
+
+
+

DList<a> tail<a>(DList<a> l)

+
O(log n). Returns a new DList of the elements trailing the first element. + + + + +
+
+
+

a[] toArray<a>(DList<a> l)

+
+ + + + +
+
+
+

FSharpList<a> toList<a>(DList<a> l)

+
+ + + + +
+
+
+

IEnumerable<a> toSeq<a>(DList<a> l)

+
O(n). Returns a seq of the DList elements. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DList`1.htm new file mode 100644 index 0000000..89a040c --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DList`1.htm @@ -0,0 +1,486 @@ + + + + DList<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type DList<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<DList<a>>, IStructuralEquatable, IComparable<DList<a>>, IComparable, IStructuralComparable, IEnumerable<a>

+
+
+
The DList is an implementation of John Hughes' append list. +See http://dl.acm.org/citation.cfm?id=8475 for more information. +This implementation adds an additional parameter to allow a more +efficient calculation of the list length. +Note that an alternate form would represent the DList as: +type DList<'a> = DList of ('a list -> 'a list) +An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(DList<a> obj)

+
+ + + + +
+
+
+

bool Equals(DList<a> obj)

+
+ + + + +
+
+
+

bool get_IsJoin()

+
+ + + + +
+
+
+

bool get_IsNil()

+
+ + + + +
+
+
+

bool get_IsUnit()

+
+ + + + +
+
+
+

int get_Tag()

+
+ + + + +
+
+
+

DList<a> snoc(a a)

+
+ + + + +
+
+ +

Public static methods

+ +
+

DList<a> get_Nil()

+
+ + + + +
+
+
+

DList<a> NewJoin(DList<a> item1, DList<a> item2, int item3)

+
+ + + + +
+
+
+

DList<a> NewUnit(a item)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the DList has no elements. + +
+
+
+

bool IsJoin get;

+
+ +
+
+
+

bool IsNil get;

+
+ +
+
+
+

bool IsUnit get;

+
+ +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

DList<a> Nil get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+
+

DList<a> Tail get;

+
O(log n). Returns a new DList of the elements trailing the first element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DequeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DequeModule.htm new file mode 100644 index 0000000..07db016 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/DequeModule.htm @@ -0,0 +1,547 @@ + + + + DequeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type DequeModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

Deque<a> cons<a>(a x, Deque<a> q)

+
O(n), worst case. Returns a new deque with the element added to the beginning. + + + + +
+
+
+

a head<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns the first element. + + + + +
+
+
+

Deque<a> init<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +
+
+
+

bool isEmpty<a>(Deque<a> q)

+
O(1). Returns true if the deque has no elements. + + + + +
+
+
+

a last<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns the last element. + + + + +
+
+
+

int length<a>(Deque<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, Deque<a> q)

+
O(n), worst case. Returns element by index. + + + + +
+
+
+

Deque<a> ofCatLists<a>(FSharpList<a> xs, FSharpList<a> ys)

+
O(n), worst case. Returns a deque of the two lists concatenated. + + + + +
+
+
+

Deque<a> remove<a>(int i, Deque<a> q)

+
O(n), worst case. Returns deque with element removed by index. + + + + +
+
+
+

Deque<a> rev<a>(Deque<a> q)

+
O(1). Returns deque reversed. + + + + +
+
+
+

Deque<a> snoc<a>(a x, Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns a new deque with the element added to the end. + + + + +
+
+
+

Deque<a> tail<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<Deque<a>> tryGetInit<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +
+
+
+

FSharpOption<a> tryGetLast<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns option last element. + + + + +
+
+
+

FSharpOption<Deque<a>> tryGetTail<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, Deque<a> q)

+
O(n), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<Deque<a>> tryRemove<a>(int i, Deque<a> q)

+
O(n), worst case. Returns option deque with element removed by index. + + + + +
+
+
+

FSharpOption<Tuple<a, Deque<a>>> tryUncons<a>(Deque<a> q)

+
O(1) amortized, /O(n), worst case. Returns option first element and tail. + + + + +
+
+
+

FSharpOption<Tuple<Deque<a>, a>> tryUnsnoc<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +
+
+
+

FSharpOption<Deque<a>> tryUpdate<a>(int i, a y, Deque<a> q)

+
O(n), worst case. Returns option deque with element updated by index. + + + + +
+
+
+

Tuple<a, Deque<a>> uncons<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +
+
+
+

Tuple<Deque<a>, a> unsnoc<a>(Deque<a> q)

+
O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +
+
+
+

Deque<a> update<a>(int i, a y, Deque<a> q)

+
O(n), worst case. Returns deque with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Deque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Deque`1.htm new file mode 100644 index 0000000..a43e724 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Deque`1.htm @@ -0,0 +1,413 @@ + + + + Deque<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Deque<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IDeque`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

Deque<a> Init get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the deque has no elements. + +
+
+
+

a Last get;

+
O(1) amortized, O(n), worst case. Returns the last element. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

Deque<a> Rev get;

+
O(1). Returns deque reversed. + +
+
+
+

Deque<a> Tail get;

+
O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1) amortized, O(n), worst case. Returns option first element. + +
+
+
+

FSharpOption<Deque<a>> TryGetInit get;

+
O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + +
+
+
+

FSharpOption<a> TryGetLast get;

+
O(1) amortized, O(n), worst case. Returns option last element. + +
+
+
+

FSharpOption<Deque<a>> TryGetTail get;

+
O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, Deque<a>>> TryUncons get;

+
O(1) amortized, O(n), worst case. Returns option first element and tail. + +
+
+
+

FSharpOption<Tuple<Deque<a>, a>> TryUnsnoc get;

+
O(1) amortized, O(n), worst case. Returns option init and the last element. + +
+
+
+

Tuple<a, Deque<a>> Uncons get;

+
O(1) amortized, O(n), worst case. Returns the first element and tail. + +
+
+
+

Tuple<Deque<a>, a> Unsnoc get;

+
O(1) amortized, O(n), worst case. Returns init and the last element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Digit`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Digit`1.htm new file mode 100644 index 0000000..92e0f1e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Digit`1.htm @@ -0,0 +1,420 @@ + + + + Digit<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Digit<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<Digit<a>>, IStructuralEquatable, IComparable<Digit<a>>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(Digit<a> obj)

+
+ + + + +
+
+
+

bool Equals(Digit<a> obj)

+
+ + + + +
+
+
+

bool get_IsTwo()

+
+ + + + +
+
+ +

Public static methods

+ +
+

Digit<a> get_Zero()

+
+ + + + +
+
+
+

Digit<a> NewOne(TreeBRAL<a> item)

+
+ + + + +
+
+
+

Digit<a> NewOne(a item)

+
+ + + + +
+
+
+

Digit<a> NewTwo(a item1, a item2)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsOne get;

+
+ +
+
+
+

bool IsTwo get;

+
+ +
+
+
+

bool IsZero get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+
+

Digit<a> Zero get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Exceptions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Exceptions.htm new file mode 100644 index 0000000..93c6a19 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Exceptions.htm @@ -0,0 +1,321 @@ + + + + Exceptions - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Exceptions

+

Namespace FSharpx.DataStructures

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

Exception Empty get;

+
+ +
+
+
+

IndexOutOfRangeException OutOfBounds get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Functions`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Functions`1.htm new file mode 100644 index 0000000..5d8689d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Functions`1.htm @@ -0,0 +1,419 @@ + + + + Functions`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Functions`1

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

BKTree<a> add(a a, BKTree<a> tree)

+
+ + + + +
+
+
+

BKTree<a> append(BKTree<a> t1, BKTree<a> t2)

+
+ + + + +
+
+
+

BKTree<a> concat(FSharpList<BKTree<a>> xs)

+
+ + + + +
+
+
+

BKTree<a> delete(a a, BKTree<a> tree)

+
+ + + + +
+
+
+

bool exists(a a, BKTree<a> tree)

+
+ + + + +
+
+
+

bool existsDistance(int n, a a, BKTree<a> tree)

+
+ + + + +
+
+
+

BKTree<a> ofArray(a[] xs)

+
+ + + + +
+
+
+

BKTree<a> ofList(FSharpList<a> xs)

+
+ + + + +
+
+
+

BKTree<a> ofSeq(IEnumerable<a> xs)

+
Creates a meValueCollection from a list of key-value pairs + + + + +
+
+
+

FSharpList<a> toListDistance(int n, a a, BKTree<a> tree)

+
+ + + + +
+
+ + +

Public properties

+ +
+

FSharpFunc<a, FSharpFunc<a, int>> distance get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HeapPriorityQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HeapPriorityQueue.htm new file mode 100644 index 0000000..19a43b5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HeapPriorityQueue.htm @@ -0,0 +1,377 @@ + + + + HeapPriorityQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type HeapPriorityQueue

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IPriorityQueue`1 empty<a>(bool maxQueue)

+
O(1). Returns a empty heap. + + + + +
+
+
+

IPriorityQueue`1 insert<a>(a element, IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

bool isEmpty<a>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

a peek<a>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

Tuple<a, IPriorityQueue`1> pop<a>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

FSharpOption<a> tryPeek<a>(IPriorityQueue`1 pq)

+
+ + + + +
+
+
+

FSharpOption<Tuple<a, IPriorityQueue`1>> tryPop<a>(IPriorityQueue`1 pq)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueueModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueueModule.htm new file mode 100644 index 0000000..1bd02fb --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueueModule.htm @@ -0,0 +1,427 @@ + + + + HoodMelvilleQueueModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type HoodMelvilleQueueModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, HoodMelvilleQueue<a> q)

+
applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, HoodMelvilleQueue<a> q, State state)

+
applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +
+
+
+

a head<a>(HoodMelvilleQueue<a> q)

+
returns the first element + + + + +
+
+
+

bool isEmpty<a>(HoodMelvilleQueue<a> q)

+
returns true if the queue has no elements + + + + +
+
+
+

int length<a>(HoodMelvilleQueue<a> q)

+
returns the count of elememts + + + + +
+
+
+

HoodMelvilleQueue<a> ofList<a>(IEnumerable<a> xs)

+
returns a queue of the list + + + + +
+
+
+

HoodMelvilleQueue<a> snoc<a>(a x, HoodMelvilleQueue<a> q)

+
returns a new queue with the element added to the end + + + + +
+
+
+

HoodMelvilleQueue<a> tail<a>(HoodMelvilleQueue<a> q)

+
returns a new queue of the elements trailing the first element + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(HoodMelvilleQueue<a> q)

+
returns option first element + + + + +
+
+
+

FSharpOption<HoodMelvilleQueue<a>> tryGetTail<a>(HoodMelvilleQueue<a> q)

+
returns option queue of the elements trailing the first element + + + + +
+
+
+

FSharpOption<Tuple<a, HoodMelvilleQueue<a>>> tryUncons<a>(HoodMelvilleQueue<a> q)

+
returns option first element and tail + + + + +
+
+
+

Tuple<a, HoodMelvilleQueue<a>> uncons<a>(HoodMelvilleQueue<a> q)

+
returns the first element and tail + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueue`1.htm new file mode 100644 index 0000000..32ff423 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/HoodMelvilleQueue`1.htm @@ -0,0 +1,364 @@ + + + + HoodMelvilleQueue<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type HoodMelvilleQueue<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IQueue`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
returns true if the queue has no elements + +
+
+
+

int Length get;

+
returns the count of elememts + +
+
+
+

HoodMelvilleQueue<a> Tail get;

+
returns a new queue of the elements trailing the first element + +
+
+
+

FSharpOption<a> TryGetHead get;

+
returns option first element + +
+
+
+

FSharpOption<HoodMelvilleQueue<a>> TryGetTail get;

+
returns option queue of the elements trailing the first element + +
+
+
+

FSharpOption<Tuple<a, HoodMelvilleQueue<a>>> TryUncons get;

+
returns option first element and tail + +
+
+
+

Tuple<a, HoodMelvilleQueue<a>> Uncons get;

+
returns the first element and tail + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IDeque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IDeque`1.htm new file mode 100644 index 0000000..b558a2d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IDeque`1.htm @@ -0,0 +1,420 @@ + + + + IDeque`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IDeque`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

int Count get;

+
+ +
+
+ +
+

IDeque`1 Init get;

+
+ +
+
+
+

bool IsEmpty get;

+
+ +
+
+
+

T Last get;

+
+ +
+
+
+

int Length get;

+
+ +
+
+
+

IDeque`1 Rev get;

+
+ +
+
+
+

IDeque`1 Tail get;

+
+ +
+
+
+

FSharpOption<T> TryGetHead get;

+
+ +
+
+
+

FSharpOption<IDeque`1> TryGetInit get;

+
+ +
+
+
+

FSharpOption<T> TryGetLast get;

+
+ +
+
+
+

FSharpOption<IDeque`1> TryGetTail get;

+
+ +
+
+
+

FSharpOption<Tuple<T, IDeque`1>> TryUncons get;

+
+ +
+
+
+

FSharpOption<Tuple<IDeque`1, T>> TryUnsnoc get;

+
+ +
+
+
+

Tuple<T, IDeque`1> Uncons get;

+
+ +
+
+
+

Tuple<IDeque`1, T> Unsnoc get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`1.htm new file mode 100644 index 0000000..b319ef6 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`1.htm @@ -0,0 +1,322 @@ + + + + IHeap`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IHeap`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

bool IsDescending get;

+
+ +
+
+
+

bool IsEmpty get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`2.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`2.htm new file mode 100644 index 0000000..7b5843e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IHeap`2.htm @@ -0,0 +1,338 @@ + + + + IHeap`2 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IHeap`2

+

Namespace FSharpx.DataStructures

+

Interfaces IHeap`1

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

c Insert(T )

+
+ + + + +
+
+
+

c Merge(c )

+
+ + + + +
+
+
+

FSharpOption<c> TryMerge(c )

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IPriorityQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IPriorityQueue`1.htm new file mode 100644 index 0000000..9667e1b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IPriorityQueue`1.htm @@ -0,0 +1,340 @@ + + + + IPriorityQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IPriorityQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

FSharpOption<T> TryPeek()

+
returns option first element + + + + +
+
+
+

FSharpOption<Tuple<T, IPriorityQueue`1>> TryPop()

+
O(log n) amortized time. Returns the option first element and tail. + + + + +
+
+ + +

Public properties

+ +
+

bool IsEmpty get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IQueue`1.htm new file mode 100644 index 0000000..3358c02 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IQueue`1.htm @@ -0,0 +1,357 @@ + + + + IQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
+ +
+
+
+

IQueue`1 Tail get;

+
+ +
+
+
+

FSharpOption<T> TryGetHead get;

+
+ +
+
+
+

FSharpOption<IQueue`1> TryGetTail get;

+
+ +
+
+
+

FSharpOption<Tuple<T, IQueue`1>> TryUncons get;

+
+ +
+
+
+

Tuple<T, IQueue`1> Uncons get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IRandomAccessList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IRandomAccessList`1.htm new file mode 100644 index 0000000..43479b1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IRandomAccessList`1.htm @@ -0,0 +1,357 @@ + + + + IRandomAccessList`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IRandomAccessList`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
+ +
+
+
+

IRandomAccessList`1 Tail get;

+
+ +
+
+
+

FSharpOption<T> TryGetHead get;

+
+ +
+
+
+

FSharpOption<IRandomAccessList`1> TryGetTail get;

+
+ +
+
+
+

FSharpOption<Tuple<T, IRandomAccessList`1>> TryUncons get;

+
+ +
+
+
+

Tuple<T, IRandomAccessList`1> Uncons get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IVector`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IVector`1.htm new file mode 100644 index 0000000..0e4e4d4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IVector`1.htm @@ -0,0 +1,350 @@ + + + + IVector`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IVector`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEnumerable<T>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IVector`1 AssocN(int , T )

+
+ + + + +
+
+
+

int Count()

+
returns the count of elememts + + + + +
+
+
+

IVector`1 Pop()

+
O(log n) amortized time. Returns the first element and tail. + + + + +
+
+ + +

Public properties

+ +
+

T Item get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue.htm new file mode 100644 index 0000000..1577ea6 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue.htm @@ -0,0 +1,367 @@ + + + + ImplicitQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type ImplicitQueue

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

a head<a>(ImplicitQueue`1 queue)

+
+ + + + +
+
+
+

bool isEmpty<a>(ImplicitQueue`1 _arg1)

+
+ + + + +
+
+
+

ImplicitQueue`1 snoc<a>(a x, ImplicitQueue`1 queue)

+
+ + + + +
+
+
+

ImplicitQueue`1 tail<a>(ImplicitQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(ImplicitQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<ImplicitQueue`1> tryGetTail<a>(ImplicitQueue`1 queue)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue`1.htm new file mode 100644 index 0000000..a69442b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ImplicitQueue`1.htm @@ -0,0 +1,414 @@ + + + + ImplicitQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type ImplicitQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<ImplicitQueue`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(ImplicitQueue`1 obj)

+
+ + + + +
+
+
+

bool get_IsDeep()

+
+ + + + +
+
+
+

bool get_IsShallow()

+
+ + + + +
+
+ +

Public static methods

+ +
+

ImplicitQueue`1 NewDeep(Digit<a> item1, Lazy<ImplicitQueue`1> item2, Digit<a> item3)

+
+ + + + +
+
+
+

ImplicitQueue`1 NewShallow(Digit<a> item)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsDeep get;

+
+ +
+
+
+

bool IsShallow get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+
+

FSharpFunc<ImplicitQueue`1, ImplicitQueue`1> tail get;

+
+ +
+
+
+

FSharpFunc<ImplicitQueue`1, FSharpOption<a>> tryGetHead get;

+
+ +
+
+
+

FSharpFunc<ImplicitQueue`1, FSharpOption<ImplicitQueue`1>> tryGetTail get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap.htm new file mode 100644 index 0000000..3103a91 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap.htm @@ -0,0 +1,1157 @@ + + + + IntMap - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IntMap

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

IntMap<a> adjust<a>(FSharpFunc<a, a> f, int k, IntMap<a> m)

+
O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> adjustWithKey<a>(FSharpFunc<int, FSharpFunc<a, a>> f, int k, IntMap<a> m)

+
O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> alter<a>(FSharpFunc<FSharpOption<a>, FSharpOption<a>> f, int k, IntMap<a> t)

+
O(log n). The expression (alter f k map) alters the value x at k, or absence thereof. alter can be used to insert, delete, or update a value in an IntMap. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> append<a>(IntMap<a> m1, IntMap<a> m2)

+
+ + + + +
+
+
+

IntMap<a> appendWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, IntMap<a> m1, IntMap<a> m2)

+
+ + + + +
+
+
+

IntMap<a> appendWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, IntMap<a> m1, IntMap<a> m2)

+
+ + + + +
+
+
+

IntMap<a> concat<a>(FSharpList<IntMap<a>> xs)

+
Build a new array that contains the elements of each of the given list of arrays + + + + +
+
+
+

IntMap<a> concatWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, FSharpList<IntMap<a>> xs)

+
+ + + + +
+
+
+

IntMap<a> delete<a>(int k, IntMap<a> t)

+
O(min(n,W)). Delete a key and its value from the map. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +
+
+
+

Tuple<Tuple<int, a>, IntMap<a>> deleteFindMax<a>(IntMap<a> t)

+
O(log n). Retrieves the maximal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +
+
+
+

Tuple<Tuple<int, a>, IntMap<a>> deleteFindMin<a>(IntMap<a> t)

+
O(log n). Retrieves the minimal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> deleteMax<a>(IntMap<a> t)

+
O(log n). Delete the maximal key. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> deleteMin<a>(IntMap<a> t)

+
O(log n). Delete the minimal key. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> difference<a, b>(IntMap<a> m1, IntMap<a> m2)

+
O(n+m). Difference between two maps (based on keys). Credit: Haskell.org + + + + +
+
+
+

IntMap<a> differenceWith<a, b>(FSharpFunc<a, FSharpFunc<b, FSharpOption<a>>> f, IntMap<a> m1, IntMap<a> m2)

+
O(n+m). Difference with a combining function. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> differenceWithKey<a, b>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<b, FSharpOption<a>>>> f, IntMap<a> m1, IntMap<a> m2)

+
O(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the key and both values. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y. Credit: Haskell.org + + + + +
+
+
+

bool exists<a>(int k, IntMap<a> _arg1)

+
O(min(n,W)). Is the key a member of the map? Credit: Haskell.org + + + + +
+
+
+

IntMap<a> filter<a>(FSharpFunc<a, bool> p, IntMap<a> m)

+
O(n). Filter all values that satisfy some predicate. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> filterWithKey<a>(FSharpFunc<int, FSharpFunc<a, bool>> predicate, IntMap<a> _arg1)

+
O(n). Filter all keys/values that satisfy some predicate. Credit: Haskell.org + + + + +
+
+
+

a find<a>(int k, IntMap<a> m)

+
O(min(n,W)). Lookup the value at a key in the map. Credit: Haskell.org + + + + +
+
+
+

Tuple<int, a> findMax<a>(IntMap<a> t)

+
O(log n). The maximal key of the map. Credit: Haskell.org + + + + +
+
+
+

Tuple<int, a> findMin<a>(IntMap<a> t)

+
O(log n). The minimal key of the map. Credit: Haskell.org + + + + +
+
+
+

a findWithDefault<a>(a def, int k, IntMap<a> _arg1)

+
O(min(n,W)). The expression (findWithDefault def k map) returns the value at key k or returns def when the key is not an element of the map. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, b> foldBack<a, b>(FSharpFunc<a, FSharpFunc<b, b>> f, b z)

+
O(n). FoldBack the values in the map, such that fold f z == Prelude.foldr f z. elems. Credit: Haskell.org + + + + +
+
+
+

b foldBackWithKey<a, b>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<b, b>>> f, b z, IntMap<a> t)

+
O(n). FoldBack the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z. toAscList. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<b>, a> foldWithKey<a, b>(FSharpFunc<a, FSharpFunc<int, FSharpFunc<b, a>>> f, a z)

+
O(n). Fold the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z. toAscList. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> insert<a>(int k, a x, IntMap<a> t)

+
O(min(n,W)). Insert a new key/value pair in the map. If the key is already present in the map, the associated value is replaced with the supplied value, i.e. insert is equivalent to insertWith const. Credit: Haskell.org + + + + +
+
+
+

Tuple<FSharpOption<a>, IntMap<a>> insertTryFindWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, int k, a x, IntMap<a> t)

+
O(min(n,W)). The expression (insertLookupWithKey f k x map) is a pair where the first element is equal to (lookup k map) and the second element equal to (insertWithKey f k x map). Credit: Haskell.org + + + + +
+
+
+

IntMap<a> insertWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, int k, a x, IntMap<a> t)

+
O(min(n,W)). Insert with a combining function. insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f new_value old_value. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> insertWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, int k, a x, IntMap<a> t)

+
O(min(n,W)). Insert with a combining function. insertWithKey f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f key new_value old_value. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> intersection<a, b>(IntMap<a> m1, IntMap<a> m2)

+
O(n+m). The (left-biased) intersection of two maps (based on keys). Credit: Haskell.org + + + + +
+
+
+

IntMap<a> intersectionWith<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, IntMap<a> m1, IntMap<a> m2)

+
O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> intersectionWithKey<a, b, c>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<b, c>>> f, IntMap<a> m1, IntMap<a> m2)

+
O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +
+
+
+

bool isEmpty<a>(IntMap<a> _arg1)

+
O(1). Map is empty. Credit: Haskell.org + + + + +
+
+
+

bool isProperSubmapOf<a>(IntMap<a> m1, IntMap<a> m2)

+
O(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). Credit: Haskell.org + + + + +
+
+
+

bool isProperSubmapOfBy<a, b>(FSharpFunc<a, FSharpFunc<b, bool>> predicate, IntMap<a> t1, IntMap<a> t2)

+
O(n+m). Is this a proper submap? (ie. a submap but not equal). The expression (isProperSubmapOfBy f m1 m2) returns True when m1 and m2 are not equal, all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + +
+
+
+

bool isSubmapOf<a>(IntMap<a> m1, IntMap<a> m2)

+
O(n+m). Is this a submap? Defined as (isSubmapOf = isSubmapOfBy (==)). Credit: Haskell.org + + + + +
+
+
+

bool isSubmapOfBy<a, b>(FSharpFunc<a, FSharpFunc<b, bool>> predicate, IntMap<a> t1, IntMap<a> t2)

+
O(n+m). The expression (isSubmapOfBy f m1 m2) returns True if all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + +
+
+
+

FSharpList<int> keys<a>(IntMap<a> m)

+
O(n). Return all keys of the map in ascending order. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> map<a, b>(FSharpFunc<a, b> f, IntMap<a> _arg1)

+
O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<a, FSharpFunc<IntMap<b>, Tuple<a, IntMap<c>>>> mapAccum<a, b, c>(FSharpFunc<a, FSharpFunc<b, Tuple<a, c>>> f)

+
O(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + +
+
+
+

Tuple<a, IntMap<c>> mapAccumWithKey<a, b, c>(FSharpFunc<a, FSharpFunc<int, FSharpFunc<b, Tuple<a, c>>>> f, a a, IntMap<a> t)

+
O(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, Tuple<IntMap<b>, IntMap<c>>> mapChoice<a, b, c>(FSharpFunc<a, FSharpChoice<b, c>> f)

+
O(n). Map values and separate the Left and Right results. Credit: Haskell.org + + + + +
+
+
+

Tuple<IntMap<b>, IntMap<c>> mapChoiceWithKey<a, b, c>(FSharpFunc<int, FSharpFunc<a, FSharpChoice<b, c>>> f, IntMap<a> _arg1)

+
O(n). Map keys/values and separate the Left and Right results. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, IntMap<a>> mapKeys<a>(FSharpFunc<int, int> f)

+
O(n*min(n,W)). mapKeys f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the value at the greatest of the original keys is retained. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, IntMap<a>> mapKeysWith<a>(FSharpFunc<a, FSharpFunc<a, a>> c, FSharpFunc<int, int> f)

+
O(n*log n). mapKeysWith c f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the associated values will be combined using c. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, IntMap<b>> mapOption<a, b>(FSharpFunc<a, FSharpOption<b>> f)

+
O(n). Map values and collect the Just results. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> mapOptionWithKey<a, b>(FSharpFunc<int, FSharpFunc<a, FSharpOption<b>>> f, IntMap<a> _arg1)

+
O(n). Map keys/values and collect the Just results. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> mapWithKey<a, b>(FSharpFunc<int, FSharpFunc<a, b>> f, IntMap<a> _arg1)

+
O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<a, IntMap<a>>> maxView<a>(IntMap<a> t)

+
O(min(n,W)). Retrieves the maximal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<Tuple<int, a>, IntMap<a>>> maxViewWithKey<a>(IntMap<a> t)

+
O(log n). Retrieves the maximal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, FSharpFunc<IntMap<b>, IntMap<c>>> mergeWithKey<a, b, c>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<b, FSharpOption<c>>>> f, FSharpFunc<IntMap<a>, IntMap<c>> g1, FSharpFunc<IntMap<b>, IntMap<c>> g2)

+
Refer to Haskell documentation. Unexpected code growth or corruption of the data structure can occure from wrong use. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<a, IntMap<a>>> minView<a>(IntMap<a> t)

+
O(min(n,W)). Retrieves the minimal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<Tuple<int, a>, IntMap<a>>> minViewWithKey<a>(IntMap<a> t)

+
O(log n). Retrieves the minimal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +
+
+
+

Monoid<T> monoid<a>()

+
List monoid + + + + +
+
+
+

bool notExists<a>(int k, IntMap<a> m)

+
O(log n). Is the key not a member of the map? Credit: Haskell.org + + + + +
+
+
+

IntMap<a> ofArray<a>(Tuple`2[] xs)

+
+ + + + +
+
+
+

IntMap<a> ofArrayWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, Tuple`2[] xs)

+
+ + + + +
+
+
+

IntMap<a> ofArrayWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, Tuple`2[] xs)

+
+ + + + +
+
+
+

IntMap<a> ofListWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, FSharpList<Tuple<int, a>> xs)

+
O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> ofListWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, FSharpList<Tuple<int, a>> xs)

+
O(n*min(n,W)). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> ofSeqWith<a>(FSharpFunc<a, FSharpFunc<a, a>> f, IEnumerable<Tuple<int, a>> xs)

+
O(n*min(n,W)). Create a map from a seq of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> ofSeqWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, IEnumerable<Tuple<int, a>> xs)

+
O(n*min(n,W)). Build a map from a seq of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +
+
+
+

Tuple<IntMap<a>, IntMap<a>> partition<a>(FSharpFunc<a, bool> p, IntMap<a> m)

+
O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +
+
+
+

Tuple<IntMap<a>, IntMap<a>> partitionWithKey<a>(FSharpFunc<int, FSharpFunc<a, bool>> predicate, IntMap<a> t)

+
O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> singleton<a>(int k, a x)

+
O(1). A map of one element. Credit: Haskell.org + + + + +
+
+
+

int size<a>(IntMap<a> _arg1)

+
O(n). Number of elements in the map. Credit: Haskell.org + + + + +
+
+
+

Tuple<IntMap<a>, IntMap<a>> split<a>(int k, IntMap<a> t)

+
O(log n). The expression (split k map) is a pair (map1,map2) where all keys in map1 are lower than k and all keys in map2 larger than k. Any key equal to k is found in neither map1 nor map2. Credit: Haskell.org + + + + +
+
+
+

Tuple<IntMap<a>, FSharpOption<a>, IntMap<a>> splitTryFind<a>(int k, IntMap<a> t)

+
O(log n). Performs a split but also returns whether the pivot key was found in the original map. Credit: Haskell.org + + + + +
+
+
+

Tuple`2[] toArray<a>(IntMap<a> m)

+
O(n). Convert the map to an array of key/value pairs. Credit: Haskell.org + + + + +
+
+
+

FSharpList<Tuple<int, a>> toList<a>(IntMap<a> m)

+
O(n). Convert the map to a list of key/value pairs. Credit: Haskell.org + + + + +
+
+
+

IEnumerable<Tuple<int, a>> toSeq<a>(IntMap<a> m)

+
O(n). Convert the map to a seq of key/value pairs. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<a> tryFind<a>(int k, IntMap<a> _arg1)

+
O(min(n,W)). Lookup the value at a key in the map. Returns 'a option. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<int, a>> tryFindGE<a>(int k, IntMap<a> t)

+
O(log n). Find smallest key greater or equal to the given one and return the corresponding (key, value) pair Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<int, a>> tryFindGT<a>(int k, IntMap<a> t)

+
O(log n). Find smallest key greater than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<int, a>> tryFindLE<a>(int k, IntMap<a> t)

+
O(log n). Find largest key smaller or equal to the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + +
+
+
+

FSharpOption<Tuple<int, a>> tryFindLT<a>(int k, IntMap<a> t)

+
O(log n). Find largest key smaller than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> update<a>(FSharpFunc<a, FSharpOption<a>> f, int k, IntMap<a> m)

+
O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, IntMap<a>> updateMax<a>(FSharpFunc<a, FSharpOption<a>> f)

+
O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> updateMaxWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpOption<a>>> f, IntMap<a> t)

+
O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +
+
+
+

FSharpFunc<IntMap<a>, IntMap<a>> updateMin<a>(FSharpFunc<a, FSharpOption<a>> f)

+
O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> updateMinWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpOption<a>>> f, IntMap<a> t)

+
O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +
+
+
+

Tuple<FSharpOption<a>, IntMap<a>> updateTryFindWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpOption<a>>> f, int k, IntMap<a> t)

+
O(min(n,W)). Lookup and update. Credit: Haskell.org + + + + +
+
+
+

IntMap<a> updateWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpOption<a>>> f, int k, IntMap<a> t)

+
O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f k x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +
+
+
+

FSharpList<a> values<a>(IntMap<a> m)

+
O(n). Return all elements of the map in the ascending order of their keys. Credit: Haskell.org + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap`1.htm new file mode 100644 index 0000000..61e43ac --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/IntMap`1.htm @@ -0,0 +1,430 @@ + + + + IntMap<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type IntMap<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<IntMap<a>>, IStructuralEquatable, IComparable<IntMap<a>>, IComparable, IStructuralComparable, IEnumerable<Tuple<int, a>>

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(IntMap<a> obj)

+
+ + + + +
+
+
+

bool Equals(IntMap<a> obj)

+
+ + + + +
+
+
+

a FoldBackWithKey<a>(FSharpFunc<int, FSharpFunc<a, FSharpFunc<a, a>>> f, a z)

+
+ + + + +
+
+
+

bool get_IsBin()

+
+ + + + +
+
+
+

bool get_IsTip()

+
+ + + + +
+
+
+

FSharpList<Tuple<int, a>> ToList()

+
+ + + + +
+
+ +

Public static methods

+ +
+

IntMap<a> NewBin(int item1, int item2, IntMap<a> item3, IntMap<a> item4)

+
+ + + + +
+
+
+

IntMap<a> NewTip(int item1, a item2)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsBin get;

+
+ +
+
+
+

bool IsNil get;

+
+ +
+
+
+

bool IsTip get;

+
+ +
+
+
+

IntMap<a> Nil get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Interfaces.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Interfaces.htm new file mode 100644 index 0000000..183a9c8 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Interfaces.htm @@ -0,0 +1,302 @@ + + + + Interfaces - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Interfaces

+

Namespace FSharpx.DataStructures

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LazyList.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LazyList.htm new file mode 100644 index 0000000..db15156 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LazyList.htm @@ -0,0 +1,337 @@ + + + + LazyList - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type LazyList

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

LazyList<T> drop<a>(int n, LazyList<T> xs)

+
+ + + + +
+
+
+

LazyList<T> rev<a>(LazyList<T> r)

+
+ + + + +
+
+
+

Tuple<FSharpList<a>, LazyList<a>> split<a>(LazyList<T> ll, int n)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeapModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeapModule.htm new file mode 100644 index 0000000..25c2210 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeapModule.htm @@ -0,0 +1,427 @@ + + + + LeftistHeapModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type LeftistHeapModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

a head<a>(LeftistHeap<a> xs)

+
O(1). Returns the min or max element. + + + + +
+
+
+

LeftistHeap<a> insert<a>(a x, LeftistHeap<a> xs)

+
O(log n). Returns a new heap with the element inserted. + + + + +
+
+
+

bool isDescending<a>(LeftistHeap<a> xs)

+
O(1). Returns true if the heap has max element at head. + + + + +
+
+
+

bool isEmpty<a>(LeftistHeap<a> xs)

+
O(1). Returns true if the heap has no elements. + + + + +
+
+
+

int length<a>(LeftistHeap<a> xs)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

LeftistHeap<a> merge<a>(LeftistHeap<a> xs, LeftistHeap<a> ys)

+
O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + +
+
+
+

LeftistHeap<a> tail<a>(LeftistHeap<a> xs)

+
O(log n). Returns a new heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(LeftistHeap<a> xs)

+
O(1). Returns option first min or max element. + + + + +
+
+
+

FSharpOption<LeftistHeap<a>> tryGetTail<a>(LeftistHeap<a> xs)

+
O(log n). Returns option heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<LeftistHeap<a>> tryMerge<a>(LeftistHeap<a> xs, LeftistHeap<a> ys)

+
O(log n). Returns heap option from merging two heaps. + + + + +
+
+
+

FSharpOption<Tuple<a, LeftistHeap<a>>> tryUncons<a>(LeftistHeap<a> xs)

+
O(log n). Returns option head element and tail. + + + + +
+
+
+

Tuple<a, LeftistHeap<a>> uncons<a>(LeftistHeap<a> xs)

+
O(log n). Returns the head element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeap`1.htm new file mode 100644 index 0000000..e026700 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/LeftistHeap`1.htm @@ -0,0 +1,461 @@ + + + + LeftistHeap<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type LeftistHeap<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<LeftistHeap<a>>, IStructuralEquatable, IComparable<LeftistHeap<a>>, IComparable, IStructuralComparable, IHeap`2

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(LeftistHeap<a> obj)

+
+ + + + +
+
+
+

bool Equals(LeftistHeap<a> obj)

+
+ + + + +
+
+
+

bool get_IsE()

+
+ + + + +
+
+
+

bool get_IsT()

+
+ + + + +
+
+
+

LeftistHeap<a> Merge(LeftistHeap<a> xs)

+
O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + +
+
+
+

FSharpOption<LeftistHeap<a>> TryGetTail()

+
O(log n). Returns option heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<LeftistHeap<a>> TryMerge(LeftistHeap<a> xs)

+
O(log n). Returns heap option from merging two heaps + + + + +
+
+ +

Public static methods

+ +
+

LeftistHeap<a> NewE(bool item)

+
+ + + + +
+
+
+

LeftistHeap<a> NewT(bool item1, int item2, int item3, a item4, LeftistHeap<a> item5, LeftistHeap<a> item6)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsDescending get;

+
O(1). Returns true if the heap has max element at head. + +
+
+
+

bool IsE get;

+
+ +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the heap has no elements. + +
+
+
+

bool IsT get;

+
+ +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

int Tag get;

+
+ +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1). Returns option first min or max element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListHelpr.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListHelpr.htm new file mode 100644 index 0000000..dd98520 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListHelpr.htm @@ -0,0 +1,327 @@ + + + + ListHelpr - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type ListHelpr

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Tuple<a[], FSharpList<a>> loop2Array<a>(a[] left, FSharpList<a> right, int _arg1)

+
+ + + + +
+
+
+

FSharpList<a> loopFromArray<a>(int frontLen, a[] left, FSharpList<a> right, int _arg1)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper.htm new file mode 100644 index 0000000..182f693 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper.htm @@ -0,0 +1,380 @@ + + + + ListZipper - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type ListZipper

+

Namespace FSharpx.DataStructures

+
+
+
ListZipper +original implementation taken from http://learnyouahaskell.com/zippers +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

ListZipper`1 back<a>(ListZipper`1 zipper)

+
+ + + + +
+
+
+

a focus<a>(ListZipper`1 zipper)

+
+ + + + +
+
+
+

ListZipper`1 forward<a>(ListZipper`1 zipper)

+
+ + + + +
+
+
+

ListZipper`1 front<a>(ListZipper`1 zipper)

+
+ + + + +
+
+
+

FSharpList<a> getList<a>(ListZipper`1 zipper)

+
+ + + + +
+
+
+

ListZipper`1 modify<a>(a newElement, ListZipper`1 zipper)

+
+ + + + +
+
+
+

ListZipper`1 zipper<a>(FSharpList<a> list)

+
Creates a list zipper + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper`1.htm new file mode 100644 index 0000000..7e976de --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/ListZipper`1.htm @@ -0,0 +1,347 @@ + + + + ListZipper`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type ListZipper`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<ListZipper`1>, IStructuralEquatable, IComparable<ListZipper`1>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(ListZipper`1 obj)

+
+ + + + +
+
+
+

bool Equals(ListZipper`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

FSharpList<a> Focus get;

+
+ +
+
+
+

FSharpList<a> Path get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/NonEmptyBootstrappedQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/NonEmptyBootstrappedQueue`1.htm new file mode 100644 index 0000000..8f85caa --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/NonEmptyBootstrappedQueue`1.htm @@ -0,0 +1,370 @@ + + + + NonEmptyBootstrappedQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type NonEmptyBootstrappedQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<NonEmptyBootstrappedQueue`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(NonEmptyBootstrappedQueue`1 obj)

+
+ + + + +
+
+ +

Public static methods

+ +
+

NonEmptyBootstrappedQueue`1 create<a>(int lenfm, FSharpList<a> f, BootstrappedQueue`1 m, int lenr, FSharpList<a> r)

+
+ + + + +
+
+ +

Public properties

+ +
+

FSharpList<a> Front get;

+
+ +
+
+
+

int FrontAndSuspensionsLength get;

+
+ +
+
+
+

FSharpList<a> RBack get;

+
+ +
+
+
+

int RBackLength get;

+
+ +
+
+
+

BootstrappedQueue`1 Suspensions get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeapModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeapModule.htm new file mode 100644 index 0000000..3226bc0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeapModule.htm @@ -0,0 +1,437 @@ + + + + PairingHeapModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type PairingHeapModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

a head<a>(PairingHeap<a> xs)

+
O(1) worst case. Returns the min or max element. + + + + +
+
+
+

PairingHeap<a> insert<a>(a x, PairingHeap<a> xs)

+
O(log n) amortized time. Returns a new heap with the element inserted. + + + + +
+
+
+

bool isDescending<a>(PairingHeap<a> xs)

+
O(1). Returns true if the heap has max element at head. + + + + +
+
+
+

bool isEmpty<a>(PairingHeap<a> xs)

+
O(1) Returns true if the heap has no elements. + + + + +
+
+
+

int length<a>(PairingHeap<a> xs)

+
O(n). Returns the count of elememts. + + + + +
+
+
+

PairingHeap<a> merge<a>(PairingHeap<a> xs, PairingHeap<a> ys)

+
O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +
+
+
+

PairingHeap<a> ofSeq<a>(bool maximalist, IEnumerable<a> s)

+
O(n). Returns heap, bool isDescending, from the sequence. + + + + +
+
+
+

PairingHeap<a> tail<a>(PairingHeap<a> xs)

+
O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(PairingHeap<a> xs)

+
O(1) worst case. Returns option first min or max element. + + + + +
+
+
+

FSharpOption<PairingHeap<a>> tryGetTail<a>(PairingHeap<a> xs)

+
O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +
+
+
+

FSharpOption<PairingHeap<a>> tryMerge<a>(PairingHeap<a> xs, PairingHeap<a> ys)

+
O(log n) amortized time. Returns heap option from merging two heaps. + + + + +
+
+
+

FSharpOption<Tuple<a, PairingHeap<a>>> tryUncons<a>(PairingHeap<a> xs)

+
O(log n) amortized time. Returns option head element and tail. + + + + +
+
+
+

Tuple<a, PairingHeap<a>> uncons<a>(PairingHeap<a> xs)

+
O(log n) amortized time. Returns the head element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeap`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeap`1.htm new file mode 100644 index 0000000..7802706 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PairingHeap`1.htm @@ -0,0 +1,404 @@ + + + + PairingHeap<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type PairingHeap<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<PairingHeap<a>>, IStructuralEquatable, IComparable<PairingHeap<a>>, IComparable, IStructuralComparable, IPriorityQueue`1, IHeap`2

+
+
+
PairingHeap performs extremely well in practice, however (according to Okasaki) it should be avoided for applications taking advantage of persistence. +Also according to Okasaki the time complexity of the heap functions in the PairingHeap implementation have "resisted" time complexity analysis. +ofSeq: superior performance; insert: superior performance; tail: superior performance +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(PairingHeap<a> obj)

+
+ + + + +
+
+
+

bool Equals(PairingHeap<a> obj)

+
+ + + + +
+
+
+

PairingHeap<a> Merge(PairingHeap<a> xs)

+
O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +
+
+
+

FSharpOption<PairingHeap<a>> TryMerge(PairingHeap<a> xs)

+
O(log n) amortized time. Returns heap option from merging two heaps. + + + + +
+
+ +

Public static methods

+ +
+

PairingHeap<a> NewT(bool item1, a item2, FSharpList<PairingHeap<a>> item3)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsDescending get;

+
O(1). Returns true if the heap has max element at head. + +
+
+
+

bool IsE get;

+
+ +
+
+
+

bool IsEmpty get;

+
O(1) Returns true if the heap has no elements. + +
+
+
+

bool IsT get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueueModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueueModule.htm new file mode 100644 index 0000000..9dfcb77 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueueModule.htm @@ -0,0 +1,427 @@ + + + + PhysicistQueueModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type PhysicistQueueModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

State fold<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State state, PhysicistQueue<a> q)

+
O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, PhysicistQueue<a> q, State state)

+
O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +
+
+
+

a head<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(PhysicistQueue<a> q)

+
O(1). Returns true if the queue has no elements. + + + + +
+
+
+

int length<a>(PhysicistQueue<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

PhysicistQueue<a> rev<a>(PhysicistQueue<a> q)

+
O(1). Returns queue reversed. + + + + +
+
+
+

PhysicistQueue<a> snoc<a>(a x, PhysicistQueue<a> q)

+
O(1), amortized. Returns a new queue with the element added to the end. + + + + +
+
+
+

PhysicistQueue<a> tail<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns option first element. + + + + +
+
+
+

FSharpOption<PhysicistQueue<a>> tryGetTail<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<Tuple<a, PhysicistQueue<a>>> tryUncons<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns option first element and tail. + + + + +
+
+
+

Tuple<a, PhysicistQueue<a>> uncons<a>(PhysicistQueue<a> q)

+
O(1), amortized. Returns the first element and tail. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueue`1.htm new file mode 100644 index 0000000..9b9af05 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/PhysicistQueue`1.htm @@ -0,0 +1,371 @@ + + + + PhysicistQueue<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type PhysicistQueue<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IQueue`1

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the queue has no elements. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

PhysicistQueue<a> Rev get;

+
O(1). Returns queue reversed. + +
+
+
+

PhysicistQueue<a> Tail get;

+
O(1), amortized. Returns a new queue of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1), amortized. Returns option first element. + +
+
+
+

FSharpOption<PhysicistQueue<a>> TryGetTail get;

+
O(1), amortized. Returns option queue of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, PhysicistQueue<a>>> TryUncons get;

+
O(1), amortized. Returns option first element and tail. + +
+
+
+

Tuple<a, PhysicistQueue<a>> Uncons get;

+
O(1), amortized. Returns the first element and tail. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque.htm new file mode 100644 index 0000000..7ca1310 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque.htm @@ -0,0 +1,557 @@ + + + + RealTimeDeque - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RealTimeDeque

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

RealTimeDeque<a> append<a>(RealTimeDeque<a> xs, RealTimeDeque<a> ys)

+
O(|ys-xs|). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + +
+
+
+

RealTimeDeque<a> appendC<a>(int c, RealTimeDeque<a> xs, RealTimeDeque<a> ys)

+
O(|ys-xs|). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +
+
+
+

RealTimeDeque<a> cons<a>(a x, RealTimeDeque<a> q)

+
O(1), worst case. Returns a new deque with the element added to the beginning. + + + + +
+
+
+

a head<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns the first element. + + + + +
+
+
+

RealTimeDeque<a> init<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns a new deque of the elements before the last element. + + + + +
+
+
+

bool isEmpty<a>(RealTimeDeque<a> q)

+
O(1). Returns true if the deque has no elements. + + + + +
+
+
+

a last<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns the last element. + + + + +
+
+
+

int length<a>(RealTimeDeque<a> q)

+
O(1). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns option element by index. + + + + +
+
+
+

RealTimeDeque<a> remove<a>(int i, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns deque with element removed by index. + + + + +
+
+
+

RealTimeDeque<a> rev<a>(RealTimeDeque<a> q)

+
O(1). Returns deque reversed. + + + + +
+
+
+

RealTimeDeque<a> snoc<a>(a x, RealTimeDeque<a> q)

+
O(1), worst case. Returns a new deque with the element added to the end. + + + + +
+
+
+

RealTimeDeque<a> tail<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns a new deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<RealTimeDeque<a>> tryGetInit<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option deque of the elements before the last element. + + + + +
+
+
+

FSharpOption<a> tryGetLast<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option last element. + + + + +
+
+
+

FSharpOption<RealTimeDeque<a>> tryGetTail<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option deque of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<RealTimeDeque<a>> tryRemove<a>(int i, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns option deque with element removed by index. + + + + +
+
+
+

FSharpOption<Tuple<a, RealTimeDeque<a>>> tryUncons<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option first element and tail. + + + + +
+
+
+

FSharpOption<Tuple<RealTimeDeque<a>, a>> tryUnsnoc<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns option init and the last element. + + + + +
+
+
+

FSharpOption<RealTimeDeque<a>> tryUpdate<a>(int i, a y, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns option deque with element updated by index. + + + + +
+
+
+

Tuple<a, RealTimeDeque<a>> uncons<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns the first element and tail. + + + + +
+
+
+

Tuple<RealTimeDeque<a>, a> unsnoc<a>(RealTimeDeque<a> q)

+
O(1), worst case. Returns init and the last element. + + + + +
+
+
+

RealTimeDeque<a> update<a>(int i, a y, RealTimeDeque<a> q)

+
O(n/2), worst case. Returns deque with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque`1.htm new file mode 100644 index 0000000..5a3d0d4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeDeque`1.htm @@ -0,0 +1,468 @@ + + + + RealTimeDeque<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RealTimeDeque<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IDeque`1

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

a Lookup(int i)

+
O(log n). Returns element by index. + + + + +
+
+
+

RealTimeDeque<a> Remove(int i)

+
O(n). Returns random access list with element removed by index. + + + + +
+
+
+

RealTimeDeque<a> Snoc(a x)

+
+ + + + +
+
+
+

FSharpOption<a> TryLookup(int i)

+
O(log n). Returns option element by index. + + + + +
+
+
+

FSharpOption<RealTimeDeque<a>> TryRemove(int i)

+
O(n). Returns option random access list with element removed by index. + + + + +
+
+ + +

Public properties

+ + +
+

RealTimeDeque<a> Init get;

+
O(1), worst case. Returns a new deque of the elements before the last element. + +
+
+
+

bool IsEmpty get;

+
O(1). Returns true if the deque has no elements. + +
+
+
+

a Last get;

+
O(1), worst case. Returns the last element. + +
+
+
+

int Length get;

+
O(1). Returns the count of elememts. + +
+
+
+

RealTimeDeque<a> Rev get;

+
O(1). Returns deque reversed. + +
+
+
+

RealTimeDeque<a> Tail get;

+
O(1), worst case. Returns a new deque of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1), worst case. Returns option first element. + +
+
+
+

FSharpOption<RealTimeDeque<a>> TryGetInit get;

+
O(1), worst case. Returns option deque of the elements before the last element. + +
+
+
+

FSharpOption<a> TryGetLast get;

+
O(1), worst case. Returns option last element. + +
+
+
+

FSharpOption<RealTimeDeque<a>> TryGetTail get;

+
O(1), worst case. Returns option deque of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, RealTimeDeque<a>>> TryUncons get;

+
O(1), worst case. Returns option first element and tail. + +
+
+
+

FSharpOption<Tuple<RealTimeDeque<a>, a>> TryUnsnoc get;

+
O(1), worst case. Returns option init and the last element. + +
+
+
+

Tuple<a, RealTimeDeque<a>> Uncons get;

+
O(1), worst case. Returns the first element and tail + +
+
+
+

Tuple<RealTimeDeque<a>, a> Unsnoc get;

+
O(1), worst case. Returns init and the last element. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue.htm new file mode 100644 index 0000000..9844bca --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue.htm @@ -0,0 +1,387 @@ + + + + RealTimeQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RealTimeQueue

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

RealTimeQueue`1 exec<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

a head<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

bool isEmpty<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

LazyList<T> rotate<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

RealTimeQueue`1 snoc<a>(a x, RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

RealTimeQueue`1 tail<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+
+

FSharpOption<RealTimeQueue`1> tryGetTail<a>(RealTimeQueue`1 queue)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue`1.htm new file mode 100644 index 0000000..c122492 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RealTimeQueue`1.htm @@ -0,0 +1,344 @@ + + + + RealTimeQueue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RealTimeQueue`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<RealTimeQueue`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+
    +
  • F
  • +
  • R
  • +
  • S
  • +
+ +
+ + +

Public instance methods

+ +
+

bool Equals(RealTimeQueue`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

LazyList<T> F get;

+
+ +
+
+
+

FSharpList<a> R get;

+
+ +
+
+
+

LazyList<T> S get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer.htm new file mode 100644 index 0000000..6d97e0b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer.htm @@ -0,0 +1,317 @@ + + + + RingBuffer - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RingBuffer

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

RingBuffer<a> create<a>(IEnumerable<a> seq)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer`1.htm new file mode 100644 index 0000000..d364325 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RingBuffer`1.htm @@ -0,0 +1,400 @@ + + + + RingBuffer<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RingBuffer<a>

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int Advance(int offset)

+
Advances the position of the RingBuffer by the offset. +Returns the position of the RingBuffer. Throws an ArgumentException if +the offset is negative. + + + + +
+
+
+

RingBuffer<a> Clone()

+
+ + + + +
+
+
+

void Insert(int offset, IEnumerable<a> items)

+
+ + + + +
+
+
+

void Insert<a>(FSharpFunc<a, FSharpFunc<a, a>> op, int offset, IEnumerable<a> items)

+
+ + + + +
+
+
+

void Normalize()

+
+ + + + +
+
+
+

a[] ToArray()

+
+ + + + +
+
+
+

FSharpOption<int> TryAdvance(int offset)

+
Tries to advance the position of the RingBuffer by the offset. +Returns None if offset is negative, otherwise Some containing +the position of the RingBuffer. + + + + +
+
+ + +

Public properties

+ +
+

a[] Buffer get;

+
+ +
+
+
+

int Position get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTreeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTreeModule.htm new file mode 100644 index 0000000..0ecdf3b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTreeModule.htm @@ -0,0 +1,423 @@ + + + + RoseTreeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RoseTreeModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

RoseTree<a> ap<a, b>(RoseTree<a> x, RoseTree<a> f)

+
+ + + + +
+
+
+

RoseTree<a> bind<a, b>(FSharpFunc<a, RoseTree<b>> f, RoseTree<a> x)

+
+ + + + +
+
+
+

RoseTree<a> create<a>(a root, LazyList<T> children)

+
+ + + + +
+
+
+

IEnumerable<a> DfsPost<a>(this RoseTree<a> x)

+
+ + + + +
+
+
+

IEnumerable<a> DfsPre<a>(this RoseTree<a> x)

+
+ + + + +
+
+
+

a foldMap<a, b>(Monoid<T> monoid, FSharpFunc<b, a> f, RoseTree<a> tree)

+
+ + + + +
+
+
+

RoseTree<a> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, RoseTree<a> a, RoseTree<a> b)

+
+ + + + +
+
+
+

RoseTree<a> map<a, b>(FSharpFunc<a, b> f, RoseTree<a> x)

+
+ + + + +
+
+
+

Tuple<a, RoseTree<c>> mapAccum<a, b, c>(FSharpFunc<a, FSharpFunc<b, Tuple<a, c>>> f, a state, RoseTree<a> tree)

+
Behaves like a combination of map and fold; +it applies a function to each element of a tree, +passing an accumulating parameter, +and returning a final value of this accumulator together with the new tree. + + + + +
+
+
+

RoseTree<a> unfold<a, b>(FSharpFunc<a, Tuple<b, LazyList<a>>> f, a seed)

+
O(1). Return a list that contains the elements returned by the given computation. +The given computation is not executed until the first element on the list is +consumed. The given argument is passed to the computation. Subsequent elements +in the list are generated by again applying the residual 'b to the computation. + + + + +
+
+
+

FSharpFunc<LazyList<a>, LazyList<RoseTree<b>>> unfoldForest<a, b>(FSharpFunc<a, Tuple<b, LazyList<a>>> f)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTree`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTree`1.htm new file mode 100644 index 0000000..e56ce1a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RoseTree`1.htm @@ -0,0 +1,324 @@ + + + + RoseTree<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RoseTree<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<RoseTree<a>>

+
+
+
Multi-way tree, also known as rose tree. +
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

LazyList<T> Children get;

+
+ +
+
+
+

a Root get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RotationState`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RotationState`1.htm new file mode 100644 index 0000000..cb023c2 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/RotationState`1.htm @@ -0,0 +1,457 @@ + + + + RotationState<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type RotationState<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<RotationState<a>>, IStructuralEquatable, IComparable<RotationState<a>>, IComparable, IStructuralComparable

+
+ + + +

Public instance methods

+ +
+

int CompareTo(RotationState<a> obj)

+
+ + + + +
+
+
+

bool Equals(RotationState<a> obj)

+
+ + + + +
+
+
+

bool get_IsAppending()

+
+ + + + +
+
+
+

bool get_IsDone()

+
+ + + + +
+
+
+

bool get_IsIdle()

+
+ + + + +
+
+
+

bool get_IsReversing()

+
+ + + + +
+
+ +

Public static methods

+ +
+

RotationState<a> get_Idle()

+
+ + + + +
+
+
+

RotationState<a> NewAppending(int item1, FSharpList<a> item2, FSharpList<a> item3)

+
+ + + + +
+
+
+

RotationState<a> NewDone(FSharpList<a> item)

+
+ + + + +
+
+
+

RotationState<a> NewReversing(int item1, FSharpList<a> item2, FSharpList<a> item3, FSharpList<a> item4, FSharpList<a> item5)

+
+ + + + +
+
+ +

Public properties

+ +
+

RotationState<a> Idle get;

+
+ +
+
+
+

bool IsAppending get;

+
+ +
+
+
+

bool IsDone get;

+
+ +
+
+
+

bool IsIdle get;

+
+ +
+
+
+

bool IsReversing get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessListModule.htm new file mode 100644 index 0000000..ef405fe --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessListModule.htm @@ -0,0 +1,447 @@ + + + + SkewBinaryRandomAccessListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type SkewBinaryRandomAccessListModule

+

Namespace FSharpx.DataStructures

+
+ + + + +

Public static methods

+ +
+

SkewBinaryRandomAccessList<a> cons<a>(a x, SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns a new random access list with the element added to the beginning. + + + + +
+
+
+

a head<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns the first element. + + + + +
+
+
+

bool isEmpty<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1). Returns true if the random access list has no elements. + + + + +
+
+
+

int length<a>(SkewBinaryRandomAccessList<a> xs)

+
O(log n). Returns the count of elememts. + + + + +
+
+
+

a lookup<a>(int i, SkewBinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns element by index. + + + + +
+
+
+

SkewBinaryRandomAccessList<a> rev<a>(SkewBinaryRandomAccessList<a> xs)

+
O(n). Returns random access list reversed. + + + + +
+
+
+

SkewBinaryRandomAccessList<a> tail<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns a new random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryGetHead<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns option first element. + + + + +
+
+
+

FSharpOption<SkewBinaryRandomAccessList<a>> tryGetTail<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns a option random access list of the elements trailing the first element. + + + + +
+
+
+

FSharpOption<a> tryLookup<a>(int i, SkewBinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns option element by index. + + + + +
+
+
+

FSharpOption<Tuple<a, SkewBinaryRandomAccessList<a>>> tryUncons<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns the option first element and tail. + + + + +
+
+
+

FSharpOption<SkewBinaryRandomAccessList<a>> tryUpdate<a>(int i, a y, SkewBinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns option random access list with element updated by index. + + + + +
+
+
+

Tuple<a, SkewBinaryRandomAccessList<a>> uncons<a>(SkewBinaryRandomAccessList<a> xs)

+
O(1), worst case. Returns the first element and tail. + + + + +
+
+
+

SkewBinaryRandomAccessList<a> update<a>(int i, a y, SkewBinaryRandomAccessList<a> xs)

+
O(log n), worst case. Returns random access list with element updated by index. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessList`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessList`1.htm new file mode 100644 index 0000000..1d5e349 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/SkewBinaryRandomAccessList`1.htm @@ -0,0 +1,378 @@ + + + + SkewBinaryRandomAccessList<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type SkewBinaryRandomAccessList<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IRandomAccessList`1

+
+ + + + + +

Public properties

+ + +
+

bool IsEmpty get;

+
O(1). Returns true if the random access list has no elements. + +
+
+
+

FSharpList<Tuple<int, TreeSBRAL<a>>> randomAccessList get;

+
+ +
+
+
+

SkewBinaryRandomAccessList<a> Tail get;

+
O(1), worst case. Returns a new random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<a> TryGetHead get;

+
O(1), worst case. Returns option first element. + +
+
+
+

FSharpOption<SkewBinaryRandomAccessList<a>> TryGetTail get;

+
O(1), worst case. Returns a option random access list of the elements trailing the first element. + +
+
+
+

FSharpOption<Tuple<a, SkewBinaryRandomAccessList<a>>> TryUncons get;

+
O(1), worst case. Returns the option first element and tail. + +
+
+
+

FSharpFunc<Tuple<int, int, a, TreeSBRAL<a>>, FSharpOption<TreeSBRAL<a>>> tryUpdateTree get;

+
+ +
+
+
+

Tuple<a, SkewBinaryRandomAccessList<a>> Uncons get;

+
O(1), worst case. Returns the first element and tail. + +
+
+
+

FSharpFunc<Tuple<int, int, a, TreeSBRAL<a>>, TreeSBRAL<a>> updateTree get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Sortable`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Sortable`1.htm new file mode 100644 index 0000000..1795381 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Sortable`1.htm @@ -0,0 +1,337 @@ + + + + Sortable`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Sortable`1

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<Sortable`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(Sortable`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

Lazy<FSharpList<FSharpList<a>>> Segments get;

+
+ +
+
+
+

int Size get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Tags.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Tags.htm new file mode 100644 index 0000000..102fb9b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Tags.htm @@ -0,0 +1,814 @@ + + + + Tags - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Tags

+

Namespace FSharpx.DataStructures

+
+
+ + + + +

Fields

+ +
+ + + + +

Public fields

+ +
+

int Nil

+
+ + + + +
+ return int +
+
+
+
+

int Unit

+
+ + + + +
+ return int +
+
+
+
+

int Join

+
+ + + + +
+ return int +
+
+
+
+

int Nil

+
+ + + + +
+ return int +
+
+
+
+

int Zero

+
+ + + + +
+ return int +
+
+
+
+

int One

+
+ + + + +
+ return int +
+
+
+
+

int Leaf

+
+ + + + +
+ return int +
+
+
+
+

int Node

+
+ + + + +
+ return int +
+
+
+
+

int Zero

+
+ + + + +
+ return int +
+
+
+
+

int One

+
+ + + + +
+ return int +
+
+
+
+

int Leaf

+
+ + + + +
+ return int +
+
+
+
+

int Node

+
+ + + + +
+ return int +
+
+
+
+

int E

+
+ + + + +
+ return int +
+
+
+
+

int T

+
+ + + + +
+ return int +
+
+
+
+

int E

+
+ + + + +
+ return int +
+
+
+
+

int T

+
+ + + + +
+ return int +
+
+
+
+

int Idle

+
+ + + + +
+ return int +
+
+
+
+

int Reversing

+
+ + + + +
+ return int +
+
+
+
+

int Appending

+
+ + + + +
+ return int +
+
+
+
+

int Done

+
+ + + + +
+ return int +
+
+
+
+

int Nil

+
+ + + + +
+ return int +
+
+
+
+

int Tip

+
+ + + + +
+ return int +
+
+
+
+

int Bin

+
+ + + + +
+ return int +
+
+
+
+

int Node

+
+ + + + +
+ return int +
+
+
+
+

int Empty

+
+ + + + +
+ return int +
+
+
+
+

int Leaf

+
+ + + + +
+ return int +
+
+
+
+

int Branch

+
+ + + + +
+ return int +
+
+
+
+

int Left

+
+ + + + +
+ return int +
+
+
+ +
+

int Up

+
+ + + + +
+ return int +
+
+
+
+

int Left

+
+ + + + +
+ return int +
+
+
+ +
+

int Zero

+
+ + + + +
+ return int +
+
+
+
+

int One

+
+ + + + +
+ return int +
+
+
+
+

int Two

+
+ + + + +
+ return int +
+
+
+
+

int Shallow

+
+ + + + +
+ return int +
+
+
+
+

int Deep

+
+ + + + +
+ return int +
+
+
+
+

int Empty

+
+ + + + +
+ return int +
+
+
+
+

int NonEmpty

+
+ + + + +
+ return int +
+
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Timeseries`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Timeseries`1.htm new file mode 100644 index 0000000..41870bd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Timeseries`1.htm @@ -0,0 +1,415 @@ + + + + Timeseries<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Timeseries<a>

+

Namespace FSharpx.DataStructures

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

DateTimeOffset Advance(DateTimeOffset toDate)

+
Advances the start date of the Timeseries to toDate. Throws an +ArgumentException if toDate is before the Timeseries start date. + + + + +
+
+
+

Tuple`2[] AsTimeseries(FSharpOption<DateTimeOffset> startDate)

+
+ + + + +
+
+
+

void Insert(FSharpFunc<a, FSharpFunc<a, a>> op, DateTimeOffset startDate, TimeSpan gran, IEnumerable<a> dataToInsert)

+
+ + + + +
+
+
+

void Merge(FSharpFunc<a, FSharpFunc<a, a>> f, Timeseries<a> ts)

+
+ + + + +
+
+
+

Timeseries<a> ToGranularity(TimeSpan granularity)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> TryAdvance(DateTimeOffset toDate)

+
Tries to advance the start date of the Timeseries to toDate. +Returns None if toDate is before the start date of the Timeseries, +otherwise Some containing the start date of the Timeseries. + + + + +
+
+ +

Public static methods

+ +
+

Timeseries<a> Empty<a>(DateTimeOffset startDate, TimeSpan granularity, int size)

+
+ + + + +
+
+ +

Public properties

+ +
+

RingBuffer<a> Buffer get;

+
+ +
+
+
+

TimeSpan Granularity get;

+
+ +
+
+
+

Tuple`2[] Series get;

+
+ +
+
+
+

DateTimeOffset StartDate get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeBRAL`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeBRAL`1.htm new file mode 100644 index 0000000..e507e2a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeBRAL`1.htm @@ -0,0 +1,396 @@ + + + + TreeBRAL<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type TreeBRAL<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<TreeBRAL<a>>, IStructuralEquatable, IComparable<TreeBRAL<a>>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(TreeBRAL<a> obj)

+
+ + + + +
+
+
+

bool Equals(TreeBRAL<a> obj)

+
+ + + + +
+
+
+

bool get_IsLeaf()

+
+ + + + +
+
+
+

bool get_IsNode()

+
+ + + + +
+
+ +

Public static methods

+ +
+

TreeBRAL<a> NewLeaf(a item)

+
+ + + + +
+
+
+

TreeBRAL<a> NewNode(int item1, TreeBRAL<a> item2, TreeBRAL<a> item3)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsLeaf get;

+
+ +
+
+
+

bool IsNode get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeDirection.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeDirection.htm new file mode 100644 index 0000000..1414a01 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeDirection.htm @@ -0,0 +1,410 @@ + + + + TreeDirection - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type TreeDirection

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<TreeDirection>, IStructuralEquatable, IComparable<TreeDirection>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(TreeDirection obj)

+
+ + + + +
+
+
+

bool Equals(TreeDirection obj)

+
+ + + + +
+
+
+

bool get_IsLeft()

+
+ + + + +
+
+
+

bool get_IsRight()

+
+ + + + +
+
+ +

Public static methods

+ +
+

TreeDirection get_Left()

+
+ + + + +
+
+
+

TreeDirection get_Right()

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsLeft get;

+
+ +
+
+
+

bool IsRight get;

+
+ +
+
+
+

TreeDirection Left get;

+
+ +
+
+ +
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeSBRAL`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeSBRAL`1.htm new file mode 100644 index 0000000..c81fee9 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeSBRAL`1.htm @@ -0,0 +1,366 @@ + + + + TreeSBRAL<a> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type TreeSBRAL<a>

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<TreeSBRAL<a>>, IStructuralEquatable, IComparable<TreeSBRAL<a>>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(TreeSBRAL<a> obj)

+
+ + + + +
+
+
+

bool Equals(TreeSBRAL<a> obj)

+
+ + + + +
+
+ +

Public static methods

+ +
+

TreeSBRAL<a> NewNode(a item1, TreeSBRAL<a> item2, TreeSBRAL<a> item3)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsLeaf get;

+
+ +
+
+
+

bool IsNode get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeZipperDirection.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeZipperDirection.htm new file mode 100644 index 0000000..f63227b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/TreeZipperDirection.htm @@ -0,0 +1,404 @@ + + + + TreeZipperDirection - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type TreeZipperDirection

+

Namespace FSharpx.DataStructures

+

Interfaces IEquatable<TreeZipperDirection>, IStructuralEquatable, IComparable<TreeZipperDirection>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(TreeZipperDirection obj)

+
+ + + + +
+
+
+

bool Equals(TreeZipperDirection obj)

+
+ + + + +
+
+
+

bool get_IsUp()

+
+ + + + +
+
+ +

Public static methods

+ +
+

TreeZipperDirection get_Up()

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsLeft get;

+
+ +
+
+
+

bool IsRight get;

+
+ +
+
+
+

bool IsUp get;

+
+ +
+
+
+

TreeZipperDirection Left get;

+
+ +
+
+ +
+

int Tag get;

+
+ +
+
+
+

TreeZipperDirection Up get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Vector.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Vector.htm new file mode 100644 index 0000000..c5bb18a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/Vector.htm @@ -0,0 +1,389 @@ + + + + Vector - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Type Vector

+

Namespace FSharpx.DataStructures

+
+
+
vector implementation ported from https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentVector.java +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IVector`1 assocN<a>(int i, a x, IVector`1 vector)

+
+ + + + +
+
+
+

IVector`1 conj<a>(a x, IVector`1 vector)

+
+ + + + +
+
+
+

int count<a>(IVector`1 vector)

+
+ + + + +
+
+
+

IVector`1 init<a>(int count, FSharpFunc<int, a> f)

+
O(n). Returns a random access list of the supplied length using the supplied function operating on the index. + + + + +
+
+
+

IVector`1 map<a, b>(FSharpFunc<a, b> f, IVector`1 vector)

+
+ + + + +
+
+
+

a nth<a>(int i, IVector`1 vector)

+
+ + + + +
+
+
+

a peek<a>(IVector`1 vector)

+
+ + + + +
+
+
+

IVector`1 pop<a>(IVector`1 vector)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/index.htm new file mode 100644 index 0000000..b6d79a6 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.DataStructures/index.htm @@ -0,0 +1,374 @@ + + + + FSharpx.DataStructures - FSharpx Documentation + + + + + + +
+

Types in FSharpx.DataStructures

+
+ +
+
+
+

Namespace FSharpx.DataStructures

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`10.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`10.htm new file mode 100644 index 0000000..9cfc0a2 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`10.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`10 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`10

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`11.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`11.htm new file mode 100644 index 0000000..f57e6ae --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`11.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`11 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`11

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`12.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`12.htm new file mode 100644 index 0000000..79d2727 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`12.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`12 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`12

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`13.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`13.htm new file mode 100644 index 0000000..d66ce48 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`13.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`13 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`13

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`14.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`14.htm new file mode 100644 index 0000000..794db2f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`14.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`14 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`14

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`15.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`15.htm new file mode 100644 index 0000000..892da22 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`15.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`15 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`15

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`16.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`16.htm new file mode 100644 index 0000000..24495e3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`16.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`16 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`16

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`17.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`17.htm new file mode 100644 index 0000000..35c0ce7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`17.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`17 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`17

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`18.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`18.htm new file mode 100644 index 0000000..810e503 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`18.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`18 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`18

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`19.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`19.htm new file mode 100644 index 0000000..2effc9f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`19.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`19 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`19

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`20.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`20.htm new file mode 100644 index 0000000..01853ae --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`20.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`20 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`20

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`5.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`5.htm new file mode 100644 index 0000000..66d18c1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`5.htm @@ -0,0 +1,273 @@ + + + + ActionHelper`5 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`5

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

object DynamicInvoke(Object[] args)

+
+ + + + +
+
+
+

void EndInvoke(IAsyncResult result)

+
+ + + + +
+
+
+

Delegate[] GetInvocationList()

+
+ + + + +
+
+
+

void GetObjectData(SerializationInfo info, StreamingContext context)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`6.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`6.htm new file mode 100644 index 0000000..2e6a22a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`6.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`6 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`6

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`7.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`7.htm new file mode 100644 index 0000000..406efa0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`7.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`7 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`7

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`8.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`8.htm new file mode 100644 index 0000000..4b02122 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`8.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`8 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`8

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`9.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`9.htm new file mode 100644 index 0000000..8a61b68 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ActionHelper`9.htm @@ -0,0 +1,233 @@ + + + + ActionHelper`9 - FSharpx Documentation + + + + + + + + +
+

Type ActionHelper`9

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

IAsyncResult BeginInvoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , AsyncCallback callback, object objects)

+
+ + + + +
+
+
+

void Invoke(T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 )

+
+ + + + +
+
+ + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ExtraHashCompare.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ExtraHashCompare.htm new file mode 100644 index 0000000..c34ecc0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/ExtraHashCompare.htm @@ -0,0 +1,203 @@ + + + + ExtraHashCompare - FSharpx Documentation + + + + + + + + +
+

Type ExtraHashCompare

+

Namespace FSharpx.Linq

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

bool GenericNotEqualIntrinsic<T>(T x, T y)

+
An intrinsic for compiling <@ x <> y @> to expression trees + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`10.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`10.htm new file mode 100644 index 0000000..0d7fc81 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`10.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`10 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`10

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`11.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`11.htm new file mode 100644 index 0000000..7bbe0d7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`11.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`11 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`11

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`12.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`12.htm new file mode 100644 index 0000000..e04c64a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`12.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`12 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`12

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`13.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`13.htm new file mode 100644 index 0000000..692ce88 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`13.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`13 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`13

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`14.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`14.htm new file mode 100644 index 0000000..10ddcf0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`14.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`14 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`14

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`15.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`15.htm new file mode 100644 index 0000000..d544974 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`15.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`15 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`15

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`16.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`16.htm new file mode 100644 index 0000000..a497b9a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`16.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`16 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`16

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`17.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`17.htm new file mode 100644 index 0000000..c686d98 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`17.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`17 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`17

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`18.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`18.htm new file mode 100644 index 0000000..960f933 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`18.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`18 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`18

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`19.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`19.htm new file mode 100644 index 0000000..5a8a8fa --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`19.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`19 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`19

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`20.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`20.htm new file mode 100644 index 0000000..9f9998d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`20.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`20 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`20

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`21.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`21.htm new file mode 100644 index 0000000..6e831be --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`21.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`21 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`21

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`6.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`6.htm new file mode 100644 index 0000000..3c4a981 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`6.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`6 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`6

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`7.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`7.htm new file mode 100644 index 0000000..ad55edd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`7.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`7 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`7

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`8.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`8.htm new file mode 100644 index 0000000..9621a27 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`8.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`8 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`8

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`9.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`9.htm new file mode 100644 index 0000000..c8f6763 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/FuncHelper`9.htm @@ -0,0 +1,208 @@ + + + + FuncHelper`9 - FSharpx Documentation + + + + + + + + +
+

Type FuncHelper`9

+

Namespace FSharpx.Linq

+

Parent MulticastDelegate

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

MethodInfo Method get;

+
+ +
+
+
+

object Target get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/HelperTypes.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/HelperTypes.htm new file mode 100644 index 0000000..bb4ed82 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/HelperTypes.htm @@ -0,0 +1,188 @@ + + + + HelperTypes - FSharpx Documentation + + + + + + + + +
+

Type HelperTypes

+

Namespace FSharpx.Linq

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluation.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluation.htm new file mode 100644 index 0000000..81d17d5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluation.htm @@ -0,0 +1,257 @@ + + + + QuotationEvaluation - FSharpx Documentation + + + + + + + + +
+

Type QuotationEvaluation

+

Namespace FSharpx.Linq

+
+
+
This module provides Compile and Eval extension members +for F# quotation values, implemented by translating to LINQ +expression trees and using the LINQ dynamic compiler. +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpFunc<Unit, object> Expr.CompileUntyped(FSharpExpr )

+
+ + + + +
+
+
+

object Expr.EvalUntyped(FSharpExpr )

+
+ + + + +
+
+
+

Expression Expr.ToLinqExpression(FSharpExpr )

+
+ + + + +
+
+
+

FSharpFunc<Unit, T> Expr<T>(FSharpExpr<T> )

+
+ + + + +
+
+
+

T Expr<T>(FSharpExpr<T> )

+
+ + + + +
+
+
+

Expression<T> LinqExpressionHelper<T>(T x)

+
This function should not be called directly. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluator.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluator.htm new file mode 100644 index 0000000..8631e83 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationEvaluator.htm @@ -0,0 +1,254 @@ + + + + QuotationEvaluator - FSharpx Documentation + + + + + + + + +
+

Type QuotationEvaluator

+

Namespace FSharpx.Linq

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<Unit, T> Compile<T>(FSharpExpr<T> e)

+
Compile the quotation expression by first converting to LINQ expression trees +Exceptions: InvalidArgumentException will be raised if the input expression is +not in the subset that can be converted to a LINQ expression tree + + + + +
+
+
+

FSharpFunc<Unit, object> CompileUntyped(FSharpExpr e)

+
Compile the quotation expression by first converting to LINQ expression trees +Exceptions: InvalidArgumentException will be raised if the input expression is +not in the subset that can be converted to a LINQ expression tree + + + + +
+
+
+

T Evaluate<T>(FSharpExpr<T> e)

+
Evaluate the quotation expression by first converting to LINQ expression trees +Exceptions: InvalidArgumentException will be raised if the input expression is +not in the subset that can be converted to a LINQ expression tree + + + + +
+
+
+

object EvaluateUntyped(FSharpExpr e)

+
Compile the quotation expression by first converting to LINQ expression trees +Exceptions: InvalidArgumentException will be raised if the input expression is +not in the subset that can be converted to a LINQ expression tree + + + + +
+
+
+

Expression ToLinqExpression(FSharpExpr e)

+
Convert the quotation expression to LINQ expression trees +This operation will only succeed for a subset of quotation expressions. +Exceptions: InvalidArgumentException will be raised if the input expression is +not in the subset that can be converted to a LINQ expression tree + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationHelpers.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationHelpers.htm new file mode 100644 index 0000000..78bf043 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/QuotationHelpers.htm @@ -0,0 +1,203 @@ + + + + QuotationHelpers - FSharpx Documentation + + + + + + + + +
+

Type QuotationHelpers

+

Namespace FSharpx.Linq

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Expression<Func<a, b>> toLinqExpression<a, b>(FSharpExpr<FSharpFunc<a, b>> exp)

+
Converts a Lambda quotation into a Linq Lamba Expression with 1 parameter + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/index.htm new file mode 100644 index 0000000..6c3a406 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Linq/index.htm @@ -0,0 +1,219 @@ + + + + FSharpx.Linq - FSharpx Documentation + + + + + + + +
+

Namespace FSharpx.Linq

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/FSharpValue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/FSharpValue.htm new file mode 100644 index 0000000..98f7836 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/FSharpValue.htm @@ -0,0 +1,185 @@ + + + + FSharpValue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx.Reflection

+
+ +
+
+
+

Type FSharpValue

+

Namespace FSharpx.Reflection

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<Object[], object> PreComputeExceptionConstructorFast(Type exceptionType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

ConstructorInfo PreComputeExceptionConstructorInfo(Type exceptionType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<object, Object[]> PreComputeExceptionReaderFast(Type exceptionType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<Object[], object> PreComputeRecordConstructorFast(Type recordType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<object, Object[]> PreComputeRecordReaderFast(Type recordType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<Object[], object> PreComputeTupleConstructorFast(Type tupleType)

+
+ + + + +
+
+
+

FSharpFunc<object, Object[]> PreComputeTupleReaderFast(Type tupleType)

+
+ + + + +
+
+
+

FSharpFunc<Object[], object> PreComputeUnionConstructorFast(UnionCaseInfo unionCase, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<object, Object[]> PreComputeUnionReaderFast(UnionCaseInfo unionCase, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+
+

FSharpFunc<object, int> PreComputeUnionTagReaderFast(Type unionType, FSharpOption<BindingFlags> bindingFlags)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/index.htm new file mode 100644 index 0000000..ce00024 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx.Reflection/index.htm @@ -0,0 +1,75 @@ + + + + FSharpx.Reflection - FSharpx Documentation + + + + + + +
+

Types in FSharpx.Reflection

+
+ +
+
+
+

Namespace FSharpx.Reflection

+
+
+

Classes

+ + +
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ActiveMatch.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ActiveMatch.htm new file mode 100644 index 0000000..f2a16a3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ActiveMatch.htm @@ -0,0 +1,413 @@ + + + + ActiveMatch - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ActiveMatch

+

Namespace FSharpx

+

Interfaces IEquatable<ActiveMatch>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(ActiveMatch obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

FSharpList<Group> Groups get;

+
+ +
+
+
+

FSharpList<string> GroupValues get;

+
+ +
+
+
+

Match Match get;

+
+ +
+
+
+

string MatchValue get;

+
+ +
+
+
+

FSharpList<FSharpOption<Group>> OptionalGroups get;

+
+ +
+
+
+

FSharpList<FSharpOption<string>> OptionalGroupValues get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ArrayQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ArrayQueue.htm new file mode 100644 index 0000000..eb100a3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ArrayQueue.htm @@ -0,0 +1,385 @@ + + + + ArrayQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ArrayQueue

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Queue`1 newQueueClass<a>(int n)

+
+ + + + +
+
+
+

Queue`1 newQueueStruct<a>(int n)

+
+ + + + +
+
+
+

Queue`1 ofList<a>(int n, FSharpList<a> list)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Async.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Async.htm new file mode 100644 index 0000000..1d94981 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Async.htm @@ -0,0 +1,415 @@ + + + + Async - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Async

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<b> ap<a, b>(FSharpAsync<a> m, FSharpAsync<FSharpFunc<a, b>> f)

+
Sequential application + + + + +
+
+
+

FSharpAsync<b> bind<a, b>(FSharpFunc<a, FSharpAsync<b>> f, FSharpAsync<a> m)

+
Sequentially compose two actions, passing any value produced by the second as an argument to the first. + + + + +
+
+
+

FSharpAsync<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpAsync<a> x, FSharpAsync<b> y)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

FSharpAsync<b> pipe<a, b>(FSharpAsync<a> m, FSharpFunc<a, b> f)

+
Flipped map + + + + +
+
+
+

FSharpAsync<c> pipe2<a, b, c>(FSharpAsync<a> x, FSharpAsync<b> y, FSharpFunc<a, FSharpFunc<b, c>> f)

+
+ + + + +
+
+
+

FSharpAsync<d> pipe3<a, b, c, d>(FSharpAsync<a> x, FSharpAsync<b> y, FSharpAsync<c> z, FSharpFunc<a, FSharpFunc<b, FSharpFunc<c, d>>> f)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/BinaryModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/BinaryModule.htm new file mode 100644 index 0000000..56d392e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/BinaryModule.htm @@ -0,0 +1,619 @@ + + + + BinaryModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type BinaryModule

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, Iteratee<ByteString, a>>> concatMap<a>(FSharpFunc<Byte, ByteString> f)

+
+ + + + +
+
+
+

FSharpAsync<Tuple<b, FSharpAsync<AsyncSeqInner<a>>>> connect<a, b>(Iteratee<Chunk, T> sink, FSharpAsync<AsyncSeqInner<a>> source)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> drop(int n)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> dropUntil(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> dropWhile(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumerate<a>(ByteString str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumeratePure1Chunk<a>(ByteString str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumeratePureNChunk<a>(int n, ByteString str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, Iteratee<ByteString, a>>> filter<a>(FSharpFunc<Byte, bool> p)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> fold<a>(FSharpFunc<a, FSharpFunc<Byte, a>> step, a seed)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> heads(ByteString str)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> isolate<a>(int n, Iteratee<Chunk, T> _arg1)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, Iteratee<ByteString, a>>> isolateUntil<a>(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, Iteratee<ByteString, a>>> isolateWhile<a>(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> many<a>(Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, Iteratee<ByteString, a>>> map<a>(FSharpFunc<Byte, Byte> f)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, a>> repeat<a>(Byte a)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<ByteString, a>, Iteratee<ByteString, a>> replicate<a>(int maxCount, Byte getNext)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> take(int n)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> takeUntil(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> takeWhile(FSharpFunc<Byte, bool> pred)

+
+ + + + +
+
+ +

Public properties

+ +
+

Iteratee<Chunk, T> consume get;

+
+ +
+
+ +
+

Iteratee<Chunk, T> length get;

+
+ +
+
+
+

Iteratee<Chunk, T> peek get;

+
+ +
+
+
+

Iteratee<Chunk, T> readLine get;

+
+ +
+
+
+

Iteratee<Chunk, T> readLines get;

+
+ +
+
+
+

Iteratee<Chunk, T> skipNewline get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Boolean.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Boolean.htm new file mode 100644 index 0000000..1abf3e3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Boolean.htm @@ -0,0 +1,363 @@ + + + + Boolean - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Boolean

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

bool Value get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Choice.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Choice.htm new file mode 100644 index 0000000..f9ada4d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Choice.htm @@ -0,0 +1,483 @@ + + + + Choice - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Choice

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpChoice<c, b> ap<a, b, c>(FSharpChoice<a, b> x, FSharpChoice<FSharpFunc<a, c>, b> f)

+
Sequential application + + + + +
+
+
+

FSharpChoice<b, d> bimap<a, b, c, d>(FSharpFunc<a, b> f1, FSharpFunc<c, d> f2, FSharpChoice<a, c> _arg1)

+
Maps both parts of a Choice. +Applies the first function if Choice is 1Of2. +Otherwise applies the second function + + + + +
+
+
+

FSharpChoice<b, c> bind<a, b, c>(FSharpFunc<a, FSharpChoice<b, c>> f, FSharpChoice<a, c> _arg1)

+
Monadic bind + + + + +
+
+
+

FSharpChoice<a, Exception> cast<a>(object o)

+
Attempts to cast an object. +Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + +
+
+
+

b choice<a, b, c>(FSharpFunc<a, b> f1, FSharpFunc<c, b> f2, FSharpChoice<a, c> _arg1)

+
Maps both parts of a Choice. +Applies the first function if Choice is 1Of2. +Otherwise applies the second function + + + + +
+
+
+

a get<a, b>(FSharpChoice<a, b> _arg1)

+
If Choice is 1Of2, return its value. +Otherwise throw ArgumentException. + + + + +
+
+
+

FSharpChoice<b, c> map<a, b, c>(FSharpFunc<a, b> f, FSharpChoice<a, c> _arg1)

+
Transforms a Choice's first value by using a specified mapping function. + + + + +
+
+
+

FSharpFunc<FSharpChoice<c, a>, FSharpChoice<c, b>> mapSecond<a, b, c>(FSharpFunc<a, b> f)

+
Transforms a Choice's second value by using a specified mapping function. + + + + +
+
+
+

FSharpChoice<b, a> ofOption<a, b>(a o, FSharpOption<b> _arg1)

+
If Some value, returns Choice1Of2 value. Otherwise, returns the supplied default value. + + + + +
+
+
+

FSharpChoice<b, Exception> protect<a, b>(FSharpFunc<a, b> f, a x)

+
Wraps a function, encapsulates any exception thrown within to a Choice + + + + +
+
+
+

FSharpFunc<FSharpChoice<a, b>, FSharpOption<a>> toOption<a, b>()

+
If Choice is 1Of2, returns Some value. Otherwise, returns None. + + + + +
+
+ +

Public properties

+ +
+

EitherBuilder choose get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Compiled.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Compiled.htm new file mode 100644 index 0000000..88b8c46 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Compiled.htm @@ -0,0 +1,362 @@ + + + + Compiled - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Compiled

+

Namespace FSharpx

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

FSharpFunc<string, FSharpFunc<string, FSharpOption<ActiveMatch>>> |Match|_| get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationBuilder.htm new file mode 100644 index 0000000..ca0cf4d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationBuilder.htm @@ -0,0 +1,425 @@ + + + + ContinuationBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ContinuationBuilder

+

Namespace FSharpx

+
+ + + +

Public instance methods

+ +
+

FSharpFunc<FSharpFunc<t, s>, FSharpFunc<FSharpFunc<Exception, s>, s>> Bind<r, s, t>(FSharpFunc<FSharpFunc<r, s>, FSharpFunc<FSharpFunc<Exception, s>, s>> comp1, FSharpFunc<r, FSharpFunc<FSharpFunc<t, s>, FSharpFunc<FSharpFunc<Exception, s>, s>>> f)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<FSharpChoice<p, Exception>, q>, FSharpFunc<FSharpFunc<Exception, q>, q>> Catch<p, q>(FSharpFunc<FSharpFunc<p, q>, FSharpFunc<FSharpFunc<Exception, q>, q>> comp)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<g, f>, FSharpFunc<FSharpFunc<Exception, f>, f>> Combine<f, g>(FSharpFunc<FSharpFunc<Unit, f>, FSharpFunc<FSharpFunc<Exception, f>, f>> comp1, FSharpFunc<FSharpFunc<g, f>, FSharpFunc<FSharpFunc<Exception, f>, f>> comp2)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<a1, a2>, FSharpFunc<FSharpFunc<Exception, a2>, a2>> ReturnFrom<a1, a2>(FSharpFunc<FSharpFunc<a1, a2>, FSharpFunc<FSharpFunc<Exception, a2>, a2>> comp)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<k, l>, FSharpFunc<FSharpFunc<Exception, l>, l>> TryFinally<k, l>(FSharpFunc<FSharpFunc<k, l>, FSharpFunc<FSharpFunc<Exception, l>, l>> tryBlock, FSharpFunc<Unit, Unit> finallyBlock)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<m, n>, FSharpFunc<FSharpFunc<Exception, n>, n>> TryWith<m, n>(FSharpFunc<FSharpFunc<m, n>, FSharpFunc<FSharpFunc<Exception, n>, n>> tryBlock, FSharpFunc<Exception, FSharpFunc<FSharpFunc<m, n>, FSharpFunc<FSharpFunc<Exception, n>, n>>> catchBlock)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<Unit, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> While<c>(FSharpFunc<Unit, bool> pred, FSharpFunc<FSharpFunc<Unit, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> body)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationModule.htm new file mode 100644 index 0000000..5d20408 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ContinuationModule.htm @@ -0,0 +1,467 @@ + + + + ContinuationModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ContinuationModule

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<FSharpFunc<c, b>, FSharpFunc<FSharpFunc<Exception, b>, b>> ap<a, b, c>(FSharpFunc<FSharpFunc<a, b>, FSharpFunc<FSharpFunc<Exception, b>, b>> m, FSharpFunc<FSharpFunc<FSharpFunc<a, c>, b>, FSharpFunc<FSharpFunc<Exception, b>, b>> f)

+
Sequential application + + + + +
+
+
+

c bind<a, b, c>(FSharpFunc<a, FSharpFunc<FSharpFunc<b, c>, FSharpFunc<FSharpFunc<Exception, c>, c>>> f, FSharpFunc<FSharpFunc<a, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> comp1, FSharpFunc<b, c> cont, FSharpFunc<Exception, c> econt)

+
+ + + + +
+
+
+

r callcc<T, b, r>(FSharpFunc<FSharpFunc<T, FSharpFunc<FSharpFunc<b, r>, FSharpFunc<FSharpFunc<Exception, r>, r>>>, FSharpFunc<FSharpFunc<T, r>, FSharpFunc<FSharpFunc<Exception, r>, r>>> f, FSharpFunc<T, r> cont, FSharpFunc<Exception, r> econt)

+
+ + + + +
+
+
+

FSharpFunc<IEnumerable<b>, FSharpFunc<FSharpFunc<a, c>, FSharpFunc<FSharpFunc<Exception, c>, c>>> foldM<a, b, c>(FSharpFunc<a, FSharpFunc<b, FSharpFunc<FSharpFunc<a, c>, FSharpFunc<FSharpFunc<Exception, c>, c>>>> f, a s)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<c, d>, FSharpFunc<FSharpFunc<Exception, d>, d>> lift2<a, b, c, d>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpFunc<FSharpFunc<a, d>, FSharpFunc<FSharpFunc<Exception, d>, d>> a, FSharpFunc<FSharpFunc<b, d>, FSharpFunc<FSharpFunc<Exception, d>, d>> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

FSharpFunc<FSharpFunc<b, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> map<a, b, c>(FSharpFunc<a, b> f, FSharpFunc<FSharpFunc<a, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> m)

+
Transforms a Cont value by using a specified mapping function. + + + + +
+
+
+

FSharpFunc<FSharpFunc<FSharpList<b>, c>, FSharpFunc<FSharpFunc<Exception, c>, c>> mapM<a, b, c>(FSharpFunc<a, FSharpFunc<FSharpFunc<b, c>, FSharpFunc<FSharpFunc<Exception, c>, c>>> f, FSharpList<a> x)

+
+ + + + +
+
+
+

b runCont<a, b>(FSharpFunc<FSharpFunc<a, b>, FSharpFunc<FSharpFunc<Exception, b>, b>> c, FSharpFunc<a, b> cont, FSharpFunc<Exception, b> econt)

+
+ + + + +
+
+
+

FSharpFunc<FSharpFunc<FSharpList<a>, b>, FSharpFunc<FSharpFunc<Exception, b>, b>> sequence<a, b>(FSharpList<FSharpFunc<FSharpFunc<a, b>, FSharpFunc<FSharpFunc<Exception, b>, b>>> s)

+
+ + + + +
+
+
+

r throw<T, r>(Exception exn, FSharpFunc<T, r> cont, FSharpFunc<Exception, r> econt)

+
+ + + + +
+
+ +

Public properties

+ +
+

ContinuationBuilder cont get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Core.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Core.htm new file mode 100644 index 0000000..61420fd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Core.htm @@ -0,0 +1,467 @@ + + + + Core - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Core

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

T atomically<T>(FSharpFunc<TLog, T> a)

+
+ + + + +
+
+
+

FSharpFunc<TLog, Unit> mapM_<a>(FSharpFunc<a, FSharpFunc<TLog, Unit>> f, IEnumerable<a> ms)

+
+ + + + +
+
+
+

FSharpFunc<TLog, IEnumerable<b>> mapM<a, b>(FSharpFunc<a, FSharpFunc<TLog, b>> f, IEnumerable<a> ms)

+
+ + + + +
+
+
+

TVar`1 newTVar<T>(T value)

+
+ + + + +
+
+
+

T orElse<T>(FSharpFunc<TLog, T> a, FSharpFunc<TLog, T> b, TLog trans)

+
+ + + + +
+
+
+

T readTVar<T>(TVar`1 ref, TLog trans)

+
+ + + + +
+
+
+

T retry<T>(Unit unitVar0, TLog trans)

+
+ + + + +
+
+
+

void sequence_(IEnumerable<FSharpFunc<TLog, Unit>> ms, TLog trans)

+
+ + + + +
+
+
+

IEnumerable<a> sequence<a>(IEnumerable<FSharpFunc<TLog, a>> ms, TLog trans)

+
+ + + + +
+
+
+

void writeTVar<T>(TVar`1 ref, T value, TLog trans)

+
+ + + + +
+
+ +

Public properties

+ +
+

StmBuilder stm get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Coroutine.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Coroutine.htm new file mode 100644 index 0000000..cbe01e3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Coroutine.htm @@ -0,0 +1,377 @@ + + + + Coroutine - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Coroutine

+

Namespace FSharpx

+
+
+
The coroutine type from http://fssnip.net/7M +
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

void Put(FSharpFunc<FSharpFunc<Unit, FSharpFunc<FSharpFunc<Unit, Unit>, FSharpFunc<FSharpFunc<Exception, Unit>, Unit>>>, FSharpFunc<FSharpFunc<Unit, Unit>, FSharpFunc<FSharpFunc<Exception, Unit>, Unit>>> task)

+
+ + + + +
+
+
+

void Run()

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/CustomValidation`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/CustomValidation`1.htm new file mode 100644 index 0000000..3e4d318 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/CustomValidation`1.htm @@ -0,0 +1,425 @@ + + + + CustomValidation`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type CustomValidation`1

+

Namespace FSharpx

+
+ + + +

Public instance methods

+ +
+

FSharpFunc<FSharpChoice<FSharpFunc<a, b>, T>, FSharpChoice<b, T>> ap<a, b>(FSharpChoice<a, T> x)

+
Sequential application + + + + +
+
+
+

FSharpChoice<b, T> apl<a, b>(FSharpChoice<a, T> b, FSharpChoice<b, T> a)

+
Sequence actions, discarding the value of the second argument. + + + + +
+
+
+

FSharpChoice<a, T> apr<a, b>(FSharpChoice<a, T> b, FSharpChoice<b, T> a)

+
Sequence actions, discarding the value of the first argument. + + + + +
+
+
+

FSharpChoice<c, T> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpChoice<a, T> a, FSharpChoice<b, T> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

FSharpChoice<FSharpList<b>, T> mapM<a, b>(FSharpFunc<a, FSharpChoice<b, T>> f, FSharpList<a> x)

+
+ + + + +
+
+
+

FSharpChoice<FSharpList<a>, T> sequence<a>(FSharpList<FSharpChoice<a, T>> s)

+
+ + + + +
+
+
+

FSharpFunc<IEnumerable<a>, FSharpChoice<FSharpList<b>, T>> seqValidator<a, b>(FSharpFunc<a, FSharpChoice<b, T>> f)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGML.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGML.htm new file mode 100644 index 0000000..5770c30 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGML.htm @@ -0,0 +1,434 @@ + + + + DGML - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type DGML

+

Namespace FSharpx

+

Interfaces IEquatable<DGML>, IStructuralEquatable, IComparable<DGML>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(DGML obj)

+
+ + + + +
+
+
+

bool Equals(DGML obj)

+
+ + + + +
+
+ + +

Public static methods

+ + +
+

DGML NewNode(string item)

+
+ + + + +
+
+ +

Public properties

+ + +
+

bool IsNode get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGMLClass.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGMLClass.htm new file mode 100644 index 0000000..03ae93e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DGMLClass.htm @@ -0,0 +1,428 @@ + + + + DGMLClass - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type DGMLClass

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool CanTransitTo(string nodeName)

+
+ + + + +
+
+
+

FSharpOption<Node> FindNode(string nodeName)

+
+ + + + +
+
+
+

void ForceStateTo(string args)

+
+ + + + +
+
+
+

void Init(string fileName, string initState)

+
+ + + + +
+
+ + +

Public properties

+ +
+

Node CurrentNode get;

+
+ +
+
+
+

string CurrentState get; set;

+
+ +
+
+ +
+

FSharpList<Node> Nodes get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Date.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Date.htm new file mode 100644 index 0000000..134ccc7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Date.htm @@ -0,0 +1,363 @@ + + + + Date - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Date

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

DateTime Value get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Dictionary.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Dictionary.htm new file mode 100644 index 0000000..d5a4569 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Dictionary.htm @@ -0,0 +1,365 @@ + + + + Dictionary - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Dictionary

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpOption<b> TryFind<a, b>(this IDictionary<a, b> d, a key)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/DocumentExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DocumentExtensions.htm new file mode 100644 index 0000000..94b8fa4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/DocumentExtensions.htm @@ -0,0 +1,525 @@ + + + + DocumentExtensions - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type DocumentExtensions

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

IDocument IDocument.AddBoolProperty(IDocument this, string propertyName, bool boolean)

+
+ + + + +
+
+
+

IDocument IDocument.AddDateProperty(IDocument this, string propertyName, DateTime date)

+
+ + + + +
+
+
+

IDocument IDocument.AddElement(IDocument this, IDocument element)

+
+ + + + +
+
+
+

IDocument IDocument.AddNumberProperty(IDocument this, string propertyName, double number)

+
+ + + + +
+
+
+

IDocument IDocument.AddProperty(IDocument this, string propertyName, IDocument document)

+
+ + + + +
+
+
+

IDocument IDocument.AddTextProperty(IDocument this, string propertyName, string text)

+
+ + + + +
+
+
+

bool IDocument.GetBoolean(IDocument this, string propertyName)

+
+ + + + +
+
+
+

DateTime IDocument.GetDate(IDocument this, string propertyName)

+
+ + + + +
+
+
+

JArray IDocument.GetJArray(IDocument this, string propertyName)

+
+ + + + +
+
+
+

JObject IDocument.GetJObject(IDocument this, string propertyName)

+
+ + + + +
+
+
+

double IDocument.GetNumber(IDocument this, string propertyName)

+
+ + + + +
+
+
+

IDocument IDocument.GetProperty(IDocument this, string propertyName)

+
+ + + + +
+
+
+

string IDocument.GetText(IDocument this, string propertyName)

+
+ + + + +
+
+
+

bool IDocument.HasProperty(IDocument this, string propertyName)

+
+ + + + +
+
+
+

void IDocument.RemoveProperty(IDocument this, string propertyName)

+
+ + + + +
+
+
+

IEnumerable<XObject> IDocument.ToXml(IDocument )

+
+ + + + +
+
+
+

IDocument XDocument.ToJson(XDocument )

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/EitherBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EitherBuilder.htm new file mode 100644 index 0000000..f83d2df --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EitherBuilder.htm @@ -0,0 +1,375 @@ + + + + EitherBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type EitherBuilder

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

FSharpChoice<d, c> Bind<b, c, d>(FSharpChoice<b, c> m, FSharpFunc<b, FSharpChoice<d, c>> f)

+
+ + + + +
+
+
+

a ReturnFrom<a>(a m)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableBuilder.htm new file mode 100644 index 0000000..ba2d843 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableBuilder.htm @@ -0,0 +1,375 @@ + + + + EnumerableBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type EnumerableBuilder

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

IEnumerator<b> Bind<T, b>(IEnumerator<T> a, FSharpFunc<FSharpOption<T>, IEnumerator<b>> f)

+
+ + + + +
+
+
+

IEnumerator<b> Combine<b>(IEnumerator<b> a, IEnumerator<b> b)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableEx.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableEx.htm new file mode 100644 index 0000000..1c80fac --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/EnumerableEx.htm @@ -0,0 +1,365 @@ + + + + EnumerableEx - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type EnumerableEx

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpOption<a> FirstOrNone<a>(this IEnumerable<a> source)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Enumerator.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Enumerator.htm new file mode 100644 index 0000000..bd5df96 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Enumerator.htm @@ -0,0 +1,530 @@ + + + + Enumerator - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Enumerator

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

IEnumerator<U> bind<T, U>(FSharpFunc<FSharpOption<T>, IEnumerator<U>> f, IEnumerator<T> a)

+
+ + + + +
+
+
+

IEnumerator<a> combine<a>(IEnumerator<a> a, IEnumerator<a> b)

+
+ + + + +
+
+
+

IEnumerator<a> delay<a>(FSharpFunc<Unit, IEnumerator<a>> f)

+
+ + + + +
+
+
+

T firstOrDefault<T>(T def, IEnumerator<T> en)

+
+ + + + +
+
+
+

T head<T>(IEnumerator<T> en)

+
+ + + + +
+
+
+

T last<T>(IEnumerator<T> en)

+
+ + + + +
+
+
+

T lastOrDefault<T>(T def, IEnumerator<T> en)

+
+ + + + +
+
+
+

int length<T>(IEnumerator<T> en)

+
+ + + + +
+
+
+

IEnumerator<b> map<a, b>(FSharpFunc<a, b> f, IEnumerator<a> en)

+
+ + + + +
+
+
+

IEnumerator<a> scan<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, a state, IEnumerator<b> en)

+
Scan progressively folds over the enumerator, returning a new enumerator +that lazily computes each state. + + + + +
+
+
+

IEnumerator<a> scanUntil<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, a state, FSharpFunc<a, bool> pred, IEnumerator<b> en)

+
Scan progressively folds over the enumerator, returning a new enumerator +that lazily computes each state until the provided predicate is true. + + + + +
+
+
+

IEnumerator<a> scanWhile<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, a state, FSharpFunc<a, bool> pred, IEnumerator<b> en)

+
Scan progressively folds over the enumerator, returning a new enumerator +that lazily computes each state while the provided predicate is true. + + + + +
+
+
+

IEnumerator<T> skip<T>(int n, IEnumerator<T> en)

+
+ + + + +
+
+
+

IEnumerator<T> take<T>(int n, IEnumerator<T> en)

+
+ + + + +
+
+
+

IEnumerable<T> toSeq<T>(FSharpFunc<Unit, IEnumerator<T>> gen)

+
+ + + + +
+
+
+

IEnumerator<Tuple<a, b>> zip<a, b>(IEnumerator<a> xs, IEnumerator<b> ys)

+
+ + + + +
+
+ +

Public properties

+ +
+

EnumerableBuilder iter get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpAsyncEx.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpAsyncEx.htm new file mode 100644 index 0000000..a27bb98 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpAsyncEx.htm @@ -0,0 +1,495 @@ + + + + FSharpAsyncEx - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpAsyncEx

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<d> FromBeginEnd<d>(Func<AsyncCallback, object, IAsyncResult> abegin, Func<IAsyncResult, d> aend)

+
+ + + + +
+
+
+

FSharpAsync<string> FSharpAsyncDownloadString(this WebClient web, Uri address)

+
+ + + + +
+
+
+

FSharpAsync<WebResponse> FSharpAsyncGetResponse(this WebRequest w)

+
+ + + + +
+
+
+

FSharpAsync<string> FSharpAsyncReadToEnd(this StreamReader s)

+
+ + + + +
+
+
+

FSharpAsync<Unit> IgnoreResult<a>(this FSharpAsync<a> a)

+
Ignores (discards) the result of the async computation + + + + +
+
+
+

FSharpAsync<a[]> Parallel<a>(this IEnumerable<FSharpAsync<a>> a)

+
+ + + + +
+
+
+

FSharpAsync<FSharpChoice<a, Exception>> Protect<a>(this FSharpAsync<a> a)

+
Encapsulates any possible exceptions during bind in a Choice + + + + +
+
+
+

FSharpAsync<b> Return<b>(b a)

+
+ + + + +
+
+
+

a Run<a>(this FSharpAsync<a> a)

+
+ + + + +
+
+
+

FSharpAsync<b> Select<a, b>(this FSharpAsync<a> o, Func<a, b> f)

+
+ + + + +
+
+
+

FSharpAsync<b> SelectMany<a, b>(this FSharpAsync<a> o, Func<a, FSharpAsync<b>> f)

+
+ + + + +
+
+
+

FSharpAsync<c> SelectMany<a, b, c>(this FSharpAsync<a> o, Func<a, FSharpAsync<b>> f, Func<a, b, c> mapper)

+
+ + + + +
+
+
+

void Start(this FSharpAsync<Unit> a)

+
+ + + + +
+
+
+

FSharpAsync<c> ToFSharpAsync<c>(this Func<c> f)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpChoice.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpChoice.htm new file mode 100644 index 0000000..ae558d3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpChoice.htm @@ -0,0 +1,667 @@ + + + + FSharpChoice - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpChoice

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpChoice<b, c> Ap<a, b, c>(this FSharpChoice<Func<a, b>, c> f, FSharpChoice<a, c> x)

+
+ + + + +
+
+
+

FSharpChoice<b, NonEmptyList<c>> ApValidation<a, b, c>(this FSharpChoice<Func<a, b>, NonEmptyList<c>> f, FSharpChoice<a, NonEmptyList<c>> x)

+
+ + + + +
+
+
+

FSharpChoice<a, Exception> Cast<a>(object o)

+
Attempts to cast an object. +Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + +
+
+
+

Func<IEnumerable<a>, FSharpChoice<IEnumerable<a>, NonEmptyList<a>>> EnumerableValidator<a, a>(Func<a, FSharpChoice<a, NonEmptyList<a>>> f)

+
+ + + + +
+
+
+

FSharpChoice<a, NonEmptyList<string>> Error<a>(string x)

+
+ + + + +
+
+
+

FSharpChoice<a, NonEmptyList<string>> Errors<a>(NonEmptyList<T> x)

+
+ + + + +
+
+
+

FSharpChoice<a, NonEmptyList<string>> Errors<a>(string error, String[] errors)

+
+ + + + +
+
+
+

FSharpChoice<d, NonEmptyList<e>> Join<a, e, b, c, d>(this FSharpChoice<a, NonEmptyList<e>> c, FSharpChoice<b, NonEmptyList<e>> inner, Func<a, c> outerKeySelector, Func<b, c> innerKeySelector, Func<a, b, d> resultSelector)

+
+ + + + +
+
+
+

void Match<a, b>(this FSharpChoice<a, b> c, Action<a> f1, Action<b> f2)

+
+ + + + +
+
+
+

c Match<a, b, c>(this FSharpChoice<a, b> c, Func<a, c> f1, Func<b, c> f2)

+
+ + + + +
+
+
+

void Match<a, b, c>(this FSharpChoice<a, b, c> c, Action<a> f1, Action<b> f2, Action<c> f3)

+
+ + + + +
+
+
+

d Match<a, b, c, d>(this FSharpChoice<a, b, c> c, Func<a, d> f1, Func<b, d> f2, Func<c, d> f3)

+
+ + + + +
+
+
+

FSharpChoice<T1, T2> New1Of2<T1, T2>(T1 a)

+
+ + + + +
+
+
+

FSharpChoice<T1, T2, T3> New1Of3<T1, T2, T3>(T1 a)

+
+ + + + +
+
+
+

FSharpChoice<T1, T2> New2Of2<T1, T2>(T2 b)

+
+ + + + +
+
+
+

FSharpChoice<T1, T2, T3> New2Of3<T1, T2, T3>(T2 a)

+
+ + + + +
+
+
+

FSharpChoice<T1, T2, T3> New3Of3<T1, T2, T3>(T3 a)

+
+ + + + +
+
+
+

FSharpChoice<a, NonEmptyList<string>> Ok<a>(a x)

+
+ + + + +
+
+
+

FSharpChoice<a, NonEmptyList<string>> ReturnValidation<a>(this a x)

+
+ + + + +
+
+
+

FSharpChoice<c, b> Select<a, b, c>(this FSharpChoice<a, b> o, Func<a, c> f)

+
+ + + + +
+
+
+

FSharpChoice<c, b> SelectMany<a, b, c>(this FSharpChoice<a, b> o, Func<a, FSharpChoice<c, b>> f)

+
+ + + + +
+
+
+

FSharpChoice<d, b> SelectMany<a, b, c, d>(this FSharpChoice<a, b> o, Func<a, FSharpChoice<c, b>> f, Func<a, c, d> mapper)

+
+ + + + +
+
+
+

FSharpChoice<FSharpList<b>, NonEmptyList<c>> SelectMValidation<a, b, c>(this FSharpList<a> x, Func<a, FSharpChoice<b, NonEmptyList<c>>> f)

+
+ + + + +
+
+
+

FSharpChoice<a, c> SelectSecond<a, b, c>(this FSharpChoice<a, b> o, Func<b, c> f)

+
+ + + + +
+
+
+

FSharpChoice<FSharpList<a>, b> Sequence<a, b>(this FSharpList<FSharpChoice<a, b>> c)

+
+ + + + +
+
+
+

FSharpChoice<FSharpList<a>, NonEmptyList<b>> SequenceValidation<a, b>(this FSharpList<FSharpChoice<a, NonEmptyList<b>>> s)

+
+ + + + +
+
+
+

FSharpOption<a> ToFSharpOption<a, b>(this FSharpChoice<a, b> c)

+
+ + + + +
+
+
+

Func<a, FSharpChoice<b, Exception>> Try<a, b>(this Func<a, b> f)

+
+ + + + +
+
+
+

FSharpChoice<b, Exception> Try<a, b>(this Func<a, b> f, a v)

+
+ + + + +
+
+
+

Func<a, FSharpChoice<a, NonEmptyList<string>>> Validator<a>(Predicate<a> p, string errorMsg)

+
+ + + + +
+
+
+

a Value<a, b>(this FSharpChoice<a, b> c)

+
If Choice is 1Of2, return its value. +Otherwise throw ArgumentException. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpFunc.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpFunc.htm new file mode 100644 index 0000000..a76b1ed --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpFunc.htm @@ -0,0 +1,428 @@ + + + + FSharpFunc - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpFunc

+

Namespace FSharpx

+
+
+
Conversion functions from Action/Func to FSharpFunc +We need these because FuncConvert often makes C# type inference fail. +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpFunc<Unit, Unit> FromAction(Action f)

+
Convert an Action into an F# function returning unit + + + + +
+
+
+

FSharpFunc<l, Unit> FromAction<l>(Action<l> f)

+
Convert an Action into an F# function returning unit + + + + +
+
+
+

FSharpFunc<j, FSharpFunc<k, Unit>> FromAction<j, k>(Action<j, k> f)

+
Convert an Action into an F# function returning unit + + + + +
+
+
+

FSharpFunc<g, FSharpFunc<h, FSharpFunc<i, Unit>>> FromAction<g, h, i>(Action<g, h, i> f)

+
Convert an Action into an F# function returning unit + + + + +
+
+
+

FSharpFunc<Unit, f> FromFunc<f>(Func<f> f)

+
Convert a Func into an F# function + + + + +
+
+
+

FSharpFunc<d, e> FromFunc<d, e>(Func<d, e> f)

+
Convert a Func into an F# function + + + + +
+
+
+

FSharpFunc<a, FSharpFunc<b, c>> FromFunc<a, b, c>(Func<a, b, c> f)

+
Convert a Func into an F# function + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpLazy.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpLazy.htm new file mode 100644 index 0000000..178ed86 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpLazy.htm @@ -0,0 +1,375 @@ + + + + FSharpLazy - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpLazy

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Lazy<a> Create<a>(Func<a> v)

+
+ + + + +
+
+
+

Lazy<a> CreateFromValue<a>(a v)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpList.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpList.htm new file mode 100644 index 0000000..8f66492 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpList.htm @@ -0,0 +1,425 @@ + + + + FSharpList - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpList

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpList<b> Choose<a, b>(this FSharpList<a> l, Func<a, FSharpOption<b>> chooser)

+
+ + + + +
+
+
+

FSharpList<a> Cons<a>(this FSharpList<a> l, a e)

+
+ + + + +
+
+
+

FSharpList<T1> Create<T1>(T1[] values)

+
+ + + + +
+
+
+

b Match<a, b>(this FSharpList<a> l, Func<b> empty, Func<a, FSharpList<a>, b> nonempty)

+
+ + + + +
+
+
+

FSharpList<a> ToFSharpList<a>(this IEnumerable<a> s)

+
+ + + + +
+
+
+

FSharpOption<a> TryFind<a>(this FSharpList<a> l, a value)

+
+ + + + +
+
+
+

FSharpOption<a> TryFind<a>(this FSharpList<a> l, Predicate<a> pred)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpMap.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpMap.htm new file mode 100644 index 0000000..a3a5f5f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpMap.htm @@ -0,0 +1,375 @@ + + + + FSharpMap - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpMap

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpMap<a, b> Create<a, b>(Tuple`2[] values)

+
+ + + + +
+
+
+

FSharpMap<a, b> ToFSharpMap<a, b>(this IEnumerable<Tuple<a, b>> values)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpOption.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpOption.htm new file mode 100644 index 0000000..193fdc5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpOption.htm @@ -0,0 +1,758 @@ + + + + FSharpOption - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpOption

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

void Do<a>(this FSharpOption<a> o, Action<a> f)

+
+ + + + +
+
+
+

a GetOrDefault<a>(this FSharpOption<a> o)

+
+ + + + +
+
+
+

a GetOrElse<a>(this FSharpOption<a> o, a other)

+
+ + + + +
+
+
+

a GetOrElse<a>(this FSharpOption<a> o, Func<a> other)

+
+ + + + +
+
+
+

bool HasValue<a>(this FSharpOption<a> o)

+
+ + + + +
+
+
+

void Match<a>(this FSharpOption<a> o, Action<a> ifSome, Action ifNone)

+
+ + + + +
+
+
+

b Match<a, b>(this FSharpOption<a> o, Func<a, b> ifSome, Func<b> ifNone)

+
+ + + + +
+
+
+

b Match<a, b>(this FSharpOption<a> o, Func<a, b> ifSome, b ifNone)

+
+ + + + +
+
+
+

FSharpOption<a> OrElse<a>(this FSharpOption<a> o, FSharpOption<a> other)

+
Gets the option if Some x, otherwise the supplied default value. + + + + +
+
+
+

FSharpOption<Byte> ParseByte(string s)

+
+ + + + +
+
+
+

FSharpOption<Byte> ParseByte(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<DateTime> ParseDateTime(string s, DateTimeStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<DateTime> ParseDateTime(string s)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> ParseDateTimeOffset(string s, DateTimeStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> ParseDateTimeOffset(string s)

+
+ + + + +
+
+
+

FSharpOption<decimal> ParseDecimal(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<decimal> ParseDecimal(string s)

+
+ + + + +
+
+
+

FSharpOption<double> ParseDouble(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<double> ParseDouble(string s)

+
+ + + + +
+
+
+

FSharpOption<float> ParseFloat(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<float> ParseFloat(string s)

+
+ + + + +
+
+
+

FSharpOption<int> ParseInt(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<int> ParseInt(string s)

+
+ + + + +
+
+
+

FSharpOption<short> ParseInt16(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<short> ParseInt16(string s)

+
+ + + + +
+
+
+

FSharpOption<long> ParseInt64(string s, NumberStyles style, IFormatProvider provider)

+
+ + + + +
+
+
+

FSharpOption<long> ParseInt64(string s)

+
+ + + + +
+
+
+

FSharpOption<b> Select<a, b>(this FSharpOption<a> o, Func<a, b> f)

+
Transforms an option value by using a specified mapping function + + + + +
+
+
+

FSharpOption<b> SelectMany<a, b>(this FSharpOption<a> o, Func<a, FSharpOption<b>> f)

+
Invokes a function on an optional value that itself yields an option + + + + +
+
+
+

FSharpOption<c> SelectMany<a, b, c>(this FSharpOption<a> o, Func<a, FSharpOption<b>> f, Func<a, b, c> mapper)

+
Invokes a function on an optional value that itself yields an option, +and then applies a mapping function + + + + +
+
+
+

FSharpOption<FSharpList<a>> Sequence<a>(this FSharpList<FSharpOption<a>> o)

+
+ + + + +
+
+
+

FSharpOption<a> Some<a>(this a a)

+
+ + + + +
+
+
+

a[] ToArray<a>(this FSharpOption<a> o)

+
Converts the option to an array of length 0 or 1 + + + + +
+
+
+

FSharpChoice<a, b> ToFSharpChoice<a, b>(this FSharpOption<a> o, b other)

+
+ + + + +
+
+
+

FSharpList<a> ToFSharpList<a>(this FSharpOption<a> o)

+
Converts the option to a list of length 0 or 1 + + + + +
+
+
+

FSharpOption<a> ToFSharpOption<a>(this Nullable<a> n)

+
+ + + + +
+
+
+

FSharpOption<a> ToFSharpOption<a>(this a v)

+
+ + + + +
+
+
+

Nullable<a> ToNullable<a>(this FSharpOption<a> o)

+
+ + + + +
+
+
+

FSharpOption<a> Where<a>(this FSharpOption<a> o, Predicate<a> pred)

+
Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + +
+
+ +

Public properties

+ +
+

FSharpOption<Unit> SomeUnit get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpSet.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpSet.htm new file mode 100644 index 0000000..32cd7c6 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/FSharpSet.htm @@ -0,0 +1,365 @@ + + + + FSharpSet - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type FSharpSet

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpSet<a> ToFSharpSet<a>(this IEnumerable<a> values)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Funcs.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Funcs.htm new file mode 100644 index 0000000..55aeff6 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Funcs.htm @@ -0,0 +1,499 @@ + + + + Funcs - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Funcs

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

Func<a, c> AndThen<a, b, c>(this Func<a, b> f, Func<b, c> g)

+
Composes two functions (forward composition). +Mathematically: g. f + + + + +
+
+
+

Func<f, e> Compose<d, e, f>(this Func<d, e> f, Func<f, d> g)

+
Composes two functions. +Mathematically: f. g + + + + +
+
+
+

Func<a9, Func<a10, a11>> Curry<a9, a10, a11>(this Func<a9, a10, a11> f)

+
Converts an uncurried function to a curried function + + + + +
+
+
+

Func<a5, Func<a6, Func<a7, a8>>> Curry<a5, a6, a7, a8>(this Func<a5, a6, a7, a8> f)

+
Converts an uncurried function to a curried function + + + + +
+
+
+

Func<Unit> ToFunc(this Action a)

+
Converts an action to a function returning Unit + + + + +
+
+
+

Func<a17, Unit> ToFunc<a17>(this Action<a17> a)

+
Converts an action to a function returning Unit + + + + +
+
+
+

Func<a15, a16, Unit> ToFunc<a15, a16>(this Action<a15, a16> a)

+
Converts an action to a function returning Unit + + + + +
+
+
+

Func<a12, a13, a14, Unit> ToFunc<a12, a13, a14>(this Action<a12, a13, a14> f)

+
Converts an action to a function returning Unit + + + + +
+
+
+

Action<Tuple<a3, a4>> Tuple<a3, a4>(this Action<a3, a4> f)

+
Converts an action with 2 arguments into an action taking a 2-tuple + + + + +
+
+
+

Action<Tuple<t, a1, a2>> Tuple<t, a1, a2>(this Action<t, a1, a2> f)

+
Converts an action with 3 arguments into an action taking a 3-tuple + + + + +
+
+
+

Action<Tuple<p, q, r, s>> Tuple<p, q, r, s>(this Action<p, q, r, s> f)

+
Converts an action with 4 arguments into an action taking a 4-tuple + + + + +
+
+
+

Action<n, o> Untuple<n, o>(this Action<Tuple<n, o>> f)

+
Converts an action taking a 2-tuple into an action with 2 parameters + + + + +
+
+
+

Action<k, l, m> Untuple<k, l, m>(this Action<Tuple<k, l, m>> f)

+
/// Converts an action taking a 3-tuple into an action with 3 parameters + + + + +
+
+
+

Action<g, h, i, j> Untuple<g, h, i, j>(this Action<Tuple<g, h, i, j>> f)

+
Converts an action taking a 4-tuple into an action with 4 parameters + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/History`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/History`1.htm new file mode 100644 index 0000000..218d293 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/History`1.htm @@ -0,0 +1,402 @@ + + + + History`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type History`1

+

Namespace FSharpx

+

Interfaces IEquatable<History`1>, IStructuralEquatable, IComparable<History`1>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(History`1 obj)

+
+ + + + +
+
+
+

bool Equals(History`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

T Current get;

+
+ +
+
+
+

FSharpList<T> Redos get;

+
+ +
+
+
+

FSharpList<T> Undos get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/IDocument.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IDocument.htm new file mode 100644 index 0000000..d983702 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IDocument.htm @@ -0,0 +1,350 @@ + + + + IDocument - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type IDocument

+

Namespace FSharpx

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/IO.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IO.htm new file mode 100644 index 0000000..62e6479 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IO.htm @@ -0,0 +1,615 @@ + + + + IO - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type IO

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

bool allFilesExist(IEnumerable<string> files)

+
Checks if all given files exists + + + + +
+
+
+

StringBuilder append(string s, StringBuilder builder)

+
Appends a text + + + + +
+
+
+

StringBuilder appendFileNamesIfNotNull(IEnumerable<string> fileNames, StringBuilder builder)

+
Appends all notnull fileNames + + + + +
+
+
+

FSharpFunc<string, FSharpFunc<StringBuilder, StringBuilder>> appendIfFalse(bool p)

+
Appends a text if the predicate is false + + + + +
+
+
+

FSharpFunc<StringBuilder, StringBuilder> appendIfNotNull<a>(a value, string s)

+
Appends a text if the value is not null + + + + +
+
+
+

StringBuilder appendIfTrue(bool p, string s, StringBuilder builder)

+
Appends a text if the predicate is true + + + + +
+
+
+

FSharpFunc<string, FSharpFunc<StringBuilder, StringBuilder>> appendStringIfValueIsNotNull<a>(a value)

+
Appends a text if the value is not null + + + + +
+
+
+

FSharpFunc<string, FSharpFunc<StringBuilder, StringBuilder>> appendStringIfValueIsNotNullOrEmpty(string value)

+
Appends a text if the value is not null or empty + + + + +
+
+
+

void checkFileExists(string fileName)

+
Checks if the file exists on disk. + + + + +
+
+
+

string combinePaths(string path1, string path2)

+
Combines two path strings + + + + +
+
+
+

string convertTextToWindowsLineBreaks(string text)

+
Converts the given text from linux or mac linebreaks to windows line breaks + + + + +
+
+
+

DirectoryInfo directoryInfo(string path)

+
Creates a DirectoryInfo for the given path + + + + +
+
+
+

FileInfo fileInfo(string path)

+
Creates a FileInfo for the given path + + + + +
+
+
+

FileInfo[] filesInDir(DirectoryInfo dir)

+
Gets all files in the directory + + + + +
+
+
+

FileSystemInfo fileSystemInfo(string path)

+
Creates a FileInfo or a DirectoryInfo for the given path + + + + +
+
+
+

string getFullName(string fileName)

+
Converts a file to it's full file system name + + + + +
+
+
+

IEnumerable<string> readFile(string file)

+
Reads a file line by line + + + + +
+
+
+

string readFileAsString(string file)

+
Reads a file as one text + + + + +
+
+
+

void replaceFile(string fileName, IEnumerable<string> lines)

+
Replaces the file with the given string + + + + +
+
+
+

DirectoryInfo[] subDirectories(DirectoryInfo dir)

+
Gets all subdirectories + + + + +
+
+
+

void writeStringToFile(bool append, string file, string text)

+
Writes a single string to a file + + + + +
+
+
+

void writeToFile(bool append, string fileName, IEnumerable<string> lines)

+
Writes a file line by line + + + + +
+
+ +

Public properties

+ +
+

string currentDirectory get;

+
Gets the current directory + +
+
+
+

string directorySeparator get;

+
The directory separator string. On most systems / or \ + +
+
+
+

string LinuxLineBreaks get;

+
+ +
+
+
+

string MacLineBreaks get;

+
+ +
+
+
+

string WindowsLineBreaks get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ISemigroup`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ISemigroup`1.htm new file mode 100644 index 0000000..8bd71da --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ISemigroup`1.htm @@ -0,0 +1,367 @@ + + + + ISemigroup<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ISemigroup<T>

+

Namespace FSharpx

+
+
+
Semigroup (set with associative binary operation) +
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

T Combine(T , T )

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/IState.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IState.htm new file mode 100644 index 0000000..f017a1f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IState.htm @@ -0,0 +1,375 @@ + + + + IState - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type IState

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

void EnterFunction()

+
+ + + + +
+
+
+

void ExitFunction()

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Interpreted.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Interpreted.htm new file mode 100644 index 0000000..a3e9f9a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Interpreted.htm @@ -0,0 +1,362 @@ + + + + Interpreted - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Interpreted

+

Namespace FSharpx

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

FSharpFunc<string, FSharpFunc<string, FSharpOption<ActiveMatch>>> |Match|_| get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeBuilder.htm new file mode 100644 index 0000000..077a3f7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeBuilder.htm @@ -0,0 +1,465 @@ + + + + IterateeBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type IterateeBuilder

+

Namespace FSharpx

+
+ + + +

Public instance methods

+ +
+

Iteratee<Chunk, T> Bind<q, r, s>(Iteratee<Chunk, T> m, FSharpFunc<r, Iteratee<q, s>> f)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> Combine<n, o>(Iteratee<Chunk, T> comp1, Iteratee<Chunk, T> comp2)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> Delay<l, m>(FSharpFunc<Unit, Iteratee<l, m>> f)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> For<a, b, c>(a sequence, FSharpFunc<b, Iteratee<c, Unit>> body)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> Return<a2, a3>(a2 x)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> ReturnFrom<t, a1>(Iteratee<Chunk, T> m)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> TryFinally<h, i>(Iteratee<Chunk, T> m, FSharpFunc<Unit, Unit> compensation)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> TryWith<j, k>(Iteratee<Chunk, T> m, FSharpFunc<Exception, Iteratee<j, k>> handler)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> Using<e, f, g>(e res, FSharpFunc<e, Iteratee<f, g>> body)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> While<d>(FSharpFunc<Unit, bool> guard, Iteratee<Chunk, T> m)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> Zero<p>()

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeModule.htm new file mode 100644 index 0000000..93d59d9 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/IterateeModule.htm @@ -0,0 +1,587 @@ + + + + IterateeModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type IterateeModule

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

Iteratee<Chunk, T> ap<a, b, c>(Iteratee<Chunk, T> m, Iteratee<Chunk, T> f)

+
Sequential application + + + + +
+
+
+

Iteratee<Chunk, T> bind<a, b, c>(FSharpFunc<a, Iteratee<b, c>> f, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> catchError<a, b>(FSharpFunc<Exception, Iteratee<a, b>> h, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<a, b>, Iteratee<a, b>> checkContinue0<a, b>(FSharpFunc<FSharpFunc<Iteratee<a, b>, Iteratee<a, b>>, FSharpFunc<FSharpFunc<Stream<a>, Iteratee<a, b>>, Iteratee<a, b>>> inner)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<a, b>, Iteratee<c, Iteratee<a, b>>> checkDone<a, b, c>(FSharpFunc<FSharpFunc<Stream<a>, Iteratee<a, b>>, Iteratee<c, Iteratee<a, b>>> f)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> checkDoneEx<a, b, c>(Stream<Chunk> extra, FSharpFunc<FSharpFunc<Stream<b>, Iteratee<b, c>>, Iteratee<a, Iteratee<b, c>>> f, Iteratee<Chunk, T> _arg1)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> continueI<a, b>(FSharpFunc<Stream<a>, Iteratee<a, b>> k)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> doneI<a, b>(a x, Stream<Chunk> s)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> empty<T>()

+
Creates an empty asynchronou sequence that immediately ends + + + + +
+
+
+

Iteratee<Chunk, T> enumEOF<a, b, c>(Iteratee<Chunk, T> _arg1)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumErr<a, b, c>(Exception e, a _arg1)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<a, b>, Iteratee<a, b>> enumList<a, b>(FSharpList<a> xs)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> joinI<a, b, c>(Iteratee<Chunk, T> outher)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> lift2<a, b, c, d>(FSharpFunc<a, FSharpFunc<b, c>> f, Iteratee<Chunk, T> a, Iteratee<Chunk, T> b)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> map<a, b, c>(FSharpFunc<a, b> f, Iteratee<Chunk, T> m)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> opt<a, b>(Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> returnI<a, b>(a x)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> returnM<a, b>(a x)

+
Inject a value into the Choice type + + + + +
+
+
+

FSharpChoice<b, Exception> run_<a, b>(Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

b run<a, b>(Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> throw<a, b>(Exception e)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> tryFinally<a, b>(FSharpFunc<Unit, Unit> compensation, Iteratee<Chunk, T> i)

+
+ + + + +
+
+ +

Public properties

+ +
+

IterateeBuilder iteratee get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Iteratee`2.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Iteratee`2.htm new file mode 100644 index 0000000..aaa4cfd --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Iteratee`2.htm @@ -0,0 +1,425 @@ + + + + Iteratee<Chunk, T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Iteratee<Chunk, T>

+

Namespace FSharpx

+
+
+
The iteratee is a stream consumer that will consume a stream of data until either +it receives an EOF or meets its own requirements for consuming data. The iteratee +will return Continue whenever it is ready to receive the next chunk. An iteratee +is fed data by an Enumerator, which generates a Stream. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool get_IsContinue()

+
+ + + + +
+
+ +

Public static methods

+ +
+

Iteratee<Chunk, T> NewContinue(FSharpFunc<Stream<Chunk>, Iteratee<Chunk, T>> item)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> NewDone(T item1, Stream<Chunk> item2)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsContinue get;

+
+ +
+
+
+

bool IsDone get;

+
+ +
+
+
+

bool IsError get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/JArray.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JArray.htm new file mode 100644 index 0000000..74344d4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JArray.htm @@ -0,0 +1,378 @@ + + + + JArray - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type JArray

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

JArray New()

+
+ + + + +
+
+ +

Public properties

+ +
+

List<IDocument> Elements get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/JObject.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JObject.htm new file mode 100644 index 0000000..0cff7fb --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JObject.htm @@ -0,0 +1,363 @@ + + + + JObject - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type JObject

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

Dictionary<string, IDocument> Properties get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSON.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSON.htm new file mode 100644 index 0000000..fd989f7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSON.htm @@ -0,0 +1,385 @@ + + + + JSON - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type JSON

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IDocument fromXml(XDocument xml)

+
+ + + + +
+
+
+

IDocument parse(IEnumerable<Char> source)

+
Parses a JSON source text and returns an JSON AST + + + + +
+
+
+

FSharpList<Token> tokenize(IEnumerable<Char> source)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSONNull.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSONNull.htm new file mode 100644 index 0000000..f7a62a5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/JSONNull.htm @@ -0,0 +1,351 @@ + + + + JSONNull - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type JSONNull

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/L.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/L.htm new file mode 100644 index 0000000..676281e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/L.htm @@ -0,0 +1,387 @@ + + + + L - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type L

+

Namespace FSharpx

+
+
+
Helps the C# compiler with Func type inference. +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

Func<a> F<a>(Func<a> f)

+
Helps the C# compiler with Func type inference. + + + + +
+
+
+

Func<a, b> F<a, b>(Func<a, b> f)

+
Helps the C# compiler with Func type inference. + + + + +
+
+
+

Func<a, b, c> F<a, b, c>(Func<a, b, c> f)

+
Helps the C# compiler with Func type inference. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/LazyModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/LazyModule.htm new file mode 100644 index 0000000..d0c59f4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/LazyModule.htm @@ -0,0 +1,365 @@ + + + + LazyModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type LazyModule

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

T force<T>(Lazy<T> x)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/LensModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/LensModule.htm new file mode 100644 index 0000000..af44fe7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/LensModule.htm @@ -0,0 +1,617 @@ + + + + LensModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type LensModule

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

Lens<T, U> arrayMap<a, b>(Lens<T, U> l)

+
Creates a lens that maps the given lens in an array + + + + +
+
+
+

Lens<T, U> choice<a, b, c>(Lens<T, U> l1, Lens<T, U> l2)

+
Composes two lenses through a sum in the source + + + + +
+
+
+

Lens<T, U> codiag<T>()

+
+ + + + +
+
+
+

Lens<T, U> compose<a, b, c>(Lens<T, U> l1, Lens<T, U> l2)

+
Sequentially composes two lenses + + + + +
+
+
+

Lens<T, U> cond<a, b>(FSharpFunc<a, bool> pred, Lens<T, U> lensTrue, Lens<T, U> lensFalse)

+
pred is applied to source. +If true, lensTrue is selected. +If false, lensFalse is selected. + + + + +
+
+
+

Lens<T, U> forArray<a>(int i)

+
Lens for a particular position in an array + + + + +
+
+
+

Lens<T, U> forList<a>(int i)

+
Lens for a particular position in a list + + + + +
+
+
+

Lens<T, U> forMap<a, b>(a key)

+
Lens for a particular key in a map + + + + +
+
+
+

Lens<T, U> forSet<a>(a value)

+
Lens for a particular value in a set + + + + +
+
+
+

Lens<T, U> fst<a, b>()

+
Gets/sets the fst element in a pair + + + + +
+
+
+

b get<a, b>(a a, Lens<T, U> l)

+
+ + + + +
+
+
+

FSharpFunc<a, Tuple<a, a>> getAndModifyState<a, b>(Lens<T, U> l, FSharpFunc<b, b> f)

+
Modifies the state in a state monad and returns the original value. + + + + +
+
+
+

Tuple<b, a> getState<a, b>(Lens<T, U> l, a a)

+
Applies a lens in the 'get' direction within a state monad + + + + +
+
+
+

Lens<T, U> id<a>()

+
Identity lens + + + + +
+
+
+

Lens<T, U> ignore<a>()

+
+ + + + +
+
+
+

Lens<T, U> listMap<a, b>(Lens<T, U> l)

+
Creates a lens that maps the given lens in a list + + + + +
+
+
+

Lens<T, U> listToArray<a, b>(Lens<T, U> l)

+
Converts a lens that views a list into a lens that views an array + + + + +
+
+
+

FSharpFunc<a, Tuple<a, a>> modifyAndGetState<a, b>(Lens<T, U> l, FSharpFunc<b, b> f)

+
Modifies the state in a state monad and returns the modified value. + + + + +
+
+
+

Lens<T, U> pair<a, b, c, d>(Lens<T, U> l1, Lens<T, U> l2)

+
Pair two lenses + + + + +
+
+
+

Lens<T, U> seqMap<a, b>(Lens<T, U> l)

+
Creates a lens that maps the given lens in a sequence + + + + +
+
+
+

b set<a, b>(a v, b a, Lens<T, U> l)

+
+ + + + +
+
+
+

Tuple<Unit, a> setState<a, b>(Lens<T, U> l, b v, a a)

+
Applies a lens in the 'set' direction within a state monad + + + + +
+
+
+

Lens<T, U> snd<a, b>()

+
Gets/sets the snd element in a pair + + + + +
+
+
+

FSharpFunc<b, b> update<a, b>(FSharpFunc<a, a> f, Lens<T, U> l)

+
+ + + + +
+
+
+

Tuple<Unit, a> updateState<a, b>(Lens<T, U> l, FSharpFunc<b, b> f, a a)

+
Update through a lens within a state monad + + + + +
+
+
+

Lens<T, U> xmap<a, b, c>(FSharpFunc<a, b> f, FSharpFunc<b, a> g, Lens<T, U> l)

+
Applies an isomorphism to the value viewed through a lens + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Lens`2.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Lens`2.htm new file mode 100644 index 0000000..7f65cf9 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Lens`2.htm @@ -0,0 +1,384 @@ + + + + Lens<T, U> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Lens<T, U>

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

T Update(FSharpFunc<U, U> f, T a)

+
+ + + + +
+
+ + +

Public properties

+ +
+

FSharpFunc<T, U> Get get;

+
+ +
+
+
+

FSharpFunc<U, FSharpFunc<T, T>> Set get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListModule.htm new file mode 100644 index 0000000..3c12316 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListModule.htm @@ -0,0 +1,631 @@ + + + + ListModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ListModule

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<Iteratee<b, c>, Iteratee<FSharpList<a>, Iteratee<b, c>>> concatMap<a, b, c>(FSharpFunc<a, b> f)

+
+ + + + +
+
+
+

Tuple<b, FSharpList<a>> connect<a, b>(Iteratee<Chunk, T> sink, FSharpList<a> source)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> consume<T>()

+
+ + + + +
+
+
+

Iteratee<Chunk, T> drop<a>(int n)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> dropUntil<a>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> dropWhile<a>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumerate<a, b>(FSharpList<a> str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumeratePure1Chunk<a, b>(FSharpList<a> str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> enumeratePureNChunk<a, b>(int n, FSharpList<a> str, Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<a>, b>, Iteratee<FSharpList<a>, Iteratee<FSharpList<a>, b>>> filter<a, b>(FSharpFunc<a, bool> p)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> fold<a, b>(FSharpFunc<a, FSharpFunc<b, a>> step, a seed)

+
O(n). Fold the values in the map, such that fold f z == Prelude.foldr f z. elems. Credit: Haskell.org + + + + +
+
+
+

Iteratee<Chunk, T> head<T>()

+
O(1), worst case. Returns the first element. + + + + +
+
+
+

Iteratee<Chunk, T> heads<a>(FSharpList<a> str)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> isolate<a, b>(int n, Iteratee<Chunk, T> _arg1)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<a>, b>, Iteratee<FSharpList<a>, Iteratee<FSharpList<a>, b>>> isolateUntil<a, b>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<a>, b>, Iteratee<FSharpList<a>, Iteratee<FSharpList<a>, b>>> isolateWhile<a, b>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> length<T>()

+
O(1). Returns the count of elememts. + + + + +
+
+
+

Iteratee<Chunk, T> many<a, b>(Iteratee<Chunk, T> i)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<b>, c>, Iteratee<FSharpList<a>, Iteratee<FSharpList<b>, c>>> map<a, b, c>(FSharpFunc<a, b> f)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> peek<T>()

+
O(1). Returns the first element. + + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<a>, b>, Iteratee<FSharpList<a>, b>> repeat<a, b>(a a)

+
+ + + + +
+
+
+

FSharpFunc<Iteratee<FSharpList<a>, b>, Iteratee<FSharpList<a>, b>> replicate<a, b>(int maxCount, a getNext)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> take<a>(int n)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> takeUntil<a>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+
+

Iteratee<Chunk, T> takeWhile<a>(FSharpFunc<a, bool> pred)

+
+ + + + +
+
+ +

Public properties

+ +
+

Iteratee<Chunk, T> readLine get;

+
+ +
+
+
+

Iteratee<Chunk, T> readLines get;

+
+ +
+
+
+

Iteratee<Chunk, T> skipNewline get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListQueue.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListQueue.htm new file mode 100644 index 0000000..70c1c5a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ListQueue.htm @@ -0,0 +1,425 @@ + + + + ListQueue - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ListQueue

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpFunc<TLog, a> dequeue<a>(Queue`1 queue)

+
+ + + + +
+
+
+

FSharpFunc<TLog, Unit> enqueue<a>(Queue`1 queue, a item)

+
+ + + + +
+
+
+

FSharpFunc<TLog, Unit> ifM(bool p, FSharpFunc<TLog, Unit> x)

+
+ + + + +
+
+
+

FSharpFunc<TLog, b> liftM<a, b>(FSharpFunc<a, b> f, FSharpFunc<TLog, a> x)

+
+ + + + +
+
+
+

Queue`1 new_queue<a>()

+
+ + + + +
+
+
+

Queue`1 ofList<a>(FSharpList<a> list)

+
O(n), worst case. Returns a deque of the list. + + + + +
+
+
+

FSharpFunc<TLog, FSharpList<a>> toList<a>(Queue`1 queue)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/MaybeBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/MaybeBuilder.htm new file mode 100644 index 0000000..c46514d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/MaybeBuilder.htm @@ -0,0 +1,425 @@ + + + + MaybeBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type MaybeBuilder

+

Namespace FSharpx

+
+ + + +

Public instance methods

+ +
+

FSharpOption<p> Bind<o, p>(FSharpOption<o> m, FSharpFunc<o, FSharpOption<p>> f)

+
+ + + + +
+
+
+

FSharpOption<m> Combine<l, m>(FSharpOption<l> m, FSharpFunc<l, FSharpOption<m>> f)

+
+ + + + +
+
+
+

FSharpOption<c> For<a, b, c>(IEnumerable<a> sequence, FSharpFunc<a, FSharpOption<b>> body)

+
+ + + + +
+
+
+

FSharpOption<T> ReturnFrom<T>(FSharpOption<T> m)

+
+ + + + +
+
+
+

FSharpOption<h> TryFinally<h>(FSharpOption<h> m, FSharpFunc<Unit, Unit> compensation)

+
+ + + + +
+
+
+

FSharpOption<i> TryWith<i>(FSharpOption<i> m, FSharpFunc<Exception, FSharpOption<i>> h)

+
+ + + + +
+
+
+

FSharpOption<e> While<d, e>(FSharpFunc<Unit, bool> guard, FSharpFunc<Unit, FSharpOption<d>> f)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid.htm new file mode 100644 index 0000000..91842ea --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid.htm @@ -0,0 +1,476 @@ + + + + Monoid - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Monoid

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

Monoid<T> dual<a>(Monoid<T> m)

+
The dual of a monoid, obtained by swapping the arguments of 'Combine'. + + + + +
+
+
+

Monoid<T> endo<T>()

+
+ + + + +
+
+
+

Monoid<T> product<a>()

+
Monoid (a,1,*) + + + + +
+
+
+

Monoid<T> sum<a>()

+
Monoid (a,0,+) + + + + +
+
+
+

Monoid<T> tuple2<a, b>(Monoid<T> a, Monoid<T> b)

+
+ + + + +
+
+
+

Monoid<T> tuple3<T, b, c>(Monoid<T> a, Monoid<T> b, Monoid<T> c)

+
+ + + + +
+
+ +

Public properties

+ +
+

Monoid<T> all get;

+
+ +
+
+
+

Monoid<T> any get;

+
+ +
+
+
+

Monoid<T> maxInt get;

+
+ +
+
+
+

Monoid<T> minInt get;

+
+ +
+
+
+

Monoid<T> productInt get;

+
Monoid (int,1,*) + +
+
+
+

Monoid<T> string get;

+
+ +
+
+
+

Monoid<T> sumInt get;

+
Monoid (int,0,+) + +
+
+
+

Monoid<T> unit get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid`1.htm new file mode 100644 index 0000000..0a2fa32 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Monoid`1.htm @@ -0,0 +1,448 @@ + + + + Monoid<T> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Monoid<T>

+

Namespace FSharpx

+

Interfaces ISemigroup<T>

+
+
+
Monoid (associative binary operation with identity) +
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

T Concat(IEnumerable<T> a)

+
Fold a list using this monoid + + + + +
+
+
+

a Delay<a>(FSharpFunc<Unit, a> f)

+
+ + + + +
+
+
+

bool Equals(object obj)

+
Compares two objects for equality. When both are byte strings, structural equality is used. + + + + +
+
+
+

T For(IEnumerable<T> sequence, FSharpFunc<T, T> body)

+
+ + + + +
+
+
+

int GetHashCode()

+
Gets the hash code for the byte string. + + + + +
+
+
+

Type GetType()

+
+ + + + +
+
+
+

string ToString()

+
+ + + + +
+
+
+

a Yield<a>(a a)

+
+ + + + +
+
+
+

T Zero()

+
Identity + + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node.htm new file mode 100644 index 0000000..e8af8f7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node.htm @@ -0,0 +1,395 @@ + + + + Node - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Node

+

Namespace FSharpx

+

Interfaces IEquatable<Node>, IStructuralEquatable, IComparable<Node>, IComparable, IStructuralComparable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(Node obj)

+
+ + + + +
+
+
+

bool Equals(Node obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

string Name get;

+
+ +
+
+
+

FSharpList<Tuple<FSharpOption<string>, Node>> NextNodes get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node`1.htm new file mode 100644 index 0000000..ac2e24d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Node`1.htm @@ -0,0 +1,411 @@ + + + + Node`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Node`1

+

Namespace FSharpx

+

Interfaces IEquatable<Node`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(Node`1 obj)

+
+ + + + +
+
+ +

Public static methods

+ +
+

Node`1 NewCons(T item1, TVar`1 item2)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsCons get;

+
+ +
+
+
+

bool IsNil get;

+
+ +
+
+
+

Node`1 Nil get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListEx.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListEx.htm new file mode 100644 index 0000000..d3d3494 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListEx.htm @@ -0,0 +1,395 @@ + + + + NonEmptyListEx - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type NonEmptyListEx

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

NonEmptyList<T> Concat<a>(this NonEmptyList<T> x, FSharpList<a> y)

+
+ + + + +
+
+
+

NonEmptyList<T> Concat<a>(this NonEmptyList<T> x, NonEmptyList<T> y)

+
+ + + + +
+
+
+

NonEmptyList<T> Cons<a>(this NonEmptyList<T> list, a head)

+
+ + + + +
+
+
+

NonEmptyList<T> Select<a, b>(this NonEmptyList<T> list, Func<a, b> mapper)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListValidation`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListValidation`1.htm new file mode 100644 index 0000000..530b9ad --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/NonEmptyListValidation`1.htm @@ -0,0 +1,351 @@ + + + + NonEmptyListValidation`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type NonEmptyListValidation`1

+

Namespace FSharpx

+

Parent CustomValidation`1

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Nullable.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Nullable.htm new file mode 100644 index 0000000..6625daa --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Nullable.htm @@ -0,0 +1,626 @@ + + + + Nullable - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Nullable

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

Nullable<b> bind<a, b>(FSharpFunc<a, Nullable<b>> f, Nullable<a> x)

+
Monadic bind + + + + +
+
+
+

Nullable<Byte> Byte.get_n(Byte )

+
+ + + + +
+
+
+

int count<a>(Nullable<a> x)

+
Returns 1 if Nullable has value, otherwise 0 + + + + +
+
+
+

Nullable<a> create<a>(a x)

+
+ + + + +
+
+
+

Nullable<decimal> Decimal.get_n(decimal )

+
+ + + + +
+
+
+

Nullable<double> Double.get_n(double )

+
+ + + + +
+
+
+

bool exists<a>(FSharpFunc<Nullable<a>, bool> p, Nullable<a> x)

+
Evaluates the equivalent of List.exists for a nullable. + + + + +
+
+
+

a fold<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, a state, Nullable<b> x)

+
Evaluates the equivalent of List.fold for a nullable. + + + + +
+
+
+

b foldBack<a, b>(FSharpFunc<Nullable<a>, FSharpFunc<b, b>> f, Nullable<a> x, b state)

+
Performs the equivalent of the List.foldBack operation on a nullable. + + + + +
+
+
+

bool forall<a>(FSharpFunc<Nullable<a>, bool> p, Nullable<a> x)

+
Evaluates the equivalent of List.forall for a nullable. + + + + +
+
+
+

a get<a>(Nullable<a> x)

+
Gets the value associated with the Nullable. +If no value, throws. + + + + +
+
+
+

a getOrDefault<a>(Nullable<a> n, a v)

+
Gets the value associated with the nullable or the supplied default value. + + + + +
+
+
+

T getOrElse<T>(Nullable<T> n, Lazy<T> v)

+
Gets the value associated with the nullable or the supplied default value. + + + + +
+
+
+

bool hasValue<a>(Nullable<a> x)

+
True if Nullable has value + + + + +
+
+
+

Nullable<int> Int32.get_n(int )

+
+ + + + +
+
+
+

Nullable<long> Int64.get_n(long )

+
+ + + + +
+
+
+

bool isNull<a>(Nullable<a> x)

+
True if Nullable does not have value + + + + +
+
+
+

void iter<a>(FSharpFunc<a, Unit> f, Nullable<a> x)

+
Executes a function for a nullable value. + + + + +
+
+
+

Nullable<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, Nullable<a> a, Nullable<b> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

Nullable<b> map<a, b>(FSharpFunc<a, b> f, Nullable<a> x)

+
Transforms a Nullable value by using a specified mapping function. + + + + +
+
+
+

bool mapBool<a, b>(FSharpFunc<a, FSharpFunc<b, bool>> op, Nullable<a> a, Nullable<b> b)

+
+ + + + +
+
+
+

Nullable<bool> notn(Nullable<bool> a)

+
+ + + + +
+
+
+

FSharpFunc<FSharpOption<a>, Nullable<a>> ofOption<a>()

+
Converts option to nullable + + + + +
+
+
+

Nullable<float> Single.get_n(float )

+
+ + + + +
+
+
+

a[] toArray<a>(Nullable<a> x)

+
Convert the nullable to an array of length 0 or 1. + + + + +
+
+
+

FSharpList<a> toList<a>(Nullable<a> x)

+
Convert the nullable to a list of length 0 or 1. + + + + +
+
+
+

FSharpFunc<Nullable<a>, FSharpOption<a>> toOption<a>()

+
Converts nullable to option + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Number.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Number.htm new file mode 100644 index 0000000..682760a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Number.htm @@ -0,0 +1,363 @@ + + + + Number - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Number

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

double Value get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Operators.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Operators.htm new file mode 100644 index 0000000..59dbabc --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Operators.htm @@ -0,0 +1,397 @@ + + + + Operators - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Operators

+

Namespace FSharpx

+
+
+
Generic monadic operators +
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

d applyM<M1, a, b, c, d, M2, e>(M1 builder1, M2 builder2, a f, e m)

+
Sequential application + + + + +
+
+
+

c bindM<M, d, e, c>(M builder, d m, FSharpFunc<e, c> f)

+
+ + + + +
+
+
+

c liftM<a, b, c, d, e>(a builder, FSharpFunc<e, b> f, d m)

+
+ + + + +
+
+
+

c returnM<M, b, c>(M builder, b x)

+
Inject a value into the monadic type + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Option.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Option.htm new file mode 100644 index 0000000..5313ab0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Option.htm @@ -0,0 +1,562 @@ + + + + Option - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Option

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpOption<b> ap<a, b>(FSharpOption<a> m, FSharpOption<FSharpFunc<a, b>> f)

+
Sequential application + + + + +
+
+
+

FSharpOption<a> concat<a>(FSharpOption<FSharpOption<a>> x)

+
Concatenates an option of option. + + + + +
+
+
+

FSharpOption<a> filter<a>(FSharpFunc<a, bool> pred, FSharpOption<a> _arg1)

+
Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + +
+
+
+

FSharpOption<output> fromTryPattern<input, output>(FSharpFunc<input, Tuple<bool, output>> tryFun, input input)

+
transforms a function in the Try...(input, out output) style +into a function of type: input -> output Option +Example: fromTryPattern(System.Double.TryParse) +See Examples.Option + + + + +
+
+
+

a getOrDefault<a>(FSharpOption<a> _arg1)

+
Gets the value associated with the option or the default value for the type. + + + + +
+
+
+

a getOrElse<a>(a v, FSharpOption<a> _arg1)

+
Gets the value associated with the option or the supplied default value. + + + + +
+
+
+

a getOrElseF<a>(FSharpFunc<Unit, a> v, FSharpOption<a> _arg1)

+
Gets the value associated with the option or the supplied default value from a function. + + + + +
+
+
+

a getOrElseLazy<a>(Lazy<a> v, FSharpOption<a> _arg1)

+
Gets the value associated with the option or the supplied default value. + + + + +
+
+
+

a getOrElseWith<a, b>(a v, FSharpFunc<b, a> f, FSharpOption<b> _arg1)

+
+ + + + +
+
+
+

FSharpOption<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpOption<a> a, FSharpOption<b> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

Monoid<T> monoid<a>(ISemigroup<T> m)

+
Option wrapper monoid + + + + +
+
+
+

FSharpOption<Unit> ofBool(bool b)

+
True -> Some(), False -> None + + + + +
+
+
+

FSharpOption<a> ofBoolAndValue<a>(bool b_0, a b_1)

+
If true,value then returns Some value. Otherwise returns None. +Useful to process TryXX style functions. + + + + +
+
+
+

FSharpOption<a> ofChoice<a, b>(FSharpChoice<a, b> _arg1)

+
Maps Choice 1Of2 to Some value, otherwise None. + + + + +
+
+
+

FSharpOption<a> ofNullable<a>(Nullable<a> n)

+
Maps a Nullable to Option + + + + +
+
+
+

U option<U, T>(U defaultValue, FSharpFunc<T, U> map, FSharpOption<T> _arg1)

+
Haskell-style maybe operator + + + + +
+
+
+

FSharpOption<a> orElse<a>(FSharpOption<a> v, FSharpOption<a> _arg1)

+
Gets the option if Some x, otherwise the supplied default value. + + + + +
+
+
+

Nullable<a> toNullable<a>(FSharpOption<a> _arg1)

+
Maps an Option to Nullable + + + + +
+
+
+

FSharpFunc<a, FSharpOption<b>> tryParseWith<a, b>(FSharpFunc<a, Tuple<bool, b>> func)

+
Converts a function returning bool,value to a function returning value option. +Useful to process TryXX style functions. + + + + +
+
+ +

Public properties

+ +
+

MaybeBuilder maybe get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Prelude.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Prelude.htm new file mode 100644 index 0000000..7a8bdea --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Prelude.htm @@ -0,0 +1,725 @@ + + + + Prelude - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Prelude

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpOption<bool> Boolean.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<Byte> Byte.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<Byte> Byte.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

c curry<a, b, c>(FSharpFunc<Tuple<a, b>, c> f, a a, b b)

+
+ + + + +
+
+
+

FSharpOption<DateTime> DateTime.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<DateTime> DateTime.parseExact.Static(String[] formats, string x)

+
+ + + + +
+
+
+

FSharpOption<DateTime> DateTime.parseExactWithOptions.Static(DateTimeStyles style, IFormatProvider provider, String[] formats, string x)

+
+ + + + +
+
+
+

FSharpOption<DateTime> DateTime.parseWithOptions.Static(DateTimeStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> DateTimeOffset.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> DateTimeOffset.parseExact.Static(String[] formats, string x)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> DateTimeOffset.parseExactWithOptions.Static(DateTimeStyles style, IFormatProvider provider, String[] formats, string x)

+
+ + + + +
+
+
+

FSharpOption<DateTimeOffset> DateTimeOffset.parseWithOptions.Static(DateTimeStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

FSharpOption<decimal> Decimal.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<decimal> Decimal.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

FSharpOption<double> Double.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<double> Double.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

b fix<a, b>(FSharpFunc<FSharpFunc<a, b>, FSharpFunc<a, b>> f, a x)

+
+ + + + +
+
+
+

c fix2<a, b, c>(FSharpFunc<FSharpFunc<a, FSharpFunc<b, c>>, FSharpFunc<a, FSharpFunc<b, c>>> f, a x, b y)

+
+ + + + +
+
+
+

d fix3<a, b, c, d>(FSharpFunc<FSharpFunc<a, FSharpFunc<b, FSharpFunc<c, d>>>, FSharpFunc<a, FSharpFunc<b, FSharpFunc<c, d>>>> f, a x, b y, c z)

+
+ + + + +
+
+
+

c flip<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, b a, a b)

+
+ + + + +
+
+
+

FSharpOption<short> Int16.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<short> Int16.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

FSharpOption<int> Int32.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<int> Int32.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

FSharpOption<long> Int64.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<long> Int64.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

a konst<a, b>(a a, b _arg1)

+
+ + + + +
+
+
+

a konst2<a, b, c>(a a, b _arg2, c _arg1)

+
+ + + + +
+
+
+

FSharpOption<float> Single.parse.Static(string x)

+
+ + + + +
+
+
+

FSharpOption<float> Single.parseWithOptions.Static(NumberStyles style, IFormatProvider provider, string x)

+
+ + + + +
+
+
+

Tuple<b, a> swap<a, b>(a a, b b)

+
+ + + + +
+
+
+

Tuple<a, b> tuple2<a, b>(a a, b b)

+
Creates a pair + + + + +
+
+
+

Tuple<a, b, c> tuple3<a, b, c>(a a, b b, c c)

+
Creates a 3-tuple + + + + +
+
+
+

Tuple<a, b, c, d> tuple4<a, b, c, d>(a a, b b, c c, d d)

+
Creates a 4-tuple + + + + +
+
+
+

Tuple<a, b, c, d, e> tuple5<a, b, c, d, e>(a a, b b, c c, d d, e e)

+
Creates a 5-tuple + + + + +
+
+
+

Tuple<a, b, c, d, e, f> tuple6<a, b, c, d, e, f>(a a, b b, c c, d d, e e, f f)

+
Creates a 6-tuple + + + + +
+
+
+

c uncurry<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, a a, b b)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Queue`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Queue`1.htm new file mode 100644 index 0000000..791f9de --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Queue`1.htm @@ -0,0 +1,406 @@ + + + + Queue`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Queue`1

+

Namespace FSharpx

+

Interfaces IEquatable<Queue`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(Queue`1 obj)

+
+ + + + +
+
+ + +

Public properties

+ +
+

TVar`1[] a get;

+
+ +
+
+ +
+

TVar`1 last get;

+
+ +
+
+
+

int len get;

+
+ +
+
+
+

TVar`1 used get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Reader.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Reader.htm new file mode 100644 index 0000000..763d1a7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Reader.htm @@ -0,0 +1,407 @@ + + + + Reader - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Reader

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + + +

Public static methods

+ +
+

FSharpFunc<R, R> ask<R>()

+
+ + + + +
+
+
+

FSharpFunc<a, b> asks<a, b>(FSharpFunc<a, b> f)

+
+ + + + +
+
+
+

c bind<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> k, FSharpFunc<b, a> m, b r)

+
+ + + + +
+
+
+

FSharpFunc<r1, T> local<r1, r2, T>(FSharpFunc<r1, r2> f, FSharpFunc<r2, T> m)

+
+ + + + +
+
+ +

Public properties

+ +
+

ReaderBuilder reader get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ReaderBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ReaderBuilder.htm new file mode 100644 index 0000000..e39fe4b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ReaderBuilder.htm @@ -0,0 +1,350 @@ + + + + ReaderBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ReaderBuilder

+

Namespace FSharpx

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/RegexModule.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/RegexModule.htm new file mode 100644 index 0000000..8a7e312 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/RegexModule.htm @@ -0,0 +1,395 @@ + + + + RegexModule - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type RegexModule

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

string replaceWith(FSharpList<string> replacements, string input, Regex rx)

+
+ + + + +
+
+
+

Tuple<a, string> replaceWithAcc<a>(FSharpFunc<a, FSharpFunc<Match, Tuple<a, string>>> folder, a state, string input, Regex rx)

+
+ + + + +
+
+
+

FSharpOption<ActiveMatch> tryMatch(string pattern, string input)

+
+ + + + +
+
+
+

FSharpOption<ActiveMatch> tryMatchWithOptions(RegexOptions flags, string pattern, string input)

+
flags:RegexOptions -> pattern:string -> input:string -> Regex.ActiveMatch option + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Result`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Result`1.htm new file mode 100644 index 0000000..cfcb31f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Result`1.htm @@ -0,0 +1,448 @@ + + + + Result`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Result`1

+

Namespace FSharpx

+

Interfaces IEquatable<Result`1>, IStructuralEquatable

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool Equals(Result`1 obj)

+
+ + + + +
+
+
+

bool get_IsCanceled()

+
+ + + + +
+
+
+

bool get_IsSuccessful()

+
+ + + + +
+
+ +

Public static methods

+ +
+

Result`1 get_Canceled()

+
+ + + + +
+
+
+

Result`1 NewSuccessful(T item)

+
+ + + + +
+
+ +

Public properties

+ +
+

Result`1 Canceled get;

+
+ +
+
+
+

bool IsCanceled get;

+
+ +
+
+
+

bool IsError get;

+
+ +
+
+
+

bool IsSuccessful get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/RoseTree.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/RoseTree.htm new file mode 100644 index 0000000..85dce2e --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/RoseTree.htm @@ -0,0 +1,425 @@ + + + + RoseTree - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type RoseTree

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

RoseTree<a> Create<a>(a root, LazyList<T> children)

+
+ + + + +
+
+
+

RoseTree<a> Create<a>(a root, RoseTree`1[] children)

+
+ + + + +
+
+
+

RoseTree<a> Select<a, b>(this RoseTree<a> tree, Func<a, b> f)

+
+ + + + +
+
+
+

Tuple<b, RoseTree<c>> SelectAccum<a, b, c>(this RoseTree<a> o, b state, Func<b, a, Tuple<b, c>> f)

+
+ + + + +
+
+
+

RoseTree<a> SelectMany<a, b>(this RoseTree<a> o, Func<a, RoseTree<b>> f)

+
+ + + + +
+
+
+

RoseTree<a> SelectMany<a, b, c>(this RoseTree<a> o, Func<a, RoseTree<b>> f, Func<a, b, c> mapper)

+
+ + + + +
+
+
+

RoseTree<a> Singleton<a>(a x)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Semigroup.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Semigroup.htm new file mode 100644 index 0000000..d77b169 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Semigroup.htm @@ -0,0 +1,375 @@ + + + + Semigroup - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Semigroup

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

ISemigroup<T> max<T>()

+
+ + + + +
+
+
+

ISemigroup<T> min<T>()

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/State.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/State.htm new file mode 100644 index 0000000..09b376d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/State.htm @@ -0,0 +1,446 @@ + + + + State - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type State

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(State obj)

+
+ + + + +
+
+
+

bool Equals(State obj)

+
+ + + + +
+
+ +

Public static methods

+ +
+

c bind<a, b, c, d>(FSharpFunc<a, FSharpFunc<b, c>> k, FSharpFunc<d, Tuple<a, b>> m, d s)

+
+ + + + +
+
+
+

Tuple<Unit, a> empty<a>(a s)

+
+ + + + +
+
+
+

b eval<a, b, c>(FSharpFunc<a, Tuple<b, c>> m, a s)

+
+ + + + +
+
+
+

Tuple<a, a> getState<a>(a s)

+
+ + + + +
+
+
+

Tuple<Unit, a> putState<a, b>(a s, b _arg1)

+
+ + + + +
+
+ +

Public properties

+ +
+

string Name get;

+
+ +
+
+
+

StateBuilder state get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateBuilder.htm new file mode 100644 index 0000000..e5c530a --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateBuilder.htm @@ -0,0 +1,350 @@ + + + + StateBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type StateBuilder

+

Namespace FSharpx

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateMachine.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateMachine.htm new file mode 100644 index 0000000..6f6b24f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateMachine.htm @@ -0,0 +1,418 @@ + + + + StateMachine - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type StateMachine

+

Namespace FSharpx

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

FSharpOption<FSharpList<string>> FindShortestPathTo(string startNode, string targetNode)

+
+ + + + +
+
+
+

void SetFunction(string name, IState state)

+
+ + + + +
+
+
+

void TransitTo(string state)

+
+ + + + +
+
+ + +

Public properties

+ +
+

Node CurrentNode get;

+
+ +
+
+
+

string CurrentState get; set;

+
+ +
+
+ +
+

FSharpList<Node> Nodes get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateOperators.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateOperators.htm new file mode 100644 index 0000000..2439ef5 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StateOperators.htm @@ -0,0 +1,350 @@ + + + + StateOperators - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type StateOperators

+

Namespace FSharpx

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stm.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stm.htm new file mode 100644 index 0000000..6885c69 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stm.htm @@ -0,0 +1,352 @@ + + + + Stm - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Stm

+

Namespace FSharpx

+
+
+
The Software Transactional Memory monad. +
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/StmBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StmBuilder.htm new file mode 100644 index 0000000..d9b92e3 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/StmBuilder.htm @@ -0,0 +1,395 @@ + + + + StmBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type StmBuilder

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

FSharpFunc<TLog, g> Bind<f, g>(FSharpFunc<TLog, f> p, FSharpFunc<f, FSharpFunc<TLog, g>> rest)

+
+ + + + +
+
+
+

FSharpFunc<TLog, b> Combine<b>(FSharpFunc<TLog, b> p, FSharpFunc<TLog, b> q)

+
+ + + + +
+
+
+

FSharpFunc<TLog, e> Let<d, e>(d p, FSharpFunc<d, FSharpFunc<TLog, e>> rest)

+
+ + + + +
+
+
+

FSharpFunc<TLog, h> ReturnFrom<h>(FSharpFunc<TLog, h> m)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stream`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stream`1.htm new file mode 100644 index 0000000..a06c756 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Stream`1.htm @@ -0,0 +1,469 @@ + + + + Stream<Chunk> - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Stream<Chunk>

+

Namespace FSharpx

+

Interfaces IEquatable<Stream<Chunk>>, IStructuralEquatable, IComparable<Stream<Chunk>>, IComparable, IStructuralComparable

+
+
+
A stream of chunks of data generated by an Enumerator. +The stream can be composed of chunks of 'T, empty blocks indicating a wait, or an EOF marker. +Be aware that when using #seq<_> types, you will need to check for both Seq.empty ([]) and Empty. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

int CompareTo(Stream<Chunk> obj)

+
+ + + + +
+
+
+

bool Equals(Stream<Chunk> obj)

+
+ + + + +
+
+
+

bool get_IsChunk()

+
+ + + + +
+
+
+

bool get_IsEOF()

+
+ + + + +
+
+ +

Public static methods

+ +
+

Stream<Chunk> get_EOF()

+
+ + + + +
+
+
+

Stream<Chunk> NewChunk(Chunk item)

+
+ + + + +
+
+ +

Public properties

+ +
+

Stream<Chunk> Empty get;

+
+ +
+
+
+

Stream<Chunk> EOF get;

+
+ +
+
+
+

bool IsChunk get;

+
+ +
+
+
+

bool IsEmpty get;

+
+ +
+
+
+

bool IsEOF get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Strings.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Strings.htm new file mode 100644 index 0000000..1a52e14 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Strings.htm @@ -0,0 +1,601 @@ + + + + Strings - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Strings

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

bool contains(string substr, string t)

+
Returns a value indicating whether the specified substring occurs within this string + + + + +
+
+
+

Type inferType(IEnumerable<string> values)

+
Checks whether all values of the sequence can be inferred to a special type + + + + +
+
+
+

bool isBool(string s)

+
Checks whether the string is a boolean value + + + + +
+
+
+

bool isFloat(string s)

+
Checks whether the string is a float + + + + +
+
+
+

bool isInt(string s)

+
Checks whether the string is an int32 + + + + +
+
+
+

bool isInt64(string s)

+
Checks whether the string is an int64 + + + + +
+
+
+

bool isNewline(Char c)

+
+ + + + +
+
+
+

bool isNullOrEmpty(string text)

+
Returns if the string is null or empty + + + + +
+
+
+

string joinLines(FSharpList<string> input)

+
Creates newline seperated string from the string list + + + + +
+
+
+

string joinWords(FSharpList<string> input)

+
Folds the string list by seperating entries with a single space + + + + +
+
+
+

string niceName(string s)

+
Turns a string into a nice PascalCase identifier + + + + +
+
+
+

string pluralize(string noun)

+
Returns the pluralized version of a noun + + + + +
+
+
+

string replace(string pattern, string replacement, string text)

+
Replaces the given "replacement" for every occurence of the pattern in the given text + + + + +
+
+
+

FSharpOption<Char> satisfies(FSharpFunc<Char, bool> predicate, FSharpOption<Char> charOption)

+
+ + + + +
+
+
+

string separatedBy(string delimiter, IEnumerable<string> items)

+
Converts a sequence of strings to a single string separated with the delimiters + + + + +
+
+
+

string singularize(string noun)

+
Returns the singularized version of a noun + + + + +
+
+
+

String[] split(Char delimiter, string text)

+
Splits the given string at the given delimiter + + + + +
+
+
+

IEnumerable<string> splitBy(FSharpFunc<Char, bool> isDelimiter, string str)

+
Returns a sequence of strings split by the predicate + + + + +
+
+
+

bool startsWith(string prefix, string text)

+
Checks whether the given text starts with the given prefix + + + + +
+
+
+

Char[] toCharArray(string str)

+
+ + + + +
+
+
+

IEnumerable<string> toLines(string input)

+
Splits a string based on newlines + + + + +
+
+
+

IEnumerable<string> toWords(string input)

+
Splits a string based on whitespace (spaces, tabs, and newlines) + + + + +
+
+ +

Public properties

+ +
+

FSharpFunc<FSharpOption<Char>, FSharpOption<Char>> |LetterDigit|_| get;

+
+ +
+
+
+

FSharpFunc<FSharpOption<Char>, FSharpOption<Char>> |Lower|_| get;

+
+ +
+
+
+

FSharpFunc<FSharpOption<Char>, FSharpOption<Char>> |Upper|_| get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TLog.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TLog.htm new file mode 100644 index 0000000..7233d5b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TLog.htm @@ -0,0 +1,477 @@ + + + + TLog - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TLog

+

Namespace FSharpx

+
+ + + +

Public instance methods

+ +
+

void OrElse(FSharpFunc<TLog, Unit> p, FSharpFunc<TLog, Unit> q)

+
+ + + + +
+
+
+

T OrElse<T>(FSharpFunc<TLog, T> p, FSharpFunc<TLog, T> q)

+
+ + + + +
+
+
+

b ReadTVar<b>(TVar`1 location)

+
+ + + + +
+
+
+

void Retry()

+
+ + + + +
+
+
+

a Retry<a>()

+
+ + + + +
+
+
+

void WriteTVar<T>(TVar`1 location, T value)

+
+ + + + +
+
+ +

Public static methods

+ +
+

void Atomic(FSharpFunc<TLog, Unit> p)

+
+ + + + +
+
+
+

T Atomic<T>(FSharpFunc<TLog, T> p)

+
+ + + + +
+
+
+

TVar`1 NewTVar<T>(T value)

+
+ + + + +
+
+
+

TVar`1 NewTVarBoxedStruct<c>(c value)

+
+ + + + +
+
+
+

TVar`1 NewTVarClass<e>(e value)

+
+ + + + +
+
+
+

TVar`1 NewTVarStruct<d>(d value)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar.htm new file mode 100644 index 0000000..217ee18 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar.htm @@ -0,0 +1,351 @@ + + + + TVar - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TVar

+

Namespace FSharpx

+

Interfaces IComparable<TVar>

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar`1.htm new file mode 100644 index 0000000..255d00f --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TVar`1.htm @@ -0,0 +1,351 @@ + + + + TVar`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TVar`1

+

Namespace FSharpx

+

Parent TVar

+
+
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Tags.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Tags.htm new file mode 100644 index 0000000..41732ae --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Tags.htm @@ -0,0 +1,667 @@ + + + + Tags - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Tags

+

Namespace FSharpx

+
+ + + + + +

Public fields

+ +
+

int Chunk

+
+ + + + +
+ return int +
+
+
+
+

int Empty

+
+ + + + +
+ return int +
+
+
+
+

int EOF

+
+ + + + +
+ return int +
+
+
+
+

int Done

+
+ + + + +
+ return int +
+
+
+
+

int Error

+
+ + + + +
+ return int +
+
+
+
+

int Continue

+
+ + + + +
+ return int +
+
+
+
+

int Cons

+
+ + + + +
+ return int +
+
+
+
+

int Nil

+
+ + + + +
+ return int +
+
+
+
+

int Canceled

+
+ + + + +
+ return int +
+
+
+
+

int Error

+
+ + + + +
+ return int +
+
+
+
+

int Successful

+
+ + + + +
+ return int +
+
+
+
+

int Node

+
+ + + + +
+ return int +
+
+
+ +
+

int OpenBracket

+
+ + + + +
+ return int +
+
+
+
+

int CloseBracket

+
+ + + + +
+ return int +
+
+
+
+

int OpenArray

+
+ + + + +
+ return int +
+
+
+
+

int CloseArray

+
+ + + + +
+ return int +
+
+
+
+

int Colon

+
+ + + + +
+ return int +
+
+
+
+

int Comma

+
+ + + + +
+ return int +
+
+
+
+

int String

+
+ + + + +
+ return int +
+
+
+
+

int Date

+
+ + + + +
+ return int +
+
+
+
+

int Boolean

+
+ + + + +
+ return int +
+
+
+
+

int Null

+
+ + + + +
+ return int +
+
+
+
+

int Number

+
+ + + + +
+ return int +
+
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Task.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Task.htm new file mode 100644 index 0000000..650b133 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Task.htm @@ -0,0 +1,445 @@ + + + + Task - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Task

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

Task<b> ap<a, b>(Task<a> x, Task<FSharpFunc<a, b>> f)

+
Sequential application + + + + +
+
+
+

Task<U> bind<T, U>(FSharpFunc<T, Task<U>> f, Task<T> m)

+
+ + + + +
+
+
+

Task<U> bindWithOptions<T, U>(CancellationToken token, TaskContinuationOptions continuationOptions, TaskScheduler scheduler, FSharpFunc<T, Task<U>> f, Task<T> m)

+
+ + + + +
+
+
+

Task<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, Task<a> a, Task<b> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

Task<b> map<a, b>(FSharpFunc<a, b> f, Task<a> m)

+
Transforms a Task's first value by using a specified mapping function. + + + + +
+
+
+

Task<b> mapWithOptions<a, b>(CancellationToken token, TaskContinuationOptions continuationOptions, TaskScheduler scheduler, FSharpFunc<a, b> f, Task<a> m)

+
Transforms a Task's first value by using a specified mapping function. + + + + +
+
+
+

Task<a> returnM<a>(a a)

+
Inject a value into the async type + + + + +
+
+
+

Result`1 run<a>(FSharpFunc<Unit, Task<a>> t)

+
+ + + + +
+
+
+

FSharpAsync<T> toAsync<T>(Task<T> t)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilder.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilder.htm new file mode 100644 index 0000000..588d61b --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilder.htm @@ -0,0 +1,405 @@ + + + + TaskBuilder - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TaskBuilder

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

Task<j> Bind<i, j>(Task<i> m, FSharpFunc<i, Task<j>> f)

+
+ + + + +
+
+
+

Task<h> Combine<g, h>(Task<g> comp1, FSharpFunc<g, Task<h>> comp2)

+
+ + + + +
+
+
+

Task<T> ReturnFrom<T>(Task<T> a)

+
+ + + + +
+
+
+

Task<T> Run<T>(FSharpFunc<Unit, Task<T>> f)

+
+ + + + +
+
+
+

Task<e> TryFinally<e>(Task<e> m, FSharpFunc<Unit, Unit> compensation)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilderWithToken.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilderWithToken.htm new file mode 100644 index 0000000..dc60520 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TaskBuilderWithToken.htm @@ -0,0 +1,385 @@ + + + + TaskBuilderWithToken - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TaskBuilderWithToken

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

FSharpFunc<CancellationToken, Task<Unit>> For<T>(IEnumerable<T> sequence, FSharpFunc<T, FSharpFunc<CancellationToken, Task<Unit>>> body)

+
+ + + + +
+
+
+

FSharpFunc<CancellationToken, Task<T>> TryFinally<T>(FSharpFunc<CancellationToken, Task<T>> t, FSharpFunc<Unit, Unit> compensation)

+
+ + + + +
+
+
+

FSharpFunc<CancellationToken, Task<Unit>> While(FSharpFunc<Unit, bool> guard, FSharpFunc<CancellationToken, Task<Unit>> m)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Text.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Text.htm new file mode 100644 index 0000000..038b418 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Text.htm @@ -0,0 +1,363 @@ + + + + Text - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Text

+

Namespace FSharpx

+

Interfaces Infrastucture, IDocument

+
+
+ + + +

Properties

+ + +
+ + + + +

Public properties

+ +
+

string Value get; set;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/TimeMeasurement.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TimeMeasurement.htm new file mode 100644 index 0000000..f984af7 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/TimeMeasurement.htm @@ -0,0 +1,397 @@ + + + + TimeMeasurement - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type TimeMeasurement

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

void compareTwoRuntimes<a, b>(int count, string desc1, FSharpFunc<Unit, a> f1, string desc2, FSharpFunc<Unit, b> f2)

+
Stops the average runtime for the given functions +Afterwards it reports it with the given descriptions + + + + +
+
+
+

Tuple<FSharpList<a>, double> stopAndReportAvarageTime<a>(int count, string desc, FSharpFunc<Unit, a> f)

+
Stops the average runtime for a given function and applies it the given count +Afterwards it reports it with the given description + + + + +
+
+
+

Tuple<FSharpList<a>, double> stopAverageTime<a>(int count, FSharpFunc<Unit, a> f)

+
Stops the average runtime for a given function and applies it the given count + + + + +
+
+
+

Tuple<a, double> stopTime<a>(FSharpFunc<Unit, a> f)

+
Stops the runtime for a given function + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Token.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Token.htm new file mode 100644 index 0000000..eec16a4 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Token.htm @@ -0,0 +1,736 @@ + + + + Token - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Token

+

Namespace FSharpx

+

Interfaces IEquatable<Token>, IStructuralEquatable, IComparable<Token>, IComparable, IStructuralComparable

+
+ + + +

Public instance methods

+ +
+

int CompareTo(Token obj)

+
+ + + + +
+
+
+

bool Equals(Token obj)

+
+ + + + +
+
+
+

bool get_IsBoolean()

+
+ + + + +
+
+
+

bool get_IsCloseArray()

+
+ + + + +
+
+
+

bool get_IsCloseBracket()

+
+ + + + +
+
+
+

bool get_IsColon()

+
+ + + + +
+
+
+

bool get_IsComma()

+
+ + + + +
+
+
+

bool get_IsDate()

+
+ + + + +
+
+
+

bool get_IsNull()

+
+ + + + +
+
+
+

bool get_IsNumber()

+
+ + + + +
+
+
+

bool get_IsOpenArray()

+
+ + + + +
+
+
+

bool get_IsOpenBracket()

+
+ + + + +
+
+
+

bool get_IsString()

+
+ + + + +
+
+ +

Public static methods

+ +
+

Token get_CloseArray()

+
+ + + + +
+
+
+

Token get_CloseBracket()

+
+ + + + +
+
+
+

Token get_Colon()

+
+ + + + +
+
+
+

Token get_Comma()

+
+ + + + +
+
+
+

Token get_Null()

+
+ + + + +
+
+
+

Token get_OpenArray()

+
+ + + + +
+
+
+

Token get_OpenBracket()

+
+ + + + +
+
+
+

Token NewBoolean(bool item)

+
+ + + + +
+
+
+

Token NewDate(DateTime item)

+
+ + + + +
+
+
+

Token NewNumber(string item)

+
+ + + + +
+
+
+

Token NewString(string item)

+
+ + + + +
+
+ +

Public properties

+ +
+

Token CloseArray get;

+
+ +
+
+
+

Token CloseBracket get;

+
+ +
+
+
+

Token Colon get;

+
+ +
+
+
+

Token Comma get;

+
+ +
+
+
+

bool IsBoolean get;

+
+ +
+
+
+

bool IsCloseArray get;

+
+ +
+
+
+

bool IsCloseBracket get;

+
+ +
+
+
+

bool IsColon get;

+
+ +
+
+
+

bool IsComma get;

+
+ +
+
+
+

bool IsDate get;

+
+ +
+
+
+

bool IsNull get;

+
+ +
+
+
+

bool IsNumber get;

+
+ +
+
+
+

bool IsOpenArray get;

+
+ +
+
+
+

bool IsOpenBracket get;

+
+ +
+
+
+

bool IsString get;

+
+ +
+
+
+

Token Null get;

+
+ +
+
+
+

Token OpenArray get;

+
+ +
+
+
+

Token OpenBracket get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Undo.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Undo.htm new file mode 100644 index 0000000..a9990c1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Undo.htm @@ -0,0 +1,457 @@ + + + + Undo - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Undo

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<History`1, Tuple<Unit, History`1>> combineWithCurrent<a, b>(FSharpFunc<a, FSharpFunc<b, a>> f, b x)

+
+ + + + +
+
+
+

a current<a>(History`1 history)

+
+ + + + +
+
+
+

c exec<a, b, c>(FSharpFunc<a, Tuple<b, History`1>> m, a s)

+
+ + + + +
+
+
+

FSharpFunc<History`1, Tuple<T, History`1>> getCurrent<T>()

+
+ + + + +
+
+
+

FSharpFunc<a, Tuple<a, a>> getHistory<a>()

+
+ + + + +
+
+
+

History`1 newHistory<a>(a x)

+
+ + + + +
+
+
+

FSharpFunc<History`1, Tuple<Unit, History`1>> putToHistory<a>(a x)

+
+ + + + +
+
+
+

FSharpFunc<History`1, Tuple<bool, History`1>> redo<T>()

+
+ + + + +
+
+
+

FSharpFunc<History`1, Tuple<bool, History`1>> undo<T>()

+
+ + + + +
+
+ +

Public properties

+ +
+

StateBuilder undoable get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Validation.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Validation.htm new file mode 100644 index 0000000..0c844f0 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Validation.htm @@ -0,0 +1,405 @@ + + + + Validation - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Validation

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<FSharpChoice<FSharpFunc<a, c>, NonEmptyList<b>>, FSharpChoice<c, NonEmptyList<b>>> ap<a, b, c>(FSharpChoice<a, NonEmptyList<b>> x)

+
Sequential application + + + + +
+
+
+

FSharpChoice<c, a> apa<a, b, c>(FSharpFunc<a, FSharpFunc<a, a>> append, FSharpChoice<b, a> x, FSharpChoice<FSharpFunc<b, c>, a> f)

+
Sequential application, parameterized by append + + + + +
+
+
+

FSharpFunc<FSharpChoice<b, a>, FSharpFunc<FSharpChoice<FSharpFunc<b, c>, a>, FSharpChoice<c, a>>> apm<a, b, c>(ISemigroup<T> m)

+
Sequential application, parameterized by semigroup + + + + +
+
+
+

FSharpChoice<c, NonEmptyList<d>> lift2<a, b, c, d>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpChoice<a, NonEmptyList<d>> a, FSharpChoice<b, NonEmptyList<d>> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

FSharpFunc<IEnumerable<a>, FSharpChoice<FSharpList<b>, NonEmptyList<c>>> seqValidator<a, b, c>(FSharpFunc<a, FSharpChoice<b, NonEmptyList<c>>> f)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/Writer.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Writer.htm new file mode 100644 index 0000000..568a0ac --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/Writer.htm @@ -0,0 +1,477 @@ + + + + Writer - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type Writer

+

Namespace FSharpx

+
+ + + + +

Public static methods

+ +
+

FSharpFunc<Unit, Tuple<b, FSharpList<string>>> ap<a, b>(FSharpFunc<Unit, Tuple<a, FSharpList<string>>> m, FSharpFunc<Unit, Tuple<FSharpFunc<a, b>, FSharpList<string>>> f)

+
Sequential application + + + + +
+
+
+

Tuple<U, W> bind<W, T, U>(Monoid<T> m, FSharpFunc<T, FSharpFunc<Unit, Tuple<U, W>>> k, FSharpFunc<Unit, Tuple<T, W>> writer, Unit unitVar0)

+
+ + + + +
+
+
+

FSharpFunc<Unit, Tuple<T, w2>> censor<w1, w2, T>(Monoid<T> monoid, FSharpFunc<w1, w2> f, FSharpFunc<Unit, Tuple<T, w1>> m)

+
+ + + + +
+
+
+

FSharpFunc<IEnumerable<b>, FSharpFunc<Unit, Tuple<a, FSharpList<string>>>> foldM<a, b>(FSharpFunc<a, FSharpFunc<b, FSharpFunc<Unit, Tuple<a, FSharpList<string>>>>> f, a s)

+
+ + + + +
+
+
+

FSharpFunc<Unit, Tuple<c, FSharpList<string>>> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, FSharpFunc<Unit, Tuple<a, FSharpList<string>>> a, FSharpFunc<Unit, Tuple<b, FSharpList<string>>> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+
+

Tuple<Tuple<a, b>, b> listen<a, b>(FSharpFunc<Unit, Tuple<a, b>> m, Unit unitVar0)

+
+ + + + +
+
+
+

FSharpFunc<Unit, Tuple<Tuple<d, c>, a>> listens<a, b, c, d>(Monoid<T> monoid, FSharpFunc<b, c> f, FSharpFunc<Unit, Tuple<Tuple<d, b>, a>> m)

+
+ + + + +
+
+
+

FSharpFunc<Unit, Tuple<b, FSharpList<string>>> map<a, b>(FSharpFunc<a, b> f, FSharpFunc<Unit, Tuple<a, FSharpList<string>>> m)

+
Transforms a Writer value by using a specified mapping function. + + + + +
+
+
+

Tuple<a, c> pass<a, b, c>(FSharpFunc<Unit, Tuple<Tuple<a, FSharpFunc<b, c>>, b>> m, Unit unitVar0)

+
+ + + + +
+
+
+

Tuple<b, a> returnM<a, b>(Monoid<T> monoid, b a, Unit unitVar0)

+
Inject a value into the Writer type + + + + +
+
+
+

Tuple<Unit, a> tell<a>(a w, Unit unitVar0)

+
+ + + + +
+
+ +

Public properties

+ +
+

WriterBuilder`1 writer get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/WriterBuilder`1.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/WriterBuilder`1.htm new file mode 100644 index 0000000..d906aa1 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/WriterBuilder`1.htm @@ -0,0 +1,365 @@ + + + + WriterBuilder`1 - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type WriterBuilder`1

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + +

Public instance methods

+ +
+

FSharpFunc<Unit, Tuple<T, W>> TryWith<T>(FSharpFunc<Unit, Tuple<T, W>> writer, FSharpFunc<Exception, FSharpFunc<Unit, Tuple<T, W>>> handler)

+
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/ZipList.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ZipList.htm new file mode 100644 index 0000000..9e8dc84 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/ZipList.htm @@ -0,0 +1,375 @@ + + + + ZipList - FSharpx Documentation + + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Type ZipList

+

Namespace FSharpx

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

IEnumerable<b> ap<a, b>(IEnumerable<a> m, IEnumerable<FSharpFunc<a, b>> f)

+
Sequential application + + + + +
+
+
+

IEnumerable<c> lift2<a, b, c>(FSharpFunc<a, FSharpFunc<b, c>> f, IEnumerable<a> a, IEnumerable<b> b)

+
Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/FSharpx/index.htm b/packages/FSharpx.Core.1.8.39/docs/FSharpx/index.htm new file mode 100644 index 0000000..35fec80 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/FSharpx/index.htm @@ -0,0 +1,438 @@ + + + + FSharpx - FSharpx Documentation + + + + + + +
+

Types in FSharpx

+
+ +
+
+
+

Namespace FSharpx

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/ResizeArrayModule.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/ResizeArrayModule.htm new file mode 100644 index 0000000..0afa095 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/ResizeArrayModule.htm @@ -0,0 +1,627 @@ + + + + ResizeArrayModule - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Collections

+
+ +
+
+
+

Type ResizeArrayModule

+

Namespace Microsoft.FSharp.Collections

+
+ + + + +

Public static methods

+ +
+

List<T> append<T>(List<T> arr1, List<T> arr2)

+
Build a new array that contains the elements of the first array followed by the elements of the second array + + + + +
+
+
+

void blit<T>(List<T> arr1, int start1, List<T> arr2, int start2, int len)

+
Read a range of elements from the first array and write them into the second. + + + + +
+
+
+

List<U> choose<T, U>(FSharpFunc<T, FSharpOption<U>> f, List<T> arr)

+
Apply the given function to each element of the array. Return +the array comprised of the results "x" for each element where +the function returns Some(x) + + + + +
+
+
+

List<T> copy<T>(List<T> arr)

+
Build a new array that contains the elements of the given array + + + + +
+
+
+

List<T> create<T>(int n, T x)

+
Create an array whose elements are all initially the given value. + + + + +
+
+
+

bool exists<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Test if any element of the array satisfies the given predicate. +If the input function is f and the elements are i0...iN +then computes p i0 or... or p iN. + + + + +
+
+
+

bool exists2<T1, T2>(FSharpFunc<T1, FSharpFunc<T2, bool>> f, List<T1> arr1, List<T2> arr2)

+
Test elements of the two arrays pairwise to see if any pair of element satisfies the given predicate. +Raise ArgumentException if the arrays have different lengths. + + + + +
+
+
+

void fill<T>(List<T> arr, int start, int len, T x)

+
Fill a range of the collection with the given element + + + + +
+
+
+

List<T> filter<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Return a new collection containing only the elements of the collection +for which the given predicate returns true + + + + +
+
+
+

T find<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Return the first element for which the given function returns true. +Raise KeyNotFoundException if no such element exists. + + + + +
+
+
+

int findIndex<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Return the index of the first element in the array +that satisfies the given predicate. Raise KeyNotFoundException if +none of the elements satisfy the predicate. + + + + +
+
+
+

int findIndexi<T>(FSharpFunc<int, FSharpFunc<T, bool>> f, List<T> arr)

+
Return the index of the first element in the array +that satisfies the given predicate. Raise KeyNotFoundException if +none of the elements satisfy the predicate. + + + + +
+
+
+

T fold<T, State>(FSharpFunc<T, FSharpFunc<State, T>> f, T acc, List<State> arr)

+
Apply a function to each element of the collection, threading an accumulator argument +through the computation. If the input function is f and the elements are i0...iN +then computes f (... (f s i0)...) iN + + + + +
+
+
+

State fold2<State, T1, T2>(FSharpFunc<State, FSharpFunc<T1, FSharpFunc<T2, State>>> f, State acc, List<T1> arr1, List<T2> arr2)

+
Apply a function to pairs of elements drawn from the two collections, +left-to-right, threading an accumulator argument +through the computation. The two input +arrays must have the same lengths, otherwise an ArgumentException is +raised. + + + + +
+
+
+

State foldBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, List<T> arr, State acc)

+
Apply a function to each element of the array, threading an accumulator argument +through the computation. If the input function is f and the elements are i0...iN then +computes f i0 (...(f iN s)). + + + + +
+
+
+

State foldBack2<T1, T2, State>(FSharpFunc<T1, FSharpFunc<T2, FSharpFunc<State, State>>> f, List<T1> arr1, List<T2> arr2, State acc)

+
Apply a function to pairs of elements drawn from the two collections, right-to-left, +threading an accumulator argument through the computation. The two input +arrays must have the same lengths, otherwise an ArgumentException is +raised. + + + + +
+
+
+

bool forall<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Test if all elements of the array satisfy the given predicate. +If the input function is f and the elements are i0...iN and "j0...jN" +then computes p i0 &&... && p iN. + + + + +
+
+
+

bool forall2<T1, T2>(FSharpFunc<T1, FSharpFunc<T2, bool>> f, List<T1> arr1, List<T2> arr2)

+
Test elements of the two arrays pairwise to see if all pairs of elements satisfy the given predicate. +Raise ArgumentException if the arrays have different lengths. + + + + +
+
+
+

T get<T>(List<T> arr, int n)

+
Fetch an element from the collection. You can also use the syntax arr.[idx]. + + + + +
+
+
+

bool isEmpty<T>(List<T> arr)

+
Return true if the given array is empty, otherwise false + + + + +
+
+
+

void iter<T>(FSharpFunc<T, Unit> f, List<T> arr)

+
Apply the given function to each element of the array. + + + + +
+
+
+

void iter2<T1, T2>(FSharpFunc<T1, FSharpFunc<T2, Unit>> f, List<T1> arr1, List<T2> arr2)

+
Apply the given function to two arrays simultaneously. The +two arrays must have the same lengths, otherwise an Invalid_argument exception is +raised. + + + + +
+
+
+

void iteri<T>(FSharpFunc<int, FSharpFunc<T, Unit>> f, List<T> arr)

+
Apply the given function to each element of the array. The integer passed to the +function indicates the index of element. + + + + +
+
+
+

void iteri2<T1, T2>(FSharpFunc<int, FSharpFunc<T1, FSharpFunc<T2, Unit>>> f, List<T1> arr1, List<T2> arr2)

+
Apply the given function to pair of elements drawn from matching indices in two arrays, +also passing the index of the elements. The two arrays must have the same lengths, +otherwise an ArgumentException is raised. + + + + +
+
+
+

int length<T>(List<T> arr)

+
Return the length of the collection. You can also use property arr.Length. + + + + +
+
+
+

List<U> map<T, U>(FSharpFunc<T, U> f, List<T> arr)

+
Build a new array whose elements are the results of applying the given function +to each of the elements of the array. + + + + +
+
+
+

List<U> map2<T1, T2, U>(FSharpFunc<T1, FSharpFunc<T2, U>> f, List<T1> arr1, List<T2> arr2)

+
Build a new collection whose elements are the results of applying the given function +to the corresponding elements of the two collections pairwise. The two input +arrays must have the same lengths. + + + + +
+
+
+

List<U> mapi<T, U>(FSharpFunc<int, FSharpFunc<T, U>> f, List<T> arr)

+
Build a new array whose elements are the results of applying the given function +to each of the elements of the array. The integer index passed to the +function indicates the index of element being transformed. + + + + +
+
+
+

List<U> mapi2<T1, T2, U>(FSharpFunc<int, FSharpFunc<T1, FSharpFunc<T2, U>>> f, List<T1> arr1, List<T2> arr2)

+
Build a new collection whose elements are the results of applying the given function +to the corresponding elements of the two collections pairwise. The two input +arrays must have the same lengths, otherwise an ArgumentException is +raised. + + + + +
+
+
+

List<T> ofArray<T>(T[] arr)

+
+ + + + +
+
+
+

Tuple<List<T>, List<T>> partition<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Split the collection into two collections, containing the +elements for which the given predicate returns true and false +respectively + + + + +
+
+
+

T reduce<T>(FSharpFunc<T, FSharpFunc<T, T>> f, List<T> arr)

+
Apply a function to each element of the array, threading an accumulator argument +through the computation. If the input function is f and the elements are i0...iN +then computes f (... (f i0 i1)...) iN. Raises ArgumentException if the array has size zero. + + + + +
+
+
+

T reduceBack<T>(FSharpFunc<T, FSharpFunc<T, T>> f, List<T> arr)

+
Apply a function to each element of the array, threading an accumulator argument +through the computation. If the input function is f and the elements are i0...iN then +computes f i0 (...(f iN-1 iN)). Raises ArgumentException if the array has size zero. + + + + +
+
+
+

List<T> rev<T>(List<T> arr)

+
Return a new array with the elements in reverse order + + + + +
+
+
+

List<State> scan<State, T>(FSharpFunc<State, FSharpFunc<T, State>> f, State acc, List<T> arr)

+
Like fold, but return the intermediary and final results + + + + +
+
+
+

List<State> scanBack<T, State>(FSharpFunc<T, FSharpFunc<State, State>> f, List<T> arr, State acc)

+
Like foldBack, but return both the intermediary and final results + + + + +
+
+
+

void set<T>(List<T> arr, int n, T x)

+
Set the value of an element in the collection. You can also use the syntax arr.[idx] <- e. + + + + +
+
+
+

void sort<T>(FSharpFunc<T, FSharpFunc<T, int>> f, List<T> arr)

+
Sort the elements using the given comparison function + + + + +
+
+
+

void sortBy<T, Key>(FSharpFunc<T, Key> f, List<T> arr)

+
Sort the elements using the key extractor and generic comparison on the keys + + + + +
+
+
+

List<T> sub<T>(List<T> arr, int start, int len)

+
Build a new array that contains the given subrange specified by +starting index and length. + + + + +
+
+
+

T[] toArray<T>(List<T> arr)

+
Return a fixed-length array containing the elements of the input ResizeArray + + + + +
+
+
+

FSharpList<T> toList<T>(List<T> arr)

+
Build a list from the given array + + + + +
+
+
+

IEnumerable<T> toSeq<T>(List<T> arr)

+
Return a view of the array as an enumerable object + + + + +
+
+
+

FSharpOption<T> tryFind<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Return the first element for which the given function returns true. +Return None if no such element exists. + + + + +
+
+
+

FSharpOption<int> tryFindIndex<T>(FSharpFunc<T, bool> f, List<T> arr)

+
Return the index of the first element in the array +that satisfies the given predicate. + + + + +
+
+
+

FSharpOption<int> tryFindIndexi<T>(FSharpFunc<int, FSharpFunc<T, bool>> f, List<T> arr)

+
Return the index of the first element in the array +that satisfies the given predicate. + + + + +
+
+
+

FSharpOption<U> tryPick<T, U>(FSharpFunc<T, FSharpOption<U>> f, List<T> arr)

+
Apply the given function to successive elements, returning the first +result where function returns "Some(x)" for some x. + + + + +
+
+
+

Tuple<List<T1>, List<T2>> unzip<T1, T2>(List<Tuple<T1, T2>> arr)

+
Split an array of pairs into two arrays + + + + +
+
+
+

List<Tuple<T1, T2>> zip<T1, T2>(List<T1> arr1, List<T2> arr2)

+
Combine the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an ArgumentException is +raised.. + + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/index.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/index.htm new file mode 100644 index 0000000..71a9cea --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Collections/index.htm @@ -0,0 +1,75 @@ + + + + Microsoft.FSharp.Collections - FSharpx Documentation + + + + + + +
+

Types in Microsoft.FSharp.Collections

+
+ +
+
+
+

Namespace Microsoft.FSharp.Collections

+
+
+

Classes

+ + +
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResultCell`1.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResultCell`1.htm new file mode 100644 index 0000000..88cdfbf --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResultCell`1.htm @@ -0,0 +1,135 @@ + + + + AsyncResultCell<T> - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type AsyncResultCell<T>

+

Namespace Microsoft.FSharp.Control

+
+
+
A helper type to store a single result from an asynchronous computation and asynchronously +access its result. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

void RegisterResult(AsyncResult<T> res, FSharpOption<bool> reuseThread)

+
Record the result in the AsyncResultCell. Subsequent sets of the result are ignored. +This may result in the scheduled resumption of a waiting asynchronous operation + + + + +
+
+ + +

Public properties

+ +
+

FSharpAsync<T> AsyncResult get;

+
Wait for the result and commit it + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResult`1.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResult`1.htm new file mode 100644 index 0000000..7a54012 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncResult`1.htm @@ -0,0 +1,216 @@ + + + + AsyncResult<T> - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type AsyncResult<T>

+

Namespace Microsoft.FSharp.Control

+
+
+
Represents the reified result of an asynchronous computation +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

bool get_IsAsyncCanceled()

+
+ + + + +
+
+
+

bool get_IsAsyncException()

+
+ + + + +
+
+
+

bool get_IsAsyncOk()

+
+ + + + +
+
+ +

Public static methods

+ +
+

FSharpAsync<T> Commit(AsyncResult<T> res)

+
Create an async whose result depends on the value of an AsyncResult. + + + + +
+
+
+

AsyncResult<T> NewAsyncCanceled(OperationCanceledException item)

+
+ + + + +
+
+
+

AsyncResult<T> NewAsyncException(Exception item)

+
+ + + + +
+
+
+

AsyncResult<T> NewAsyncOk(T item)

+
+ + + + +
+
+ +

Public properties

+ +
+

bool IsAsyncCanceled get;

+
+ +
+
+
+

bool IsAsyncException get;

+
+ +
+
+
+

bool IsAsyncOk get;

+
+ +
+
+
+

int Tag get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncStreamReader.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncStreamReader.htm new file mode 100644 index 0000000..3eaa349 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncStreamReader.htm @@ -0,0 +1,240 @@ + + + + AsyncStreamReader - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type AsyncStreamReader

+

Namespace Microsoft.FSharp.Control

+

Interfaces IDisposable

+
+
+
Implements a TextReader-like API that asynchronously reads characters from +a byte stream in a particular encoding. +
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

void Close()

+
+ + + + +
+
+
+

void DiscardBufferedData()

+
. DiscardBufferedData tells StreamReader to throw away its internal +. buffer contents. This is useful if the user needs to seek on the +underlying stream to a known location then wants the StreamReader +to start reading from this new point. This method should be called +very sparingly, if ever, since it can lead to very poor performance. +However, it may be the only way of handling some scenarios where +users need to re-read the contents of a StreamReader a second time. + + + + +
+
+
+

FSharpAsync<int> Peek()

+
returns the first element + + + + +
+
+
+

FSharpAsync<int> Read(Char[] buffer, int index, int count)

+
Creates an async that reads all the charactes that are avilable in the stream up to countbuffer starting at index. The async returns the number of characters that are read. +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + + + + +
+
+
+

FSharpAsync<Char> Read()

+
Creates an async that reads next character from the stream +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + + + + +
+
+
+

FSharpAsync<int> ReadExactly(Char[] buffer, int index, int count)

+
Creates an async that reads exactly count characters from the stream unless end of stream is reached and puts them +into buffer starting at index. The async returns the number of characters that are read (if end-of-stream is not reached +that will be count +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + + + + +
+
+
+

FSharpAsync<string> ReadLine()

+
Creates an async that reads next line from the stream +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + + + + +
+
+
+

FSharpAsync<string> ReadToEnd()

+
Creates an async that read all characters in the stream up to the end. +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + + + + +
+
+ + +

Public properties

+ +
+

Stream BaseStream get;

+
+ +
+
+
+

Encoding CurrentEncoding get;

+
+ +
+
+
+

FSharpAsync<bool> EndOfStream get;

+
An async that produces true if the reader is at the end of stream and false otherwise +Note that when the async is run it reflects the reader state at the time of running; multiple runs will +yield different results. + +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncWorker`1.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncWorker`1.htm new file mode 100644 index 0000000..c64be33 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/AsyncWorker`1.htm @@ -0,0 +1,172 @@ + + + + AsyncWorker<T> - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type AsyncWorker<T>

+

Namespace Microsoft.FSharp.Control

+
+
+ + +

Methods

+ + +

Properties

+ + +
+ + +

Public instance methods

+ +
+

void CancelAsync(FSharpOption<string> message)

+
+ + + + +
+
+
+

void ReportProgress(int progressPercentage)

+
+ + + + +
+
+
+

bool RunAsync()

+
+ + + + +
+
+ + +

Public properties

+ +
+

IEvent<FSharpHandler<OperationCanceledException>, OperationCanceledException> Canceled get;

+
+ +
+
+
+

IEvent<FSharpHandler<T>, T> Completed get;

+
+ +
+
+
+

IEvent<FSharpHandler<Exception>, Exception> Error get;

+
+ +
+
+
+

IEvent<FSharpHandler<int>, int> ProgressChanged get;

+
+ +
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/FileExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/FileExtensions.htm new file mode 100644 index 0000000..a91e357 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/FileExtensions.htm @@ -0,0 +1,159 @@ + + + + FileExtensions - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type FileExtensions

+

Namespace Microsoft.FSharp.Control

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<StreamWriter> File.AsyncAppendText.Static(string path)

+
+ + + + +
+
+
+

FSharpAsync<FileStream> File.AsyncOpen.Static(string path, FileMode mode, FSharpOption<FileAccess> access, FSharpOption<FileShare> share, FSharpOption<int> bufferSize, FSharpOption<FileOptions> options)

+
+ + + + +
+
+
+

FSharpAsync<FileStream> File.AsyncOpenRead.Static(string path)

+
+ + + + +
+
+
+

FSharpAsync<StreamReader> File.AsyncOpenText.Static(string path)

+
+ + + + +
+
+
+

FSharpAsync<FileStream> File.AsyncOpenWrite.Static(string path)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/StreamReaderExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/StreamReaderExtensions.htm new file mode 100644 index 0000000..a55bdf2 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/StreamReaderExtensions.htm @@ -0,0 +1,119 @@ + + + + StreamReaderExtensions - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type StreamReaderExtensions

+

Namespace Microsoft.FSharp.Control

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpAsync<string> StreamReader.AsyncReadToEnd(StreamReader )

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/Tags.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/Tags.htm new file mode 100644 index 0000000..abc435d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/Tags.htm @@ -0,0 +1,148 @@ + + + + Tags - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type Tags

+

Namespace Microsoft.FSharp.Control

+
+
+ + + + +

Fields

+ +
+ + + + +

Public fields

+ +
+

int AsyncOk

+
+ + + + +
+ return int +
+
+
+
+

int AsyncException

+
+ + + + +
+ return int +
+
+
+
+

int AsyncCanceled

+
+ + + + +
+ return int +
+
+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebClientExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebClientExtensions.htm new file mode 100644 index 0000000..8103219 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebClientExtensions.htm @@ -0,0 +1,249 @@ + + + + WebClientExtensions - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type WebClientExtensions

+

Namespace Microsoft.FSharp.Control

+
+ + + + +

Public static methods

+ +
+

FSharpAsync<Byte[]> WebClient.AsyncDownloadData(WebClient this, Uri address)

+
+ + + + +
+
+
+

FSharpAsync<Unit> WebClient.AsyncDownloadFile(WebClient this, Uri address, string fileName)

+
+ + + + +
+
+
+

FSharpAsync<string> WebClient.AsyncDownloadString(WebClient this, Uri address)

+
+ + + + +
+
+
+

FSharpAsync<Stream> WebClient.AsyncOpenRead(WebClient this, Uri address)

+
+ + + + +
+
+
+

FSharpAsync<Stream> WebClient.AsyncOpenWrite(WebClient this, Uri address)

+
+ + + + +
+
+
+

FSharpAsync<Stream> WebClient.AsyncOpenWrite(WebClient this, Uri address, string uploadMethod)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadData(WebClient this, Uri address, Byte[] data)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadData(WebClient this, Uri address, string uploadMethod, Byte[] data)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadFile(WebClient this, Uri address, string uploadMethod, string fileName)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadFile(WebClient this, Uri address, string fileName)

+
+ + + + +
+
+
+

FSharpAsync<string> WebClient.AsyncUploadString(WebClient this, Uri address, string data)

+
+ + + + +
+
+
+

FSharpAsync<string> WebClient.AsyncUploadString(WebClient this, Uri address, string uploadMethod, string data)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadValues(WebClient this, Uri address, string uploadMethod, NameValueCollection data)

+
+ + + + +
+
+
+

FSharpAsync<Byte[]> WebClient.AsyncUploadValues(WebClient this, Uri address, NameValueCollection data)

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebRequestExtensions.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebRequestExtensions.htm new file mode 100644 index 0000000..be57ada --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/WebRequestExtensions.htm @@ -0,0 +1,119 @@ + + + + WebRequestExtensions - FSharpx Documentation + + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Type WebRequestExtensions

+

Namespace Microsoft.FSharp.Control

+
+
+ + +

Methods

+ + + +
+ + + +

Public static methods

+ +
+

FSharpAsync<WebResponse> WebRequest.AsyncGetResponse(WebRequest )

+
+ + + + +
+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/index.htm b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/index.htm new file mode 100644 index 0000000..6274a09 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/Microsoft.FSharp.Control/index.htm @@ -0,0 +1,107 @@ + + + + Microsoft.FSharp.Control - FSharpx Documentation + + + + + + +
+

Types in Microsoft.FSharp.Control

+ +
+
+

Namespace Microsoft.FSharp.Control

+
+ + + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/index.htm b/packages/FSharpx.Core.1.8.39/docs/index.htm new file mode 100644 index 0000000..569fba9 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/index.htm @@ -0,0 +1,308 @@ + + + + FSharpx Documentation + + + +
+

All Types

+
+ +
+
+
+

FSharpx Documentation

+
+ + + \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/js/example.js b/packages/FSharpx.Core.1.8.39/docs/js/example.js new file mode 100644 index 0000000..f805c21 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/js/example.js @@ -0,0 +1,21 @@ +$(document).ready(function() { + $('div.example').each(function(i, div) { + var a = $('a', div); + var pre = $('pre', div); + + a.pre = pre; + a.preVisible = false; + pre.hide(); + a.click(function() { + if (a.preVisible) { + a.pre.hide(); + a.text('Show Example'); + a.preVisible = false; + } else { + a.pre.show(); + a.text('Hide Example'); + a.preVisible = true; + } + }); + }); +}); \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/js/jquery-1.3.2.min.js b/packages/FSharpx.Core.1.8.39/docs/js/jquery-1.3.2.min.js new file mode 100644 index 0000000..b1ae21d --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/js/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/js/jquery.scrollTo-min.js b/packages/FSharpx.Core.1.8.39/docs/js/jquery.scrollTo-min.js new file mode 100644 index 0000000..5e78778 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/js/jquery.scrollTo-min.js @@ -0,0 +1,11 @@ +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 5/25/2009 + * @author Ariel Flesler + * @version 1.4.2 + * + * http://flesler.blogspot.com/2007/10/jqueryscrollto.html + */ +;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/js/navigation.js b/packages/FSharpx.Core.1.8.39/docs/js/navigation.js new file mode 100644 index 0000000..4eb8eea --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/js/navigation.js @@ -0,0 +1,11 @@ +$(document).ready(function() { + var scroll = function(selector) { + var currentItem = $(selector + ' .current'); + + if (currentItem) + $(selector + ' div.scroll').scrollTo(currentItem); + }; + + scroll('#namespaces'); + scroll('#types'); +}); \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/docs/main.css b/packages/FSharpx.Core.1.8.39/docs/main.css new file mode 100644 index 0000000..3445a06 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/docs/main.css @@ -0,0 +1,225 @@ +body { + margin: 0; + padding: 0; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: 90%; +} + +.header { + background: #048; + border-bottom: 3px solid #006; + margin: 0; + color: #FFF; + padding: 10px; + clear: left; + font-size: 13px; +} + +.header p { + margin: 0 0 4px 0; +} + +.header .class { + font-size: 24px; + font-weight: bold; +} + +.header strong { + font-size: 13px; + width: 100px; + float: left; +} + +.header a { + background: transparent; + color: #FFF; +} + +.header a:hover { + background: #FFF; + color: #039; +} + +.sub-header { + margin: 0 20px; +} + +.sub-header ul { + margin: 0 0 0 30px; + padding: 0; + list-style: none; +} + +.sub-header ul li { + float: left; + margin: 0 15px 0 0; + padding: 0; + text-indent: 0; +} + +.section { + color: #333; + border-bottom: 1px solid #999; + margin: 10px 10px 0 10px; + padding: 10px 0 0 0; + clear: left; +} + +div.method { + background: #EFEFEF; + border: 1px dotted #CCC; + margin: 5px 10px 15px 10px; + padding: 0; +} + +div.method h4 { + background: #CCC; + border-bottom: 1px solid #666; + color: #000; + padding: 2px 5px; + margin: 0 0 10px 0; + font-weight: normal; +} + +div.method h4 a { + background: transparent; +} + +div.method .content { + padding: 0 10px 5px 10px; +} + +div.parameters, div.return { + background: #fff; + border: 1px solid #ccc; + padding: 10px; + margin-top: 10px; +} + +div.parameters h5, div.return h5 { + color: #666; + margin: -10px 0 0 -10px; + padding: 3px; + font-weight: normal; + font-size: 10px; + border-bottom: 1px solid #ccc; + border-right: 1px solid #ccc; + float: left; +} + +div.parameters h6, div.return h6 { + clear: left; + font-size: 14px; + font-weight: normal; + margin: 0; + padding: 6px 0 3px 0; +} + +div.parameters p, div.return p { + border-top: 1px solid #ccc; + margin: 0; + padding: 3px 3px 0 3px; +} + +#summary { + background: #EFEFEF; + border: 1px dotted #999999; + margin: 5px 10px 15px 10px; + padding: 5px 10px; +} + +#namespaces { + width: 50%; + float: left; + background: #FFF; +} + +#types { + width: 50%; + float: left; + background: #FFF; + margin-left: -1px; +} + +h2.fixed { + background: #CCC; + color: #000; + border-top: 1px solid #999; + border-bottom: 1px solid #999; + margin: 0; + padding: 2px 10px; + font-size: 12px; + font-weight: bold; +} + +div.scroll { + overflow: scroll; + height: 150px; +} + +#namespaces ul, #types ul { + list-style: none; + margin: 0 0 10px 0; + padding: 0; +} + +#namespaces ul li, #types ul li { + text-indent: 0; + padding-left: 10px; +} + +a { + background: #eef; + color: #039; + text-decoration: none; +} + +a:hover { + color: #FFF; + background: #039; +} + +#namespaces a.current, #types a.current { + background: #039; + color: #FFF; + text-decoration: none; +} + +#footer { + text-align: center; + font-size: 10px; + color: #888; + clear: left; + padding-top: 10px; +} + +blockquote { + margin: 10px; + padding: 6px; + background: #F5F5F5; + border-top: 3px solid #CCC; + border-bottom: 3px solid #CCC; +} + +.value { + border-top-width: 1px; + border-bottom-width: 1px; + font-size: 90%; +} + +.example { + margin: 10px 0; +} + +.example pre { + background: #DDD; + color: #000; + font-size: 14px; + font-family: Monaco, Consolas, Courier New, Monospace; + padding: 4px 10px; + border: 3px solid #AAA; +} + +code { + font-family: Monaco, Consolas, Courier New, Monospace; +} \ No newline at end of file diff --git a/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.dll b/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.dll new file mode 100644 index 0000000..3a7712d Binary files /dev/null and b/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.dll differ diff --git a/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.xml b/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.xml new file mode 100644 index 0000000..90e619c --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/lib/35/FSharpx.Core.xml @@ -0,0 +1,14576 @@ + + +FSharpx.Core + + + + Type alias for F# mailbox processor type + + + + + + + + + + + The interanl type that represents a value returned as a result of + evaluating a step of an asynchronous sequence + + + + + An asynchronous sequence represents a delayed computation that can be + started to produce either Cons value consisting of the next element of the + sequence (head) together with the next asynchronous sequence (tail) or a + special value representing the end of the sequence (Nil) + + + + + + + + + + + Occurs when the execution of the agent results in an exception. + + + + + Occurs when the execution of the agent results in an exception. + + + + + Returns the number of unprocessed messages in the message queue of the agent. + + + + + Occurs when the execution of the agent results in an exception. + + + + + Scans for a message by looking through messages in arrival order until <c>scanner</c> + returns a Some value. Other messages remain in the queue. + + + + + Waits for a message. This will consume the first message in arrival order. + + + + + Like PostAndReply, but returns None if no reply within the timeout period. + + + + + Start a new disposable agent using the specified body function + (the method creates a new cancellation token for the agent) + + + + + Scans for a message by looking through messages in arrival order until <c>scanner</c> + returns a Some value. Other messages remain in the queue. + + + + + Waits for a message. This will consume the first message in arrival order. + + + + + Like PostAndAsyncReply, but returns None if no reply within the timeout period. + + + + + Posts a message to an agent and await a reply on the channel, synchronously. + + + + + Posts a message to an agent and await a reply on the channel, asynchronously. + + + + + Posts a message to the message queue of the MailboxProcessor, asynchronously. + + + + + + + + + + + Wrapper for the standard F# agent (MailboxProcessor) that + supports stopping of the agent's body using the IDisposable + interface (the type automatically creates a cancellation token) + + + + + + + + + + + + + + + + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + Sends new message to the agent + + + + + Dispose + + + + + + + + Agent that can be used to implement batch processing. It creates groups + of messages (added using the Enqueue method) and emits them using the + BatchProduced event. A group is produced when it reaches the maximal + size or after the timeout elapses. + + + + + + + + + + + + + + + + + + + + + + + Gets the number of elements currently waiting in the queue. + + + + + Synchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + This method blocks until value is available! + + + + + Asynchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + + + + + Asynchronously adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Asynchronously adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. This overload does not + signal the caller that the item has been added. + + + + + + + + Agent that implements an asynchronous queue with blocking put + and blocking get operation (this implements the producer-consumer + concurrent programming pattern). The constructor takes the maximal + size of the buffer. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the number of elements currently waiting in the queue. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Synchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + This method blocks until value is available! + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Asynchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + + + + + + + + Agent that implements an asynchronous circular buffer with blocking + enqueue and blocking dequeue operation (this implements the producer-consumer + concurrent programming pattern). The constructor takes the maximal + size of the buffer. + + + + + + + + + + + + + + + + + + + + Adds the specified element to the set and returns + 'false' when it was already present in the set + + + + + + + + Agent that implements a simple concurrent set. The agent exposes a + member that adds value to the set and returns whether the value + was already present. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Union type that represents different messages that can be sent to the + IObserver interface. The IObserver type is equivalent to a type that has + just OnNext method that gets 'ObservableUpdate' as an argument. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + Sends new message to the agent + + + + + + + + Agent that implements the "sliding window" functionality. It collects + messages added using the Enqueue method and emits them in overlapping + groups of the specified size. For example, given [1,2,3,4,5...] and a + size 3, the produced groups will be [1,2,3], [2,3,4], [3,4,5], ... + + + + + + + + + + + Starts the specified operation using a new CancellationToken and returns + IDisposable object that cancels the computation. This method can be used + when implementing the Subscribe method of IObservable interface. + + + + + Creates an asynchronous workflow that runs the asynchronous workflow + given as an argument at most once. When the returned workflow is + started for the second time, it reuses the result of the + previous execution. + + + + + + + + + + + + + + A helper type for implementation of buffering when converting + observable to an asynchronous sequence + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Asynchronous for loop - for all elements from the input sequence, + generate all elements produced by the body (asynchronously). See + also the AsyncSeq.collect function. + + + + + For loop that iterates over a synchronous sequence (and generates + all elements generated by the asynchronous body) + + + + + + + + + + + + + + + + + Computation builder that allows creating of asynchronous + sequences using the 'asyncSeq { ... }' syntax + + + + + Skips the first N elements of an asynchronous sequence and + then returns the rest of the sequence unmodified. + + + + + Returns the first N elements of an asynchronous sequence + + + + + Skips elements from an asynchronous sequence while the specified + predicate holds and then returns the rest of the sequence. The + predicate is evaluated asynchronously. + + + + + Returns elements from an asynchronous sequence while the specified + predicate holds. The predicate is evaluated synchronously. + + + + + Skips elements from an asynchronous sequence while the specified + predicate holds and then returns the rest of the sequence. The + predicate is evaluated asynchronously. + + + + + Returns elements from an asynchronous sequence while the specified + predicate holds. The predicate is evaluated asynchronously. + + + + + Combines two asynchronous sequences into a sequence of pairs. + The values from sequences are retrieved in parallel. + + + + + Create a new asynchronous sequence that caches all elements of the + sequence specified as the input. When accessing the resulting sequence + multiple times, the input will still be evaluated only once + + + + + Converts asynchronous sequence to a synchronous blocking sequence. + The elements of the asynchronous sequence are consumed lazily. + + + + + Converts asynchronous sequence to an IObservable<_>. When the client subscribes + to the observable, a new copy of asynchronous sequence is started and is + sequentially iterated over (at the maximal possible speed). Disposing of the + observer cancels the iteration over asynchronous sequence. + + + + + Converts observable to an asynchronous sequence. Values that are produced + by the observable while the asynchronous sequence is blocked are discarded + (this function doesn't guarantee that asynchronou ssequence will return + all values produced by the observable) + + + + + Converts observable to an asynchronous sequence. Values that are produced + by the observable while the asynchronous sequence is blocked are stored to + an unbounded buffer and are returned as next elements of the async sequence. + + + + + Converts observable to an asynchronous sequence using an agent with + a body specified as the argument. The returnd async sequence repeatedly + sends 'Get' message to the agent to get the next element. The observable + sends 'Put' message to the agent (as new inputs are generated). + + + + + Creates an asynchronous sequence that lazily takes element from an + input synchronous sequence and returns them one-by-one. + + + + + Same as AsyncSeq.filterAsync, but the specified predicate is synchronous + and processes the input element immediately. + + + + + Same as AsyncSeq.chooseAsync, but the specified function is synchronous + and processes the input element immediately. + + + + + Same as AsyncSeq.iterAsync, but the specified function is synchronous + and performs the side-effect immediately. + + + + + Same as AsyncSeq.mapAsync, but the specified function is synchronous + and returns the result of projection immediately. + + + + + Same as AsyncSeq.scanAsync, but the specified function is synchronous + and returns the result of aggregation immediately. + + + + + Same as AsyncSeq.foldAsync, but the specified function is synchronous + and returns the result of aggregation immediately. + + + + + Aggregates the elements of the input asynchronous sequence using the + specified 'aggregation' function. The result is an asynchronous + workflow that returns the final result. + + The aggregation function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Returns an asynchronous sequence that returns pairs containing an element + from the input sequence and its predecessor. Empty sequence is returned for + singleton input sequence. + + + + + Iterates over the input sequence and calls the specified function for + every value (to perform some side-effect asynchronously). + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Aggregates the elements of the input asynchronous sequence using the + specified 'aggregation' function. The result is an asynchronous + sequence of intermediate aggregation result. + + The aggregation function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Asynchronously returns the first element that was generated by the + given asynchronous sequence (or the specified default value). + + + + + Asynchronously returns the last element that was generated by the + given asynchronous sequence (or the specified default value). + + + + + Builds a new asynchronous sequence whose elements are those from the + input sequence for which the specified function returned true. + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Asynchronously iterates over the input sequence and generates 'x' for + every input element for which the specified asynchronous function + returned 'Some(x)' + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Builds a new asynchronous sequence whose elements are generated by + applying the specified function to all elements of the input sequence. + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + + + + Creates an asynchronou sequence that iterates over the given input sequence. + For every input element, it calls the the specified function and iterates + over all elements generated by that asynchronous sequence. + This is the 'bind' operation of the computation expression (exposed using + the 'for' keyword in asyncSeq computation). + + + + + Implements the 'TryFinally' functionality for computation builder + + + + + Implements the 'TryWith' functionality for computation builder + + + + + Tries to get the next element of an asynchronous sequence + and returns either the value or an exception + + + + + Builds an asynchronou sequence using the computation builder syntax + + + + + Yields all elements of the first asynchronous sequence and then + all elements of the second asynchronous sequence. + + + + + Creates an asynchronous sequence that generates a single element and then ends + + + + + Creates an empty asynchronou sequence that immediately ends + + + + + Module with helper functions for working with asynchronous sequences + + + + + + + + Builds an asynchronou sequence using the computation builder syntax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified four observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified three observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified two observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + specified observables produces a value. The workflow will return + the value produced by the observable. + + + + + Behaves like AwaitObservable, but calls the specified guarding function + after a subscriber is registered with the observable. + + + + + Helper that can be used for writing CPS-style code that resumes + on the same thread where the operation was started. + + + + + Delay execution of Observer function + + + + + Invoke Observer function through specified function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Turns observable into an observable that only calls OnNext method of the + observer, but gives it a discriminated union that represents different + kinds of events (error, next, completed) + + + + + Creates an observable that calls the specified function (each time) + after an observer is attached to the observable. This is useful to + make sure that events triggered by the function are handled. + + + + + Returns an observable that yields sliding windows of + containing elements drawn from the input observable. + Each window is returned as a fresh array. + + + + + + + + Converts asynchronous sequence to a synchronous blocking sequence. + The elements of the asynchronous sequence are consumed lazily. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Asynchronously writes all data specified by the + given asynchronous sequence to the stream. + + + + + Asynchronously reads the stream in chunks of a specified size + and returns the result as an asynchronous sequence. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The continuation monad. + The algorithm is from Wes Dyer http://blogs.msdn.com/b/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx. + The builder approach is from Matthew Podwysocki's excellent Creating Extended Builders series http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/18/much-ado-about-monads-creating-extended-builders.aspx. + Current implementation from Matt's gist at https://gist.github.com/628956 + + + + + + + + + + + + + + + + + The coroutine type from http://fssnip.net/7M + + + + + + + + + + + + + + + + + An enumeratee is an enumerator that produces an iteratee using another iteratee as input. + Enumeratees can be used for tasks such as encoding or encrypting data. + + + + + An enumerator generates a stream of data and feeds an iteratee, returning a new iteratee. + + + + + + + + + + + + + + + + + + + + + + + + + + Encapsulates any possible exceptions during bind in a Choice + + + + + + + + Ignores (discards) the result of the async computation + + + + + + + + + + + + + + + + + + + + If Choice is 1Of2, return its value. + Otherwise throw ArgumentException. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attempts to cast an object. + Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + + + + + + + + + + + Convert a Func into an F# function + + + + + Convert a Func into an F# function + + + + + Convert a Func into an F# function + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Conversion functions from Action/Func to FSharpFunc + We need these because FuncConvert often makes C# type inference fail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + + + + + + + + + + + Converts the option to a list of length 0 or 1 + + + + + + + + Converts the option to an array of length 0 or 1 + + + + + + + + + + + Invokes a function on an optional value that itself yields an option, + and then applies a mapping function + + + + + Invokes a function on an optional value that itself yields an option + + + + + Transforms an option value by using a specified mapping function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the option if Some x, otherwise the supplied default value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Evaluates the equivalent of for an option + + + + + + + + + + + + + + + + + Converts an action taking a 4-tuple into an action with 4 parameters + + + + + /// Converts an action taking a 3-tuple into an action with 3 parameters + + + + + Converts an action taking a 2-tuple into an action with 2 parameters + + + + + Converts an action with 4 arguments into an action taking a 4-tuple + + + + + Converts an action with 3 arguments into an action taking a 3-tuple + + + + + Converts an action with 2 arguments into an action taking a 2-tuple + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an uncurried function to a curried function + + + + + Converts an uncurried function to a curried function + + + + + Composes two functions. + Mathematically: f . g + + + + + Composes two functions (forward composition). + Mathematically: g . f + + + + + Extensions around Actions and Funcs + + + + + Associative operation + + + + + Semigroup (set with associative binary operation) + + + + + + + + + + + + + + The iteratee is a stream consumer that will consume a stream of data until either + it receives an EOF or meets its own requirements for consuming data. The iteratee + will return Continue whenever it is ready to receive the next chunk. An iteratee + is fed data by an Enumerator, which generates a Stream. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + + + + + + + + + + + + + + + + + + + Identity + + + + + + + + + + + + + + + + + + + + Fold a list using this monoid + + + + + + + + Associative operation + + + + + + + + Monoid (associative binary operation with identity) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A stream of chunks of data generated by an Enumerator. + The stream can be composed of chunks of 'T, empty blocks indicating a wait, or an EOF marker. + Be aware that when using #seq<_> types, you will need to check for both Seq.empty ([]) and Empty. + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two async actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Infix map + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Transforms an async value by using a specified mapping function. + + + + + + + + + + + Flipped map + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the async type + + + + + Sequentially compose two actions, passing any value produced by the second as an argument to the first. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If Some value, returns Choice1Of2 value. Otherwise, returns the supplied default value. + + + + + If Choice is 1Of2, returns Some value. Otherwise, returns None. + + + + + + + + Transforms a Choice's second value by using a specified mapping function. + + + + + Maps both parts of a Choice. + Applies the first function if Choice is 1Of2. + Otherwise applies the second function + + + + + Maps both parts of a Choice. + Applies the first function if Choice is 1Of2. + Otherwise applies the second function + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two either actions, discarding any value produced by the first + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Monadic bind + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Choice's first value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Attempts to cast an object. + Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + + Wraps a function, encapsulates any exception thrown within to a Choice + + + + + If Choice is 1Of2, return its value. + Otherwise throw ArgumentException. + + + + + Inject a value into the Choice type + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the hash code for the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Compares two objects for equality. When both are byte strings, structural equality is used. + + + + + + + + Compares two byte strings based on their structure. + + + + + + + + + + + An ArraySegment with structural comparison and equality. + + + + +O(log n). Returns the first element and tail. + + + + +O((log n). Returns option first element and tail. + + + + +O(log n). Returns option DList of the elements trailing the first element. + + + + +O(log n). Returns option first element + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns the first element. + + + + +O(1). Returns a new DList with the element added to the front. + + + + +O(1). Returns a new DList with the element added to the end. + + + + + DList is an ordered linear structure implementing the List signature (head, tail, cons), + end-insertion (conj), and O(1) append. Ordering is by insertion history. + DList is an implementation of John Hughes' append list. + See http://dl.acm.org/citation.cfm?id=8475 for more information. + An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 + List-like structure naming semantics: http://jackfoxy.com/semantics-and-list-like-data-structures + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns deque reversed. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + +O(1). Returns a new deque with the element added to the end. + + + + + Double-ended queue is an ordered linear linear structure implementing the signature of List + (head, tail, cons) as well as the mirror-image Vector signature (last, initial, conj). "head" inspects + the first or left-most element in the structure, while "last" inspects the last or + right-most element. "rev" (reverse) has time complexity O(1). Ordering is by insertion history. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap reversed. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + + Heap is an ordered linear structure where the ordering is either ascending or descending. + "head" inspects the first element in the ordering, "tail" takes the remaining structure + after head, and "insert" places elements within the ordering. PriorityQueue is available + as an alternate interface. + According to Okasaki the time complexity of the heap functions in this Heap implementation + (based on the "pairing" heap) have "resisted" time complexity analysis. + + + + +O(1). Returns tuple of head element and tail of the list. + + + + +O(1). Returns option tuple of head element and tail of the list. + + + + +O(1). Return option the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return option the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Return the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Test if a list is empty. Forces the evaluation of + the first element of the stream if it is not already evaluated. + + + + +O(1). Return the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(n). Return the length of the list + + + + + LazyLists are possibly-infinite, cached sequences. See also IEnumerable/Seq for + uncached sequences. LazyLists normally involve delayed computations without + side-effects. The results of these computations are cached and evaluations will be + performed only once for each element of the lazy list. In contrast, for sequences + (IEnumerable) recomputation happens each time an enumerator is created and the sequence + traversed. + + LazyLists can represent cached, potentially-infinite computations. Because they are + cached they may cause memory leaks if some active code or data structure maintains a + live reference to the head of an infinite or very large lazy list while iterating it, + or if a reference is maintained after the list is no longer required. + + Lazy lists may be matched using the LazyList.Cons and LazyList.Nil active patterns. + These may force the computation of elements of the list. + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n) worst-case. Returns the first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns option first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element. + + + + +O(1). Returns option first element + + + + +O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (Dequeue) + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns the first element. (Peek) + + + + +O(n). Returns queue reversed. + + + + +O(1). Returns a new queue with the element added to the end. (Enqueue) + + + + + Queue is an ordered linear data structure where elements are added at the end (right) + and inspected and removed at the beginning (left). Ordering is by insertion history. + The qualities of the Queue structure make elements first in, first out (fifo). + "head" inspects the first or left-most element in the structure, while "conj" + inserts an element at the end, or right of the structure. + Purely functional (immutable) Queue based on Okasaki's batched queue. + Value and function naming standard based on consistent List-like naming: http://jackfoxy.com/semantics-and-list-like-data-structures + Original F# implementation http://lepensemoi.free.fr/index.php/2009/12/10/batched-queue + + + + + O(1). Returns tuple last element and random access list without last item + + + + + O(1). Returns option tuple last element and random access list without last item + + + + + O(n). Returns option random access list without the last item. + + + + + O(1). Returns option last element in the random access list. + + + + + O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + + + + + O(1). Returns the number of items in the random access list. + + + + + O(log32n). Returns random access list element at the index. + + + + + O(1). Returns true if the random access list has no elements. + + + + + O(1). Returns the last element in the random access list. If the random access list is empty it throws an exception. + + + + + O(log32n). Returns a new random access list that contains the given value at the index. + + + + + O(log32n). Returns option random access list that contains the given value at the index. + + + + +O(n). Returns random access list reversed. + + + + + O(1). Returns a new random access list with the element added at the end. + + + + + RandomAccessList is an ordered linear structure implementing the List signature + (head, tail, cons), as well as inspection (lookup) and update (returning a new + immutable instance) of any element in the structure by index. Ordering is by insertion history. + Adapted from Steffen Forkmann's F# implementation of Clojure Vector.. + + + + + O(1). Returns tuple last element and vector without last item + + + + + O(1). Returns option tuple last element and vector without last item + + + + + O(1). Returns option last element in the vector. + + + + + O(n). Returns option vector without the last item. + + + + + O(1). Returns the number of items in the vector. + + + + + O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + O(log32n). Returns vector element at the index. + + + + + O(1). Returns true if the vector has no elements. + + + + + O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + O(log32n). Returns a new vector that contains the given value at the index. + + + + + O(log32n). Returns option vector that contains the given value at the index. + + + + +O(n). Returns random access list reversed. + + + + + O(1). Returns a new vector with the element added at the end. + + + + + Vector is an ordered linear structure implementing the inverse of the List signature, + (last, initial, conj) in place of (head, tail, cons). Indexed lookup or update + (returning a new immutable instance of Vector) of any element is O(log32n). Length is O(1). + Ordering is by insertion history. + Original F# adaptation from the clojure implementation by Steffen Forkmann. + + + + + Calculates the central moving average for the array of optional elements using n + elements either side of the point where the mean is being calculated. If any of + the optional elements in the averaging window are None then the average itself + is None. + + + + + Calculates the central moving average for the array using n elements either side + of the point where the mean is being calculated. + + + + + Returns an array of sliding windows of data drawn from the source array. + Each window contains the n elements surrounding the current element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + append uses Buffer.BlockCopy for efficient array operations. + Please note that a new array is created and both arrays are copied in, + disregarding any additional bytes in the original, underlying arrays. + + + + + cons uses Buffer.SetByte and Buffer.BlockCopy for efficient array operations. + Please note that a new array is created and both the head and tail are copied in, + disregarding any additional bytes in the original tail array. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An active pattern for conveniently retrieving the properties of a ByteString. + + + + + + + + + + +O(n). Returns a seq of the DList elements. + + + + +O(n). Returns a list of the DList elements. + + + + +O(n). Returns a DList of the seq. + + + + +O(log n). Returns option first element and tail. + + + + +O(log n). Returns the first element and tail. + + + + +O(log n). Returns option DList of the elements trailing the first element. + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns a new DList with the element added to the end. + + + + +O(1). Returns DList of one elements. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns option first element. + + + + +O(log n). Returns the first element. + + + + + + + +O(n). Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. + See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +O(1). Returns DList of no elements. + + + + +O(1). Returns a new DList with the element added to the beginning. + + + + +O(1). Returns a new DList of two lists. + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(n). Views the given deque as a sequence. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns a deque of the seq. + + + + +O(n), worst case. Returns a deque of the list. + + + + +O(n), worst case. Returns a deque of the two lists concatenated. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, right to left + + + + + O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, left to right + + + + +O(1). Returns deque of no elements. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + +O(1). Returns a new deque with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(n). Views the given heap as a sequence. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap reversed. + + + + +O(n). Returns heap, bool isDescending, from the sequence. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + +O(1). Returns option first element. + + + + +O(1). Returns the first element. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(log n) amortized time. Returns the option first element and tail. + + + + +O(log n) amortized time. Returns the first element and tail. + + + + +O(log n) amortized time. Returns a new queue with the element added to the end. + + + + + Priority queue is like a queue or stack data structure, but with an ascending or descending + ordering of the elements. Depending on the ordering peek retrieves either the highest or lowest + ordered element in the queue. + + + + + + + + + + +O(1). Build a new collection from the given enumerable object + + + + +O(n). Return a view of the collection as an enumerable object + + + + +O(n). Build a non-lazy list from the given collection. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(1). Build a collection from the given list. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(n). Build an array from the given collection + + + + +O(1). Build a collection from the given array. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(1). Build a new collection whose elements are the results of applying the given function + to the corresponding elements of the two collections pairwise. + + + + +O(1). Build a new collection whose elements are the results of applying the given function + to each of the elements of the collection. + + + + +O(1). Return a new list consisting of the results of applying the given accumulating function + to successive elements of the list + + + + +O(n). Apply the given function to each element of the collection. + + + + +O(1). Return a new collection which on consumption will consist of only the elements of the collection + for which the given predicate returns "true" + + + + +O(1). Return the list which contains on demand the list of elements of the list of lazy lists. + + + + +O(1). Return the list which contains on demand the pair of elements of the first and second list + + + + +O(1). Return the list which contains on demand the elements of the first list followed + by the elements of the second list + + + + +O(1). Return a list that contains the elements returned by the given computation. + The given computation is not executed until the first element on the list is + consumed. The given argument is passed to the computation. Subsequent elements + in the list are generated by again applying the residual 'b to the computation. + + + + +O(1). Return a list that is in effect the list returned by the given computation. + The given computation is not executed until the first element on the list is + consumed. + + + + +O(1). Return the list which on consumption will consist of an infinite sequence of + the given item + + + + +O(1). Return a new list which on consumption contains the given item + followed by the list returned by the given computation. The + + + + +O(1). Return a new list which contains the given item followed by the + given list. + + + + +O(n). Return the length of the list + + + + +O(1). Evaluates to the list that contains no items + + + + +O(n), worst case. Return the first element for which the given function returns <c>true</c>. + Raise <c>KeyNotFoundException</c> if no such element exists. + + + + +O(n), worst case. Apply the given function to successive elements of the list, returning the first + result where function returns <c>Some(x)</c> for some x. If the function never returns + true, 'None' is returned. + + + + +O(n). Behaves like a combination of map and fold; + it applies a function to each element of a list, + passing an accumulating parameter from left to right, + and returning a final value of this accumulator together with the new list. + + + + +O(n), where n is count. Return option the list which skips the first 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will skip the first 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of + the input list. + + + + +O(1). Returns option tuple of head element and tail of the list. + + + + +O(1). Returns tuple of head element and tail of the list. + + + + +O(1). Return option the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return option the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Return the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Test if a list is empty. Forces the evaluation of + the first element of the stream if it is not already evaluated. + + + + + + + + List monoid + + + + + + + + + + + Merges two sequences by the default comparer for 'T + + + + + Merges to sequences using the given function to transform the elements for comparision + + + + + + + + + + + Behaves like a combination of map and fold; + it applies a function to each element of a list, + passing an accumulating parameter from left to right, + and returning a final value of this accumulator together with the new list. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Curried cons + + + + + + + + + + + + + + Retrieves the keys from a Map + + + + + Retrieves the values from a Map + + + + + Allows to remove many keys from a Map + + + + + + + + Combines the two Maps into a single Map + + + + + + + + update f k map updates the value x at key k (if it is in the map). + If f x is None, the element is deleted. + If it is Some y, the key is bound to the new value y. + + + + + insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. + If the key does exist, the function will insert f new_value old_value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a from a list of key-value pairs + + + + + + Returns a as a list of key-value pairs. + Note that keys may be duplicated. + + + + + + Returns a as a sequence of key-value pairs. + Note that keys may be duplicated. + + + + + + Returns a as an array of key-value pairs. + Note that keys may be duplicated. + + + + + + Adds an element to a copy of an existing NameValueCollection + + + + + In-place add of a key-value pair to a + + + + + + + + Returns a new with the concatenation of two s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n) amortized time. Returns the first element and tail. + + + + +O(log n) amortized time. Returns the option first element and tail. + + + + +O(1). Returns the first element. + + + + +O(1). Returns option first element. + + + + +O(log n) amortized time. Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns a empty queue, with indicated ordering. + + + + + + + +O(1) amortized, O(n) worst-case. Returns option first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns the first element and tail. + + + + +O(n). Views the given queue as a sequence. + + + + +O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element + + + + +O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (dequeue) + + + + +O(n). Returns queue reversed. + + + + +O(n). Returns a queue of the seq. + + + + +O(1). Returns a queue of the list + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns option first element. + + + + +O(1). Returns the first element. (peek) + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +O(1). Returns queue of no elements. + + + + +O(1). Returns a new queue with the element added to the end. (enqueue) + + + + + + + + + + + O(log32n). Returns option random access list that contains the given value at the index. + + + + + O(log32n). Returns a new random access list that contains the given value at the index. + + + + + O(1). Returns option tuple last element and random access list without last item + + + + + O(1). Returns tuple last element and random access list without last item + + + + +O(n). Views the given random access list as a sequence. + + + + + O(n). Returns option random access list without the last item. + + + + + O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + + + + +O(n). Returns new random access list reversed. + + + + + O(n). Returns a random access list of the seq. + + + + + O(log32n). Returns option value at the index. + + + + + O(log32n). Returns the value at the index. + + + + + O(n). Returns a random access list whose elements are the results of applying the supplied function to each of the elements of a supplied random access list. + + + + + O(1). Returns the number of items in the random access list. + + + + + O(1). Returns option last element in the random access list. + + + + + O(1). Returns the last element in the random access list. If the random access list is empty it throws an exception. + + + + + O(1). Returns true if the random access list has no elements. + + + + + O(n). Returns a random access list of the supplied length using the supplied function operating on the index. + + + + + O(n). Returns a state from the supplied state and a function operating from right to left. + + + + + O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +O(1). Returns random access list of no elements. + + + + + O(1). Returns a new random access list with the element added at the end. + + + + + + + + + + + + + + + + + Pages the underlying sequence + + + + + Replicates each element in the seq n-times + + + + + Creates a new collection whose elements are the results of applying the given function to the corresponding pairs of elements from the two sequences. + Unlike Seq.map2, if one input sequence is shorter than the other then the remaining elements of the longer sequence are not ignored, they are yielded at the end of the resulting sequence. + + + + + Contracts a seq selecting every n values + + + + + Creates an infinite sequence of the given value + + + + + The same as Seq.skip except it returns empty if the sequence is empty or does not have enough elements. + Alias for Enumerable.Skip + + + + + The same as Seq.nth except returns None if the sequence is empty or does not have enough elements + + + + + + + + + + + A safe version of seq head + + + + + Creates a infinite sequences of the given values returning None everytime the given seq is exhausted + + + + + Creates a infinite sequences of the given values, executing the given function everytime the given seq is exhausted + + + + + Creates a infinite sequences of the given values + + + + + Converts a stream into a seq of byte[] where the array is of the length given + Note: the last chunk maybe less than the given chunk size + + + + + Converts a Stream into a sequence of bytes + + + + + Converts a streamReader into a seq yielding on each line + + + + + Splits a sequences at the given index + + + + + The same as Seq.average except will return None if the seq is empty + + + + + Will iterate the current sequence until the given predicate is statisfied + + + + + + + + + + + Returns the first element (with its index) for which the given function returns true. + Return None if no such element exists. + + Predicate + Sequence + + + + Adds an index to a sequence + + + + + + + + + + + + + + + O(n). Returns a vector of vectors of given length from the seq. Result may be a jagged vector. + + + + + O(log32(m,n)). Returns option vector that contains the given value at the indices. + + + + + O(log32n). Returns option vector that contains the given value at the index. + + + + + O(log32(m,n)). Returns a new vector of vectors that contains the given value at the indices. + + + + + O(log32n). Returns a new vector that contains the given value at the index. + + + + + O(1). Returns option tuple last element and vector without last item + + + + + O(1). Returns tuple last element and vector without last item + + + + +O(n). Views the given vector as a sequence. + + + + + O(1). Returns a new vector of one element. + + + + +O(n). Returns vector reversed. + + + + + O(n). Returns a vector of the seq. + + + + + O(log32(m,n)). Returns option value at the indices. + + + + + O(log32n). Returns option value at the index. + + + + + O(log32(m,n)). Returns the value at the outer index, inner index. If either index is out of bounds it throws an exception. + + + + + O(log32n). Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + O(n). Returns a vector whose elements are the results of applying the supplied function to each of the elements of a supplied vector. + + + + + O(1). Returns the number of items in the vector. + + + + + O(1). Returns option last element in the vector. + + + + + O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + O(1). Returns true if the vector has no elements. + + + + + O(n). Returns option vector without the last item. + + + + + O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + O(n). Returns a vector of the supplied length using the supplied function operating on the index. + + + + + O(n). Returns a state from the supplied state and a function operating from right to left. + + + + + O(m,n). Returns a seq from a vector of vectors. + + + + + O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +O(1). Returns vector of no elements. + + + + + O(1). Returns a new vector with the element added at the end. + + + + + O(n). Returns a new vector with the elements of the second vector added at the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two continuation actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Cont value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the Cont type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns the first element and tail. + + + + + + + +O(log n). Returns the option first element and tail. + + + + + + + +O(log n). Returns a option random access list of the elements trailing the first element. + + + + + + + + + + +O(log n). Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(log n). Returns the first element. + + + + + + + + + + +O(log n). Returns random access list with element updated by index. + + + + + + + +O(log n). Returns option random access list with element updated by index. + + + + + + + +O(n). Returns option random access list with element removed by index. + + + + +O(log n). Returns option element by index. + + + + + + + +O(log n). Returns option first element. + + + + +O(n). Returns random access list reversed. + + + + + + + +O(n). Returns random access list with element removed by index. + + + + +O(log n). Returns element by index. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + + + + + + + +O(log n). Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns init and the last element. + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option init and the last element. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option deque of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option last element. + + + + + + + +O(1), amortized. Returns option deque of the elements before the last element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1), amortized. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1), amortized. Returns a new deque of the elements before the last element. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1), amortized. Returns a new deque with the element added to the end. + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1), amortized. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1). Returns queue reversed + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the queue has no elements. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1). Returns a new deque with the element added to the end. + + + + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + + + + +returns option first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + + + + +returns option first element + + + + + + + +returns a new queue of the elements trailing the first element + + + + +returns queue reversed + + + + +returns the count of elememts + + + + + + + +returns true if the queue has no elements + + + + + + + +returns the first element + + + + + + + + + + + + + + + + + + + +returns a new queue with the element added to the end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n), worst case. Returns the first element and tail. + + + + + + + +O(log n), worst case. Returns the option first element and tail. + + + + + + + +O(log n), worst case. Returns a option random access list of the elements trailing the first element. + + + + + + + +O(log n), worst case. Returns option first element. + + + + + + + +O(log n), worst case. Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(log n), worst case. Returns the first element. + + + + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option element by index. + + + + + + + +O(n). Returns random access list reversed. + + + + + + + +O(log n), worst case. Returns element by index. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + + + + + + + +O(log n), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + + + + + + + + + + +O(log n). Returns the head element and tail. + + + + + + + +O(log n). Returns option head element and tail. + + + + + + + + + + + + + +O(log n). Returns heap option from merging two heaps. + + + + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + + + + +O(log n). Returns option first min or max element. + + + + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + + + + + + + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + +O(log n). Returns a new heap with the element inserted. + + + + + + + +O(log n). Returns the min or max element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns a new DList with the element added to the end. + + + + + + + + + + + + + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns the first element. + + + + + + + + + + + The DList is an implementation of John Hughes' append list. + See http://dl.acm.org/citation.cfm?id=8475 for more information. + This implementation adds an additional parameter to allow a more + efficient calculation of the list length. + Note that an alternate form would represent the DList as: + type DList<'a> = DList of ('a list -> 'a list) + An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the end. + + + + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + + + + +returns option first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + + + + +returns option first element + + + + + + + +returns a new queue of the elements trailing the first element + + + + +returns the count of elememts + + + + + + + +returns true if the queue has no elements + + + + + + + +returns the first element + + + + + + + + + + + + + + + + + + + +returns a new queue with the element added to the end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns option first min or max element. + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns the min or max element. + + + + + + + + + + +O(log n). Returns the head element and tail. + + + + + + + +O(log n). Returns option head element and tail. + + + + + + + +O(log n). Returns heap option from merging two heaps + + + + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + + + + + + + +O(log n) Returns a new heap of the elements trailing the head. + + + + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + + + + + + + +O(log n). Returns a new heap with the element inserted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + + + + + + + +O(log n) amortized time. Returns the head element and tail. + + + + + + + +O(log n) amortized time. Returns option head element and tail. + + + + + + + + + + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + + + + +O(1) worst case. Returns option first min or max element. + + + + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + + + + + + + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + + + + +O(n). Returns the count of elememts. + + + + + + + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + + + + +O(1) worst case. Returns the min or max element. + + + + + + + + + + + + + + PairingHeap performs extremely well in practice, however (according to Okasaki) it should be avoided for applications taking advantage of persistence. + Also according to Okasaki the time complexity of the heap functions in the PairingHeap implementation have "resisted" time complexity analysis. + ofSeq: superior performance; insert: superior performance; tail: superior performance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the queue has no elements. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns init and the last element. + + + + + + + +O(1), worst case. Returns the first element and tail + + + + + + + +O(1), worst case. Returns option init and the last element. + + + + + + + +O(1), worst case. Returns option first element and tail. + + + + + + + +O(1), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1), worst case. Returns option last element. + + + + + + + +O(1), worst case. Returns option deque of the elements before the last element. + + + + + + + +O(1), worst case. Returns option first element. + + + + + + + +O(1), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1), worst case. Returns the first element. + + + + + + + + + + + + + + + + + + + +O(n/2), worst case. Returns deque with element updated by index. + + + + + + + +O(n/2), worst case. Returns option deque with element updated by index. + + + + + + + +O(n/2), worst case. Returns option deque with element removed by index. + + + + + + + +O(n/2), worst case. Returns option element by index. + + + + + + + +O(1), worst case. Returns a new deque with the element added to the end. + + + + + + + +O(n/2), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n/2), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tries to advance the position of the RingBuffer by the offset. + Returns None if offset is negative, otherwise Some containing + the position of the RingBuffer. + + + + + + + + + + + + + + + + + + + + + + + Advances the position of the RingBuffer by the offset. + Returns the position of the RingBuffer. Throws an ArgumentException if + the offset is negative. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Multi-way tree, also known as rose tree. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns the first element and tail. + + + + + + + +O(1), worst case. Returns the option first element and tail. + + + + + + + +O(1), worst case. Returns a option random access list of the elements trailing the first element. + + + + + + + +O(1), worst case. Returns option first element. + + + + + + + +O(1), worst case. Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(1), worst case. Returns the first element. + + + + + + + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option element by index. + + + + + + + +O(n). Returns random access list reversed. + + + + + + + +O(log n), worst case. Returns element by index. + + + + + + + +O(log n) Returns the count of elememts. + + + + + + + + + + + + + + + + +O(1), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tries to advance the start date of the Timeseries to toDate. + Returns None if toDate is before the start date of the Timeseries, + otherwise Some containing the start date of the Timeseries. + + + + + + + + + + + + + + + + + + + + + + + Advances the start date of the Timeseries to toDate. Throws an + ArgumentException if toDate is before the Timeseries start date. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns option random access list with element updated by index. + + + + +O(log n). Returns random access list with element updated by index. + + + + +O(log n). Returns the option first element and tail. + + + + +O(log n). Returns the first element and tail. + + + + +O(log n). Returns a option random access list of the elements trailing the first element. + + + + +O(log n). Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n). Returns option random access list with element removed by index. + + + + +O(n). Returns random access list with element removed by index. + + + + +O(n). Returns random access list from the sequence. + + + + +O(log n). Returns option element by index. + + + + +O(log n). Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +O(log n). Returns option first element. + + + + +O(1). Returns a empty random access list. + + + + +O(log n). Returns the first element. + + + + +O(log n). Returns a new random access list with the element added to the beginning. + + + + +O(xs). Returns random access list from elements of 2 random access lists concatenated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1), amortized. Returns option init and the last element. + + + + +O(1), amortized. Returns init and the last element. + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option deque of the elements trailing the first element. + + + + +O(1), amortized. Returns a new deque of the elements trailing the first element. + + + + +O(1), amortized. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of one element, front-back stream ratio constant defaulted to 2. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(1). Returns a deque of the seq, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of the seq, front-back stream ratio constant defaulted to 2. + + + + +O(ys). Returns a deque of the two seqs concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(ys). Returns a deque of the two seqs concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(ys-xs). Returns a deque of the two lists concatenated, c is front-back stream ration constant, should be at least 2. + + + + +O(ys-xs). Returns a deque of the two lists concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1), amortized. Returns option last element. + + + + +O(1), amortized. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1), amortized. Returns option deque of the elements before the last element. + + + + +O(1), amortized. Returns a new deque of the elements before the last element. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1). Returns deque of no elements, c is front-back stream ration constant, should be at least 2. + + + + +O(1), amortized. Returns a new deque with the element added to the beginning. + + + + +O(ys-xs). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(ys-xs). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + + + + + + + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns a queue of the seq. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1). Returns queue of no elements. + + + + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(n), worst case. Returns a deque of the seq. + + + + +O(n), worst case. Returns a deque of the list. + + + + +O(n), worst case. Returns a deque of the two lists concatenated. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + +returns option first element and tail + + + + +returns the first element and tail + + + + +returns option queue of the elements trailing the first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns a new queue with the element added to the end + + + + +returns queue reversed + + + + +returns a queue of the seq + + + + +returns a queue of the list + + + + +returns the count of elememts + + + + +returns true if the queue has no elements + + + + +returns option first element + + + + +returns the first element + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +returns queue of no elements +c is front-back stream ration constant, should be at least 2 + + + + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + +O(log n), worst case. Returns the option first element and tail. + + + + +O(log n), worst case. Returns the first element and tail. + + + + +O(log n), worst case. Returns a option random access list of the elements trailing the first element. + + + + +O(log n), worst case. Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n). Returns random access list from the sequence. + + + + +O(log n), worst case. Returns option element by index. + + + + +O(log n), worst case. Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +O(1). Returns a empty random access list. + + + + +O(log n), worst case. Returns option first element. + + + + +O(log n), worst case. Returns the first element. + + + + +O(log n), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The zipper datastructure for binary trees + + + + + + + + + + + + + + + + + + + + A simple binary tree + + + + + Moves the zipper in the directions of the given list + + + + + + + + Creates a zipper from a tree + + + + + Modifies the current focus inside the zipper + + + + + Moves the zipper to the right + + + + + Moves the zipper to the left + + + + + Moves the zipper to the top + + + + + Moves the zipper one level up + + + + + Creates a new branch with the label x and two leafs as subbranches + + + + + TreeZipper + original implementation taken from http://blog.xquant.net/?p=156 + + + + + O(log n). Returns option head element and tail. + + + + + O(log n). Returns the head element and tail. + + + + +O(log n). Returns option heap of the elements trailing the head + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + +O(log n). Returns heap from the sequence. + + + + +O(log n). Returns heap option from merging two heaps. + + + + +O(log n) Returns heap from merging two heaps, both must have same isDescending. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n). Returns a new heap with the element inserted. + + + + +O(log n). Returns option first min or max element. + + + + +O(log n). Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns a queue of the list. + + + + +O(1). Returns the count of elememts. + + + + +O(log* n), worst case. Returns option queue of the elements trailing the first element. + + + + +O(log* n), worst case. Returns a new queue of the elements trailing the first element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(log* n). Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. + See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns a new DList with the element added to the end. + + + + +O(log n). Returns the first element. + + + + +O(1). Returns a new DList of two lists. + + + + +O(1). Returns a new DList with the element added to the beginning. + + + + +O(n). Returns a seq of the DList elements. + + + + +O(n). Returns a DList of the seq. + + + + +O(1). Returns DList of one elements. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(1). Returns DList of no elements. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, /O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(n/2). Returns a deque of the seq. + + + + +O(ys). Returns a deque of the two lists concatenated. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements. + + + + +O(n), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns option first element and tail + + + + +returns the first element and tail + + + + +returns option queue of the elements trailing the first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns a new queue with the element added to the end + + + + +returns a queue of the seq + + + + +returns a queue of the list + + + + +returns the count of elememts + + + + +returns true if the queue has no elements + + + + +returns option first element + + + + +returns the first element + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +returns queue of no elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + + + + + + + + + +O(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). Credit: Haskell.org + + + + +O(n+m). Is this a proper submap? (ie. a submap but not equal). The expression (isProperSubmapOfBy f m1 m2) returns True when m1 and m2 are not equal, all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + + + + +O(n+m). Is this a submap? Defined as (isSubmapOf = isSubmapOfBy (==)). Credit: Haskell.org + + + + +O(n+m). The expression (isSubmapOfBy f m1 m2) returns True if all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + +O(n*log n). mapKeysWith c f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the associated values will be combined using c. Credit: Haskell.org + + + + +O(n*min(n,W)). mapKeys f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the value at the greatest of the original keys is retained. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from an array of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from an array of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from an array of key/value pairs. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a seq of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from a seq of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a seq of key/value pairs. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a list of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to an array of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to a seq of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to a list of key/value pairs. Credit: Haskell.org + + + + +O(n). Return all keys of the map in ascending order. Credit: Haskell.org + + + + +O(n). Return all elements of the map in the ascending order of their keys. Credit: Haskell.org + + + + +O(n). Fold the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. Credit: Haskell.org + + + + +O(n). FoldBack the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. Credit: Haskell.org + + + + +O(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. Credit: Haskell.org + + + + +O(n). FoldBack the values in the map, such that fold f z == Prelude.foldr f z . elems. Credit: Haskell.org + + + + +O(log n). Performs a split but also returns whether the pivot key was found in the original map. Credit: Haskell.org + + + + +O(log n). The expression (split k map) is a pair (map1,map2) where all keys in map1 are lower than k and all keys in map2 larger than k. Any key equal to k is found in neither map1 nor map2. Credit: Haskell.org + + + + +O(n). Map values and separate the Left and Right results. Credit: Haskell.org + + + + +O(n). Map keys/values and separate the Left and Right results. Credit: Haskell.org + + + + +O(n). Map values and collect the Just results. Credit: Haskell.org + + + + +O(n). Map keys/values and collect the Just results. Credit: Haskell.org + + + + +O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +O(n). Filter all values that satisfy some predicate. Credit: Haskell.org + + + + +O(n). Filter all keys/values that satisfy some predicate. Credit: Haskell.org + + + + +O(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + +O(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + + + + +O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +O(log n). Delete the maximal key. Credit: Haskell.org + + + + +O(log n). Delete the minimal key. Credit: Haskell.org + + + + +O(log n). The maximal key of the map. Credit: Haskell.org + + + + +O(log n). The minimal key of the map. Credit: Haskell.org + + + + +O(log n). Retrieves the minimal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +O(log n). Retrieves the maximal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +O(min(n,W)). Retrieves the minimal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + +O(min(n,W)). Retrieves the maximal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + + + + +O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +O(log n). Retrieves the minimal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +O(log n). Retrieves the maximal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +O(n+m). The (left-biased) intersection of two maps (based on keys). Credit: Haskell.org + + + + +O(n+m). Difference with a combining function. Credit: Haskell.org + + + + +O(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the key and both values. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y. Credit: Haskell.org + + + + +O(n+m). Difference between two maps (based on keys). Credit: Haskell.org + + + + + + + + + + + + + + + + + + + +Refer to Haskell documentation. Unexpected code growth or corruption of the data structure can occure from wrong use. Credit: Haskell.org + + + + + + + +O(log n). The expression (alter f k map) alters the value x at k, or absence thereof. alter can be used to insert, delete, or update a value in an IntMap. Credit: Haskell.org + + + + +O(min(n,W)). Lookup and update. Credit: Haskell.org + + + + +O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f k x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +O(min(n,W)). Delete a key and its value from the map. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). The expression (insertLookupWithKey f k x map) is a pair where the first element is equal to (lookup k map) and the second element equal to (insertWithKey f k x map). Credit: Haskell.org + + + + +O(min(n,W)). Insert with a combining function. insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f new_value old_value. Credit: Haskell.org + + + + +O(min(n,W)). Insert with a combining function. insertWithKey f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f key new_value old_value. Credit: Haskell.org + + + + +O(min(n,W)). Insert a new key/value pair in the map. If the key is already present in the map, the associated value is replaced with the supplied value, i.e. insert is equivalent to insertWith const. Credit: Haskell.org + + + + +O(1). A map of one element. Credit: Haskell.org + + + + +O(1). The empty map. Credit: Haskell.org + + + + +O(log n). Find smallest key greater or equal to the given one and return the corresponding (key, value) pair Credit: Haskell.org + + + + +O(log n). Find largest key smaller or equal to the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + +O(log n). Find smallest key greater than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + + + + +O(log n). Find largest key smaller than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + + + + +O(min(n,W)). The expression (findWithDefault def k map) returns the value at key k or returns def when the key is not an element of the map. Credit: Haskell.org + + + + +O(min(n,W)). Lookup the value at a key in the map. Credit: Haskell.org + + + + +O(log n). Is the key not a member of the map? Credit: Haskell.org + + + + +O(min(n,W)). Is the key a member of the map? Credit: Haskell.org + + + + +O(min(n,W)). Lookup the value at a key in the map. Returns 'a option. Credit: Haskell.org + + + + +O(n). Number of elements in the map. Credit: Haskell.org + + + + +O(1). Map is empty. Credit: Haskell.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + +returns the option first element and tail + + + + +returns a option random access list of the elements trailing the first element + + + + +returns option first element + + + + +returns a new random access list of the elements trailing the first element + + + + +returns true if the random access list has no elements + + + + +returns the first element + + + + +returns random access list with element updated by index + + + + +returns option random access list with element updated by index + + + + +returns option element by index + + + + +returns random access list reversed + + + + +returns element by index + + + + +returns the count of elememts + + + + +returns the count of elememts + + + + +returns a new random access list with the element added to the beginning + + + + + + + +returns true if the queue has no elements + + + + + + + +returns option first element + + + + +returns the first element and tail + + + + +returns the first element + + + + +returns a new queue with the element added to the end + + + + + + + +returns the first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + +returns option first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns true if the queue has no elements + + + + +returns the first element + + + + +returns a new queue with the element added to the end + + + + +returns the count of elememts + + + + +returns the count of elememts + + + + + + + +returns the head element and tail + + + + +returns option head element and tail + + + + +returns heap option from merging two heaps + + + + +returns option heap of the elements trailing the head + + + + +returns a new heap of the elements trailing the head + + + + +returns heap from merging two heaps, both must have same isDescending + + + + +returns a new heap with the element inserted + + + + + + + +returns true if the heap has no elements + + + + +returns true if the heap has max element at head + + + + +returns option first min or max element + + + + +returns the count of elememts + + + + +returns the min or max element + + + + +returns the count of elememts + + + + + + + +returns init and the last element + + + + +returns the first element and tail + + + + +returns option init and the last element + + + + + + + +returns option deque of the elements trailing the first element + + + + +returns option last element + + + + +returns option deque of the elements before the last element + + + + +returns option first element + + + + +returns a new deque of the elements trailing the first element + + + + +returns deque reversed + + + + +returns the count of elememts + + + + +returns the last element + + + + +returns true if the deque has no elements + + + + +returns a new deque of the elements before the last element + + + + +returns the first element + + + + +returns the count of elememts + + + + +returns deque with element updated by index + + + + +returns option deque with element updated by index + + + + + + + +returns option element by index + + + + +returns a new deque with the element added to the end + + + + +returns deque with element removed by index + + + + +returns element by index + + + + +returns a new deque with the element added to the beginning + + + + + + + + Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + Returns the number of items in the collection. + + + + + Returns a new vector with the element 'added' at the end. + + + + + Returns a new vector that contains the given value at the index. Note - index must be <= vector.Count. + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns option head element and tail. + + + + +O(log n). Returns the head element and tail. + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + +O(log n). Returns heap from the sequence. + + + + +O(log n). Returns heap option from merging two heaps. + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n). Returns a new heap with the element inserted. + + + + +O(1). Returns option first min or max element. + + + + +O(1). Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + + + + + + + + + + + + + + + + + A zipper for lists + + + + + Returns the whole list from the zipper + + + + + Creates a list zipper + + + + + Moves the zipper to the front + + + + + Moves the zipper backwards + + + + + Moves the zipper forward + + + + + Changes the element under the focus + + + + + Returns the head element from the list under focus + + + + + ListZipper + original implementation taken from http://learnyouahaskell.com/zippers + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap from the sequence. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1) Returns true if the heap has no elements. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(1) Returns a empty heap. + + + + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns a queue of the seq. + + + + +O(1). Returns a queue of the list. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +O(1). Returns queue of no elements. + + + + + + + + + + +O(n/2), worst case. Returns option deque with element updated by index. + + + + +O(n/2), worst case. Returns deque with element updated by index. + + + + +O(1), worst case. Returns option init and the last element. + + + + +O(1), worst case. Returns init and the last element. + + + + +O(1), worst case. Returns option first element and tail. + + + + +O(1), worst case. Returns the first element and tail. + + + + +O(1), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1), worst case. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of one element, front-back stream ratio constant defaulted to 2. + + + + +O(1). Returns deque reversed. + + + + +O(n/2), worst case. Returns option deque with element removed by index. + + + + +O(n/2), worst case. Returns deque with element removed by index. + + + + +O(n). Returns a deque of the seq, c is front-back stream ratio constant, should be at least 2. + + + + +O(n). Returns a deque of the seq, front-back stream ratio constant defaulted to 2. + + + + +O(|ys-xs|). Returns a deque of the two seqs concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two seqs concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(|ys-xs|). Returns a deque of the two lists concatenated, c is front-back stream ration constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two lists concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(n/2), worst case. Returns option element by index. + + + + +O(n/2), worst case. Returns option element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1), worst case. Returns option last element. + + + + +O(1), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1), worst case. Returns option deque of the elements before the last element. + + + + +O(1), worst case. Returns a new deque of the elements before the last element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements, c is front-back stream ration constant, should be at least 2. + + + + +O(1), worst case. Returns a new deque with the element added to the beginning. + + + + +O(|ys-xs|). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns option queue of the elements trailing the first element. + + + + +O(1), worst case. Returns a new queue of the elements trailing the first element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1), worst case. Returns a new queue with the element added to the end. + + + + + + + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + Behaves like a combination of map and fold; + it applies a function to each element of a tree, + passing an accumulating parameter, + and returning a final value of this accumulator together with the new tree. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + +O(1), worst case. Returns the option first element and tail. + + + + +O(1), worst case. Returns the first element and tail. + + + + +O(1), worst case. Returns a option random access list of the elements trailing the first element. + + + + +O(1), worst case. Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n) Returns random access list from the sequence. + + + + +O(log n), worst case. Returns option element by index. + + + + +O(log n), worst case. Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +returns a empty random access list. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns a new vector that contains the given value at the index. Note - index must be <= vector.Count. + + + + + Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + Returns a new vector with the element 'added' at the end. + + + + + Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + + + + Returns the number of items in the collection. + + + + + + + + + + + + + + vector implementation ported from https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentVector.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state until the provided predicate is true. + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state while the provided predicate is true. + + + + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Combines two path strings + + + + + The directory separator string. On most systems / or \ + + + + + Appends all notnull fileNames + + + + + Appends a text if the value is not null or empty + + + + + Appends a text if the value is not null + + + + + Appends a text if the value is not null + + + + + Appends a text if the predicate is false + + + + + Appends a text if the predicate is true + + + + + Appends a text + + + + + Converts the given text from linux or mac linebreaks to windows line breaks + + + + + Replaces the file with the given string + + + + + Writes a single string to a file + + + + + Writes a file line by line + + + + + Reads a file line by line + + + + + Reads a file as one text + + + + + Checks if all given files exists + + + + + Checks if the file exists on disk. + + + + + Gets the current directory + + + + + Gets all files in the directory + + + + + Gets all subdirectories + + + + + Converts a file to it's full file system name + + + + + Creates a FileInfo or a DirectoryInfo for the given path + + + + + Creates a FileInfo for the given path + + + + + Creates a DirectoryInfo for the given path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two iteratee actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + + + + + + + + + + Sequential application + + + + + Sequential application + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses a JSON source text and returns an JSON AST + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a lens that views a list into a lens that views an array + + + + + Applies an isomorphism to the value viewed through a lens + + + + + Creates a lens that maps the given lens in a sequence + + + + + Creates a lens that maps the given lens in an array + + + + + Creates a lens that maps the given lens in a list + + + + + Lens for a particular position in a list + + + + + Lens for a particular position in an array + + + + + Lens for a particular key in a map + + + + + Lens for a particular value in a set + + + + + + + + Identity lens + + + + + Gets/sets the snd element in a pair + + + + + Gets/sets the fst element in a pair + + + + + Modifies the state in a state monad and returns the modified value. + + + + + Modifies the state in a state monad and returns the original value. + + + + + Update through a lens within a state monad + + + + + Applies a lens in the 'set' direction within a state monad + + + + + Applies a lens in the 'get' direction within a state monad + + + + + is applied to source. + If true, is selected. + If false, is selected. + + + + + Pair two lenses + + + + + Composes two lenses through a sum in the source + + + + + Sequentially composes two lenses + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert the quotation expression to LINQ expression trees + + This operation will only succeed for a subset of quotation expressions. + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Evaluate the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + Converts a Lambda quotation into a Linq Lamba Expression with 1 parameter + + + + + + + + This function should not be called directly. + + + + + Evaluate the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Convert the quotation expression to LINQ expression trees + + This operation will only succeed for a subset of quotation expressions. + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of types used for implementing quotation conversions. + These are public only because targets of Linq Lambda expressions require them to be so + + + + + This module provides Compile and Eval extension members + for F# quotation values, implemented by translating to LINQ + expression trees and using the LINQ dynamic compiler. + + + + + An intrinsic for compiling <c>&lt;@ x <> y @&gt;</c> to expression trees + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Monoid (int,1,*) + + + + + Monoid (int,0,+) + + + + + Monoid (a,1,*) + + + + + Monoid (a,0,+) + + + + + + + + + + + The dual of a monoid, obtained by swapping the arguments of 'Combine'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Convert the nullable to a list of length 0 or 1. + + + + + Convert the nullable to an array of length 0 or 1. + + + + + Transforms a Nullable value by using a specified mapping function. + + + + + Executes a function for a nullable value. + + + + + Evaluates the equivalent of List.forall for a nullable. + + + + + Evaluates the equivalent of List.exists for a nullable. + + + + + Performs the equivalent of the List.foldBack operation on a nullable. + + + + + Evaluates the equivalent of List.fold for a nullable. + + + + + Returns 1 if Nullable has value, otherwise 0 + + + + + True if Nullable does not have value + + + + + True if Nullable has value + + + + + Monadic bind + + + + + Converts nullable to option + + + + + Converts option to nullable + + + + + Gets the value associated with the Nullable. + If no value, throws. + + + + + Gets the value associated with the nullable or the supplied default value. + + + + + Gets the value associated with the nullable or the supplied default value. + + + + + + + + + + + + + + Sequential application + + + + + + + + + + + Inject a value into the monadic type + + + + + Generic monadic operators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The maybe monad. + This monad is my own and uses an 'T option. Others generally make their own Maybe<'T> type from Option<'T>. + The builder approach is from Matthew Podwysocki's excellent Creating Extended Builders series http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/18/much-ado-about-monads-creating-extended-builders.aspx. + + + + + Concatenates an option of option. + + + + + transforms a function in the Try...(input, out output) style + into a function of type: input -> output Option + Example: fromTryPattern(System.Double.TryParse) + See Examples.Option + + + + + Haskell-style maybe operator + + + + + + + + + + + + + + + + + Attempts to cast an object. Returns None if unsuccessful. + + + + + Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + + Gets the option if Some x, otherwise the supplied default value. + + + + + Gets the value associated with the option or the default value for the type. + + + + + Gets the value associated with the option or the supplied default value from a function. + + + + + Gets the value associated with the option or the supplied default value. + + + + + Gets the value associated with the option or the supplied default value. + + + + + Maps Choice 1Of2 to Some value, otherwise None. + + + + + If true,value then returns Some value. Otherwise returns None. + Useful to process TryXX style functions. + + + + + Converts a function returning bool,value to a function returning value option. + Useful to process TryXX style functions. + + + + + True -> Some(), False -> None + + + + + Maps an Option to Nullable + + + + + Maps a Nullable to Option + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two maybe actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the option type + + + + + Option wrapper monoid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a 6-tuple + + + + + Creates a 5-tuple + + + + + Creates a 4-tuple + + + + + Creates a 3-tuple + + + + + Creates a pair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The reader monad. + This monad comes from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/07/much-ado-about-monads-reader-edition.aspx. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two reader actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Reader value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the Reader type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +flags:RegexOptions -> pattern:string -> input:string -> Regex.ActiveMatch option + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The state monad. + The algorithm is adjusted from my original work off of Brian Beckman's http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/. + The approach was adjusted from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2009/12/30/much-ado-about-monads-state-edition.aspx and mirrors his final result. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two state actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a State value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the State type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A transactional memory log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A transactional variable + + + + + + + + + + + + + + + + + + + + + + + + + + A base type for transactional variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Software Transactional Memory monad. + + + + + Checks whether all values of the sequence can be inferred to a special type + + + + + Checks whether the string is a float + + + + + Checks whether the string is an int64 + + + + + Checks whether the string is an int32 + + + + + Checks whether the string is a boolean value + + + + + Turns a string into a nice PascalCase identifier + + + + + + + + + + + + + + + + + + + + + + + Returns the singularized version of a noun + + + + + Returns the pluralized version of a noun + + + + + Returns if the string is null or empty + + + + + Folds the string list by seperating entries with a single space + + + + + Splits a string based on whitespace (spaces, tabs, and newlines) + + + + + Creates newline seperated string from the string list + + + + + Splits a string based on newlines + + + + + Returns a sequence of strings split by the predicate + + + + + + + + + + + Converts a sequence of strings to a single string separated with the delimiters + + + + + Splits the given string at the given delimiter + + + + + Returns a value indicating whether the specified substring occurs within this string + + + + + Replaces the given "replacement" for every occurence of the pattern in the given text + + + + + Checks whether the given text starts with the given prefix + + + + + + + + Stops the average runtime for the given functions + Afterwards it reports it with the given descriptions + + + + + Stops the average runtime for a given function and applies it the given count + Afterwards it reports it with the given description + + + + + Stops the average runtime for a given function and applies it the given count + + + + + Stops the runtime for a given function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequential application + + + + + + + + + + + + + + + + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequential application + + + + + Sequential application + + + + + Sequential application, parameterized by semigroup + + + + + Sequential application, parameterized by append + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The writer monad. + This monad comes from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/01/a-kick-in-the-monads-writer-edition.aspx. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two state actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Writer value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + + + + + + + + + + + + + + + + + + + + + + Inject a value into the Writer type + + + + + + + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequential application + + + + + Sequential application + + + + + + + + + + + Split an array of pairs into two arrays + + + + + Combine the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an <c>ArgumentException</c> is + raised.. + + + + + Return the index of the first element in the array + that satisfies the given predicate. + + + + + Return the index of the first element in the array + that satisfies the given predicate. + + + + + Return an array containing the given element + + + + + Like <c>foldBack</c>, but return both the intermediary and final results + + + + + Like <c>fold</c>, but return the intermediary and final results + + + + + Build a new collection whose elements are the results of applying the given function + to the corresponding elements of the two collections pairwise. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply the given function to pair of elements drawn from matching indices in two arrays, + also passing the index of the elements. The two arrays must have the same lengths, + otherwise an <c>ArgumentException</c> is raised. + + + + + Return true if the given array is empty, otherwise false + + + + + Test elements of the two arrays pairwise to see if all pairs of elements satisfy the given predicate. + Raise ArgumentException if the arrays have different lengths. + + + + + Apply a function to pairs of elements drawn from the two collections, right-to-left, + threading an accumulator argument through the computation. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply a function to pairs of elements drawn from the two collections, + left-to-right, threading an accumulator argument + through the computation. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> then + computes <c>f i0 (...(f iN-1 iN))</c>. Raises ArgumentException if the array has size zero. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>f (... (f i0 i1)...) iN</c>. Raises ArgumentException if the array has size zero. + + + + + Return the index of the first element in the array + that satisfies the given predicate. Raise <c>KeyNotFoundException</c> if + none of the elements satisfy the predicate. + + + + + Return the index of the first element in the array + that satisfies the given predicate. Raise <c>KeyNotFoundException</c> if + none of the elements satisfy the predicate. + + + + + Test elements of the two arrays pairwise to see if any pair of element satisfies the given predicate. + Raise ArgumentException if the arrays have different lengths. + + + + + Return a view of the array as an enumerable object + + + + + Build a ResizeArray from the given elements + + + + + Return a fixed-length array containing the elements of the input ResizeArray + + + + + Sort the elements using the key extractor and generic comparison on the keys + + + + + Sort the elements using the given comparison function + + + + +Return a new array with the elements in reverse order + + + + +Apply the given function to successive elements, returning the first +result where function returns "Some(x)" for some x. + + + + +Return the first element for which the given function returns <c>true</c>. +Return None if no such element exists. + + + + +Return the first element for which the given function returns <c>true</c>. +Raise <c>KeyNotFoundException</c> if no such element exists. + + + + +Apply the given function to each element of the array. Return +the array comprised of the results "x" for each element where +the function returns Some(x) + + + + +Split the collection into two collections, containing the +elements for which the given predicate returns <c>true</c> and <c>false</c> +respectively + + + + +Return a new collection containing only the elements of the collection +for which the given predicate returns <c>true</c> + + + + + Test if all elements of the array satisfy the given predicate. + If the input function is <c>f</c> and the elements are <c>i0...iN</c> and "j0...jN" + then computes <c>p i0 && ... && p iN</c>. + + + + + Test if any element of the array satisfies the given predicate. + If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>p i0 or ... or p iN</c>. + + + + +Build a new array whose elements are the results of applying the given function +to each of the elements of the array. The integer index passed to the +function indicates the index of element being transformed. + + + + +Apply the given function to each element of the array. The integer passed to the +function indicates the index of element. + + + + +Build a new collection whose elements are the results of applying the given function +to the corresponding elements of the two collections pairwise. The two input +arrays must have the same lengths. + + + + +Apply the given function to two arrays simultaneously. The +two arrays must have the same lengths, otherwise an Invalid_argument exception is +raised. + + + + +Build a new array whose elements are the results of applying the given function +to each of the elements of the array. + + + + +Apply the given function to each element of the array. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> then + computes <c>f i0 (...(f iN s))</c>. + + + + + Apply a function to each element of the collection, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>f (... (f s i0)...) iN</c> + + + + +Build and array from the given seq + + + + +Build an array from the given list + + + + +Build a list from the given array + + + + +Read a range of elements from the first array and write them into the second. + + + + +Fill a range of the collection with the given element + + + + +Build a new array that contains the elements of the given array + + + + +Build a new array that contains the given subrange specified by +starting index and length. + + + + +Build a new array that contains the elements of each of the given list of arrays + + + + +Build a new array that contains the elements of the first array followed by the elements of the second array + + + + + Create an array by calling the given generator on each index. + + + + + Create an array whose elements are all initially the given value. + + + + + Set the value of an element in the collection. You can also use the syntax <c>arr.[idx] <- e</c>. + + + + + Fetch an element from the collection. You can also use the syntax <c>arr.[idx]</c>. + + + + + Return the length of the collection. You can also use property <c>arr.Length</c>. + + + + + Generic operations on the type System.Collections.Generic.List, which is called ResizeArray in the F# libraries. + + + + + Wait for the result and commit it + + + + + Record the result in the AsyncResultCell. Subsequent sets of the result are ignored. + + This may result in the scheduled resumption of a waiting asynchronous operation + + + + + Create a new result cell + + + + + A helper type to store a single result from an asynchronous computation and asynchronously + access its result. + + + + + + + + + + + + + + Create an async whose result depends on the value of an AsyncResult. + + + + + Represents the reified result of an asynchronous computation + + + + + An async that produces true if the reader is at the end of stream and false otherwise + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + + + + + + + Creates an async that read all characters in the stream up to the end. + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads next line from the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads exactly <c>count</c> characters from the stream unless end of stream is reached and puts them + into <c>buffer</c> starting at <c>index</c>. The async returns the number of characters that are read (if end-of-stream is not reached + that will be <c>count</c> + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads all the charactes that are avilable in the stream up to <c>count</c characters and puts them + into <c>buffer</c> starting at <c>index</c>. The async returns the number of characters that are read. + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads next character from the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that produces next character from the stream without advancing the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + +. DiscardBufferedData tells StreamReader to throw away its internal +. buffer contents. This is useful if the user needs to seek on the + underlying stream to a known location then wants the StreamReader + to start reading from this new point. This method should be called + very sparingly, if ever, since it can lead to very poor performance. + However, it may be the only way of handling some scenarios where + users need to re-read the contents of a StreamReader a second time. + + + + + + + + + + + + + + + + + + + + Creates a new AsyncStreamReader for the given stream. The + character encoding is set by encoding and the buffer size, + in number of 16-bit characters, is set by bufferSize. + + Note that detectEncodingFromByteOrderMarks is a very + loose attempt at detecting the encoding by looking at the first + 3 bytes of the stream. It will recognize UTF-8, little endian + unicode, and big endian unicode text, but that's it. If neither + of those three match, it will use the Encoding you provided. + + + + + Implements a TextReader-like API that asynchronously reads characters from + a byte stream in a particular encoding. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create an async that opens a <c>System.IO.FileStream</c> on the specified path, via a fresh I/O thread. + Pass <c>options=FileOptions.Asynchronous</c> to enable further asynchronous read/write operations + on the FileStream. + + + + + Create an async that returns a <c>System.IO.StreamWriter</c> that appends UTF-8 text to an existing file, via a fresh I/O thread. + + + + + Create an async that opens an existing file writing, via a fresh I/O thread. + + + + + Create an async that opens a <c>System.IO.FileStream</c> on the specified path for read/write access, via a fresh I/O thread. + + + + + Create an async that opens an existing file for reading, via a fresh I/O thread. + + + + + + + + Return an asynchronous computation that will read to the end of a stream via a fresh I/O thread. + + + + + + + + Returns an asynchronous computation that, when run, will wait for the download of the specified resource as a data buffer. + + + + + Returns an asynchronous computation that, when run, will wait for the download of a resource with the specified URI to the local file. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a readable stream containing the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a stream for writing data to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a stream for writing data to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of a data buffer to a resource identified by a URI, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of a data buffer to a resource identified by a URI, using the POST method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified local file to the specified resource, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified local file to the specified resource, using the POST method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified string to the specified resource, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified string to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the data in the specified name/value collection to the resource identified by the specified URI, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the data in the specified name/value collection to the resource identified by the specified URI. + + + + + + + + + + + Return an asynchronous computation that, when run, will wait for a response to the given WebRequest. + + + + + + + diff --git a/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.dll b/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.dll new file mode 100644 index 0000000..027a73a Binary files /dev/null and b/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.dll differ diff --git a/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.xml b/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.xml new file mode 100644 index 0000000..eee4c31 --- /dev/null +++ b/packages/FSharpx.Core.1.8.39/lib/40/FSharpx.Core.xml @@ -0,0 +1,14785 @@ + + +FSharpx.Core + + + + Type alias for F# mailbox processor type + + + + + + + + + + + The interanl type that represents a value returned as a result of + evaluating a step of an asynchronous sequence + + + + + An asynchronous sequence represents a delayed computation that can be + started to produce either Cons value consisting of the next element of the + sequence (head) together with the next asynchronous sequence (tail) or a + special value representing the end of the sequence (Nil) + + + + + + + + + + + Occurs when the execution of the agent results in an exception. + + + + + Occurs when the execution of the agent results in an exception. + + + + + Returns the number of unprocessed messages in the message queue of the agent. + + + + + Occurs when the execution of the agent results in an exception. + + + + + Scans for a message by looking through messages in arrival order until <c>scanner</c> + returns a Some value. Other messages remain in the queue. + + + + + Waits for a message. This will consume the first message in arrival order. + + + + + Like PostAndReply, but returns None if no reply within the timeout period. + + + + + Start a new disposable agent using the specified body function + (the method creates a new cancellation token for the agent) + + + + + Scans for a message by looking through messages in arrival order until <c>scanner</c> + returns a Some value. Other messages remain in the queue. + + + + + Waits for a message. This will consume the first message in arrival order. + + + + + Like PostAndAsyncReply, but returns None if no reply within the timeout period. + + + + + Posts a message to an agent and await a reply on the channel, synchronously. + + + + + Posts a message to an agent and await a reply on the channel, asynchronously. + + + + + Posts a message to the message queue of the MailboxProcessor, asynchronously. + + + + + + + + + + + Wrapper for the standard F# agent (MailboxProcessor) that + supports stopping of the agent's body using the IDisposable + interface (the type automatically creates a cancellation token) + + + + + + + + + + + + + + + + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + The event is triggered when a group of messages is collected. The + group is not empty, but may not be of the specified maximal size + (when the timeout elapses before enough messages is collected) + + + + + Sends new message to the agent + + + + + Dispose + + + + + + + + Agent that can be used to implement batch processing. It creates groups + of messages (added using the Enqueue method) and emits them using the + BatchProduced event. A group is produced when it reaches the maximal + size or after the timeout elapses. + + + + + + + + + + + + + + + + + + + + + + + Gets the number of elements currently waiting in the queue. + + + + + Synchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + This method blocks until value is available! + + + + + Asynchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + + + + + Asynchronously adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Asynchronously adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. This overload does not + signal the caller that the item has been added. + + + + + + + + Agent that implements an asynchronous queue with blocking put + and blocking get operation (this implements the producer-consumer + concurrent programming pattern). The constructor takes the maximal + size of the buffer. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the number of elements currently waiting in the queue. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Synchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + This method blocks until value is available! + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Adds item to the queue. The operation ends when + there is a place for the item. If the queue is full, the operation + will block until some items are removed. + + + + + Asynchronously gets item from the queue. If there are no items + in the queue, the operation will block until items are added. + + + + + + + + Agent that implements an asynchronous circular buffer with blocking + enqueue and blocking dequeue operation (this implements the producer-consumer + concurrent programming pattern). The constructor takes the maximal + size of the buffer. + + + + + + + + + + + + + + + + + + + + Adds the specified element to the set and returns + 'false' when it was already present in the set + + + + + + + + Agent that implements a simple concurrent set. The agent exposes a + member that adds value to the set and returns whether the value + was already present. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Union type that represents different messages that can be sent to the + IObserver interface. The IObserver type is equivalent to a type that has + just OnNext method that gets 'ObservableUpdate' as an argument. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + The event is triggered when a group of messages is collected. + The size of the group is exactly 'count' and the values are + returned in a fresh array. + + + + + Sends new message to the agent + + + + + + + + Agent that implements the "sliding window" functionality. It collects + messages added using the Enqueue method and emits them in overlapping + groups of the specified size. For example, given [1,2,3,4,5...] and a + size 3, the produced groups will be [1,2,3], [2,3,4], [3,4,5], ... + + + + + + + + + + + + + + Starts a Task<'a> with the timeout and cancellationToken and + returns a Async<a' option> containing the result. If the Task does + not complete in the timeout interval, or is faulted None is returned. + + + + + Starts the specified operation using a new CancellationToken and returns + IDisposable object that cancels the computation. This method can be used + when implementing the Subscribe method of IObservable interface. + + + + + Creates an asynchronous workflow that runs the asynchronous workflow + given as an argument at most once. When the returned workflow is + started for the second time, it reuses the result of the + previous execution. + + + + + + + + + + + + + + A helper type for implementation of buffering when converting + observable to an asynchronous sequence + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Asynchronous for loop - for all elements from the input sequence, + generate all elements produced by the body (asynchronously). See + also the AsyncSeq.collect function. + + + + + For loop that iterates over a synchronous sequence (and generates + all elements generated by the asynchronous body) + + + + + + + + + + + + + + + + + Computation builder that allows creating of asynchronous + sequences using the 'asyncSeq { ... }' syntax + + + + + Skips the first N elements of an asynchronous sequence and + then returns the rest of the sequence unmodified. + + + + + Returns the first N elements of an asynchronous sequence + + + + + Skips elements from an asynchronous sequence while the specified + predicate holds and then returns the rest of the sequence. The + predicate is evaluated asynchronously. + + + + + Returns elements from an asynchronous sequence while the specified + predicate holds. The predicate is evaluated synchronously. + + + + + Skips elements from an asynchronous sequence while the specified + predicate holds and then returns the rest of the sequence. The + predicate is evaluated asynchronously. + + + + + Returns elements from an asynchronous sequence while the specified + predicate holds. The predicate is evaluated asynchronously. + + + + + Combines two asynchronous sequences into a sequence of pairs. + The values from sequences are retrieved in parallel. + + + + + Create a new asynchronous sequence that caches all elements of the + sequence specified as the input. When accessing the resulting sequence + multiple times, the input will still be evaluated only once + + + + + Converts asynchronous sequence to a synchronous blocking sequence. + The elements of the asynchronous sequence are consumed lazily. + + + + + Converts asynchronous sequence to an IObservable<_>. When the client subscribes + to the observable, a new copy of asynchronous sequence is started and is + sequentially iterated over (at the maximal possible speed). Disposing of the + observer cancels the iteration over asynchronous sequence. + + + + + Converts observable to an asynchronous sequence. Values that are produced + by the observable while the asynchronous sequence is blocked are discarded + (this function doesn't guarantee that asynchronou ssequence will return + all values produced by the observable) + + + + + Converts observable to an asynchronous sequence. Values that are produced + by the observable while the asynchronous sequence is blocked are stored to + an unbounded buffer and are returned as next elements of the async sequence. + + + + + Converts observable to an asynchronous sequence using an agent with + a body specified as the argument. The returnd async sequence repeatedly + sends 'Get' message to the agent to get the next element. The observable + sends 'Put' message to the agent (as new inputs are generated). + + + + + Creates an asynchronous sequence that lazily takes element from an + input synchronous sequence and returns them one-by-one. + + + + + Same as AsyncSeq.filterAsync, but the specified predicate is synchronous + and processes the input element immediately. + + + + + Same as AsyncSeq.chooseAsync, but the specified function is synchronous + and processes the input element immediately. + + + + + Same as AsyncSeq.iterAsync, but the specified function is synchronous + and performs the side-effect immediately. + + + + + Same as AsyncSeq.mapAsync, but the specified function is synchronous + and returns the result of projection immediately. + + + + + Same as AsyncSeq.scanAsync, but the specified function is synchronous + and returns the result of aggregation immediately. + + + + + Same as AsyncSeq.foldAsync, but the specified function is synchronous + and returns the result of aggregation immediately. + + + + + Aggregates the elements of the input asynchronous sequence using the + specified 'aggregation' function. The result is an asynchronous + workflow that returns the final result. + + The aggregation function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Returns an asynchronous sequence that returns pairs containing an element + from the input sequence and its predecessor. Empty sequence is returned for + singleton input sequence. + + + + + Iterates over the input sequence and calls the specified function for + every value (to perform some side-effect asynchronously). + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Aggregates the elements of the input asynchronous sequence using the + specified 'aggregation' function. The result is an asynchronous + sequence of intermediate aggregation result. + + The aggregation function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Asynchronously returns the first element that was generated by the + given asynchronous sequence (or the specified default value). + + + + + Asynchronously returns the last element that was generated by the + given asynchronous sequence (or the specified default value). + + + + + Builds a new asynchronous sequence whose elements are those from the + input sequence for which the specified function returned true. + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Asynchronously iterates over the input sequence and generates 'x' for + every input element for which the specified asynchronous function + returned 'Some(x)' + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + Builds a new asynchronous sequence whose elements are generated by + applying the specified function to all elements of the input sequence. + + The specified function is asynchronous (and the input sequence will + be asked for the next element after the processing of an element completes). + + + + + + + + Creates an asynchronou sequence that iterates over the given input sequence. + For every input element, it calls the the specified function and iterates + over all elements generated by that asynchronous sequence. + This is the 'bind' operation of the computation expression (exposed using + the 'for' keyword in asyncSeq computation). + + + + + Implements the 'TryFinally' functionality for computation builder + + + + + Implements the 'TryWith' functionality for computation builder + + + + + Tries to get the next element of an asynchronous sequence + and returns either the value or an exception + + + + + Builds an asynchronou sequence using the computation builder syntax + + + + + Yields all elements of the first asynchronous sequence and then + all elements of the second asynchronous sequence. + + + + + Creates an asynchronous sequence that generates a single element and then ends + + + + + Creates an empty asynchronou sequence that immediately ends + + + + + Module with helper functions for working with asynchronous sequences + + + + + + + + Builds an asynchronou sequence using the computation builder syntax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified four observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified three observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + first of the specified two observables produces a value. The + workflow will return a Choice value that can be used to identify + the observable that produced the value. + + + + + Creates an asynchronous workflow that will be resumed when the + specified observables produces a value. The workflow will return + the value produced by the observable. + + + + + Behaves like AwaitObservable, but calls the specified guarding function + after a subscriber is registered with the observable. + + + + + Helper that can be used for writing CPS-style code that resumes + on the same thread where the operation was started. + + + + + Delay execution of Observer function + + + + + Invoke Observer function through specified function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Turns observable into an observable that only calls OnNext method of the + observer, but gives it a discriminated union that represents different + kinds of events (error, next, completed) + + + + + Creates an observable that calls the specified function (each time) + after an observer is attached to the observable. This is useful to + make sure that events triggered by the function are handled. + + + + + Returns an observable that yields sliding windows of + containing elements drawn from the input observable. + Each window is returned as a fresh array. + + + + + + + + Converts asynchronous sequence to a synchronous blocking sequence. + The elements of the asynchronous sequence are consumed lazily. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Asynchronously writes all data specified by the + given asynchronous sequence to the stream. + + + + + Asynchronously reads the stream in chunks of a specified size + and returns the result as an asynchronous sequence. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The continuation monad. + The algorithm is from Wes Dyer http://blogs.msdn.com/b/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx. + The builder approach is from Matthew Podwysocki's excellent Creating Extended Builders series http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/18/much-ado-about-monads-creating-extended-builders.aspx. + Current implementation from Matt's gist at https://gist.github.com/628956 + + + + + + + + + + + + + + + + + The coroutine type from http://fssnip.net/7M + + + + + + + + + + + + + + + + + An enumeratee is an enumerator that produces an iteratee using another iteratee as input. + Enumeratees can be used for tasks such as encoding or encrypting data. + + + + + An enumerator generates a stream of data and feeds an iteratee, returning a new iteratee. + + + + + + + + + + + + + + + + + + + + + + + + + + Encapsulates any possible exceptions during bind in a Choice + + + + + + + + Ignores (discards) the result of the async computation + + + + + + + + + + + + + + + + + + + + If Choice is 1Of2, return its value. + Otherwise throw ArgumentException. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Attempts to cast an object. + Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + + + + + + + + + + + Convert a Func into an F# function + + + + + Convert a Func into an F# function + + + + + Convert a Func into an F# function + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Convert an Action into an F# function returning unit + + + + + Conversion functions from Action/Func to FSharpFunc + We need these because FuncConvert often makes C# type inference fail. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + + + + + + + + + + + Converts the option to a list of length 0 or 1 + + + + + + + + Converts the option to an array of length 0 or 1 + + + + + + + + + + + Invokes a function on an optional value that itself yields an option, + and then applies a mapping function + + + + + Invokes a function on an optional value that itself yields an option + + + + + Transforms an option value by using a specified mapping function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the option if Some x, otherwise the supplied default value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Evaluates the equivalent of for an option + + + + + + + + + + + + + + + + + Converts an action taking a 4-tuple into an action with 4 parameters + + + + + /// Converts an action taking a 3-tuple into an action with 3 parameters + + + + + Converts an action taking a 2-tuple into an action with 2 parameters + + + + + Converts an action with 4 arguments into an action taking a 4-tuple + + + + + Converts an action with 3 arguments into an action taking a 3-tuple + + + + + Converts an action with 2 arguments into an action taking a 2-tuple + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an action to a function returning Unit + + + + + Converts an uncurried function to a curried function + + + + + Converts an uncurried function to a curried function + + + + + Composes two functions. + Mathematically: f . g + + + + + Composes two functions (forward composition). + Mathematically: g . f + + + + + Extensions around Actions and Funcs + + + + + Associative operation + + + + + Semigroup (set with associative binary operation) + + + + + + + + + + + + + + The iteratee is a stream consumer that will consume a stream of data until either + it receives an EOF or meets its own requirements for consuming data. The iteratee + will return Continue whenever it is ready to receive the next chunk. An iteratee + is fed data by an Enumerator, which generates a Stream. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + Helps the C# compiler with Func type inference. + + + + + + + + + + + + + + + + + + + + + + + Identity + + + + + + + + + + + + + + + + + + + + Fold a list using this monoid + + + + + + + + Associative operation + + + + + + + + Monoid (associative binary operation with identity) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A stream of chunks of data generated by an Enumerator. + The stream can be composed of chunks of 'T, empty blocks indicating a wait, or an EOF marker. + Be aware that when using #seq<_> types, you will need to check for both Seq.empty ([]) and Empty. + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two async actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Infix map + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Transforms an async value by using a specified mapping function. + + + + + + + + + + + Flipped map + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the async type + + + + + Sequentially compose two actions, passing any value produced by the second as an argument to the first. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If Some value, returns Choice1Of2 value. Otherwise, returns the supplied default value. + + + + + If Choice is 1Of2, returns Some value. Otherwise, returns None. + + + + + + + + Transforms a Choice's second value by using a specified mapping function. + + + + + Maps both parts of a Choice. + Applies the first function if Choice is 1Of2. + Otherwise applies the second function + + + + + Maps both parts of a Choice. + Applies the first function if Choice is 1Of2. + Otherwise applies the second function + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two either actions, discarding any value produced by the first + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Monadic bind + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Choice's first value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Attempts to cast an object. + Stores the cast value in 1Of2 if successful, otherwise stores the exception in 2Of2 + + + + + Wraps a function, encapsulates any exception thrown within to a Choice + + + + + If Choice is 1Of2, return its value. + Otherwise throw ArgumentException. + + + + + Inject a value into the Choice type + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the hash code for the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Gets an enumerator for the bytes stored in the byte string. + + + + + Compares two objects for equality. When both are byte strings, structural equality is used. + + + + + + + + Compares two byte strings based on their structure. + + + + + + + + + + + An ArraySegment with structural comparison and equality. + + + + +O(log n). Returns the first element and tail. + + + + +O((log n). Returns option first element and tail. + + + + +O(log n). Returns option DList of the elements trailing the first element. + + + + +O(log n). Returns option first element + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns the first element. + + + + +O(1). Returns a new DList with the element added to the front. + + + + +O(1). Returns a new DList with the element added to the end. + + + + + DList is an ordered linear structure implementing the List signature (head, tail, cons), + end-insertion (conj), and O(1) append. Ordering is by insertion history. + DList is an implementation of John Hughes' append list. + See http://dl.acm.org/citation.cfm?id=8475 for more information. + An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 + List-like structure naming semantics: http://jackfoxy.com/semantics-and-list-like-data-structures + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns deque reversed. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + +O(1). Returns a new deque with the element added to the end. + + + + + Double-ended queue is an ordered linear linear structure implementing the signature of List + (head, tail, cons) as well as the mirror-image Vector signature (last, initial, conj). "head" inspects + the first or left-most element in the structure, while "last" inspects the last or + right-most element. "rev" (reverse) has time complexity O(1). Ordering is by insertion history. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap reversed. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + + Heap is an ordered linear structure where the ordering is either ascending or descending. + "head" inspects the first element in the ordering, "tail" takes the remaining structure + after head, and "insert" places elements within the ordering. PriorityQueue is available + as an alternate interface. + According to Okasaki the time complexity of the heap functions in this Heap implementation + (based on the "pairing" heap) have "resisted" time complexity analysis. + + + + +O(1). Returns tuple of head element and tail of the list. + + + + +O(1). Returns option tuple of head element and tail of the list. + + + + +O(1). Return option the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return option the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Return the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Test if a list is empty. Forces the evaluation of + the first element of the stream if it is not already evaluated. + + + + +O(1). Return the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(n). Return the length of the list + + + + + LazyLists are possibly-infinite, cached sequences. See also IEnumerable/Seq for + uncached sequences. LazyLists normally involve delayed computations without + side-effects. The results of these computations are cached and evaluations will be + performed only once for each element of the lazy list. In contrast, for sequences + (IEnumerable) recomputation happens each time an enumerator is created and the sequence + traversed. + + LazyLists can represent cached, potentially-infinite computations. Because they are + cached they may cause memory leaks if some active code or data structure maintains a + live reference to the head of an infinite or very large lazy list while iterating it, + or if a reference is maintained after the list is no longer required. + + Lazy lists may be matched using the LazyList.Cons and LazyList.Nil active patterns. + These may force the computation of elements of the list. + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n) worst-case. Returns the first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns option first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element. + + + + +O(1). Returns option first element + + + + +O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (Dequeue) + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns the first element. (Peek) + + + + +O(n). Returns queue reversed. + + + + +O(1). Returns a new queue with the element added to the end. (Enqueue) + + + + + Queue is an ordered linear data structure where elements are added at the end (right) + and inspected and removed at the beginning (left). Ordering is by insertion history. + The qualities of the Queue structure make elements first in, first out (fifo). + "head" inspects the first or left-most element in the structure, while "conj" + inserts an element at the end, or right of the structure. + Purely functional (immutable) Queue based on Okasaki's batched queue. + Value and function naming standard based on consistent List-like naming: http://jackfoxy.com/semantics-and-list-like-data-structures + Original F# implementation http://lepensemoi.free.fr/index.php/2009/12/10/batched-queue + + + + + O(1). Returns tuple last element and random access list without last item + + + + + O(1). Returns option tuple last element and random access list without last item + + + + + O(n). Returns option random access list without the last item. + + + + + O(1). Returns option last element in the random access list. + + + + + O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + + + + + O(1). Returns the number of items in the random access list. + + + + + O(log32n). Returns random access list element at the index. + + + + + O(1). Returns true if the random access list has no elements. + + + + + O(1). Returns the last element in the random access list. If the random access list is empty it throws an exception. + + + + + O(log32n). Returns a new random access list that contains the given value at the index. + + + + + O(log32n). Returns option random access list that contains the given value at the index. + + + + +O(n). Returns random access list reversed. + + + + + O(1). Returns a new random access list with the element added at the end. + + + + + RandomAccessList is an ordered linear structure implementing the List signature + (head, tail, cons), as well as inspection (lookup) and update (returning a new + immutable instance) of any element in the structure by index. Ordering is by insertion history. + Adapted from Steffen Forkmann's F# implementation of Clojure Vector.. + + + + + O(1). Returns tuple last element and vector without last item + + + + + O(1). Returns option tuple last element and vector without last item + + + + + O(1). Returns option last element in the vector. + + + + + O(n). Returns option vector without the last item. + + + + + O(1). Returns the number of items in the vector. + + + + + O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + O(log32n). Returns vector element at the index. + + + + + O(1). Returns true if the vector has no elements. + + + + + O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + O(log32n). Returns a new vector that contains the given value at the index. + + + + + O(log32n). Returns option vector that contains the given value at the index. + + + + +O(n). Returns random access list reversed. + + + + + O(1). Returns a new vector with the element added at the end. + + + + + Vector is an ordered linear structure implementing the inverse of the List signature, + (last, initial, conj) in place of (head, tail, cons). Indexed lookup or update + (returning a new immutable instance of Vector) of any element is O(log32n). Length is O(1). + Ordering is by insertion history. + Original F# adaptation from the clojure implementation by Steffen Forkmann. + + + + + Calculates the central moving average for the array of optional elements using n + elements either side of the point where the mean is being calculated. If any of + the optional elements in the averaging window are None then the average itself + is None. + + + + + Calculates the central moving average for the array using n elements either side + of the point where the mean is being calculated. + + + + + Returns an array of sliding windows of data drawn from the source array. + Each window contains the n elements surrounding the current element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + append uses Buffer.BlockCopy for efficient array operations. + Please note that a new array is created and both arrays are copied in, + disregarding any additional bytes in the original, underlying arrays. + + + + + cons uses Buffer.SetByte and Buffer.BlockCopy for efficient array operations. + Please note that a new array is created and both the head and tail are copied in, + disregarding any additional bytes in the original tail array. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An active pattern for conveniently retrieving the properties of a ByteString. + + + + + + + + + + +O(n). Returns a seq of the DList elements. + + + + +O(n). Returns a list of the DList elements. + + + + +O(n). Returns a DList of the seq. + + + + +O(log n). Returns option first element and tail. + + + + +O(log n). Returns the first element and tail. + + + + +O(log n). Returns option DList of the elements trailing the first element. + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns a new DList with the element added to the end. + + + + +O(1). Returns DList of one elements. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns option first element. + + + + +O(log n). Returns the first element. + + + + + + + +O(n). Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. + See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +O(1). Returns DList of no elements. + + + + +O(1). Returns a new DList with the element added to the beginning. + + + + +O(1). Returns a new DList of two lists. + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(n). Views the given deque as a sequence. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns a deque of the seq. + + + + +O(n), worst case. Returns a deque of the list. + + + + +O(n), worst case. Returns a deque of the two lists concatenated. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, right to left + + + + + O(n). Applies a function to each element of the deque, threading an accumulator argument through the computation, left to right + + + + +O(1). Returns deque of no elements. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + +O(1). Returns a new deque with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(n). Views the given heap as a sequence. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap reversed. + + + + +O(n). Returns heap, bool isDescending, from the sequence. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + +O(1). Returns option first element. + + + + +O(1). Returns the first element. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(log n) amortized time. Returns the option first element and tail. + + + + +O(log n) amortized time. Returns the first element and tail. + + + + +O(log n) amortized time. Returns a new queue with the element added to the end. + + + + + Priority queue is like a queue or stack data structure, but with an ascending or descending + ordering of the elements. Depending on the ordering peek retrieves either the highest or lowest + ordered element in the queue. + + + + + + + + + + +O(1). Build a new collection from the given enumerable object + + + + +O(n). Return a view of the collection as an enumerable object + + + + +O(n). Build a non-lazy list from the given collection. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(1). Build a collection from the given list. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(n). Build an array from the given collection + + + + +O(1). Build a collection from the given array. This function will eagerly evaluate all of the + list (and thus may not terminate). + + + + +O(1). Build a new collection whose elements are the results of applying the given function + to the corresponding elements of the two collections pairwise. + + + + +O(1). Build a new collection whose elements are the results of applying the given function + to each of the elements of the collection. + + + + +O(1). Return a new list consisting of the results of applying the given accumulating function + to successive elements of the list + + + + +O(n). Apply the given function to each element of the collection. + + + + +O(1). Return a new collection which on consumption will consist of only the elements of the collection + for which the given predicate returns "true" + + + + +O(1). Return the list which contains on demand the list of elements of the list of lazy lists. + + + + +O(1). Return the list which contains on demand the pair of elements of the first and second list + + + + +O(1). Return the list which contains on demand the elements of the first list followed + by the elements of the second list + + + + +O(1). Return a list that contains the elements returned by the given computation. + The given computation is not executed until the first element on the list is + consumed. The given argument is passed to the computation. Subsequent elements + in the list are generated by again applying the residual 'b to the computation. + + + + +O(1). Return a list that is in effect the list returned by the given computation. + The given computation is not executed until the first element on the list is + consumed. + + + + +O(1). Return the list which on consumption will consist of an infinite sequence of + the given item + + + + +O(1). Return a new list which on consumption contains the given item + followed by the list returned by the given computation. The + + + + +O(1). Return a new list which contains the given item followed by the + given list. + + + + +O(n). Return the length of the list + + + + +O(1). Evaluates to the list that contains no items + + + + +O(n), worst case. Return the first element for which the given function returns <c>true</c>. + Raise <c>KeyNotFoundException</c> if no such element exists. + + + + +O(n), worst case. Apply the given function to successive elements of the list, returning the first + result where function returns <c>Some(x)</c> for some x. If the function never returns + true, 'None' is returned. + + + + +O(n). Behaves like a combination of map and fold; + it applies a function to each element of a list, + passing an accumulating parameter from left to right, + and returning a final value of this accumulator together with the new list. + + + + +O(n), where n is count. Return option the list which skips the first 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will skip the first 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of + the input list. + + + + +O(n), where n is count. Return the list which on consumption will consist of at most 'n' elements of + the input list. + + + + +O(1). Returns option tuple of head element and tail of the list. + + + + +O(1). Returns tuple of head element and tail of the list. + + + + +O(1). Return option the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return the list corresponding to the remaining items in the sequence. + Forces the evaluation of the first cell of the list if it is not already evaluated. + + + + +O(1). Return option the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Return the first element of the list. Forces the evaluation of + the first cell of the list if it is not already evaluated. + + + + +O(1). Test if a list is empty. Forces the evaluation of + the first element of the stream if it is not already evaluated. + + + + + + + + List monoid + + + + + + + + + + + Merges two sequences by the default comparer for 'T + + + + + Merges to sequences using the given function to transform the elements for comparision + + + + + + + + + + + Behaves like a combination of map and fold; + it applies a function to each element of a list, + passing an accumulating parameter from left to right, + and returning a final value of this accumulator together with the new list. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Curried cons + + + + + + + + + + + + + + Retrieves the keys from a Map + + + + + Retrieves the values from a Map + + + + + Allows to remove many keys from a Map + + + + + + + + Combines the two Maps into a single Map + + + + + + + + update f k map updates the value x at key k (if it is in the map). + If f x is None, the element is deleted. + If it is Some y, the key is bound to the new value y. + + + + + insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. + If the key does exist, the function will insert f new_value old_value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a from a list of key-value pairs + + + + + + Returns a as a list of key-value pairs. + Note that keys may be duplicated. + + + + + + Returns a as a sequence of key-value pairs. + Note that keys may be duplicated. + + + + + + Returns a as an array of key-value pairs. + Note that keys may be duplicated. + + + + + + Adds an element to a copy of an existing NameValueCollection + + + + + In-place add of a key-value pair to a + + + + + + + + Returns a new with the concatenation of two s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n) amortized time. Returns the first element and tail. + + + + +O(log n) amortized time. Returns the option first element and tail. + + + + +O(1). Returns the first element. + + + + +O(1). Returns option first element. + + + + +O(log n) amortized time. Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns a empty queue, with indicated ordering. + + + + + + + +O(1) amortized, O(n) worst-case. Returns option first element and tail. + + + + +O(1) amortized, O(n) worst-case. Returns the first element and tail. + + + + +O(n). Views the given queue as a sequence. + + + + +O(1) amortized, O(n) worst-case. Returns option queue of the elements trailing the first element + + + + +O(1) amortized, O(n) worst-case. Returns a new queue of the elements trailing the first element. (dequeue) + + + + +O(n). Returns queue reversed. + + + + +O(n). Returns a queue of the seq. + + + + +O(1). Returns a queue of the list + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1). Returns option first element. + + + + +O(1). Returns the first element. (peek) + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +O(1). Returns queue of no elements. + + + + +O(1). Returns a new queue with the element added to the end. (enqueue) + + + + + + + + + + + O(log32n). Returns option random access list that contains the given value at the index. + + + + + O(log32n). Returns a new random access list that contains the given value at the index. + + + + + O(1). Returns option tuple last element and random access list without last item + + + + + O(1). Returns tuple last element and random access list without last item + + + + +O(n). Views the given random access list as a sequence. + + + + + O(n). Returns option random access list without the last item. + + + + + O(n). Returns a new random access list without the last item. If the collection is empty it throws an exception. + + + + +O(n). Returns new random access list reversed. + + + + + O(n). Returns a random access list of the seq. + + + + + O(log32n). Returns option value at the index. + + + + + O(log32n). Returns the value at the index. + + + + + O(n). Returns a random access list whose elements are the results of applying the supplied function to each of the elements of a supplied random access list. + + + + + O(1). Returns the number of items in the random access list. + + + + + O(1). Returns option last element in the random access list. + + + + + O(1). Returns the last element in the random access list. If the random access list is empty it throws an exception. + + + + + O(1). Returns true if the random access list has no elements. + + + + + O(n). Returns a random access list of the supplied length using the supplied function operating on the index. + + + + + O(n). Returns a state from the supplied state and a function operating from right to left. + + + + + O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +O(1). Returns random access list of no elements. + + + + + O(1). Returns a new random access list with the element added at the end. + + + + + + + + + + + + + + + + + Pages the underlying sequence + + + + + Replicates each element in the seq n-times + + + + + Creates a new collection whose elements are the results of applying the given function to the corresponding pairs of elements from the two sequences. + Unlike Seq.map2, if one input sequence is shorter than the other then the remaining elements of the longer sequence are not ignored, they are yielded at the end of the resulting sequence. + + + + + Contracts a seq selecting every n values + + + + + Creates an infinite sequence of the given value + + + + + The same as Seq.skip except it returns empty if the sequence is empty or does not have enough elements. + Alias for Enumerable.Skip + + + + + The same as Seq.nth except returns None if the sequence is empty or does not have enough elements + + + + + + + + + + + A safe version of seq head + + + + + Creates a infinite sequences of the given values returning None everytime the given seq is exhausted + + + + + Creates a infinite sequences of the given values, executing the given function everytime the given seq is exhausted + + + + + Creates a infinite sequences of the given values + + + + + Converts a stream into a seq of byte[] where the array is of the length given + Note: the last chunk maybe less than the given chunk size + + + + + Converts a Stream into a sequence of bytes + + + + + Converts a streamReader into a seq yielding on each line + + + + + Splits a sequences at the given index + + + + + The same as Seq.average except will return None if the seq is empty + + + + + Will iterate the current sequence until the given predicate is statisfied + + + + + + + + + + + Returns the first element (with its index) for which the given function returns true. + Return None if no such element exists. + + Predicate + Sequence + + + + Adds an index to a sequence + + + + + + + + + + + + + + + O(n). Returns a vector of vectors of given length from the seq. Result may be a jagged vector. + + + + + O(log32(m,n)). Returns option vector that contains the given value at the indices. + + + + + O(log32n). Returns option vector that contains the given value at the index. + + + + + O(log32(m,n)). Returns a new vector of vectors that contains the given value at the indices. + + + + + O(log32n). Returns a new vector that contains the given value at the index. + + + + + O(1). Returns option tuple last element and vector without last item + + + + + O(1). Returns tuple last element and vector without last item + + + + +O(n). Views the given vector as a sequence. + + + + + O(1). Returns a new vector of one element. + + + + +O(n). Returns vector reversed. + + + + + O(n). Returns a vector of the seq. + + + + + O(log32(m,n)). Returns option value at the indices. + + + + + O(log32n). Returns option value at the index. + + + + + O(log32(m,n)). Returns the value at the outer index, inner index. If either index is out of bounds it throws an exception. + + + + + O(log32n). Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + O(n). Returns a vector whose elements are the results of applying the supplied function to each of the elements of a supplied vector. + + + + + O(1). Returns the number of items in the vector. + + + + + O(1). Returns option last element in the vector. + + + + + O(1). Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + O(1). Returns true if the vector has no elements. + + + + + O(n). Returns option vector without the last item. + + + + + O(n). Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + O(n). Returns a vector of the supplied length using the supplied function operating on the index. + + + + + O(n). Returns a state from the supplied state and a function operating from right to left. + + + + + O(m,n). Returns a seq from a vector of vectors. + + + + + O(n). Returns a state from the supplied state and a function operating from left to right. + + + + +O(1). Returns vector of no elements. + + + + + O(1). Returns a new vector with the element added at the end. + + + + + O(n). Returns a new vector with the elements of the second vector added at the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two continuation actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Cont value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the Cont type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns the first element and tail. + + + + + + + +O(log n). Returns the option first element and tail. + + + + + + + +O(log n). Returns a option random access list of the elements trailing the first element. + + + + + + + + + + +O(log n). Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(log n). Returns the first element. + + + + + + + + + + +O(log n). Returns random access list with element updated by index. + + + + + + + +O(log n). Returns option random access list with element updated by index. + + + + + + + +O(n). Returns option random access list with element removed by index. + + + + +O(log n). Returns option element by index. + + + + + + + +O(log n). Returns option first element. + + + + +O(n). Returns random access list reversed. + + + + + + + +O(n). Returns random access list with element removed by index. + + + + +O(log n). Returns element by index. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + + + + + + + +O(log n). Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns init and the last element. + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option init and the last element. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option deque of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option last element. + + + + + + + +O(1), amortized. Returns option deque of the elements before the last element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1), amortized. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1), amortized. Returns a new deque of the elements before the last element. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1), amortized. Returns a new deque with the element added to the end. + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1), amortized. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1). Returns queue reversed + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the queue has no elements. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1). Returns a new deque with the element added to the end. + + + + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + + + + +returns option first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + + + + +returns option first element + + + + + + + +returns a new queue of the elements trailing the first element + + + + +returns queue reversed + + + + +returns the count of elememts + + + + + + + +returns true if the queue has no elements + + + + + + + +returns the first element + + + + + + + + + + + + + + + + + + + +returns a new queue with the element added to the end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n), worst case. Returns the first element and tail. + + + + + + + +O(log n), worst case. Returns the option first element and tail. + + + + + + + +O(log n), worst case. Returns a option random access list of the elements trailing the first element. + + + + + + + +O(log n), worst case. Returns option first element. + + + + + + + +O(log n), worst case. Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(log n), worst case. Returns the first element. + + + + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option element by index. + + + + + + + +O(n). Returns random access list reversed. + + + + + + + +O(log n), worst case. Returns element by index. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + + + + + + + +O(log n), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + + + + + + + + + + +O(log n). Returns the head element and tail. + + + + + + + +O(log n). Returns option head element and tail. + + + + + + + + + + + + + +O(log n). Returns heap option from merging two heaps. + + + + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + + + + +O(log n). Returns option first min or max element. + + + + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + + + + + + + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + + + + +O(log n). Returns the count of elememts. + + + + + + + + + + +O(log n). Returns a new heap with the element inserted. + + + + + + + +O(log n). Returns the min or max element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns a new DList with the element added to the end. + + + + + + + + + + + + + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(log n). Returns the first element. + + + + + + + + + + + The DList is an implementation of John Hughes' append list. + See http://dl.acm.org/citation.cfm?id=8475 for more information. + This implementation adds an additional parameter to allow a more + efficient calculation of the list length. + Note that an alternate form would represent the DList as: + type DList<'a> = DList of ('a list -> 'a list) + An example can be found at http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5327209#5327209 + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + + + + + + + +O(n), worst case. Returns deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + + + + +O(n), worst case. Returns option element by index. + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the end. + + + + + + + + + + +O(n), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + +O(n), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + + + + +returns option first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + + + + +returns option first element + + + + + + + +returns a new queue of the elements trailing the first element + + + + +returns the count of elememts + + + + + + + +returns true if the queue has no elements + + + + + + + +returns the first element + + + + + + + + + + + + + + + + + + + +returns a new queue with the element added to the end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns option first min or max element. + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns the min or max element. + + + + + + + + + + +O(log n). Returns the head element and tail. + + + + + + + +O(log n). Returns option head element and tail. + + + + + + + +O(log n). Returns heap option from merging two heaps + + + + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + + + + + + + +O(log n) Returns a new heap of the elements trailing the head. + + + + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + + + + + + + +O(log n). Returns a new heap with the element inserted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1) Returns true if the heap has no elements. + + + + + + + +O(1). Returns true if the heap has max element at head. + + + + + + + + + + +O(log n) amortized time. Returns the head element and tail. + + + + + + + +O(log n) amortized time. Returns option head element and tail. + + + + + + + + + + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + + + + +O(1) worst case. Returns option first min or max element. + + + + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + + + + + + + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + + + + +O(n). Returns the count of elememts. + + + + + + + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + + + + +O(1) worst case. Returns the min or max element. + + + + + + + + + + + + + + PairingHeap performs extremely well in practice, however (according to Okasaki) it should be avoided for applications taking advantage of persistence. + Also according to Okasaki the time complexity of the heap functions in the PairingHeap implementation have "resisted" time complexity analysis. + ofSeq: superior performance; insert: superior performance; tail: superior performance + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns the first element and tail. + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + + + + +O(1), amortized. Returns option first element. + + + + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1). Returns true if the queue has no elements. + + + + + + + +O(1), amortized. Returns the first element. + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns init and the last element. + + + + + + + +O(1), worst case. Returns the first element and tail + + + + + + + +O(1), worst case. Returns option init and the last element. + + + + + + + +O(1), worst case. Returns option first element and tail. + + + + + + + +O(1), worst case. Returns option deque of the elements trailing the first element. + + + + + + + +O(1), worst case. Returns option last element. + + + + + + + +O(1), worst case. Returns option deque of the elements before the last element. + + + + + + + +O(1), worst case. Returns option first element. + + + + + + + +O(1), worst case. Returns a new deque of the elements trailing the first element. + + + + + + + +O(1). Returns deque reversed. + + + + + + + +O(1). Returns the count of elememts. + + + + + + + +O(1), worst case. Returns the last element. + + + + + + + +O(1). Returns true if the deque has no elements. + + + + + + + +O(1), worst case. Returns a new deque of the elements before the last element. + + + + + + + +O(1), worst case. Returns the first element. + + + + + + + + + + + + + + + + + + + +O(n/2), worst case. Returns deque with element updated by index. + + + + + + + +O(n/2), worst case. Returns option deque with element updated by index. + + + + + + + +O(n/2), worst case. Returns option deque with element removed by index. + + + + + + + +O(n/2), worst case. Returns option element by index. + + + + + + + +O(1), worst case. Returns a new deque with the element added to the end. + + + + + + + +O(n/2), worst case. Returns deque with element removed by index. + + + + + + + + + + + + + + + + +O(n/2), worst case. Returns element by index. + + + + + + + + + + + + + + + + +O(1), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tries to advance the position of the RingBuffer by the offset. + Returns None if offset is negative, otherwise Some containing + the position of the RingBuffer. + + + + + + + + + + + + + + + + + + + + + + + Advances the position of the RingBuffer by the offset. + Returns the position of the RingBuffer. Throws an ArgumentException if + the offset is negative. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Multi-way tree, also known as rose tree. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns the first element and tail. + + + + + + + +O(1), worst case. Returns the option first element and tail. + + + + + + + +O(1), worst case. Returns a option random access list of the elements trailing the first element. + + + + + + + +O(1), worst case. Returns option first element. + + + + + + + +O(1), worst case. Returns a new random access list of the elements trailing the first element. + + + + + + + +O(1). Returns true if the random access list has no elements. + + + + + + + +O(1), worst case. Returns the first element. + + + + + + + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + + + + +O(log n), worst case. Returns option element by index. + + + + + + + +O(n). Returns random access list reversed. + + + + + + + +O(log n), worst case. Returns element by index. + + + + + + + +O(log n) Returns the count of elememts. + + + + + + + + + + + + + + + + +O(1), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tries to advance the start date of the Timeseries to toDate. + Returns None if toDate is before the start date of the Timeseries, + otherwise Some containing the start date of the Timeseries. + + + + + + + + + + + + + + + + + + + + + + + Advances the start date of the Timeseries to toDate. Throws an + ArgumentException if toDate is before the Timeseries start date. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns option random access list with element updated by index. + + + + +O(log n). Returns random access list with element updated by index. + + + + +O(log n). Returns the option first element and tail. + + + + +O(log n). Returns the first element and tail. + + + + +O(log n). Returns a option random access list of the elements trailing the first element. + + + + +O(log n). Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n). Returns option random access list with element removed by index. + + + + +O(n). Returns random access list with element removed by index. + + + + +O(n). Returns random access list from the sequence. + + + + +O(log n). Returns option element by index. + + + + +O(log n). Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +O(log n). Returns option first element. + + + + +O(1). Returns a empty random access list. + + + + +O(log n). Returns the first element. + + + + +O(log n). Returns a new random access list with the element added to the beginning. + + + + +O(xs). Returns random access list from elements of 2 random access lists concatenated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1), amortized. Returns option init and the last element. + + + + +O(1), amortized. Returns init and the last element. + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option deque of the elements trailing the first element. + + + + +O(1), amortized. Returns a new deque of the elements trailing the first element. + + + + +O(1), amortized. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of one element, front-back stream ratio constant defaulted to 2. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(1). Returns a deque of the seq, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of the seq, front-back stream ratio constant defaulted to 2. + + + + +O(ys). Returns a deque of the two seqs concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(ys). Returns a deque of the two seqs concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(ys-xs). Returns a deque of the two lists concatenated, c is front-back stream ration constant, should be at least 2. + + + + +O(ys-xs). Returns a deque of the two lists concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1), amortized. Returns option last element. + + + + +O(1), amortized. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1), amortized. Returns option deque of the elements before the last element. + + + + +O(1), amortized. Returns a new deque of the elements before the last element. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1). Returns deque of no elements, c is front-back stream ration constant, should be at least 2. + + + + +O(1), amortized. Returns a new deque with the element added to the beginning. + + + + +O(ys-xs). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(ys-xs). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + + + + + + + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns a queue of the seq. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1). Returns queue of no elements. + + + + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1). Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(n), worst case. Returns a deque of the seq. + + + + +O(n), worst case. Returns a deque of the list. + + + + +O(n), worst case. Returns a deque of the two lists concatenated. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements. + + + + +O(1). Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + +returns option first element and tail + + + + +returns the first element and tail + + + + +returns option queue of the elements trailing the first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns a new queue with the element added to the end + + + + +returns queue reversed + + + + +returns a queue of the seq + + + + +returns a queue of the list + + + + +returns the count of elememts + + + + +returns true if the queue has no elements + + + + +returns option first element + + + + +returns the first element + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +returns queue of no elements +c is front-back stream ration constant, should be at least 2 + + + + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + +O(log n), worst case. Returns the option first element and tail. + + + + +O(log n), worst case. Returns the first element and tail. + + + + +O(log n), worst case. Returns a option random access list of the elements trailing the first element. + + + + +O(log n), worst case. Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n). Returns random access list from the sequence. + + + + +O(log n), worst case. Returns option element by index. + + + + +O(log n), worst case. Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +O(1). Returns a empty random access list. + + + + +O(log n), worst case. Returns option first element. + + + + +O(log n), worst case. Returns the first element. + + + + +O(log n), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The zipper datastructure for binary trees + + + + + + + + + + + + + + + + + + + + A simple binary tree + + + + + Moves the zipper in the directions of the given list + + + + + + + + Creates a zipper from a tree + + + + + Modifies the current focus inside the zipper + + + + + Moves the zipper to the right + + + + + Moves the zipper to the left + + + + + Moves the zipper to the top + + + + + Moves the zipper one level up + + + + + Creates a new branch with the label x and two leafs as subbranches + + + + + TreeZipper + original implementation taken from http://blog.xquant.net/?p=156 + + + + + O(log n). Returns option head element and tail. + + + + + O(log n). Returns the head element and tail. + + + + +O(log n). Returns option heap of the elements trailing the head + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + +O(log n). Returns heap from the sequence. + + + + +O(log n). Returns heap option from merging two heaps. + + + + +O(log n) Returns heap from merging two heaps, both must have same isDescending. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n). Returns a new heap with the element inserted. + + + + +O(log n). Returns option first min or max element. + + + + +O(log n). Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1). Returns a queue of the list. + + + + +O(1). Returns the count of elememts. + + + + +O(log* n), worst case. Returns option queue of the elements trailing the first element. + + + + +O(log* n), worst case. Returns a new queue of the elements trailing the first element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(log* n). Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fold walks the DList using constant stack space. Implementation is from Norman Ramsey. + See http://stackoverflow.com/questions/5324623/functional-o1-append-and-on-iteration-from-first-element-list-data-structure/5334068#5334068 + + + + +O(log n). Returns a new DList of the elements trailing the first element. + + + + +O(1). Returns a new DList with the element added to the end. + + + + +O(log n). Returns the first element. + + + + +O(1). Returns a new DList of two lists. + + + + +O(1). Returns a new DList with the element added to the beginning. + + + + +O(n). Returns a seq of the DList elements. + + + + +O(n). Returns a DList of the seq. + + + + +O(1). Returns DList of one elements. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the DList has no elements. + + + + +O(1). Returns DList of no elements. + + + + + + + +O(n), worst case. Returns option deque with element updated by index. + + + + +O(n), worst case. Returns deque with element updated by index. + + + + +O(1) amortized, O(n), worst case. Returns option init and the last element. + + + + +O(1) amortized, O(n), worst case. Returns init and the last element. + + + + +O(1) amortized, /O(n), worst case. Returns option first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns the first element and tail. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element. + + + + +O(1). Returns deque reversed. + + + + +O(n), worst case. Returns option deque with element removed by index. + + + + +O(n), worst case. Returns deque with element removed by index. + + + + +O(n/2). Returns a deque of the seq. + + + + +O(ys). Returns a deque of the two lists concatenated. + + + + +O(n), worst case. Returns option element by index. + + + + +O(n), worst case. Returns element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1) amortized, O(n), worst case. Returns option last element. + + + + +O(1) amortized, O(n), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1) amortized, O(n), worst case. Returns option deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns a new deque of the elements before the last element. + + + + +O(1) amortized, O(n), worst case. Returns option first element. + + + + +O(1) amortized, O(n), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements. + + + + +O(n), worst case. Returns a new deque with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns option first element and tail + + + + +returns the first element and tail + + + + +returns option queue of the elements trailing the first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns a new queue with the element added to the end + + + + +returns a queue of the seq + + + + +returns a queue of the list + + + + +returns the count of elememts + + + + +returns true if the queue has no elements + + + + +returns option first element + + + + +returns the first element + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, right to left + + + + +applies a function to each element of the queue, threading an accumulator argument through the computation, left to right + + + + +returns queue of no elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + + + + + + + + + +O(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). Credit: Haskell.org + + + + +O(n+m). Is this a proper submap? (ie. a submap but not equal). The expression (isProperSubmapOfBy f m1 m2) returns True when m1 and m2 are not equal, all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + + + + +O(n+m). Is this a submap? Defined as (isSubmapOf = isSubmapOfBy (==)). Credit: Haskell.org + + + + +O(n+m). The expression (isSubmapOfBy f m1 m2) returns True if all keys in m1 are in m2, and when f returns True when applied to their respective values. Credit: Haskell.org + + + + +O(n*log n). mapKeysWith c f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the associated values will be combined using c. Credit: Haskell.org + + + + +O(n*min(n,W)). mapKeys f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the value at the greatest of the original keys is retained. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from an array of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from an array of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from an array of key/value pairs. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a seq of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from a seq of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a seq of key/value pairs. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. Credit: Haskell.org + + + + +O(n*min(n,W)). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'. Credit: Haskell.org + + + + +O(n*min(n,W)). Create a map from a list of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to an array of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to a seq of key/value pairs. Credit: Haskell.org + + + + +O(n). Convert the map to a list of key/value pairs. Credit: Haskell.org + + + + +O(n). Return all keys of the map in ascending order. Credit: Haskell.org + + + + +O(n). Return all elements of the map in the ascending order of their keys. Credit: Haskell.org + + + + +O(n). Fold the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. Credit: Haskell.org + + + + +O(n). FoldBack the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. Credit: Haskell.org + + + + +O(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. Credit: Haskell.org + + + + +O(n). FoldBack the values in the map, such that fold f z == Prelude.foldr f z . elems. Credit: Haskell.org + + + + +O(log n). Performs a split but also returns whether the pivot key was found in the original map. Credit: Haskell.org + + + + +O(log n). The expression (split k map) is a pair (map1,map2) where all keys in map1 are lower than k and all keys in map2 larger than k. Any key equal to k is found in neither map1 nor map2. Credit: Haskell.org + + + + +O(n). Map values and separate the Left and Right results. Credit: Haskell.org + + + + +O(n). Map keys/values and separate the Left and Right results. Credit: Haskell.org + + + + +O(n). Map values and collect the Just results. Credit: Haskell.org + + + + +O(n). Map keys/values and collect the Just results. Credit: Haskell.org + + + + +O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +O(n). partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split. Credit: Haskell.org + + + + +O(n). Filter all values that satisfy some predicate. Credit: Haskell.org + + + + +O(n). Filter all keys/values that satisfy some predicate. Credit: Haskell.org + + + + +O(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + +O(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys. Credit: Haskell.org + + + + + + + +O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +O(n). Map a function over all values in the map. Credit: Haskell.org + + + + +O(log n). Delete the maximal key. Credit: Haskell.org + + + + +O(log n). Delete the minimal key. Credit: Haskell.org + + + + +O(log n). The maximal key of the map. Credit: Haskell.org + + + + +O(log n). The minimal key of the map. Credit: Haskell.org + + + + +O(log n). Retrieves the minimal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +O(log n). Retrieves the maximal key of the map, and the map stripped from that element. Credit: Haskell.org + + + + +O(min(n,W)). Retrieves the minimal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + +O(min(n,W)). Retrieves the maximal key of the map, and the map stripped of that element, or Nothing if passed an empty map. Credit: Haskell.org + + + + + + + +O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +O(log n). Retrieves the minimal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +O(log n). Retrieves the maximal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. Credit: Haskell.org + + + + +O(log n). Update the value at the maximal key. Credit: Haskell.org + + + + +O(log n). Update the value at the minimal key. Credit: Haskell.org + + + + +O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +O(n+m). The intersection with a combining function. Credit: Haskell.org + + + + +O(n+m). The (left-biased) intersection of two maps (based on keys). Credit: Haskell.org + + + + +O(n+m). Difference with a combining function. Credit: Haskell.org + + + + +O(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the key and both values. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y. Credit: Haskell.org + + + + +O(n+m). Difference between two maps (based on keys). Credit: Haskell.org + + + + + + + + + + + + + + + + + + + +Refer to Haskell documentation. Unexpected code growth or corruption of the data structure can occure from wrong use. Credit: Haskell.org + + + + + + + +O(log n). The expression (alter f k map) alters the value x at k, or absence thereof. alter can be used to insert, delete, or update a value in an IntMap. Credit: Haskell.org + + + + +O(min(n,W)). Lookup and update. Credit: Haskell.org + + + + +O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f k x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y. Credit: Haskell.org + + + + +O(min(n,W)). Delete a key and its value from the map. When the key is not a member of the map, the original map is returned. Credit: Haskell.org + + + + +O(min(n,W)). The expression (insertLookupWithKey f k x map) is a pair where the first element is equal to (lookup k map) and the second element equal to (insertWithKey f k x map). Credit: Haskell.org + + + + +O(min(n,W)). Insert with a combining function. insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f new_value old_value. Credit: Haskell.org + + + + +O(min(n,W)). Insert with a combining function. insertWithKey f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f key new_value old_value. Credit: Haskell.org + + + + +O(min(n,W)). Insert a new key/value pair in the map. If the key is already present in the map, the associated value is replaced with the supplied value, i.e. insert is equivalent to insertWith const. Credit: Haskell.org + + + + +O(1). A map of one element. Credit: Haskell.org + + + + +O(1). The empty map. Credit: Haskell.org + + + + +O(log n). Find smallest key greater or equal to the given one and return the corresponding (key, value) pair Credit: Haskell.org + + + + +O(log n). Find largest key smaller or equal to the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + +O(log n). Find smallest key greater than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + + + + +O(log n). Find largest key smaller than the given one and return the corresponding (key, value) pair. Credit: Haskell.org + + + + + + + +O(min(n,W)). The expression (findWithDefault def k map) returns the value at key k or returns def when the key is not an element of the map. Credit: Haskell.org + + + + +O(min(n,W)). Lookup the value at a key in the map. Credit: Haskell.org + + + + +O(log n). Is the key not a member of the map? Credit: Haskell.org + + + + +O(min(n,W)). Is the key a member of the map? Credit: Haskell.org + + + + +O(min(n,W)). Lookup the value at a key in the map. Returns 'a option. Credit: Haskell.org + + + + +O(n). Number of elements in the map. Credit: Haskell.org + + + + +O(1). Map is empty. Credit: Haskell.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +returns the first element and tail + + + + +returns the option first element and tail + + + + +returns a option random access list of the elements trailing the first element + + + + +returns option first element + + + + +returns a new random access list of the elements trailing the first element + + + + +returns true if the random access list has no elements + + + + +returns the first element + + + + +returns random access list with element updated by index + + + + +returns option random access list with element updated by index + + + + +returns option element by index + + + + +returns random access list reversed + + + + +returns element by index + + + + +returns the count of elememts + + + + +returns the count of elememts + + + + +returns a new random access list with the element added to the beginning + + + + + + + +returns true if the queue has no elements + + + + + + + +returns option first element + + + + +returns the first element and tail + + + + +returns the first element + + + + +returns a new queue with the element added to the end + + + + + + + +returns the first element and tail + + + + + + + +returns option queue of the elements trailing the first element + + + + +returns option first element + + + + +returns a new queue of the elements trailing the first element + + + + +returns true if the queue has no elements + + + + +returns the first element + + + + +returns a new queue with the element added to the end + + + + +returns the count of elememts + + + + +returns the count of elememts + + + + + + + +returns the head element and tail + + + + +returns option head element and tail + + + + +returns heap option from merging two heaps + + + + +returns option heap of the elements trailing the head + + + + +returns a new heap of the elements trailing the head + + + + +returns heap from merging two heaps, both must have same isDescending + + + + +returns a new heap with the element inserted + + + + + + + +returns true if the heap has no elements + + + + +returns true if the heap has max element at head + + + + +returns option first min or max element + + + + +returns the count of elememts + + + + +returns the min or max element + + + + +returns the count of elememts + + + + + + + +returns init and the last element + + + + +returns the first element and tail + + + + +returns option init and the last element + + + + + + + +returns option deque of the elements trailing the first element + + + + +returns option last element + + + + +returns option deque of the elements before the last element + + + + +returns option first element + + + + +returns a new deque of the elements trailing the first element + + + + +returns deque reversed + + + + +returns the count of elememts + + + + +returns the last element + + + + +returns true if the deque has no elements + + + + +returns a new deque of the elements before the last element + + + + +returns the first element + + + + +returns the count of elememts + + + + +returns deque with element updated by index + + + + +returns option deque with element updated by index + + + + + + + +returns option element by index + + + + +returns a new deque with the element added to the end + + + + +returns deque with element removed by index + + + + +returns element by index + + + + +returns a new deque with the element added to the beginning + + + + + + + + Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + Returns the number of items in the collection. + + + + + Returns a new vector with the element 'added' at the end. + + + + + Returns a new vector that contains the given value at the index. Note - index must be <= vector.Count. + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n). Returns option head element and tail. + + + + +O(log n). Returns the head element and tail. + + + + +O(log n). Returns option heap of the elements trailing the head. + + + + +O(log n). Returns a new heap of the elements trailing the head. + + + + +O(log n). Returns heap from the sequence. + + + + +O(log n). Returns heap option from merging two heaps. + + + + +O(log n). Returns heap from merging two heaps, both must have same isDescending. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1). Returns true if the heap has no elements. + + + + +O(log n). Returns a new heap with the element inserted. + + + + +O(1). Returns option first min or max element. + + + + +O(1). Returns the min or max element. + + + + +O(1). Returns a empty heap. + + + + + + + + + + + + + + + + + + + + + + + + + + A zipper for lists + + + + + Returns the whole list from the zipper + + + + + Creates a list zipper + + + + + Moves the zipper to the front + + + + + Moves the zipper backwards + + + + + Moves the zipper forward + + + + + Changes the element under the focus + + + + + Returns the head element from the list under focus + + + + + ListZipper + original implementation taken from http://learnyouahaskell.com/zippers + + + + +O(log n) amortized time. Returns option head element and tail. + + + + +O(log n) amortized time. Returns the head element and tail. + + + + +O(log n) amortized time. Returns option heap of the elements trailing the head. + + + + +O(log n) amortized time. Returns a new heap of the elements trailing the head. + + + + +O(n). Returns heap from the sequence. + + + + +O(log n) amortized time. Returns heap option from merging two heaps. + + + + +O(log n) amortized time. Returns heap from merging two heaps, both must have same descending. + + + + +O(n). Returns the count of elememts. + + + + +O(1). Returns true if the heap has max element at head. + + + + +O(1) Returns true if the heap has no elements. + + + + +O(log n) amortized time. Returns a new heap with the element inserted. + + + + +O(1) worst case. Returns option first min or max element. + + + + +O(1) worst case. Returns the min or max element. + + + + +O(1) Returns a empty heap. + + + + + + + + + + +O(1), amortized. Returns option first element and tail. + + + + +O(1), amortized. Returns the first element and tail. + + + + +O(1), amortized. Returns option queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue of the elements trailing the first element. + + + + +O(1), amortized. Returns a new queue with the element added to the end. + + + + +O(1). Returns queue reversed. + + + + +O(1). Returns a queue of the seq. + + + + +O(1). Returns a queue of the list. + + + + +O(1). Returns the count of elememts. + + + + +O(1). Returns true if the queue has no elements. + + + + +O(1), amortized. Returns option first element. + + + + +O(1), amortized. Returns the first element. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, right to left. + + + + +O(n). Applies a function to each element of the queue, threading an accumulator argument through the computation, left to right. + + + + +O(1). Returns queue of no elements. + + + + + + + + + + +O(n/2), worst case. Returns option deque with element updated by index. + + + + +O(n/2), worst case. Returns deque with element updated by index. + + + + +O(1), worst case. Returns option init and the last element. + + + + +O(1), worst case. Returns init and the last element. + + + + +O(1), worst case. Returns option first element and tail. + + + + +O(1), worst case. Returns the first element and tail. + + + + +O(1), worst case. Returns option deque of the elements trailing the first element. + + + + +O(1), worst case. Returns a new deque of the elements trailing the first element. + + + + +O(1), worst case. Returns a new deque with the element added to the end. + + + + +O(1). Returns a deque of one element, c is front-back stream ratio constant, should be at least 2. + + + + +O(1). Returns a deque of one element, front-back stream ratio constant defaulted to 2. + + + + +O(1). Returns deque reversed. + + + + +O(n/2), worst case. Returns option deque with element removed by index. + + + + +O(n/2), worst case. Returns deque with element removed by index. + + + + +O(n). Returns a deque of the seq, c is front-back stream ratio constant, should be at least 2. + + + + +O(n). Returns a deque of the seq, front-back stream ratio constant defaulted to 2. + + + + +O(|ys-xs|). Returns a deque of the two seqs concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two seqs concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(|ys-xs|). Returns a deque of the two lists concatenated, c is front-back stream ration constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two lists concatenated, front-back stream ratio constant defaulted to 2. + + + + +O(n/2), worst case. Returns option element by index. + + + + +O(n/2), worst case. Returns option element by index. + + + + +O(1). Returns the count of elememts. + + + + +O(1), worst case. Returns option last element. + + + + +O(1), worst case. Returns the last element. + + + + +O(1). Returns true if the deque has no elements. + + + + +O(1), worst case. Returns option deque of the elements before the last element. + + + + +O(1), worst case. Returns a new deque of the elements before the last element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1). Returns deque of no elements, c is front-back stream ration constant, should be at least 2. + + + + +O(1), worst case. Returns a new deque with the element added to the beginning. + + + + +O(|ys-xs|). Returns a deque of the two deques concatenated, c is front-back stream ratio constant, should be at least 2. + + + + +O(|ys-xs|). Returns a deque of the two deques concatenated, front-back stream ratio constant defaulted to 2. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(1), worst case. Returns option queue of the elements trailing the first element. + + + + +O(1), worst case. Returns a new queue of the elements trailing the first element. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1), worst case. Returns a new queue with the element added to the end. + + + + + + + + + + +O(1). Returns true if the queue has no elements + + + + +O(1). Returns queue of no elements. + + + + + + + + + + + + + + Behaves like a combination of map and fold; + it applies a function to each element of a tree, + passing an accumulating parameter, + and returning a final value of this accumulator together with the new tree. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +O(log n), worst case. Returns option random access list with element updated by index. + + + + +O(log n), worst case. Returns random access list with element updated by index. + + + + +O(1), worst case. Returns the option first element and tail. + + + + +O(1), worst case. Returns the first element and tail. + + + + +O(1), worst case. Returns a option random access list of the elements trailing the first element. + + + + +O(1), worst case. Returns a new random access list of the elements trailing the first element. + + + + +O(n). Returns random access list reversed. + + + + +O(n) Returns random access list from the sequence. + + + + +O(log n), worst case. Returns option element by index. + + + + +O(log n), worst case. Returns element by index. + + + + +O(log n). Returns the count of elememts. + + + + +O(1). Returns true if the random access list has no elements. + + + + +returns a empty random access list. + + + + +O(1), worst case. Returns option first element. + + + + +O(1), worst case. Returns the first element. + + + + +O(1), worst case. Returns a new random access list with the element added to the beginning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Returns a new vector that contains the given value at the index. Note - index must be <= vector.Count. + + + + + Returns a new vector without the last item. If the collection is empty it throws an exception. + + + + + Returns the last element in the vector. If the vector is empty it throws an exception. + + + + + Returns a new vector with the element 'added' at the end. + + + + + Returns the value at the index. If the index is out of bounds it throws an exception. + + + + + + + + Returns the number of items in the collection. + + + + + + + + + + + + + + vector implementation ported from https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentVector.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state until the provided predicate is true. + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state while the provided predicate is true. + + + + + + + + Scan progressively folds over the enumerator, returning a new enumerator + that lazily computes each state. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Combines two path strings + + + + + The directory separator string. On most systems / or \ + + + + + Appends all notnull fileNames + + + + + Appends a text if the value is not null or empty + + + + + Appends a text if the value is not null + + + + + Appends a text if the value is not null + + + + + Appends a text if the predicate is false + + + + + Appends a text if the predicate is true + + + + + Appends a text + + + + + Converts the given text from linux or mac linebreaks to windows line breaks + + + + + Replaces the file with the given string + + + + + Writes a single string to a file + + + + + Writes a file line by line + + + + + Reads a file line by line + + + + + Reads a file as one text + + + + + Checks if all given files exists + + + + + Checks if the file exists on disk. + + + + + Gets the current directory + + + + + Gets all files in the directory + + + + + Gets all subdirectories + + + + + Converts a file to it's full file system name + + + + + Creates a FileInfo or a DirectoryInfo for the given path + + + + + Creates a FileInfo for the given path + + + + + Creates a DirectoryInfo for the given path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two iteratee actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + + + + + + + + + + Sequential application + + + + + Sequential application + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses a JSON source text and returns an JSON AST + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Converts a lens that views a list into a lens that views an array + + + + + Applies an isomorphism to the value viewed through a lens + + + + + Creates a lens that maps the given lens in a sequence + + + + + Creates a lens that maps the given lens in an array + + + + + Creates a lens that maps the given lens in a list + + + + + Lens for a particular position in a list + + + + + Lens for a particular position in an array + + + + + Lens for a particular key in a map + + + + + Lens for a particular value in a set + + + + + + + + Identity lens + + + + + Gets/sets the snd element in a pair + + + + + Gets/sets the fst element in a pair + + + + + Modifies the state in a state monad and returns the modified value. + + + + + Modifies the state in a state monad and returns the original value. + + + + + Update through a lens within a state monad + + + + + Applies a lens in the 'set' direction within a state monad + + + + + Applies a lens in the 'get' direction within a state monad + + + + + is applied to source. + If true, is selected. + If false, is selected. + + + + + Pair two lenses + + + + + Composes two lenses through a sum in the source + + + + + Sequentially composes two lenses + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert the quotation expression to LINQ expression trees + + This operation will only succeed for a subset of quotation expressions. + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Evaluate the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + Converts a Lambda quotation into a Linq Lamba Expression with 1 parameter + + + + + + + + This function should not be called directly. + + + + + Evaluate the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Compile the quotation expression by first converting to LINQ expression trees + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + Convert the quotation expression to LINQ expression trees + + This operation will only succeed for a subset of quotation expressions. + + Exceptions: InvalidArgumentException will be raised if the input expression is + not in the subset that can be converted to a LINQ expression tree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A set of types used for implementing quotation conversions. + These are public only because targets of Linq Lambda expressions require them to be so + + + + + This module provides Compile and Eval extension members + for F# quotation values, implemented by translating to LINQ + expression trees and using the LINQ dynamic compiler. + + + + + An intrinsic for compiling <c>&lt;@ x <> y @&gt;</c> to expression trees + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Monoid (int,1,*) + + + + + Monoid (int,0,+) + + + + + Monoid (a,1,*) + + + + + Monoid (a,0,+) + + + + + + + + + + + The dual of a monoid, obtained by swapping the arguments of 'Combine'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Convert the nullable to a list of length 0 or 1. + + + + + Convert the nullable to an array of length 0 or 1. + + + + + Transforms a Nullable value by using a specified mapping function. + + + + + Executes a function for a nullable value. + + + + + Evaluates the equivalent of List.forall for a nullable. + + + + + Evaluates the equivalent of List.exists for a nullable. + + + + + Performs the equivalent of the List.foldBack operation on a nullable. + + + + + Evaluates the equivalent of List.fold for a nullable. + + + + + Returns 1 if Nullable has value, otherwise 0 + + + + + True if Nullable does not have value + + + + + True if Nullable has value + + + + + Monadic bind + + + + + Converts nullable to option + + + + + Converts option to nullable + + + + + Gets the value associated with the Nullable. + If no value, throws. + + + + + Gets the value associated with the nullable or the supplied default value. + + + + + Gets the value associated with the nullable or the supplied default value. + + + + + + + + + + + + + + Sequential application + + + + + + + + + + + Inject a value into the monadic type + + + + + Generic monadic operators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The maybe monad. + This monad is my own and uses an 'T option. Others generally make their own Maybe<'T> type from Option<'T>. + The builder approach is from Matthew Podwysocki's excellent Creating Extended Builders series http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/18/much-ado-about-monads-creating-extended-builders.aspx. + + + + + Concatenates an option of option. + + + + + transforms a function in the Try...(input, out output) style + into a function of type: input -> output Option + Example: fromTryPattern(System.Double.TryParse) + See Examples.Option + + + + + Haskell-style maybe operator + + + + + + + + + + + + + + + + + Attempts to cast an object. Returns None if unsuccessful. + + + + + Applies a predicate to the option. If the predicate returns true, returns Some x, otherwise None. + + + + + Gets the option if Some x, otherwise the supplied default value. + + + + + Gets the value associated with the option or the default value for the type. + + + + + Gets the value associated with the option or the supplied default value from a function. + + + + + Gets the value associated with the option or the supplied default value. + + + + + Gets the value associated with the option or the supplied default value. + + + + + Maps Choice 1Of2 to Some value, otherwise None. + + + + + If true,value then returns Some value. Otherwise returns None. + Useful to process TryXX style functions. + + + + + Converts a function returning bool,value to a function returning value option. + Useful to process TryXX style functions. + + + + + True -> Some(), False -> None + + + + + Maps an Option to Nullable + + + + + Maps a Nullable to Option + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two maybe actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the option type + + + + + Option wrapper monoid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a 6-tuple + + + + + Creates a 5-tuple + + + + + Creates a 4-tuple + + + + + Creates a 3-tuple + + + + + Creates a pair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The reader monad. + This monad comes from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2010/01/07/much-ado-about-monads-reader-edition.aspx. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two reader actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Reader value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the Reader type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +flags:RegexOptions -> pattern:string -> input:string -> Regex.ActiveMatch option + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The state monad. + The algorithm is adjusted from my original work off of Brian Beckman's http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/. + The approach was adjusted from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2009/12/30/much-ado-about-monads-state-edition.aspx and mirrors his final result. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two state actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a State value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + Inject a value into the State type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A transactional memory log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A transactional variable + + + + + + + + + + + + + + + + + + + + + + + + + + A base type for transactional variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Software Transactional Memory monad. + + + + + Checks whether all values of the sequence can be inferred to a special type + + + + + Checks whether the string is a float + + + + + Checks whether the string is an int64 + + + + + Checks whether the string is an int32 + + + + + Checks whether the string is a boolean value + + + + + Turns a string into a nice PascalCase identifier + + + + + + + + + + + + + + + + + + + + + + + Returns the singularized version of a noun + + + + + Returns the pluralized version of a noun + + + + + Returns if the string is null or empty + + + + + Folds the string list by seperating entries with a single space + + + + + Splits a string based on whitespace (spaces, tabs, and newlines) + + + + + Creates newline seperated string from the string list + + + + + Splits a string based on newlines + + + + + Returns a sequence of strings split by the predicate + + + + + + + + + + + Converts a sequence of strings to a single string separated with the delimiters + + + + + Splits the given string at the given delimiter + + + + + Returns a value indicating whether the specified substring occurs within this string + + + + + Replaces the given "replacement" for every occurence of the pattern in the given text + + + + + Checks whether the given text starts with the given prefix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Task completed successfully + + + + + Unhandled exception in task + + + + + Task was canceled + + + + + Task result + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Infix map + + + + + Sequential application + + + + + Sequential application + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two either actions, discarding any value produced by the first + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + + + + + + + + + + Transforms a Task's first value by using a specified mapping function. + + + + + Transforms a Task's first value by using a specified mapping function. + + + + + + + + + + + + + + Stops the average runtime for the given functions + Afterwards it reports it with the given descriptions + + + + + Stops the average runtime for a given function and applies it the given count + Afterwards it reports it with the given description + + + + + Stops the average runtime for a given function and applies it the given count + + + + + Stops the runtime for a given function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequential application + + + + + + + + + + + + + + + + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequential application + + + + + Sequential application + + + + + Sequential application, parameterized by semigroup + + + + + Sequential application, parameterized by append + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The writer monad. + This monad comes from Matthew Podwysocki's http://codebetter.com/blogs/matthew.podwysocki/archive/2010/02/01/a-kick-in-the-monads-writer-edition.aspx. + + + + + + + + + + + + + + + + + Right-to-left Kleisli composition + + + + + Left-to-right Kleisli composition + + + + + Sequentially compose two state actions, discarding any value produced by the first + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Infix map + + + + + Transforms a Writer value by using a specified mapping function. + + + + + Sequential application + + + + + Sequential application + + + + + Flipped >>= + + + + + Sequentially compose two actions, passing any value produced by the first as an argument to the second. + + + + + + + + + + + + + + + + + + + + + + + + + + Inject a value into the Writer type + + + + + + + + + + + Sequence actions, discarding the value of the second argument. + + + + + Sequence actions, discarding the value of the first argument. + + + + + Promote a function to a monad/applicative, scanning the monadic/applicative arguments from left to right. + + + + + Sequential application + + + + + Sequential application + + + + + + + + + + + Split an array of pairs into two arrays + + + + + Combine the two arrays into an array of pairs. The two arrays must have equal lengths, otherwise an <c>ArgumentException</c> is + raised.. + + + + + Return the index of the first element in the array + that satisfies the given predicate. + + + + + Return the index of the first element in the array + that satisfies the given predicate. + + + + + Return an array containing the given element + + + + + Like <c>foldBack</c>, but return both the intermediary and final results + + + + + Like <c>fold</c>, but return the intermediary and final results + + + + + Build a new collection whose elements are the results of applying the given function + to the corresponding elements of the two collections pairwise. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply the given function to pair of elements drawn from matching indices in two arrays, + also passing the index of the elements. The two arrays must have the same lengths, + otherwise an <c>ArgumentException</c> is raised. + + + + + Return true if the given array is empty, otherwise false + + + + + Test elements of the two arrays pairwise to see if all pairs of elements satisfy the given predicate. + Raise ArgumentException if the arrays have different lengths. + + + + + Apply a function to pairs of elements drawn from the two collections, right-to-left, + threading an accumulator argument through the computation. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply a function to pairs of elements drawn from the two collections, + left-to-right, threading an accumulator argument + through the computation. The two input + arrays must have the same lengths, otherwise an <c>ArgumentException</c> is + raised. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> then + computes <c>f i0 (...(f iN-1 iN))</c>. Raises ArgumentException if the array has size zero. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>f (... (f i0 i1)...) iN</c>. Raises ArgumentException if the array has size zero. + + + + + Return the index of the first element in the array + that satisfies the given predicate. Raise <c>KeyNotFoundException</c> if + none of the elements satisfy the predicate. + + + + + Return the index of the first element in the array + that satisfies the given predicate. Raise <c>KeyNotFoundException</c> if + none of the elements satisfy the predicate. + + + + + Test elements of the two arrays pairwise to see if any pair of element satisfies the given predicate. + Raise ArgumentException if the arrays have different lengths. + + + + + Return a view of the array as an enumerable object + + + + + Build a ResizeArray from the given elements + + + + + Return a fixed-length array containing the elements of the input ResizeArray + + + + + Sort the elements using the key extractor and generic comparison on the keys + + + + + Sort the elements using the given comparison function + + + + +Return a new array with the elements in reverse order + + + + +Apply the given function to successive elements, returning the first +result where function returns "Some(x)" for some x. + + + + +Return the first element for which the given function returns <c>true</c>. +Return None if no such element exists. + + + + +Return the first element for which the given function returns <c>true</c>. +Raise <c>KeyNotFoundException</c> if no such element exists. + + + + +Apply the given function to each element of the array. Return +the array comprised of the results "x" for each element where +the function returns Some(x) + + + + +Split the collection into two collections, containing the +elements for which the given predicate returns <c>true</c> and <c>false</c> +respectively + + + + +Return a new collection containing only the elements of the collection +for which the given predicate returns <c>true</c> + + + + + Test if all elements of the array satisfy the given predicate. + If the input function is <c>f</c> and the elements are <c>i0...iN</c> and "j0...jN" + then computes <c>p i0 && ... && p iN</c>. + + + + + Test if any element of the array satisfies the given predicate. + If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>p i0 or ... or p iN</c>. + + + + +Build a new array whose elements are the results of applying the given function +to each of the elements of the array. The integer index passed to the +function indicates the index of element being transformed. + + + + +Apply the given function to each element of the array. The integer passed to the +function indicates the index of element. + + + + +Build a new collection whose elements are the results of applying the given function +to the corresponding elements of the two collections pairwise. The two input +arrays must have the same lengths. + + + + +Apply the given function to two arrays simultaneously. The +two arrays must have the same lengths, otherwise an Invalid_argument exception is +raised. + + + + +Build a new array whose elements are the results of applying the given function +to each of the elements of the array. + + + + +Apply the given function to each element of the array. + + + + + Apply a function to each element of the array, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> then + computes <c>f i0 (...(f iN s))</c>. + + + + + Apply a function to each element of the collection, threading an accumulator argument + through the computation. If the input function is <c>f</c> and the elements are <c>i0...iN</c> + then computes <c>f (... (f s i0)...) iN</c> + + + + +Build and array from the given seq + + + + +Build an array from the given list + + + + +Build a list from the given array + + + + +Read a range of elements from the first array and write them into the second. + + + + +Fill a range of the collection with the given element + + + + +Build a new array that contains the elements of the given array + + + + +Build a new array that contains the given subrange specified by +starting index and length. + + + + +Build a new array that contains the elements of each of the given list of arrays + + + + +Build a new array that contains the elements of the first array followed by the elements of the second array + + + + + Create an array by calling the given generator on each index. + + + + + Create an array whose elements are all initially the given value. + + + + + Set the value of an element in the collection. You can also use the syntax <c>arr.[idx] <- e</c>. + + + + + Fetch an element from the collection. You can also use the syntax <c>arr.[idx]</c>. + + + + + Return the length of the collection. You can also use property <c>arr.Length</c>. + + + + + Generic operations on the type System.Collections.Generic.List, which is called ResizeArray in the F# libraries. + + + + + Wait for the result and commit it + + + + + Record the result in the AsyncResultCell. Subsequent sets of the result are ignored. + + This may result in the scheduled resumption of a waiting asynchronous operation + + + + + Create a new result cell + + + + + A helper type to store a single result from an asynchronous computation and asynchronously + access its result. + + + + + + + + + + + + + + Create an async whose result depends on the value of an AsyncResult. + + + + + Represents the reified result of an asynchronous computation + + + + + An async that produces true if the reader is at the end of stream and false otherwise + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + + + + + + + Creates an async that read all characters in the stream up to the end. + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads next line from the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads exactly <c>count</c> characters from the stream unless end of stream is reached and puts them + into <c>buffer</c> starting at <c>index</c>. The async returns the number of characters that are read (if end-of-stream is not reached + that will be <c>count</c> + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads all the charactes that are avilable in the stream up to <c>count</c characters and puts them + into <c>buffer</c> starting at <c>index</c>. The async returns the number of characters that are read. + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that reads next character from the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + + Creates an async that produces next character from the stream without advancing the stream + + Note that when the async is run it reflects the reader state at the time of running; multiple runs will + yield different results. + + + + +. DiscardBufferedData tells StreamReader to throw away its internal +. buffer contents. This is useful if the user needs to seek on the + underlying stream to a known location then wants the StreamReader + to start reading from this new point. This method should be called + very sparingly, if ever, since it can lead to very poor performance. + However, it may be the only way of handling some scenarios where + users need to re-read the contents of a StreamReader a second time. + + + + + + + + + + + + + + + + + + + + Creates a new AsyncStreamReader for the given stream. The + character encoding is set by encoding and the buffer size, + in number of 16-bit characters, is set by bufferSize. + + Note that detectEncodingFromByteOrderMarks is a very + loose attempt at detecting the encoding by looking at the first + 3 bytes of the stream. It will recognize UTF-8, little endian + unicode, and big endian unicode text, but that's it. If neither + of those three match, it will use the Encoding you provided. + + + + + Implements a TextReader-like API that asynchronously reads characters from + a byte stream in a particular encoding. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create an async that opens a <c>System.IO.FileStream</c> on the specified path, via a fresh I/O thread. + Pass <c>options=FileOptions.Asynchronous</c> to enable further asynchronous read/write operations + on the FileStream. + + + + + Create an async that returns a <c>System.IO.StreamWriter</c> that appends UTF-8 text to an existing file, via a fresh I/O thread. + + + + + Create an async that opens an existing file writing, via a fresh I/O thread. + + + + + Create an async that opens a <c>System.IO.FileStream</c> on the specified path for read/write access, via a fresh I/O thread. + + + + + Create an async that opens an existing file for reading, via a fresh I/O thread. + + + + + + + + Return an asynchronous computation that will read to the end of a stream via a fresh I/O thread. + + + + + + + + Returns an asynchronous computation that, when run, will wait for the download of the specified resource as a data buffer. + + + + + Returns an asynchronous computation that, when run, will wait for the download of a resource with the specified URI to the local file. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a readable stream containing the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a stream for writing data to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the opening of a stream for writing data to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of a data buffer to a resource identified by a URI, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of a data buffer to a resource identified by a URI, using the POST method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified local file to the specified resource, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified local file to the specified resource, using the POST method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified string to the specified resource, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the specified string to the specified resource. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the data in the specified name/value collection to the resource identified by the specified URI, using the specified method. + + + + + Returns an asynchronous computation that, when run, will wait for the upload of the data in the specified name/value collection to the resource identified by the specified URI. + + + + + + + + + + + Return an asynchronous computation that, when run, will wait for a response to the given WebRequest. + + + + + + + diff --git a/packages/FSharpx.Core.1.8.39/lib/portable-net4+sl4+wp71+win8/_._ b/packages/FSharpx.Core.1.8.39/lib/portable-net4+sl4+wp71+win8/_._ new file mode 100644 index 0000000..e69de29 diff --git a/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nupkg b/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nupkg new file mode 100644 index 0000000..aa09f1f Binary files /dev/null and b/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nupkg differ diff --git a/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nuspec b/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nuspec new file mode 100644 index 0000000..9f3bd71 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/MathNet.Numerics.2.6.1.nuspec @@ -0,0 +1,21 @@ + + + + MathNet.Numerics + 2.6.1 + Math.NET Numerics + Marcus Cuda, Christoph Ruegg, Jurgen Van Gael + Marcus Cuda, Christoph Ruegg, Jurgen Van Gael + http://mathnetnumerics.codeplex.com/license + http://numerics.mathdotnet.com/ + http://www.mathdotnet.com/images/MathNet128.png + false + Math.NET Numerics is the numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Numerics is the result of merging dnAnalytics with Math.NET Iridium and is intended to replace both. Also includes a portable build supporting .Net 4 and higher, SL5, WP8 and .NET for Windows Store apps. + Math.NET Numerics, providing methods and algorithms for numerical computations in science, engineering and every day use. Supports .Net 4 and higher, SL5, WP8 and .NET for Windows Store apps. + BUG: Fix bug in ArrayStatistics.Variance on arrays longer than 46341 entries. GitHub Issue #137. + math numeric statistics probability integration interpolation linear algebra matrix fft + + + + + \ No newline at end of file diff --git a/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.dll b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.dll new file mode 100644 index 0000000..8aac528 Binary files /dev/null and b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.dll differ diff --git a/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.xml b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.xml new file mode 100644 index 0000000..c390792 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.IO.xml @@ -0,0 +1,1145 @@ + + + + MathNet.Numerics.IO + + + + + Creates a from a delimited text file. If the user does not + specify a delimiter, then any whitespace is used. + + The type of the matrix to return. + + + + Creates a from a delimited text file. If the user does not + specify a delimiter, then any whitespace is used. + + The type of the matrix to return. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Base class to read a single from a file or stream. + + The type of Matrix to return. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Reads a from a file. + + The file to read the matrix from. + A containing the data from the file. is returned if the file is empty. + If is . + If the file doesn't exist. + If a value is not a number or not in a valid format. + If a value represents a number less than or greater than . + + + + Reads a from a . + + The to read the matrix from. + A matrix containing the data from the . is returned if the is empty. + If is . + If a value is not a number or not in a valid format. + If a value represents a number less than or greater than . + + + + Subclasses override this method to do the actual reading. + + The to read the matrix from. + A matrix containing the data from the . is returned if the is empty. + + + + The function that will do the conversion for a given type. + + + + + Initializes static members of the class. + + + + + Converts the string into a Complex32. + + The number to convert. + The converted number. + + + + Converts the string into a Complex. + + The number to convert. + The converted number. + + + + Converts the string into a double. + + The number to convert. + The converted number. + + + + Converts the string into a float. + + The number to convert. + The converted number. + + + + Constructor to create matrix instance. + + + + + The base regular expression. + + + + + The regular expression to use. + + + + + The to use. + + + + + Initializes a new instance of the class using + any whitespace as the delimiter. + + + + + Initializes a new instance of the class. + + The delimiter to use. + + + + Initializes a new instance of the class. + + + The delimiter to use. + + + If is . + + + + + Performs the actual reading. + + The to read the matrix from. + + A matrix containing the data from the . is returned if the is empty. + + + + + Gets or sets the to use when parsing the numbers. + + The culture info. + Defaults to CultureInfo.CurrentCulture. + + + + Gets or sets a value indicating whether the files has a header row. + + + true if this instance has a header row; otherwise, false. + + Defaults to . + + + + Converts a string into the given data type. + + + The number as a string to convert. + + The converted number. + + + + Initializes a new instance of the class using + any whitespace as the delimiter. + + + + + Initializes a new instance of the class. + + The delimiter to use. + + + + Initializes a new instance of the class. + + + The delimiter to use. + + + If is . + + + + + Creates matrices from Matlab files. + + + + + Creates matrices from Matlab files. + + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + The name of the file to read from. + + + + + The stream to read from if we are not reading from a file directly. + + + + + Initializes a new instance of the class. + + Name of the file to read matrices from. + + + + Initializes a new instance of the class. + + The stream to reader matrices from. + + + + Reads the first matrix from the file or stream. + + + A sparse or dense matrix depending on how the matrix + is defined in the Matlab file. + + + + + Reads the named matrix from the file or stream. + + The name of the matrix to read. + + A sparse or dense matrix depending on how the matrix + is defined in the Matlab file. + is returned if a matrix with the requests name doesn't exist. + + + + + Reads all matrices from the file or stream. + + All matrices from the file or stream. The key to the + is the matrix's name. + + + + Reads the named matrices from the file or stream. + + The names of the matrices to retrieve. + + The named matrices from the file or stream. The key to the + is the matrix's name. + + + + Initializes a new instance of the class. + + Name of the file to read matrices from. + + + + Initializes a new instance of the class. + + The stream to reader matrices from. + + + + Creates a from a delimited text file. If the user does not + specify a delimiter, then any whitespace is used. + + The type of the matrix to return. + + + + Initializes a new instance of the class using + any whitespace as the delimiter. + + + + + Initializes a new instance of the class. + + The delimiter to use. + + + + Initializes a new instance of the class. + + + The delimiter to use. + + + If is . + + + + + Creates matrices from Matlab files. + + + + + Initializes a new instance of the class. + + Name of the file to read matrices from. + + + + Initializes a new instance of the class. + + The stream to reader matrices from. + + + + Creates a from a delimited text file. If the user does not + specify a delimiter, then any whitespace is used. + + The type of the matrix to return. + + + + Initializes a new instance of the class using + any whitespace as the delimiter. + + + + + Initializes a new instance of the class. + + The delimiter to use. + + + + Initializes a new instance of the class. + + + The delimiter to use. + + + If is . + + + + + Creates matrices from Matlab files. + + + + + Initializes a new instance of the class. + + Name of the file to read matrices from. + + + + Initializes a new instance of the class. + + The stream to reader matrices from. + + + + Writes an to delimited text file. If the user does not + specify a delimiter, a tab separator is used. + + + + + Base class to write a single to a file or stream. + + + + + The to use. + + + + + Writes the given to the given file. If the file already exists, + the file will be overwritten. + + The matrix to write. + The file to write the matrix to. + If either or is null. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Writes the given to the given stream. + + The matrix to write. + The to write the matrix to. + If either or is null. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Writes the given to the given . + + The matrix to write. + The to write the matrix to. + If either or is null. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Subclasses must implement this method to do the actually writing. + + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + The matrix to serialize. + The to write the matrix to. + The number format to use. + The culture to use. + + + + Gets or sets the to use when parsing the numbers. + + The culture info. + Defaults to CultureInfo.CurrentCulture. + This property is only used for matrix writers that write out text files. + + + + Gets or sets he number format to use. + + The number format to use when writing out each element. + This property is only used for matrix writers that write out text files. + + + + The delimiter to use. + + + + + Initializes a new instance of the class. + a comma as the delimiter. + + + + + Initializes a new instance of the class. + using the given delimiter. + + + the delimiter to use. + + + + + Initializes a new instance of the class. + using the given delimiter. + + + the delimiter to use. + + + + + Writes the given to the given . + + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + The matrix to write. + The to write the matrix to. + The number format to use on each element. + The culture to use. + If either or is null. + + + + Gets or sets the column header values. + + The column header values. + Will write the column headers if the list is not empty or null. + + + + Writes matrices to a Matlab file. + + + + + The file header value + + + + + The length of the header text. + + + + + Have we written the header yet. + + + + + The binary writer to write to. + + + + + Initializes a new instance of the class. + + The name of the Matlab file to save the matrices to. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Writes the given to the file. + + The matrix to write. + The name of the matrix to store in the file. + If either or is null. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Writes the given to the file. + + The matrices to write. + The names of the matrices to store in the file. + If either or is null. + The data type of the Matrix. It can be either: double, float, Complex, or Complex32. + + + + Closes the stream the being written to. + + Calls . + + + + Writes the matrix tag and name. + + The writer we are using. + The array class we are writing. + if set to true if this a complex matrix. + The name name of the matrix. + The number of rows. + The columns of columns. + The maximum number of non-zero elements. + + + + Compresses the data array. + + The data to compress. + The compressed data. + + + + Gets the dense data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the dense data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the dense data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the dense data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the sparse data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the sparse data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the sparse data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Gets the sparse data array. + + The matrix to get the data from. + The name of the matrix. + The matrix data as an array. + + + + Writes the compressed data. + + The data to write. + + + + Writes the file header. + + + + + Pads the data with the given byte. + + Where to write the pad values. + The number of bytes to pad. + What value to pad with. + + + + Computes the Adler-32 checksum of the given data. + + The data to create the checksum. + The checksum + + + + Enumeration for the Matlab array types + + + + + mxUNKNOWN CLASS + + + + + mxCELL CLASS + + + + + mxSTRUCT CLASS + + + + + mxOBJECT CLASS + + + + + mxCHAR CLASS + + + + + mxSPARSE CLASS + + + + + mxDOUBLE CLASS + + + + + mxSINGLE CLASS + + + + + mxINT8 CLASS + + + + + mxUINT8 CLASS + + + + + mxINT16 CLASS + + + + + mxUINT16 CLASS + + + + + mxINT32 CLASS + + + + + mxUINT32 CLASS + + + + + mxINT64 CLASS + + + + + mxUINT64 CLASS + + + + + mxFUNCTION CLASS + + + + + Matlab Array Flags + + + + + Complex flag + + + + + Global flag + + + + + Logical flag + + + + + Matlab data types + + + + + Unkown type + + + + + miINT8 type + + + + + miUINT8 type + + + + + miINT16 type + + + + + miUINT16 type + + + + + miINT32 type + + + + + miUINT32 type + + + + + miSINGLE type + + + + + miDOUBLE type + + + + + miINT64 type + + + + + miUINT6 4type + + + + + miMATRIX type + + + + + miCOMPRESSED type + + + + + miUTF8 type + + + + + miUTF16 type + + + + + miUTF32 type + + + + + Represents a Matlab file + + The data type of the matrix to return. + + + + Matrices in a matlab file stored as 1-D arrays + + + + + Gets or sets the header text. + + The header text. + + + + Gets or sets the first name of the matrix. + + The first name of the matrix. + + + + Gets the first matrix. + + The first matrix. + + + + Gets the matrices. + + The matrices. + + + + Parse a Matlab file + + The data type of the matrix. + + + + Large Block Size + + + + + Little Endian Indicator + + + + + Small Block Size + + + + + Holds the names of the matrices in the file. + + + + + The stream to read the matlab file from. + + + + + Initializes a new instance of the class. + + Name of the file. + + + + Initializes a new instance of the class. + + The stream to read from. + + + + Initializes a new instance of the class. + + The stream to read from. + The name of the objects to retrieve. + + + + Initializes a new instance of the class. + + Name of the file. + The name of the objects to retrieve. + + + + Copies the names of the objects to retrieve to a local field. + + The name of the objects to retrieve. + + + + Parses the file. + + The parsed Matlab file as a object. + + + + Aligns the data. + + The stream. + The size of the array. + if set to true if reading from a small block. + + + + Decompresses the block. + + The compressed data. + The type data type contained in the block. + The decompressed block. + + + + Adds a matrix from the actual file into our presentation of a matlab file. + + The data of the matrix. + The instance. + + + + Populates a sparse matrix. + + The reader. + if set to true if the Matlab complex flag is set. + The number of rows. + The number of columns. + The size of the block. + A populated sparse matrix. + + + + Populates the double sparse matrix. + + The matrix to populate + The Matlab data type. + The row indices. + The column indices. + The reader to read from. + + + + Populates the float sparse matrix. + + The matrix to populate + The Matlab data type. + The row indices. + The column indices. + The reader to read from. + + + + Populates the complex sparse matrix. + + The matrix to populate + The Matlab data type. + if set to true if the Matlab complex flag is set. + The row indices. + The column indices. + The reader to read from. + The length of the stored data. + + + + Populates the complex32 sparse matrix. + + The matrix to populate + The Matlab data type. + if set to true if the Matlab complex flag is set. + The row indices. + The column indices. + The reader to read from. + The length of the stored data. + + + + Populates a dense matrix. + + The Matlab data type. + The reader to read from. + if set to true if the Matlab complex flag is set. + The number of rows. + The number of columns. + The length of the stored data. + Returns a populated dense matrix. + + + + Populates the double dense matrix. + + The matrix to populate. + The Matlab data type. + The reader to read from. + The number of rows. + The number of columns. + + + + Populates the complex dense matrix. + + The matrix to populate. + The Matlab data type. + if set to true if the Matlab complex flag is set. + The reader to read from. + The number of rows. + The number of columns. + The length of the stored data. + + + + Populates the complex32 dense matrix. + + The matrix to populate. + The Matlab data type. + if set to true if the Matlab complex flag is set. + The reader to read from. + The number of rows. + The number of columns. + The length of the stored data. + + + + Populates the float dense matrix. + + The matrix to populate. + The Matlab data type. + The reader to read from. + The number of rows. + The number of columns. + + + + Creates a matrix. + + if set to true, creates a sparse matrix. + The number of rows. + The number of columns. + A matrix with the specified storage. + + + + Creates a from a delimited text file. If the user does not + specify a delimiter, then any whitespace is used. + + The type of the matrix to return. + + + + Initializes a new instance of the class using + any whitespace as the delimiter. + + + + + Initializes a new instance of the class. + + The delimiter to use. + + + + Initializes a new instance of the class. + + + The delimiter to use. + + + If is . + + + + + Creates matrices from Matlab files. + + + + + Initializes a new instance of the class. + + Name of the file to read matrices from. + + + + Initializes a new instance of the class. + + The stream to reader matrices from. + + + diff --git a/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.dll b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.dll new file mode 100644 index 0000000..934c264 Binary files /dev/null and b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.dll differ diff --git a/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.xml b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.xml new file mode 100644 index 0000000..c2244e5 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/lib/net40/MathNet.Numerics.xml @@ -0,0 +1,46579 @@ + + + + MathNet.Numerics + + + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + + + Interface to linear algebra algorithms that work off 1-D arrays. + + + + + Interface to linear algebra algorithms that work off 1-D arrays. + + Supported data types are double, single, Complex, and Complex32. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiply elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the full QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the full QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + Rows must be greater or equal to columns. + The type of QR factorization to perform. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + Rows must be greater or equal to columns. + The type of QR factorization to perform. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. On exit, work[0] contains the optimal work size value. + + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix + The number of columns of B. + On exit, the solution matrix. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + The B matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + + + + + Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Not used in the managed provider. + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + How to transpose a matrix. + + + + + Don't transpose a matrix. + + + + + Transpose a matrix. + + + + + Conjugate transpose a complex matrix. + + If a conjugate transpose is used with a real matrix, then the matrix is just transposed. + + + + Types of matrix norms. + + + + + The 1-norm. + + + + + The Frobenius norm. + + + + + The infinity norm. + + + + + The largest absolute value norm. + + + + + Intel's Math Kernel Library (MKL) linear algebra provider. + + + Intel's Math Kernel Library (MKL) linear algebra provider. + + + Intel's Math Kernel Library (MKL) linear algebra provider. + + + Intel's Math Kernel Library (MKL) linear algebra provider. + + + Intel's Math Kernel Library (MKL) linear algebra provider. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows in the matrix. + The number of columns in the matrix. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to Complex.One and beta set to Complex.Zero, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always Complex.One + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. For real matrices, the work array should be at least + Max(3*Min(M, N) + Max(M, N), 5*Min(M,N)). For complex matrices, 2*Min(M, N) + Max(M, N). + On exit, work[0] contains the optimal work size value. + This is equivalent to the GESVD LAPACK routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to Complex32.One and beta set to Complex32.Zero, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always Complex32.One + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. For real matrices, the work array should be at least + Max(3*Min(M, N) + Max(M, N), 5*Min(M,N)). For complex matrices, 2*Min(M, N) + Max(M, N). + On exit, work[0] contains the optimal work size value. + This is equivalent to the GESVD LAPACK routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. For real matrices, the work array should be at least + Max(3*Min(M, N) + Max(M, N), 5*Min(M,N)). For complex matrices, 2*Min(M, N) + Max(M, N). + On exit, work[0] contains the optimal work size value. + This is equivalent to the GESVD LAPACK routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0f and beta set to 0.0f, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0f + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. For real matrices, the work array should be at least + Max(3*Min(M, N) + Max(M, N), 5*Min(M,N)). For complex matrices, 2*Min(M, N) + Max(M, N). + On exit, work[0] contains the optimal work size value. + This is equivalent to the GESVD LAPACK routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + P/Invoke methods to the native math libraries. + + + + + Name of the native DLL. + + + + + Useful extension methods for Arrays. + + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Enumerative Combinatorics and Counting. + + + + + Counts the number of possible variations without repetition. + The order matters and each object can be chosen only once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen at most once. + Maximum number of distinct variations. + + + + Counts the number of possible variations with repetition. + The order matters and each object can be chosen more than once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times. + Maximum number of distinct variations with repetition. + + + + Counts the number of possible combinations without repetition. + The order does not matter and each object can be chosen only once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen at most once. + Maximum number of combinations. + + + + Counts the number of possible combinations with repetition. + The order does not matter and an object can be chosen more than once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times. + Maximum number of combinations with repetition. + + + + Counts the number of possible permutations (without repetition). + + Number of (distinguishable) elements in the set. + Maximum number of permutations without repetition. + + + + Extension methods for the Complex type provided by System.Numerics + + + + + Gets the squared magnitude of the Complex number. + + The number to perfom this operation on. + The squared magnitude of the Complex number. + + + + Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg)) + + The unity of this Complex. + + + + Gets the conjugate of the Complex number. + + The number to perfom this operation on. + + The semantic of setting the conjugate is such that + + // a, b of type Complex32 + a.Conjugate = b; + + is equivalent to + + // a, b of type Complex32 + a = b.Conjugate + + + The conjugate of the number. + + + + Returns the multiplicative inverse of a complex number. + + + + + Exponential of this Complex (exp(x), E^x). + + The number to perfom this operation on. + + The exponential of this complex number. + + + + + Natural Logarithm of this Complex (Base E). + + The number to perfom this operation on. + + The natural logarithm of this complex number. + + + + + Common Logarithm of this Complex (Base 10). + + The common logarithm of this complex number. + + + + Logarithm of this Complex with custom base. + + The logarithm of this complex number. + + + + Raise this Complex to the given value. + + The number to perfom this operation on. + + The exponent. + + + The complex number raised to the given exponent. + + + + + Raise this Complex to the inverse of the given value. + + The number to perfom this operation on. + + The root exponent. + + + The complex raised to the inverse of the given exponent. + + + + + The Square (power 2) of this Complex + + The number to perfom this operation on. + + The square of this complex number. + + + + + The Square Root (power 1/2) of this Complex + + The number to perfom this operation on. + + The square root of this complex number. + + + + + Gets a value indicating whether the Complex32 is zero. + + The number to perfom this operation on. + true if this instance is zero; otherwise, false. + + + + Gets a value indicating whether the Complex32 is one. + + The number to perfom this operation on. + true if this instance is one; otherwise, false. + + + + Gets a value indicating whether the Complex32 is the imaginary unit. + + true if this instance is ImaginaryOne; otherwise, false. + The number to perfom this operation on. + + + + Gets a value indicating whether the provided Complex32evaluates + to a value that is not a number. + + The number to perfom this operation on. + + true if this instance is NaN; otherwise, + false. + + + + + Gets a value indicating whether the provided Complex32 evaluates to an + infinite value. + + The number to perfom this operation on. + + true if this instance is infinite; otherwise, false. + + + True if it either evaluates to a complex infinity + or to a directed infinity. + + + + + Gets a value indicating whether the provided Complex32 is real. + + The number to perfom this operation on. + true if this instance is a real number; otherwise, false. + + + + Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0. + + The number to perfom this operation on. + + true if this instance is real nonnegative number; otherwise, false. + + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + The number to perfom this operation on. + A norm of this value. + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + The number to perfom this operation on. + The value to compare with. + A norm of the difference between this and the other value. + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + The string to parse. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Parse a part (real or complex) from a complex number. + + Start Token. + Is set to true if the part identified itself as being imaginary. + + An that supplies culture-specific + formatting information. + + Resulting part as double. + + + + + Converts the string representation of a complex number to a double-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized. + + + + + Converts the string representation of a complex number to double-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Creates a Complex32 number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + + + Creates a Complex32 number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Converts the string representation of a complex number to a single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized. + + + + + Converts the string representation of a complex number to single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized. + + + + + A collection of frequently used mathematical constants. + + + + The number e + + + The number log[2](e) + + + The number log[10](e) + + + The number log[e](2) + + + The number log[e](10) + + + The number log[e](pi) + + + The number log[e](2*pi)/2 + + + The number 1/e + + + The number sqrt(e) + + + The number sqrt(2) + + + The number sqrt(1/2) = 1/sqrt(2) = sqrt(2)/2 + + + The number sqrt(3)/2 + + + The number pi + + + The number 2*pi + + + The number 1/pi + + + The number pi/2 + + + The number pi/4 + + + The number sqrt(pi) + + + The number sqrt(2pi) + + + The number sqrt(2*pi*e) + + + The number log(sqrt(2*pi)) + + + The number log(sqrt(2*pi*e)) + + + The number log(2 * sqrt(e / pi)) + + + The number 1/pi + + + The number 2/pi + + + The number 1/sqrt(pi) + + + The number 1/sqrt(2pi) + + + The number 2/sqrt(pi) + + + The number 2 * sqrt(e / pi) + + + The number (pi)/180 - factor to convert from Degree (deg) to Radians (rad). + + + + + The number (pi)/200 - factor to convert from NewGrad (grad) to Radians (rad). + + + + + The number ln(10)/20 - factor to convert from Power Decibel (dB) to Neper (Np). Use this version when the Decibel represent a power gain but the compared values are not powers (e.g. amplitude, current, voltage). + + + The number ln(10)/10 - factor to convert from Neutral Decibel (dB) to Neper (Np). Use this version when either both or neither of the Decibel and the compared values represent powers. + + + The Catalan constant + Sum(k=0 -> inf){ (-1)^k/(2*k + 1)2 } + + + The Euler-Mascheroni constant + lim(n -> inf){ Sum(k=1 -> n) { 1/k - log(n) } } + + + The number (1+sqrt(5))/2, also known as the golden ratio + + + The Glaisher constant + e^(1/12 - Zeta(-1)) + + + The Khinchin constant + prod(k=1 -> inf){1+1/(k*(k+2))^log(k,2)} + + + + The size of a double in bytes. + + + + + The size of an int in bytes. + + + + + The size of a float in bytes. + + + + + The size of a Complex in bytes. + + + + + The size of a Complex in bytes. + + + + Speed of Light in Vacuum: c_0 = 2.99792458e8 [m s^-1] (defined, exact; 2007 CODATA) + + + Magnetic Permeability in Vacuum: mu_0 = 4*Pi * 10^-7 [N A^-2 = kg m A^-2 s^-2] (defined, exact; 2007 CODATA) + + + Electric Permittivity in Vacuum: epsilon_0 = 1/(mu_0*c_0^2) [F m^-1 = A^2 s^4 kg^-1 m^-3] (defined, exact; 2007 CODATA) + + + Characteristic Impedance of Vacuum: Z_0 = mu_0*c_0 [Ohm = m^2 kg s^-3 A^-2] (defined, exact; 2007 CODATA) + + + Newtonian Constant of Gravitation: G = 6.67429e-11 [m^3 kg^-1 s^-2] (2007 CODATA) + + + Planck's constant: h = 6.62606896e-34 [J s = m^2 kg s^-1] (2007 CODATA) + + + Reduced Planck's constant: h_bar = h / (2*Pi) [J s = m^2 kg s^-1] (2007 CODATA) + + + Planck mass: m_p = (h_bar*c_0/G)^(1/2) [kg] (2007 CODATA) + + + Planck temperature: T_p = (h_bar*c_0^5/G)^(1/2)/k [K] (2007 CODATA) + + + Planck length: l_p = h_bar/(m_p*c_0) [m] (2007 CODATA) + + + Planck time: t_p = l_p/c_0 [s] (2007 CODATA) + + + Elementary Electron Charge: e = 1.602176487e-19 [C = A s] (2007 CODATA) + + + Magnetic Flux Quantum: theta_0 = h/(2*e) [Wb = m^2 kg s^-2 A^-1] (2007 CODATA) + + + Conductance Quantum: G_0 = 2*e^2/h [S = m^-2 kg^-1 s^3 A^2] (2007 CODATA) + + + Josephson Constant: K_J = 2*e/h [Hz V^-1] (2007 CODATA) + + + Von Klitzing Constant: R_K = h/e^2 [Ohm = m^2 kg s^-3 A^-2] (2007 CODATA) + + + Bohr Magneton: mu_B = e*h_bar/2*m_e [J T^-1] (2007 CODATA) + + + Nuclear Magneton: mu_N = e*h_bar/2*m_p [J T^-1] (2007 CODATA) + + + Fine Structure Constant: alpha = e^2/4*Pi*e_0*h_bar*c_0 [1] (2007 CODATA) + + + Rydberg Constant: R_infty = alpha^2*m_e*c_0/2*h [m^-1] (2007 CODATA) + + + Bor Radius: a_0 = alpha/4*Pi*R_infty [m] (2007 CODATA) + + + Hartree Energy: E_h = 2*R_infty*h*c_0 [J] (2007 CODATA) + + + Quantum of Circulation: h/2*m_e [m^2 s^-1] (2007 CODATA) + + + Fermi Coupling Constant: G_F/(h_bar*c_0)^3 [GeV^-2] (2007 CODATA) + + + Weak Mixin Angle: sin^2(theta_W) [1] (2007 CODATA) + + + Electron Mass: [kg] (2007 CODATA) + + + Electron Mass Energy Equivalent: [J] (2007 CODATA) + + + Electron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Electron Compton Wavelength: [m] (2007 CODATA) + + + Classical Electron Radius: [m] (2007 CODATA) + + + Tomson Cross Section: [m^2] (2002 CODATA) + + + Electron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Electon G-Factor: [1] (2007 CODATA) + + + Muon Mass: [kg] (2007 CODATA) + + + Muon Mass Energy Equivalent: [J] (2007 CODATA) + + + Muon Molar Mass: [kg mol^-1] (2007 CODATA) + + + Muon Compton Wavelength: [m] (2007 CODATA) + + + Muon Magnetic Moment: [J T^-1] (2007 CODATA) + + + Muon G-Factor: [1] (2007 CODATA) + + + Tau Mass: [kg] (2007 CODATA) + + + Tau Mass Energy Equivalent: [J] (2007 CODATA) + + + Tau Molar Mass: [kg mol^-1] (2007 CODATA) + + + Tau Compton Wavelength: [m] (2007 CODATA) + + + Proton Mass: [kg] (2007 CODATA) + + + Proton Mass Energy Equivalent: [J] (2007 CODATA) + + + Proton Molar Mass: [kg mol^-1] (2007 CODATA) + + + Proton Compton Wavelength: [m] (2007 CODATA) + + + Proton Magnetic Moment: [J T^-1] (2007 CODATA) + + + Proton G-Factor: [1] (2007 CODATA) + + + Proton Shielded Magnetic Moment: [J T^-1] (2007 CODATA) + + + Proton Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Proton Shielded Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Neutron Mass: [kg] (2007 CODATA) + + + Neutron Mass Energy Equivalent: [J] (2007 CODATA) + + + Neutron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Neuron Compton Wavelength: [m] (2007 CODATA) + + + Neutron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Neutron G-Factor: [1] (2007 CODATA) + + + Neutron Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Deuteron Mass: [kg] (2007 CODATA) + + + Deuteron Mass Energy Equivalent: [J] (2007 CODATA) + + + Deuteron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Deuteron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Helion Mass: [kg] (2007 CODATA) + + + Helion Mass Energy Equivalent: [J] (2007 CODATA) + + + Helion Molar Mass: [kg mol^-1] (2007 CODATA) + + + Avogadro constant: [mol^-1] (2010 CODATA) + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 + + + The SI prefix factor corresponding to 1 000 + + + The SI prefix factor corresponding to 100 + + + The SI prefix factor corresponding to 10 + + + The SI prefix factor corresponding to 0.1 + + + The SI prefix factor corresponding to 0.01 + + + The SI prefix factor corresponding to 0.001 + + + The SI prefix factor corresponding to 0.000 001 + + + The SI prefix factor corresponding to 0.000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 000 000 001 + + + + Sets parameters for the library. + + + + + Given the number elements, should the operation be parallelized. + + The number elements to check. + true if the operation should be parallelized; false otherwise. + + + + Gets or sets a value indicating whether the distribution classes check validate each parameter. + For the multivariate distributions this could involve an expensive matrix factorization. + The default setting of this property is true. + + + + + Gets or sets a value indicating whether to use thread safe random number generators (RNG). + Thread safe RNG about two and half time slower than non-thread safe RNG. + + + true to use thread safe random number generators ; otherwise, false. + + + + + Gets or sets a value indicating whether parallelization shall be disabled globally. + + + + + Gets or sets the linear algebra provider. + + The linear algebra provider. + + + + Gets or sets a value indicating how many parallel worker threads shall be used + when parallelization is applicable. + + Default to the number of processor cores, must be between 1 and 1024 (inclusive). + + + + Gets or sets the the block size to use for + the native linear algebra provider. + + The block size. Default 512, must be at least 32. + + + + Gets or sets the order of the matrix when linear algebra provider + must calculate multiply in parallel threads. + + The order. Default 64, must be at least 3. + + + + Gets or sets the number of elements a vector or matrix + must contain before we multiply threads. + + Number of elements. Default 300, must be at least 3. + + + + Maximum number of columns to print in ToString methods by default. + + + + + Maximum number of rows to print in ToString methods by default. + + + + + 32-bit single precision complex numbers class. + + + + The class Complex32 provides all elementary operations + on complex numbers. All the operators +, -, + *, /, ==, != are defined in the + canonical way. Additional complex trigonometric functions + are also provided. Note that the Complex32 structures + has two special constant values and + . + + + + Complex32 x = new Complex32(1f,2f); + Complex32 y = Complex32.FromPolarCoordinates(1f, Math.Pi); + Complex32 z = (x + y) / (x - y); + + + + For mathematical details about complex numbers, please + have a look at the + Wikipedia + + + + + + Support Interface for Precision Operations (like AlmostEquals). + + Type of the implementing class. + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + A norm of this value. + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + The value to compare with. + A norm of the difference between this and the other value. + + + + The real component of the complex number. + + + + + The imaginary component of the complex number. + + + + + Initializes a new instance of the Complex32 structure with the given real + and imaginary parts. + + The value for the real component. + The value for the imaginary component. + + + + Creates a complex number from a point's polar coordinates. + + A complex number. + The magnitude, which is the distance from the origin (the intersection of the x-axis and the y-axis) to the number. + The phase, which is the angle from the line to the horizontal axis, measured in radians. + + + + Returns a new instance + with a real number equal to zero and an imaginary number equal to zero. + + + + + Returns a new instance + with a real number equal to one and an imaginary number equal to zero. + + + + + Returns a new instance + with a real number equal to zero and an imaginary number equal to one. + + + + + Returns a new instance + with real and imaginary numbers positive infinite. + + + + + Returns a new instance + with real and imaginary numbers not a number. + + + + + Gets a value indicating whether the Complex32 is zero. + + true if this instance is zero; otherwise, false. + + + + Gets a value indicating whether the Complex32 is one. + + true if this instance is one; otherwise, false. + + + + Gets a value indicating whether the Complex32 is the imaginary unit. + + true if this instance is ImaginaryOne; otherwise, false. + + + + Gets a value indicating whether the provided Complex32evaluates + to a value that is not a number. + + + true if this instance is ; otherwise, + false. + + + + + Gets a value indicating whether the provided Complex32 evaluates to an + infinite value. + + + true if this instance is infinite; otherwise, false. + + + True if it either evaluates to a complex infinity + or to a directed infinity. + + + + + Gets a value indicating whether the provided Complex32 is real. + + true if this instance is a real number; otherwise, false. + + + + Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0. + + + true if this instance is real nonnegative number; otherwise, false. + + + + + Exponential of this Complex32 (exp(x), E^x). + + + The exponential of this complex number. + + + + + Natural Logarithm of this Complex32 (Base E). + + The natural logarithm of this complex number. + + + + Common Logarithm of this Complex32 (Base 10). + + The common logarithm of this complex number. + + + + Logarithm of this Complex32 with custom base. + + The logarithm of this complex number. + + + + Raise this Complex32 to the given value. + + + The exponent. + + + The complex number raised to the given exponent. + + + + + Raise this Complex32 to the inverse of the given value. + + + The root exponent. + + + The complex raised to the inverse of the given exponent. + + + + + The Square (power 2) of this Complex32 + + + The square of this complex number. + + + + + The Square Root (power 1/2) of this Complex32 + + + The square root of this complex number. + + + + + Equality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real and imaginary components of the two complex numbers are equal; false otherwise. + + + + Inequality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real or imaginary components of the two complex numbers are not equal; false otherwise. + + + + Unary addition. + + The complex number to operate on. + Returns the same complex number. + + + + Unary minus. + + The complex number to operate on. + The negated value of the . + + + Addition operator. Adds two complex numbers together. + The result of the addition. + One of the complex numbers to add. + The other complex numbers to add. + + + Subtraction operator. Subtracts two complex numbers. + The result of the subtraction. + The complex number to subtract from. + The complex number to subtract. + + + Addition operator. Adds a complex number and float together. + The result of the addition. + The complex numbers to add. + The float value to add. + + + Subtraction operator. Subtracts float value from a complex value. + The result of the subtraction. + The complex number to subtract from. + The float value to subtract. + + + Addition operator. Adds a complex number and float together. + The result of the addition. + The float value to add. + The complex numbers to add. + + + Subtraction operator. Subtracts complex value from a float value. + The result of the subtraction. + The float vale to subtract from. + The complex value to subtract. + + + Multiplication operator. Multiplies two complex numbers. + The result of the multiplication. + One of the complex numbers to multiply. + The other complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a float value. + The result of the multiplication. + The float value to multiply. + The complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a float value. + The result of the multiplication. + The complex number to multiply. + The float value to multiply. + + + Division operator. Divides a complex number by another. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a float value by a complex number. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a complex number by a float value. + The result of the division. + The dividend. + The divisor. + + + + Computes the conjugate of a complex number and returns the result. + + + + + Returns the multiplicative inverse of a complex number. + + + + + Converts the value of the current complex number to its equivalent string representation in Cartesian form. + + The string representation of the current instance in Cartesian form. + + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified format for its real and imaginary parts. + + The string representation of the current instance in Cartesian form. + A standard or custom numeric format string. + + is not a valid format string. + + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified culture-specific formatting information. + + The string representation of the current instance in Cartesian form, as specified by . + An object that supplies culture-specific formatting information. + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified format and culture-specific format information for its real and imaginary parts. + The string representation of the current instance in Cartesian form, as specified by and . + A standard or custom numeric format string. + An object that supplies culture-specific formatting information. + + is not a valid format string. + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + The hash code for the complex number. + + + The hash code of the complex number. + + + The hash code is calculated as + System.Math.Exp(ComplexMath.Absolute(complexNumber)). + + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + + A norm of this value. + + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + + The value to compare with. + + + A norm of the difference between this and the other value. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a float. + + + A complex number containing the value specified by the given string. + + + The string to parse. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a float. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Parse a part (real or complex) from a complex number. + + Start Token. + Is set to true if the part identified itself as being imaginary. + + An that supplies culture-specific + formatting information. + + Resulting part as float. + + + + + Converts the string representation of a complex number to a single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Converts the string representation of a complex number to single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Explicit conversion of a real decimal to a Complex32. + + The decimal value to convert. + The result of the conversion. + + + + Explicit conversion of a Complex to a Complex32. + + The decimal value to convert. + The result of the conversion. + + + + Implicit conversion of a real byte to a Complex32. + + The byte value to convert. + The result of the conversion. + + + + Implicit conversion of a real short to a Complex32. + + The short value to convert. + The result of the conversion. + + + + Implicit conversion of a signed byte to a Complex32. + + The signed byte value to convert. + The result of the conversion. + + + + Implicit conversion of a unsgined real short to a Complex32. + + The unsgined short value to convert. + The result of the conversion. + + + + Implicit conversion of a real int to a Complex32. + + The int value to convert. + The result of the conversion. + + + + Implicit conversion of a BigInteger int to a Complex32. + + The BigInteger value to convert. + The result of the conversion. + + + + Implicit conversion of a real long to a Complex32. + + The long value to convert. + The result of the conversion. + + + + Implicit conversion of a real uint to a Complex32. + + The uint value to convert. + The result of the conversion. + + + + Implicit conversion of a real ulong to a Complex32. + + The ulong value to convert. + The result of the conversion. + + + + Implicit conversion of a real float to a Complex32. + + The float value to convert. + The result of the conversion. + + + + Implicit conversion of a real double to a Complex32. + + The double value to convert. + The result of the conversion. + + + + Converts this Complex32 to a . + + A with the same values as this Complex32. + + + + Returns the additive inverse of a specified complex number. + + The result of the real and imaginary components of the value parameter multiplied by -1. + A complex number. + + + + Computes the conjugate of a complex number and returns the result. + + The conjugate of . + A complex number. + + + + Adds two complex numbers and returns the result. + + The sum of and . + The first complex number to add. + The second complex number to add. + + + + Subtracts one complex number from another and returns the result. + + The result of subtracting from . + The value to subtract from (the minuend). + The value to subtract (the subtrahend). + + + + Returns the product of two complex numbers. + + The product of the and parameters. + The first complex number to multiply. + The second complex number to multiply. + + + + Divides one complex number by another and returns the result. + + The quotient of the division. + The complex number to be divided. + The complex number to divide by. + + + + Returns the multiplicative inverse of a complex number. + + The reciprocal of . + A complex number. + + + + Returns the square root of a specified complex number. + + The square root of . + A complex number. + + + + Gets the absolute value (or magnitude) of a complex number. + + The absolute value of . + A complex number. + + + + Returns e raised to the power specified by a complex number. + + The number e raised to the power . + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a complex number. + + The complex number raised to the power . + A complex number to be raised to a power. + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a single-precision floating-point number. + + The complex number raised to the power . + A complex number to be raised to a power. + A single-precision floating-point number that specifies a power. + + + + Returns the natural (base e) logarithm of a specified complex number. + + The natural (base e) logarithm of . + A complex number. + + + + Returns the logarithm of a specified complex number in a specified base. + + The logarithm of in base . + A complex number. + The base of the logarithm. + + + + Returns the base-10 logarithm of a specified complex number. + + The base-10 logarithm of . + A complex number. + + + + Returns the sine of the specified complex number. + + The sine of . + A complex number. + + + + Returns the cosine of the specified complex number. + + The cosine of . + A complex number. + + + + Returns the tangent of the specified complex number. + + The tangent of . + A complex number. + + + + Returns the angle that is the arc sine of the specified complex number. + + The angle which is the arc sine of . + A complex number. + + + + Returns the angle that is the arc cosine of the specified complex number. + + The angle, measured in radians, which is the arc cosine of . + A complex number that represents a cosine. + + + + Returns the angle that is the arc tangent of the specified complex number. + + The angle that is the arc tangent of . + A complex number. + + + + Returns the hyperbolic sine of the specified complex number. + + The hyperbolic sine of . + A complex number. + + + + Returns the hyperbolic cosine of the specified complex number. + + The hyperbolic cosine of . + A complex number. + + + + Returns the hyperbolic tangent of the specified complex number. + + The hyperbolic tangent of . + A complex number. + + + + Gets the real component of the complex number. + + The real component of the complex number. + + + + Gets the real imaginary component of the complex number. + + The real imaginary component of the complex number. + + + + Gets the phase or argument of this Complex32. + + + Phase always returns a value bigger than negative Pi and + smaller or equal to Pi. If this Complex32 is zero, the Complex32 + is assumed to be positive real with an argument of zero. + + The phase or argument of this Complex32 + + + + Gets the magnitude (or absolute value) of a complex number. + + The magnitude of the current instance. + + + + Gets the squared magnitude (or squared absolute value) of a complex number. + + The squared magnitude of the current instance. + + + + Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg)) + + The unity of this Complex32. + + + + Least-Squares Curve Fitting Routines + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning its best fitting parameters as [a, b] array. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning a function y' for the best fitting line. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Evaluate.Polynomial. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning a function y' for the best fitting polynomial. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T), + returning a function y' for the best fitting combination. + + + + + Compound Monthly Return or Geometric Return or Annualized Return + + + + + + + Average Gain or Gain Mean + This is a simple average (arithmetic mean) of the periods with a gain. It is calculated by summing the returns for gain periods (return 0) + and then dividing the total by the number of gain periods. + + + + http://www.offshore-library.com/kb/statistics.php + + + + Average Loss or LossMean + This is a simple average (arithmetic mean) of the periods with a loss. It is calculated by summing the returns for loss periods (return < 0) + and then dividing the total by the number of loss periods. + + + + http://www.offshore-library.com/kb/statistics.php + + + + Calculation is similar to Standard Deviation , except it calculates an average (mean) return only for periods with a gain + and measures the variation of only the gain periods around the gain mean. Measures the volatility of upside performance. + © Copyright 1996, 1999 Gary L.Gastineau. First Edition. © 1992 Swiss Bank Corporation. + + + + + + + Similar to standard deviation, except this statistic calculates an average (mean) return for only the periods with a loss and then + measures the variation of only the losing periods around this loss mean. This statistic measures the volatility of downside performance. + + + + http://www.offshore-library.com/kb/statistics.php + + + + This measure is similar to the loss standard deviation except the downside deviation + considers only returns that fall below a defined minimum acceptable return (MAR) rather than the arithmetic mean. + For example, if the MAR is 7%, the downside deviation would measure the variation of each period that falls below + 7%. (The loss standard deviation, on the other hand, would take only losing periods, calculate an average return for + the losing periods, and then measure the variation between each losing return and the losing return average). + + + + + + + + A measure of volatility in returns below the mean. It's similar to standard deviation, but it only + looks at periods where the investment return was less than average return. + + + + + + + Measures a fund’s average gain in a gain period divided by the fund’s average loss in a losing + period. Periods can be monthly or quarterly depending on the data frequency. + + + + + + + Defines the base class for Matrix classes. + + + Defines the base class for Matrix classes. + + Supported data types are double, single, , and . + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns a that describes the type, dimensions and shape of this matrix. + + + + + Returns a that represents the content of this matrix. + + + + + Returns a that represents the content of this matrix. + + + + + Returns a that summarizes this matrix. + + + + + Returns a that summarizes this matrix. + The maximum number of cells can be configured in the class. + + + + + Returns a that summarizes this matrix. + The maximum number of cells can be configured in the class. + The format string is ignored. + + + + + The value of 1.0. + + + + + The value of 0.0. + + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of this matrix with a scalar. + + The scalar to multiply with. + The result of the multiplication. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Divides each element of this matrix with a scalar. + + The scalar to divide with. + The result of the division. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix by a vector and returns the result. + + The vector to multiply with. + The result of the multiplication. + If is . + If this.ColumnCount != rightSide.Count. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ). + + The vector to multiply with. + The result of the multiplication. + If is . + If this.RowCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.ColumnCount. + If the result matrix's dimensions are not the this.RowCount x other.RowCount. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.ColumnCount. + If the other matrix is . + The result of the multiplication. + + + + Multiplies the transpose of this matrix by a vector and returns the result. + + The vector to multiply with. + The result of the multiplication. + If is . + If this.RowCount != rightSide.Count. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Rows != other.RowCount. + If the result matrix's dimensions are not the this.ColumnCount x other.ColumnCount. + + + + Multiplies the transpose of this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Rows != other.RowCount. + If the other matrix is . + The result of the multiplication. + + + + Negate each element of this matrix. + + A matrix containing the negated values. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + If the result matrix is . + if the result matrix's dimensions are not the same as this matrix. + + + + Complex conjugate each element of this matrix. + + A matrix containing the conjugated values. + + + + Complex conjugate each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + If the result matrix is . + if the result matrix's dimensions are not the same as this matrix. + + + + Pointwise multiplies this matrix with another matrix. + + The matrix to pointwise multiply with this one. + If the other matrix is . + If this matrix and are not the same size. + A new matrix that is the pointwise multiplication of this matrix and . + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + If the other matrix is . + If the result matrix is . + If this matrix and are not the same size. + If this matrix and are not the same size. + + + + Pointwise divide this matrix by another matrix. + + The matrix to pointwise subtract this one by. + If the other matrix is . + If this matrix and are not the same size. + A new matrix that is the pointwise division of this matrix and . + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + If the other matrix is . + If the result matrix is . + If this matrix and are not the same size. + If this matrix and are not the same size. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + A matrix containing the results. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Calculates the rank of the matrix + + effective numerical rank, obtained from SVD + + + Calculates the condition number of this matrix. + The condition number of the matrix. + The condition number is calculated using singular value decomposition. + + + Computes the determinant of this matrix. + The determinant of this matrix. + + + Computes the inverse of this matrix. + The inverse of this matrix. + + + + Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N + with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns. + + The other matrix. + If other is . + The kronecker product of the two matrices. + + + + Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N + with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns. + + The other matrix. + The kronecker product of the two matrices. + If other is . + If the result matrix is . + If the result matrix's dimensions are not (this.Rows * lower.rows) x (this.Columns * lower.Columns). + + + + Normalizes the columns of a matrix. + + The norm under which to normalize the columns under. + A normalized version of the matrix. + If the parameter p is not positive. + + + + Normalizes the rows of a matrix. + + The norm under which to normalize the rows under. + A normalized version of the matrix. + If the parameter p is not positive. + + + + Initializes a new instance of the Matrix class. + + + + + Constructs matrix from a list of column vectors. + + The vectors to construct the matrix from. + The matrix constructed from the list of column vectors. + Creates a matrix of size Max([i].Count) x .Count + + + + Constructs matrix from a list of row vectors. + + The vectors to construct the matrix from. + The matrix constructed from the list of row vectors. + Creates a matrix of size Max(.Count) x [i].Count + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + + + + Sets the value of the given element without range checking. + + + The row of the element. + + + The column of the element. + + + The value to set the element to. + + + + + Sets all values to zero. + + + + + Sets all values of a column to zero. + + + + + Sets all values of a row to zero. + + + + + Sets all values of a submatrix to zero. + + + + + Creates a clone of this instance. + + + A clone of the instance. + + + + + Copies the elements of this matrix to the given matrix. + + + The matrix to copy values into. + + + If target is . + + + If this and the target matrix do not have the same dimensions.. + + + + + Creates a Matrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A Matrix with the given dimensions. + + + Creates a matrix of the same matrix type as the current matrix. + + + + + Creates a Vector with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A Vector with the given dimension. + + + Creates a vector of the same type as the current matrix. + + + + + Copies a row into an Vector. + + The row to copy. + A Vector containing the copied elements. + If is negative, + or greater than or equal to the number of rows. + + + + Copies a row into to the given Vector. + + The row to copy. + The Vector to copy the row into. + If the result vector is . + If is negative, + or greater than or equal to the number of rows. + If this.Columns != result.Count. + + + + Copies the requested row elements into a new Vector. + + The row to copy elements from. + The column to start copying from. + The number of elements to copy. + A Vector containing the requested elements. + If: + is negative, + or greater than or equal to the number of rows. + is negative, + or greater than or equal to the number of columns. + (columnIndex + length) >= Columns. + If is not positive. + + + + Copies the requested row elements into a new Vector. + + The row to copy elements from. + The column to start copying from. + The number of elements to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If is negative, + or greater than or equal to the number of rows. + If + + is greater than or equal to the number of rows. + If is not positive. + If result.Count < length. + + + + Copies a column into a new Vector>. + + The column to copy. + A Vector containing the copied elements. + If is negative, + or greater than or equal to the number of columns. + + + + Copies a column into to the given Vector. + + The column to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If this.Rows != result.Count. + + + + Copies the requested column elements into a new Vector. + + The column to copy elements from. + The row to start copying from. + The number of elements to copy. + A Vector containing the requested elements. + If: + is negative, + or greater than or equal to the number of columns. + is negative, + or greater than or equal to the number of rows. + (rowIndex + length) >= Rows. + + If is not positive. + + + + Copies the requested column elements into the given vector. + + The column to copy elements from. + The row to start copying from. + The number of elements to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If is negative, + or greater than or equal to the number of rows. + If + + is greater than or equal to the number of rows. + If is not positive. + If result.Count < length. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Returns the elements of the diagonal in a Vector. + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a new matrix and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new matrix with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Copies the values of the given Vector to the specified column. + + The column to copy the values to. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + + + + Copies the values of the given Vector to the specified sub-column. + + The column to copy the values to. + The row to start copying to. + The number of elements to copy. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + + + + Copies the values of the given array to the specified column. + + The column to copy the values to. + The array to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + If the size of does not + equal the number of rows of this Matrix. + + + + Creates a new matrix and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new matrix with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Copies the values of the given Vector to the specified row. + + The row to copy the values to. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of the given Vector to the specified sub-row. + + The row to copy the values to. + The column to start copying to. + The number of elements to copy. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of the given array to the specified row. + + The row to copy the values to. + The array to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of a given matrix into a region in this matrix. + + The row to start copying to. + The number of rows to copy. Must be positive. + The column to start copying to. + The number of columns to copy. Must be positive. + The sub-matrix to copy from. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If is + the size of is not at least x . + If or + is not positive. + + + + Copies the values of the given Vector to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + + + + Concatenates this matrix with the given matrix. + + The matrix to concatenate. + The combined matrix. + + + + Concatenates this matrix with the given matrix and places the result into the result matrix. + + The matrix to concatenate. + The combined matrix. + + + + Stacks this matrix on top of the given matrix and places the result into the result matrix. + + The matrix to stack this matrix upon. + The combined matrix. + If lower is . + If upper.Columns != lower.Columns. + + + + Stacks this matrix on top of the given matrix and places the result into the result matrix. + + The matrix to stack this matrix upon. + The combined matrix. + If lower is . + If upper.Columns != lower.Columns. + + + + Diagonally stacks his matrix on top of the given matrix. The new matrix is a M-by-N matrix, + where M = this.Rows + lower.Rows and N = this.Columns + lower.Columns. + The values of off the off diagonal matrices/blocks are set to zero. + + The lower, right matrix. + If lower is . + the combined matrix + + + + Diagonally stacks his matrix on top of the given matrix and places the combined matrix into the result matrix. + + The lower, right matrix. + The combined matrix + If lower is . + If the result matrix is . + If the result matrix's dimensions are not (this.Rows + lower.rows) x (this.Columns + lower.Columns). + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + For sparse matrices, the L2 norm is computed using a dense implementation of singular value decomposition. + In a later release, it will be replaced with a sparse implementation. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Returns an that enumerates over the matrix columns. + + An that enumerates over the matrix columns + + + + + Returns an that enumerates the requested matrix columns. + + The column to start enumerating over. + The number of columns to enumerating over. + An that enumerates over requested matrix columns. + + If: + is negative, + or greater than or equal to the number of columns. + (index + length) >= Columns. + + If is not positive. + + + + Returns an that enumerates the requested matrix rows. + + The row to start enumerating over. + The number of rows to enumerating over. + An that enumerates over requested matrix rows. + + If: + is negative, + or greater than or equal to the number of rows. + (index + length) >= Rows. + If is not positive. + + + + Returns an that enumerates over the matrix rows. + + An that enumerates over the matrix rows + + + + + Iterates through each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Returns this matrix as a multidimensional array. + + A multidimensional containing the values of this matrix. + + + + Returns the matrix's elements as an array with the data laid out column-wise. + +
+            1, 2, 3
+            4, 5, 6  will be returned as  1, 4, 7, 2, 5, 8, 3, 6, 9
+            7, 8, 9
+            
+ An array containing the matrix's elements. +
+ + + Returns the matrix's elements as an array with the data laid row-wise. + +
+            1, 2, 3
+            4, 5, 6  will be returned as  1, 2, 3, 4, 5, 6, 7, 8, 9
+            7, 8, 9
+            
+ An array containing the matrix's elements. +
+ + + Applies a function to each value of this matrix and replaces the value with its result. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse matrices). + + + + + Applies a function to each value of this matrix and replaces the value with its result. + The row and column indices of each value (zero-based) are passed as first arguments to the function. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse matrices). + + + + + Gets the raw matrix data storage. + + + + + Gets the number of columns. + + The number of columns. + + + + Gets the number of rows. + + The number of rows. + + + + Gets or sets the value at the given row and column, with range checking. + + + The row of the element. + + + The column of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Defines the generic class for Vector classes. + + Supported data types are double, single, , and . + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Creates a new object that is a copy of the current instance. + + + A new object that is a copy of this instance. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns a that describes the type, dimensions and shape of this vector. + + + + + Returns a that represents the content of this vector, row by row. + + + + + Returns a that represents the content of this vector, row by row. + + + + + Returns a that summarizes this vector. + + + + + Returns a that summarizes this vector. + The maximum number of cells can be configured in the class. + + + + + Returns a that summarizes this vector. + The maximum number of cells can be configured in the class. + The format string is ignored. + + + + + Returns a that summarizes this vector. + + + + + The zero value for type T. + + + + + The value of 1.0 for type T. + + + + + Initializes a new instance of the Vector class. + + + + Gets the value at the given without range checking.. + The index of the value to get or set. + The value of the vector at the given . + + + Sets the at the given without range checking.. + The index of the value to get or set. + The value to set. + + + + Resets all values to zero. + + + + + Sets all values of a subvector to zero. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + The number of rows. + The number of columns. + A matrix with the given dimensions. + + + + Creates a Vector of the given size using the same storage type + as this vector. + + The size of the Vector to create. + The new Vector. + + + + Negates vector and save result to + + Target vector + + + + Complex conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts each element of the vector from a scalar and stores the result in the result vector. + + The scalar to subtract from. + The vector to store the result of the subtraction. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + The result of the addition. + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + The scalar to divide with. + The vector to store the result of the division. + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The result of the division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Adds a scalar to each element of the vector. + + The scalar to add. + A copy of the vector with the scalar added. + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + If the result vector is . + If this vector and are not the same size. + + + + Returns a copy of this vector. + + This vector. + + Added as an alternative to the unary addition operator. + + + + + Adds another vector to this vector. + + The vector to add to this one. + A new vector containing the sum of both vectors. + If the other vector is . + If this vector and are not the same size. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Subtracts a scalar from each element of the vector. + + The scalar to subtract. + A new vector containing the subtraction of this vector and the scalar. + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + If the result vector is . + If this vector and are not the same size. + + + + Subtracts each element of the vector from a scalar. + + The scalar to subtract from. + A new vector containing the subtraction of the scalar and this vector. + + + + Subtracts each element of the vector from a scalar and stores the result in the result vector. + + The scalar to subtract from. + The vector to store the result of the subtraction. + If the result vector is . + If this vector and are not the same size. + + + + Returns a negated vector. + + The negated vector. + Added as an alternative to the unary negation operator. + + + + Negates vector and save result to + + Target vector + + + + Subtracts another vector from this vector. + + The vector to subtract from this one. + A new vector containing the subtraction of the the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Return vector with complex conjugate values of the source vector + + Conjugated vector + + + + Complex conjugates vector and save result to + + Target vector + + + + Multiplies a scalar to each element of the vector. + + The scalar to multiply. + A new vector that is the multiplication of the vector and the scalar. + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + If the result vector is . + If this vector and are not the same size. + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + The result of the addition. + If is not of the same size. + If is . + + + + Divides each element of the vector by a scalar. + + The scalar to divide with. + A new vector that is the division of the vector and the scalar. + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + The scalar to divide with. + The vector to store the result of the division. + If the result vector is . + If this vector and are not the same size. + + + + Divides a scalar by each element of the vector. + + The scalar to divide. + A new vector that is the division of the vector and the scalar. + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + If the result vector is . + If this vector and are not the same size. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector containing the result. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector containing the result. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Pointwise multiplies this vector with another vector. + + The vector to pointwise multiply with this one. + A new vector which is the pointwise multiplication of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Pointwise divide this vector with another vector. + + The vector to pointwise divide this one by. + A new vector which is the pointwise division of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Pointwise modulus this vector with another vector. + + The vector to pointwise modulus this one by. + A new vector which is the pointwise modulus of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The vector to store the result of the pointwise modulus. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Returns a Vector containing the same values of . + + This method is included for completeness. + The vector to get the values from. + A vector containing the same values as . + If is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Adds a scalar to each element of a vector. + + The vector to add to. + The scalar value to add. + The result of the addition. + If is . + + + + Adds a scalar to each element of a vector. + + The scalar value to add. + The vector to add to. + The result of the addition. + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of a vector. + + The vector to subtract from. + The scalar value to subtract. + The result of the subtraction. + If is . + + + + Substracts each element of a vector from a scalar. + + The scalar value to subtract from. + The vector to subtract. + The result of the subtraction. + If is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a scalar with a vector. + + The scalar to divide. + The vector. + The result of the division. + If is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Pointwise divides two Vectors. + + The vector to divide. + The other vector. + The result of the division. + If and are not the same size. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use. + The result of the calculation + If is . + + + + Computes the modulus of the given dividend of each element of the vector. + + The dividend we want to compute the modulus of. + The vector whose elements we want to use as divisor. + The result of the calculation + If is . + + + + Computes the pointwise modulus of each element of two vectors. + + The vector whose elements we want to compute the modulus of. + The divisor to use. + The result of the calculation + If and are not the same size. + If is . + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the value of maximum element. + + The value of maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the value of the minimum element. + + The value of the minimum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Returns a deep-copy clone of the vector. + + A deep-copy clone of the vector. + + + + Set the values of this vector to the given values. + + The array containing the values to use. + If is . + If is not the same size as this vector. + + + + Copies the values of this vector into the target vector. + + The vector to copy elements into. + If is . + If is not the same size as this vector. + + + + Creates a vector containing specified elements. + + The first element to begin copying from. + The number of elements to copy. + A vector containing a copy of the specified elements. + If is not positive or + greater than or equal to the size of the vector. + If + is greater than or equal to the size of the vector. + + If is not positive. + + + + Copies the values of a given vector into a region in this vector. + + The field to start copying to + The number of fields to cpy. Must be positive. + The sub-vector to copy from. + If is + + + + Copies the requested elements from this vector to another. + + The vector to copy the elements to. + The element to start copying from. + The element to start copying to. + The number of elements to copy. + + + + Returns the data contained in the vector as an array. + + + The vector's data as an array. + + + + + Create a matrix based on this vector in column form (one single column). + + + This vector as a column matrix. + + + + + Create a matrix based on this vector in row form (one single row). + + + This vector as a row matrix. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an that contains the position and value of the element, for all non-zero elements. + + + An over this vector that contains the position and value of each element. + + + The enumerator returns a + with the first value being the element index and the second value + being the value of the element at that index. + The enumerator will exclude all elements with a zero value. + + + + + Applies a function to each value of this vector and replaces the value with its result. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse vectors). + + + + + Applies a function to each value of this vector and replaces the value with its result. + The index of each value (zero-based) is passed as first argument to the function. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse vectors). + + + + + Gets the raw vector data storage. + + + + + Gets the number of items. + + + + Gets or sets the value at the given . + The index of the value to get or set. + The value of the vector at the given . + If is negative or + greater than the size of the vector. + + + + An algorithm failed to converge. + + + + + Algorithm by Broyden. + Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Initial guess of the root. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Initial guess of the root. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Helper method to calculate an approxiamtion of the Jacobian. + + The function. + The argument. + + + + + Pure Newton-Raphson root-finding algorithm without any recovery measures in cases it behaves badly. + The algorithm aborts immediately if the root leaves the bound interval. + + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + Initial guess of the root. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MinValue. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MaxValue. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + Initial guess of the root. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Robust Newton-Raphson root-finding algorithm that falls back to bisection when overshooting or converging too slow, or to subdivision on lacking bracketing. + + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Default 20. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Example: 20. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + Detect a range containing at least one root. + The function to detect roots from. + Lower value of the range. + Upper value of the range + The growing factor of research. Usually 1.6. + Maximum number of iterations. Usually 50. + True if the bracketing operation succeeded, false otherwise. + This iterative methods stops when two values with opposite signs are found. + + + + Algorithm by by Brent, Van Wijngaarden, Dekker et al. + Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + Helper method useful for preventing rounding errors. + a*sign(b) + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + + + + Find both complex roots of the quadratic equation c + b*x + a*x^2 = 0. + Note the special coefficient order ascending by exponent (consistent with polynomials). + + + + + Bisection root-finding algorithm without any recovery measures in case of lacking bracketing. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Guess for the low value of the range where the root is supposed to be. Will be expanded if needed. + Guess for the high value of the range where the root is supposed to be. Will be expanded if needed. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Factor at which to expand the bounds, if needed. Default 1.6. + Maximum number of expand iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Evaluation functions, useful for function approximation. + + + + + Evaluate polynomials. + + The coefficients of the polynomial. + The location where to evaluate the polynomial at. + the evaluation of the polynomial. + + + + Evaluate a polynomial at point x. + Coefficients are ordered by power with power k at index k. + Example: coefficients [3,-1,2] represent y=2x^2-x+3. + + The location where to evaluate the polynomial at. + The coefficients of the polynomial, coefficient for power k at index k. + + + + Numerically stable series summation + + provides the summands sequentially + Sum + + + Evaluates the series of Chebyshev polynomials Ti at argument x/2. + The series is given by +
+                  N-1
+                   - '
+            y  =   >   coef[i] T (x/2)
+                   -            i
+                  i=0
+            
+ Coefficients are stored in reverse order, i.e. the zero + order term is last in the array. Note N is the number of + coefficients, not the order. +

+ If coefficients are for the interval a to b, x must + have been transformed to x -> 2(2x - b - a)/(b-a) before + entering the routine. This maps x from (a, b) to (-1, 1), + over which the Chebyshev polynomials are defined. +

+ If the coefficients are for the inverted interval, in + which (a, b) is mapped to (1/b, 1/a), the transformation + required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity, + this becomes x -> 4a/x - 1. +

+ SPEED: +

+ Taking advantage of the recurrence properties of the + Chebyshev polynomials, the routine requires one more + addition per loop than evaluating a nested polynomial of + the same degree. +

+ The coefficients of the polynomial. + Argument to the polynomial. + + Reference: https://bpm2.svn.codeplex.com/svn/Common.Numeric/Arithmetic.cs +

+ Marked as Deprecated in + http://people.apache.org/~isabel/mahout_site/mahout-matrix/apidocs/org/apache/mahout/jet/math/Arithmetic.html + + + +

+ Summation of Chebyshev polynomials, using the Clenshaw method with Reinsch modification. + + The no. of terms in the sequence. + The coefficients of the Chebyshev series, length n+1. + The value at which the series is to be evaluated. + + ORIGINAL AUTHOR: + Dr. Allan J. MacLeod; Dept. of Mathematics and Statistics, University of Paisley; High St., PAISLEY, SCOTLAND + REFERENCES: + "An error analysis of the modified Clenshaw method for evaluating Chebyshev and Fourier series" + J. Oliver, J.I.M.A., vol. 20, 1977, pp379-391 + +
+ + + This partial implementation of the SpecialFunctions class contains all methods related to the modified bessel function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the modified bessel function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the logistic function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the harmonic function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the error function. + + + + + The order of the approximation. + + + + + Auxiliary variable when evaluating the function. + + + + + Returns the modified Struve function of order 0. + + The value to compute the function of. + + + + + Returns the modified Struve function of order 1. + + The value to compute the function of. + + + + + Returns the difference between the Bessel I0 and Struve L0 functions. + + The value to compute the function of. + + + + + Returns the difference between the Bessel I1 and Struve L1 functions. + + The value to compute the function of. + + + + + ************************************** + COEFFICIENTS FOR METHODS bessi0 * + ************************************** + + Chebyshev coefficients for exp(-x) I0(x) + in the interval [0, 8]. + + lim(x->0){ exp(-x) I0(x) } = 1. + + + + Chebyshev coefficients for exp(-x) sqrt(x) I0(x) + in the inverted interval [8, infinity]. + + lim(x->inf){ exp(-x) sqrt(x) I0(x) } = 1/sqrt(2pi). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessi1 * + ************************************** + + Chebyshev coefficients for exp(-x) I1(x) / x + in the interval [0, 8]. + + lim(x->0){ exp(-x) I1(x) / x } = 1/2. + + + + Chebyshev coefficients for exp(-x) sqrt(x) I1(x) + in the inverted interval [8, infinity]. + + lim(x->inf){ exp(-x) sqrt(x) I1(x) } = 1/sqrt(2pi). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessk0, bessk0e * + ************************************** + + Chebyshev coefficients for K0(x) + log(x/2) I0(x) + in the interval [0, 2]. The odd order coefficients are all + zero; only the even order coefficients are listed. + + lim(x->0){ K0(x) + log(x/2) I0(x) } = -EUL. + + + + Chebyshev coefficients for exp(x) sqrt(x) K0(x) + in the inverted interval [2, infinity]. + + lim(x->inf){ exp(x) sqrt(x) K0(x) } = sqrt(pi/2). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessk1, bessk1e * + ************************************** + + Chebyshev coefficients for x(K1(x) - log(x/2) I1(x)) + in the interval [0, 2]. + + lim(x->0){ x(K1(x) - log(x/2) I1(x)) } = 1. + + + + Chebyshev coefficients for exp(x) sqrt(x) K1(x) + in the interval [2, infinity]. + + lim(x->inf){ exp(x) sqrt(x) K1(x) } = sqrt(pi/2). + + + + Returns the modified Bessel function of first kind, order 0 of the argument. +

+ The function is defined as i0(x) = j0( ix ). +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the modified Bessel function of first kind, + order 1 of the argument. +

+ The function is defined as i1(x) = -i j1( ix ). +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the modified Bessel function of the second kind + of order 0 of the argument. +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the exponentially scaled modified Bessel function + of the second kind of order 0 of the argument. + + The value to compute the bessel function of. + + + + Returns the modified Bessel function of the second kind + of order 1 of the argument. +

+ The range is partitioned into the two intervals [0, 2] and + (2, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the exponentially scaled modified Bessel function + of the second kind of order 1 of the argument. +

+ k1e(x) = exp(x) * k1(x). +

+ The value to compute the bessel function of. + +
+ + + Computes the logistic function. see: http://en.wikipedia.org/wiki/Logistic + + The parameter for which to compute the logistic function. + The logistic function of . + + + + Computes the logit function, the inverse of the sigmoid logistic function. see: http://en.wikipedia.org/wiki/Logit + + The parameter for which to compute the logit function. This number should be + between 0 and 1. + The logarithm of divided by 1.0 - . + + + + Computes the 'th Harmonic number. + + The Harmonic number which needs to be computed. + The t'th Harmonic number. + + + + Compute the generalized harmonic number of order n of m. (1 + 1/2^m + 1/3^m + ... + 1/n^m) + + The order parameter. + The power parameter. + General Harmonic number. + + + + Computes the logarithm of the Euler Beta function. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The logarithm of the Euler Beta function evaluated at z,w. + If or are not positive. + + + + Computes the Euler Beta function. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The Euler Beta function evaluated at z,w. + If or are not positive. + + + + Returns the lower incomplete (unregularized) beta function + I_x(a,b) = int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The upper limit of the integral. + The lower incomplete (unregularized) beta function. + + + + Returns the regularized lower incomplete beta function + I_x(a,b) = 1/Beta(a,b) * int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The upper limit of the integral. + The regularized lower incomplete beta function. + + + Calculates the error function. + The value to evaluate. + the error function evaluated at given value. + + + returns 1 if x == Double.PositiveInfinity. + returns -1 if x == Double.NegativeInfinity. + + + + + Calculates the complementary error function. + The value to evaluate. + the complementary error function evaluated at given value. + + + returns 0 if x == Double.PositiveInfinity. + returns 2 if x == Double.NegativeInfinity. + + + + + Calculates the inverse error function evaluated at z. + The inverse error function evaluated at given value. + + + returns Double.PositiveInfinity if z >= 1.0. + returns Double.NegativeInfinity if z <= -1.0. + + + Calculates the inverse error function evaluated at z. + value to evaluate. + the inverse error function evaluated at Z. + + + + Implementation of the error function. + + Where to evaluate the error function. + Whether to compute 1 - the error function. + the error function. + + + Calculates the complementary inverse error function evaluated at z. + The complementary inverse error function evaluated at given value. + We have tested this implementation against the arbitrary precision mpmath library + and found cases where we can only guarantee 9 significant figures correct. + + returns Double.PositiveInfinity if z <= 0.0. + returns Double.NegativeInfinity if z >= 2.0. + + + calculates the complementary inverse error function evaluated at z. + value to evaluate. + the complementary inverse error function evaluated at Z. + + + + The implementation of the inverse error function. + + First intermediate parameter. + Second intermediate parameter. + Third intermediate parameter. + the inverse error function. + + + + Initializes static members of the SpecialFunctions class. + + + + + Computes the factorial function x -> x! of an integer number > 0. The function can represent all number up + to 22! exactly, all numbers up to 170! using a double representation. All larger values will overflow. + + A value value! for value > 0 + + If you need to multiply or divide various such factorials, consider using the logarithmic version + instead so you can add instead of multiply and subtract instead of divide, and + then exponentiate the result using . This will also circumvent the problem that + factorials become very large even for small parameters. + + + + + + Computes the logarithmic factorial function x -> ln(x!) of an integer number > 0. + + A value value! for value > 0 + + + + Computes the binomial coefficient: n choose k. + + A nonnegative value n. + A nonnegative value h. + The binomial coefficient: n choose k. + + + + Computes the natural logarithm of the binomial coefficient: ln(n choose k). + + A nonnegative value n. + A nonnegative value h. + The logarithmic binomial coefficient: ln(n choose k). + + + + Computes the multinomial coefficient: n choose n1, n2, n3, ... + + A nonnegative value n. + An array of nonnegative values that sum to . + The multinomial coefficient. + if is . + If or any of the are negative. + If the sum of all is not equal to . + + + + Polynomial coefficients for the approximation. + + + + + Computes the logarithm of the Gamma function. + + The argument of the gamma function. + The logarithm of the gamma function. + + This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in + "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004. + We use the implementation listed on p. 116 which achieves an accuracy of 16 floating point digits. Although 16 digit accuracy + should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh). + Our unit tests suggest that the accuracy of the Gamma function is correct up to 14 floating point digits. + + + + + Computes the Gamma function. + + The argument of the gamma function. + The logarithm of the gamma function. + + + This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in + "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004. + We use the implementation listed on p. 116 which should achieve an accuracy of 16 floating point digits. Although 16 digit accuracy + should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh). + + Our unit tests suggest that the accuracy of the Gamma function is correct up to 13 floating point digits. + + + + + Returns the upper incomplete regularized gamma function + Q(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The lower integral limit. + The upper incomplete regularized gamma function. + + + + Returns the upper incomplete gamma function + Gamma(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The lower integral limit. + The upper incomplete gamma function. + + + + Returns the lower incomplete gamma function + gamma(a,x) = int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The upper integral limit. + The lower incomplete gamma function. + + + + Returns the lower incomplete regularized gamma function + P(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The upper integral limit. + The lower incomplete gamma function. + + + + Computes the Digamma function which is mathematically defined as the derivative of the logarithm of the gamma function. + This implementation is based on + Jose Bernardo + Algorithm AS 103: + Psi ( Digamma ) Function, + Applied Statistics, + Volume 25, Number 3, 1976, pages 315-317. + Using the modifications as in Tom Minka's lightspeed toolbox. + + The argument of the digamma function. + The value of the DiGamma function at . + + + + Computes the inverse Digamma function: this is the inverse of the logarithm of the gamma function. This function will + only return solutions that are positive. + This implementation is based on the bisection method. + + The argument of the inverse digamma function. + The positive solution to the inverse DiGamma function at . + + + + Numerically stable exponential minus one, i.e. x -> exp(x)-1 + + A number specifying a power. + Returns exp(power)-1. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Statistics operating on arrays assumed to be unsorted. + WARNING: Methods with the Inplace-suffix may modify the data array by reordering its entries. + + + + + + + + Returns the smallest value from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Returns the smallest value from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the arithmetic sample mean from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population variance from the provided samples as unsorted array. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Evaluates the population variance from the full population provided as unsorted array. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population standard deviation from the provided samples as unsorted array. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Evaluates the population standard deviation from the full population provided as unsorted array. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population covariance from the provided two sample arrays. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + First sample array. + Second sample array. + + + + Evaluates the population covariance from the full population provided as two arrays. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + First population array. + Second population array. + + + + Returns the order statistic (order 1..N) from the unsorted data array. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Estimates the median value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the p-Percentile value from the unsorted data array. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the first quartile value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the third quartile value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the inter-quartile range from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive). + + R-8, SciPy-(1/3,1/3): + Linear interpolation of the approximate medians for order statistics. + When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN. + + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile defintion can be specified + by 4 parameters a, b, c and d, consistent with Mathematica. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive) + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive) + Quantile definition, to choose what product/definition it should be consistent with + + + + Statistics operating on an IEnumerable in a single pass, without keeping the full data in memory. + Can be used in a streaming way, e.g. on large datasets not fitting into memory. + + + + + + + + Returns the smallest value from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Returns the largest value from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the arithmetic sample mean from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Evaluates the population variance from the full population provided as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Evaluates the population standard deviation from the full population provided as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population covariance from the provided two sample enumerable sequences, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + First sample stream. + Second sample stream. + + + + Evaluates the population covariance from the full population provided as two enumerable sequences, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + First population stream. + Second population stream. + + + + Statistics operating on an array already sorted ascendingly. + + + + + + + + Returns the smallest value from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + + + + Returns the largest value from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + + + + Returns the order statistic (order 1..N) from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Estimates the median value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the p-Percentile value from the sorted data array (ascending). + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the first quartile value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the third quartile value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the inter-quartile range from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + + R-8, SciPy-(1/3,1/3): + Linear interpolation of the approximate medians for order statistics. + When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN. + + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile defintion can be specified + by 4 parameters a, b, c and d, consistent with Mathematica. + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + The Cauchy distribution is a symmetric continuous probability distribution. For details about this distribution, see + Wikipedia - Cauchy distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The interface for continuous univariate distributions. + + + + + The interface for univariate distributions. + + + + + Computes the cumulative distribution function (cdf) for this probability distribution. + + The location at which to compute the cumulative distribution function. + the cumulative distribution at location . + + + + Gets or sets the random number generator which is used to generate random samples from the distribution. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + The probability density of the distribution. + + The location at which to compute the density. + the density at . + + + + The log probability density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Draws a sequence of random samples from the distribution. + + a sequence of samples from the distribution. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by a double. + + + + + Gets the largest element in the domain of the distributions which can be represented by a double. + + + + + The scale of the Cauchy distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class with the location parameter set to 0 and the scale parameter set to 1 + + + + + Initializes a new instance of the class. + + + The location parameter for the distribution. + + + The scale parameter for the distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + Location parameter. + Scale parameter. Must be greater than 0. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + Location parameter. + Scale parameter. Must be greater than 0. + True when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Cauchy distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the location parameter of the distribution. + + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the Chi distribution. This distribution is + a continuous probability distribution. The distribution usually arises when a k-dimensional vector's orthogonal + components are independent and each follow a standard normal distribution. The length of the vector will + then have a chi distribution. + Wikipedia - Chi distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the degrees of freedom for the Chi distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the Chi distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Chi distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Chi distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + Degrees of Freedom + a random number from the distribution. + + + + Generates a sample from the Chi distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Chi distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + Degrees of Freedom + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + Degrees of Freedom + a sequence of samples from the distribution. + + + + Gets or sets the degrees of freedom of the Chi distribution. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the ChiSquare distribution. This distribution is + a sum of the squares of k independent standard normal random variables. + Wikipedia - ChiSquare distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the ChiSquare distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the ChiSquare distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the ChiSquare distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The degrees of freedom. + a random number from the distribution. + + + + Generates a sample from the ChiSquare distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the ChiSquare distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the ChiSquare distribution. + + The random number generator to use. + The degrees of freedom. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The degrees of freedom. + a sample from the distribution. + + + + Gets or sets the degrees of freedom of the ChiSquare distribution. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the Erlang distribution. This distribution is + is a continuous probability distribution with wide applicability primarily due to its + relation to the exponential and Gamma distributions. + Wikipedia - Erlang distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Erlang shape parameter. + + + + + Erlang inverse scale parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The shape of the Erlang distribution. + + + The inverse scale of the Erlang distribution. + + + + + Constructs a Erlang distribution from a shape and scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Erlang distribution. + The scale of the Erlang distribution. + a normal distribution. + + + + Constructs a Erlang distribution from a shape and inverse scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + a normal distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the Erlang distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the density. + the density at . + + + + Sampling implementation based on: + "A Simple Method for Generating Erlang Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + This method performs no parameter checks. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + A sample from a Erlang distributed random variable. + + + + Generates a sample from the Erlang distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Erlang distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Erlang distribution. + + + + + Gets or sets the scale of the Erlang distribution. + + + + + Gets or sets the inverse scale of the Erlang distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum value. + + + + + Gets the Maximum value. + + + + + The exponential distribution is a distribution over the real numbers parameterized by one non-negative parameter. + Wikipedia - exponential distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The lambda parameter of the Exponential distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The lambda parameter of the Exponential distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + Lambda parameter. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + Lambda parameter. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Exponential distribution. + + a sequence of samples from the distribution. + + + + Draws a random sample from the distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + A random number from this distribution. + + + + Generates a sequence of samples from the Exponential distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + a sequence of samples from the distribution. + + + + Gets or sets the lambda parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the FisherSnedecor distribution. For details about this distribution, see + Wikipedia - FisherSnedecor distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The first parameter - degree of freedom. + + + + + The second parameter - degree of freedom. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The first parameter - degree of freedom. + + + The second parameter - degree of freedom. + + + + + Sets the parameters of the distribution after checking their validity. + + The first parameter - degree of freedom. + The second parameter - degree of freedom. + + + + Checks whether the parameters of the distribution are valid. + + The first parameter - degree of freedom. + The second parameter - degree of freedom. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates one sample from the FisherSnedecor distribution without parameter checking. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a FisherSnedecor distributed random number. + + + + Generates a sample from the FisherSnedecor distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the FisherSnedecor distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a sequence of samples from the distribution. + + + + Gets or sets the first parameter - degree of freedom. + + + + + Gets or sets the second parameter - degree of freedom. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The inverse Gamma distribution is a distribution over the positive real numbers parameterized by + two positive parameters. + Wikipedia - InverseGamma distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Inverse Gamma shape parameter. + + + + + Inverse Gamma scale parameter scale. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Cauchy distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a sequence of samples from the distribution. + + + + Gets or sets the shape (alpha) parameter. + + + + + Gets or sets The scale (beta) parameter. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + Throws . + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Laplace distribution is a distribution over the real numbers parameterized by a mean and + scale parameter. The PDF is: + p(x) = \frac{1}{2 * scale} \exp{- |x - mean| / scale}. + Wikipedia - Laplace distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale of the Laplace distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class (location = 0, scale = 1). + + + + + Initializes a new instance of the class. + + + The location for the Laplace distribution. + + + The scale for the Laplace distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The location for the Laplace distribution. + The scale for the Laplace distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The location for the Laplace distribution. + The scale for the Laplace distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a random number from the distribution. + + + + Samples a Laplace distributed random variable. + + a sample from the distribution. + + + + Generates a sample from the Laplace distribution. + + a sample from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the location of the Laplace distribution. + + + + + Gets or sets the scale of the Laplace distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Pareto distribution is a power law probability distribution that coincides with social, + scientific, geophysical, actuarial, and many other types of observable phenomena. + For details about this distribution, see + Wikipedia - Pareto distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale parameter of the distribution. + + + + + The shape parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The scale parameter of the distribution. + + + The shape parameter of the distribution. + + + If or are negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The scale parameter of the distribution. + The shape parameter of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The scale parameter of the distribution. + The shape parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates a sample from the Pareto distribution without doing parameter checking. + + The random number generator to use. + The scale parameter. + The shape parameter. + a random number from the Pareto distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Pareto distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The scale parameter. + The shape parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The scale parameter. + The shape parameter. + a sequence of samples from the distribution. + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the shape parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Rayleigh distribution (pronounced /ˈreɪli/) is a continuous probability distribution. As an + example of how it arises, the wind speed will have a Rayleigh distribution if the components of + the two-dimensional wind velocity vector are uncorrelated and normally distributed with equal variance. + For details about this distribution, see + Wikipedia - Rayleigh distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The scale parameter of the distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The scale parameter of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The scale parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates a sample from the Rayleigh distribution without doing parameter checking. + + The random number generator to use. + The scale parameter. + a random number from the Rayleigh distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Rayleigh distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + A random variable is said to be stable (or to have a stable distribution) if it has + the property that a linear combination of two independent copies of the variable has + the same distribution, up to location and scale parameters. + For details about this distribution, see + Wikipedia - Stable distribution. + + The distribution will use the by default.` + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The stability parameter of the distribution. + + + + + The skewness parameter of the distribution. + + + + + The scale parameter of the distribution. + + + + + The location parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The stability parameter of the distribution. + + + The skewness parameter of the distribution. + + + The scale parameter of the distribution. + + + The location parameter of the distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + Throws a not supported exception if Alpha != 2, (Alpha != 1 and Beta !=0), or (Alpha != 0.5 and Beta != 1) + + + + Computes the cumulative distribution function of the Levy distribution. + + The scale parameter. + The location parameter. + The location at which to compute the cumulative density. + + the cumulative density at . + + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the density of the Levy distribution. + + The scale parameter of the distribution. + The location parameter of the distribution. + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Stable distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a sequence of samples from the distribution. + + + + Gets or sets the stability parameter of the distribution. + + + + + Gets or sets The skewness parameter of the distribution. + + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the location parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets he entropy of the distribution. + + Always throws a not supported exception. + + + + Gets the skewness of the distribution. + + Throws a not supported exception of Alpha != 2. + + + + Gets the mode of the distribution. + + Throws a not supported exception if Beta != 0. + + + + Gets the median of the distribution. + + Throws a not supported exception if Beta != 0. + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Conway-Maxwell-Poisson distribution is a generalization of the Poisson, Geometric and Bernoulli + distributions. It is parameterized by two real numbers "lambda" and "nu". For + + nu = 0 the distribution reverts to a Geometric distribution + nu = 1 the distribution reverts to the Poisson distribution + nu -> infinity the distribution converges to a Bernoulli distribution + + This implementation will cache the value of the normalization constant. + Wikipedia - ConwayMaxwellPoisson distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The interface for discrete univariate distributions. + + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Draws a sequence of random samples from the distribution. + + a sequence of samples from the distribution. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Since many properties of the distribution can only be computed approximately, the tolerance + level specifies how much error we accept. + + + + + The mean of the distribution. + + + + + The variance of the distribution. + + + + + Caches the value of the normalization constant. + + + + + The lambda parameter. + + + + + The nu parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The lambda parameter. + + + The nu parameter. + + + + + Sets the parameters of the distribution after checking their validity. + + The lambda parameter. + The nu parameter. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The lambda parameter. + The nu parameter. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the ConwayMaxwellPoisson distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the probability of a specific value. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes the log probability of a specific value. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Computes an approximate normalization constant for the CMP distribution. + + The lambda parameter for the CMP distribution. + The nu parameter for the CMP distribution. + + an approximate normalization constant for the CMP distribution. + + + + + Returns one trials from the distribution. + + The random number generator to use. + The lambda parameter + The nu parameter. + The z parameter. + + One sample from the distribution implied by , , and . + + + + + Samples a Conway-Maxwell-Poisson distributed random variable. + + a sample from the distribution. + + + + Samples a sequence of a Conway-Maxwell-Poisson distributed random variables. + + + a sequence of samples from a Conway-Maxwell-Poisson distribution. + + + + + Samples a random variable. + + The random number generator to use. + The lambda parameter + The nu parameter. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The lambda parameter + The nu parameter. + + + + Gets or sets the lambda parameter. + + The value of the lambda parameter. + + + + Gets or sets the Nu parameter. + + The value of the Nu parameter. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the normalization constant of the Conway-Maxwell-Poisson distribution. + + + + + The Geometric distribution is a distribution over positive integers parameterized by one positive real number. + This implementation of the Geometric distribution will never generate 0's. + Wikipedia - geometric distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The geometric distribution parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Geometric class. + + The probability of generating one. + If the Geometric parameter is not in the range [0,1]. + + + + Sets the parameters of the distribution after checking their validity. + + The probability of generating a one. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The probability of generating a one. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Returns one sample from the distribution. + + The random number generator to use. + The p parameter + + One sample from the distribution implied by . + + + + + Samples a Geometric distributed random variable. + + A sample from the Geometric distribution. + + + + Samples an array of Geometric distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The p parameter + + + + Samples a sequence of this random variable. + + The random number generator to use. + The p parameter + + + + Gets or sets the probability of generating a one. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + Throws a not supported exception. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + This class implements functionality for the Hypergeometric distribution. This distribution is + a discrete probability distribution that describes the number of successes in a sequence + of n draws from a finite population without replacement, just as the binomial distribution + describes the number of successes for draws with replacement + Wikipedia - Hypergeometric distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The size of the population. + + + + + The m parameter of the distribution. + + + + + The n parameter (number to draw) of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Hypergeometric class. + + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates a sample from the Hypergeometric distribution without doing parameter checking. + + The random number generator to use. + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + a random number from the Hypergeometric distribution. + + + + Samples a Hypergeometric distributed random variable. + + The number of successes in n trials. + + + + Samples an array of Hypergeometric distributed random variables. + + a sequence of successes in n trials. + + + + Samples a random variable. + + The random number generator to use. + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Gets or sets the population size. + + + + + Gets or sets the n parameter of the distribution. + + + + + Gets or sets the m parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The negative binomial is a distribution over the natural numbers with two parameters r,p. For the special + case that r is an integer one can interpret the distribution as the number of tails before the r'th head + when the probability of head is p. + Wikipedia - NegativeBinomial distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The r parameter of the distribution. + + + + + The p parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + The number of trials. + The probability of a trial resulting in success. + + + + Sets the parameters of the distribution after checking their validity. + + The number of trials. + The probability of a trial resulting in success. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The number of trials. + The probability of a trial resulting in success. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the NegativeBinomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Samples a negative binomial distributed random variable. + + The random number generator to use. + The r parameter. + The p parameter. + a sample from the distribution. + + + + Samples a NegativeBinomial distributed random variable. + + a sample from the distribution. + + + + Samples an array of NegativeBinomial distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The r parameter. + The p parameter. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The r parameter. + The p parameter. + + + + Gets or sets the number of trials. + + + + + Gets or sets the probability of success. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Pseudo-random generation of poisson distributed deviates. + + + Distribution is described at Wikipedia - Poisson distribution. + Knuth's method is used to generate Poisson distributed random variables. + f(x) = exp(-λ)*λ^x/x!; + + + + + The Poisson distribution parameter λ. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + The Poisson distribution parameter λ. + If is equal or less then 0.0. + + + + Sets the parameters of the distribution after checking their validity. + + The mean (λ) of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The mean (λ) of the distribution. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the Poisson distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates one sample from the Poisson distribution. + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + + + + Generates one sample from the Poisson distribution by Knuth's method. + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + + + + Generates one sample from the Poisson distribution by "Rejection method PA". + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + "Rejection method PA" from "The Computer Generation of Poisson Random Variables" by A. C. Atkinson, + Journal of the Royal Statistical Society Series C (Applied Statistics) Vol. 28, No. 1. (1979) + The article is on pages 29-35. The algorithm given here is on page 32. + + + + Samples a Poisson distributed random variable. + + A sample from the Poisson distribution. + + + + Samples an array of Poisson distributed random variables. + + a sequence of successes in N trials. + + + + Samples a Poisson distributed random variable. + + The random number generator to use. + The Poisson distribution parameter λ. + A sample from the Poisson distribution. + + + + Samples a sequence of Poisson distributed random variables. + + The random number generator to use. + The Poisson distribution parameter λ. + a sequence of samples from the distribution. + + + + Gets or sets the Poisson distribution parameter λ. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + Approximation, see Wikipedia Poisson distribution + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + Approximation, see Wikipedia Poisson distribution + + + + Zipf's law, an empirical law formulated using mathematical statistics, refers to the fact + that many types of data studied in the physical and social sciences can be approximated with + a Zipfian distribution, one of a family of related discrete power law probability distributions. + For details about this distribution, see + Wikipedia - Zipf distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The s parameter of the distribution. + + + + + The n parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The s parameter of the distribution. + + + The n parameter of the distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The s parameter of the distribution. + The n parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The s parameter of the distribution. + The n parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The integer location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates a sample from the Zipf distribution without doing parameter checking. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + a random number from the Zipf distribution. + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Samples an array of zipf distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + + + + Gets or sets the s parameter of the distribution. + + + + + Gets or sets the n parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + This class implements functionality for the inverse Wishart distribution. This distribution is + parameterized by the degrees of freedom nu and the scale matrix S. The inverse Wishart distribution + is the conjugate prior for the covariance matrix of a multivariate normal distribution. + Wikipedia - Inverse-Wishart distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The degrees of freedom for the inverse Wishart distribution. + + + + + The scale matrix for the inverse Wishart distribution. + + + + + Caches the Cholesky factorization of the scale matrix. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the inverse Wishart distribution. + + + The scale matrix for the inverse Wishart distribution. + + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + true when the parameters are valid, false otherwise. + + + + Evaluates the probability density function for the inverse Wishart distribution. + + The matrix at which to evaluate the density at. + If the argument does not have the same dimensions as the scale matrix. + the density at . + + + + Samples an inverse Wishart distributed random variable by sampling + a Wishart random variable and inverting the matrix. + + a sample from the distribution. + + + + Samples an inverse Wishart distributed random variable by sampling + a Wishart random variable and inverting the matrix. + + The random number generator to use. + The degrees of freedom. + The scale matrix. + a sample from the distribution. + + + + Gets or sets the degrees of freedom for the inverse Wishart distribution. + + + + + Gets or sets the scale matrix for the inverse Wishart distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean. + + The mean of the distribution. + + + + Gets the mode of the distribution. + + The mode of the distribution. + A. O'Hagan, and J. J. Forster (2004). Kendall's Advanced Theory of Statistics: Bayesian Inference. 2B (2 ed.). Arnold. ISBN 0-340-80752-0. + + + + Gets the variance of the distribution. + + The variance of the distribution. + Kanti V. Mardia, J. T. Kent and J. M. Bibby (1979). Multivariate Analysis. + + + + This class implements functionality for matrix valued normal distributions. The distribution + is parameterized by a mean matrix (M), a covariance matrix for the rows (V) and a covariance matrix + for the columns (K). If the dimension of M is d-by-m then V is d-by-d and K is m-by-m. + Wikipedia - MatrixNormal distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The mean of the matrix normal distribution. + + + + + The covariance matrix for the rows. + + + + + The covariance matrix for the columns. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The mean of the matrix normal. + + + The covariance matrix for the rows. + + + The covariance matrix for the columns. + + + If the dimensions of the mean and two covariance matrices don't match. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Sets the parameters of the distribution after checking their validity. + + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + true when the parameters are valid, false otherwise. + + + + Evaluates the probability density function for the matrix normal distribution. + + The matrix at which to evaluate the density at. + the density at + If the argument does not have the correct dimensions. + + + + Samples a matrix normal distributed random variable. + + A random number from this distribution. + + + + Samples a matrix normal distributed random variable. + + The random number generator to use. + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + If the dimensions of the mean and two covariance matrices don't match. + a sequence of samples from the distribution. + + + + Samples a vector normal distributed random variable. + + The random number generator to use. + The mean of the vector normal distribution. + The covariance matrix of the vector normal distribution. + a sequence of samples from defined distribution. + + + + Samples a vector normal distributed random variable. + + The random number generator to use. + The mean of the vector normal distribution. + The Cholesky factorization of the covariance matrix. + a sequence of samples from defined distribution. + + + + Gets or sets the mean. (M) + + The mean of the distribution. + + + + Gets or sets the row covariance. (V) + + The row covariance. + + + + Gets or sets the column covariance. (K) + + The column covariance. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + This class implements functionality for the Wishart distribution. This distribution is + parameterized by the degrees of freedom nu and the scale matrix S. The Wishart distribution + is the conjugate prior for the precision (inverse covariance) matrix of the multivariate + normal distribution. + Wikipedia - Wishart distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The degrees of freedom for the Wishart distribution. + + + + + The scale matrix for the Wishart distribution. + + + + + Caches the Cholesky factorization of the scale matrix. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the Wishart distribution. + + + The scale matrix for the Wishart distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Evaluates the probability density function for the Wishart distribution. + + The matrix at which to evaluate the density at. + If the argument does not have the same dimensions as the scale matrix. + the density at . + + + + Samples a Wishart distributed random variable using the method + Algorithm AS 53: Wishart Variate Generator + W. B. Smith and R. R. Hocking + Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345 + + A random number from this distribution. + + + + Samples a Wishart distributed random variable using the method + Algorithm AS 53: Wishart Variate Generator + W. B. Smith and R. R. Hocking + Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345 + + The random number generator to use. + The degrees of freedom. + The scale matrix. + a sequence of samples from the distribution. + + + + Samples the distribution. + + The random number generator to use. + The nu parameter to use. + The S parameter to use. + The cholesky decomposition to use. + a random number from the distribution. + + + + Gets or sets the degrees of freedom for the Wishart distribution. + + + + + Gets or sets the scale matrix for the Wishart distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + The mean of the distribution. + + + + Gets the mode of the distribution. + + The mode of the distribution. + + + + Gets the variance of the distribution. + + The variance of the distribution. + + + + Retrieves the requested element without range checking. + + The index of the element. + The requested element. + Not range-checked. + + + + Sets the element without range checking. + + The index of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + True if the specified field can be set to any value. + False if the field is fixed. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Gets or sets the value at the given index, with range checking. + + + The index of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + True if all fields of this vector can be set to any value. + False if some fields are fixed. + + + + + Array that contains the indices of the non-zero values. + + + + + Array that contains the non-zero elements of the vector. + + + + + Gets the number of non-zero elements in the vector. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Calculates the amount with which to grow the storage array's if they need to be + increased in size. + + The amount grown. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + Not range-checked. + + + + Sets the element without range checking. + + The row of the element. + The column of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + True if the specified field can be set to any value. + False if the field is fixed, like an off-diagonal field on a diagonal matrix. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Gets or sets the value at the given row and column, with range checking. + + + The row of the element. + + + The column of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + True if all fields of this matrix can be set to any value. + False if some fields are fixed, like on a diagonal matrix. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + Supported data types are double, single, , and . + + + + Classes that solves a system of linear equations, AX = B. + + Supported data types are double, single, , and . + + + + Solves a system of linear equations, AX = B. + + The right hand side Matrix, B. + The left hand side Matrix, X. + + + + Solves a system of linear equations, AX = B. + + The right hand side Matrix, B. + The left hand side Matrix, X. + + + + Solves a system of linear equations, Ax = b + + The right hand side vector, b. + The left hand side Vector, x. + + + + Solves a system of linear equations, Ax = b. + + The right hand side vector, b. + The left hand side Matrix>, x. + + + + Internal method which routes the call to perform the Cholesky factorization to the appropriate class. + + The matrix to factor. + A cholesky factorization object. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets the lower triangular form of the Cholesky matrix + + + + + Gets the lower triangular form of the Cholesky matrix. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + Complex32 version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the singular value decomposition to the appropriate class. + + The matrix to factor. + An EVD object. + + + Returns the eigen values as a . + The eigen values. + + + Returns the right eigen vectors as a . + The eigen vectors. + + + Returns the block diagonal eigenvalue matrix . + The block diagonal eigenvalue matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets a value indicating whether matrix is symmetric or not + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Gets or sets the eigen values (λ) of matrix in ascending value. + + + + + Gets or sets eigenvectors. + + + + + Gets or sets the block diagonal eigenvalue matrix. + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + Supported data types are double, single, , and . + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is performed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the QR factorization to the appropriate class. + + The matrix to factor. + The type of QR factorization to perform. + A QR factorization object. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets orthogonal Q matrix + + + + + Gets or sets upper triangular factor R + + + + + The QR factorization method. + + + + + Gets orthogonal Q matrix + + + + + Gets the upper triangular factor R. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Internal method which routes the call to perform the QR factorization to the appropriate class. + + The matrix to factor. + A QR factorization object. + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + Supported data types are double, single, , and . + + + + Value of one for T. + + + + + Internal method which routes the call to perform the LU factorization to the appropriate class. + + The matrix to factor. + An LU factorization object. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + Gets or sets both the L and U factors in the same matrix. + + + + + Gets or sets the pivot indices of the LU factorization. + + + + + Gets the lower triangular factor. + + + + + Gets the upper triangular factor. + + + + + Gets the permutation applied to LU factorization. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the singular value decomposition to the appropriate class. + + The matrix to factor. + Compute the singular U and VT vectors or not. + An SVD object. + + + Returns the left singular vectors as a . + The left singular vectors. The matrix will be null, if computeVectors in the constructor is set to false. + + + Returns the right singular vectors as a . + The right singular vectors. The matrix will be null, if computeVectors in the constructor is set to false. + This is the transpose of the V matrix. + + + Returns the singular values as a diagonal . + The singular values as a diagonal . + + + Returns the singular values as a . + the singular values as a . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets a value indicating whether to compute U and VT matrices during SVD factorization or not + + + + + Gets or sets the singular values (Σ) of matrix in ascending value. + + + + + Gets or sets left singular vectors (U - m-by-m unitary matrix) + + + + + Gets or sets transpose right singular vectors (transpose of V, an n-by-n unitary matrix + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Complex32 version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + Complex version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + Complex version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a complex. + + The vector to scale. + The Complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The Complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The Complex value. + The result of the division. + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a Complex dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex. + + + A Complex dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a Complex dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double. + + + A Complex dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Conjugates vector and save result to + + Target vector + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + double version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is performed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + double version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + A setup functions to help simplify the generic code. + + + + + Sets the value of 1.0 for type T. + + The type to return the value of 1.0 of. + The value of 1.0 for type T. + + + + Sets the value of 0.0 for type T. + + The type to return the value of 0.0 of. + The value of 0.0 for type T. + + + + A vector using dense storage. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a complex. + + The vector to scale. + The Complex32 value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The Complex32 value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The Complex32 value. + The result of the division. + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a Complex32 dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex32. + + + A Complex32 dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a Complex32 dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double. + + + A Complex32 dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Conjugates vector and save result to + + Target vector + + + + Gets the vector's data. + + The vector's data. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Data array of matrix V (eigenvectors) + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of the eigenvectors + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Complex32 value z1 + Complex32 value z2 + Result multiplication of signum function and absolute value + + + + Interchanges two vectors and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and conjugating the first vector. + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + scalar cos value + scalar sin value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + The collection of iterative solver setups. Stored based on the + ratio between the relative speed and relative accuracy. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the IIterator that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vectors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current IIterator. Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a complex. + + The vector to scale. + The complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The complex value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a Complex32. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex32. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Data array of matrix V (eigenvectors) + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of the eigenvectors + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The type of QR factorization to perform. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Complex value z1 + Complex value z2 + Result multiplication of signum function and absolute value + + + + Interchanges two vectors and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and conjugating the first vector. + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + scalar cos value + scalar sin value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + The collection of iterative solver setups. Stored based on the + ratio between the relative speed and relative accuracy. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the IIterator that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vecrors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current IIterator. Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a complex. + + The vector to scale. + The complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The complex value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a Complex. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A vector using dense storage. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the vector's data. + + The vector's data. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + float version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + float version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a float dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a float dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real dense vector to float-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real dense vector to float-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Double value z1 + Double value z2 + Result multiplication of signum function and absolute value + + + + Swap column and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + Scalar "c" value + Scalar "s" value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + The collection of iterative solver setups. Stored based on the + ratio between the relative speed and relative accuracy. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vectors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a float sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a float sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real sparse vector to float-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real sparse vector to float-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The type of QR factorization to perform. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + The type of QR factorization go perform. + + + + + Compute the full QR factorization of a matrix. + + + + + Compute the thin QR factorixation of a matrix. + + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Double value z1 + Double value z2 + Result multiplication of signum function and absolute value + + + + Swap column and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + Scalar "c" value + Scalar "s" value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + It may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + The collection of iterative solver setups. Stored based on the + ratio between the relative speed and relative accuracy. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + + + + Loads the available objects from the assembly specified by the file location. + + The fully qualified path to the assembly. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vecrors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was canceled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Indicates that a calculation was cancelled by the user. + + + + + Defines the base interface for calculation status objects. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that a calculation has converged to the desired convergence levels. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation diverged. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that a calculation has failed for some reason. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the state of the calculation is indetermined, not started or stopped. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation is running and no results are yet known. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation has been stopped due to reaching the stopping + limits, but that convergence was not achieved. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Iteration stop criteria. + + + + + Monitor calculation failures in the iterative calculation. + + + + + Monitor the calculation for signs of divergence. + + + + + Guard the calculation against unlimited continuation + by monitoring user specified limits, e.g. the maximum number of iterations. + + + + + Monitor the calculation for convergence, usually + based on the residuals of the calculation. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + The array containing the row indices of the existing rows. Element "j" of the array gives the index of the + element in the array that is first non-zero element in a row "j" + + + + + An array containing the column indices of the non-zero values. Element "I" of the array + is the number of the column in matrix that contains the I-th value in the array. + + + + + Array that contains the non-zero elements of matrix. Values of the non-zero elements of matrix are mapped into the values + array using the row-major storage mapping described in a compressed sparse row (CSR) format. + + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + Not range-checked. + + + + Sets the element without range checking. + + The row of the element. + The column of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + Delete value from internal storage + + Index of value in nonZeroValues array + Row number of matrix + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks + + + + Find item Index in nonZeroValues array + + Matrix row index + Matrix column index + Item index + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks + + + + Calculates the amount with which to grow the storage array's if they need to be + increased in size. + + The amount grown. + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Class to represent a permutation for a subset of the natural numbers. + + + + + Entry _indices[i] represents the location to which i is permuted to. + + + + + Initializes a new instance of the Permutation class. + + An array which represents where each integer is permuted too: indices[i] represents that integer i + is permuted to location indices[i]. + + + + Computes the inverse of the permutation. + + The inverse of the permutation. + + + + Construct an array from a sequence of inversions. + + + From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be + encoded using the array [22244]. + + The set of inversions to construct the permutation from. + A permutation generated from a sequence of inversions. + + + + Construct a sequence of inversions from the permutation. + + + From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be + encoded using the array [22244]. + + A sequence of inversions. + + + + Checks whether the array represents a proper permutation. + + An array which represents where each integer is permuted too: indices[i] represents that integer i + is permuted to location indices[i]. + True if represents a proper permutation, false otherwise. + + + + Gets the number of elements this permutation is over. + + + + + Computes where permutes too. + + The index to permute from. + The index which is permuted to. + + + + Implements the Beta distribution. For details about this distribution, see + Wikipedia - Beta distribution. + + + There are a few special cases for the parameterization of the Beta distribution. When both + shape parameters are positive infinity, the Beta distribution degenerates to a point distribution + at 0.5. When one of the shape parameters is positive infinity, the distribution degenerates to a point + distribution at the positive infinity. When both shape parameters are 0.0, the Beta distribution + degenerates to a Bernoulli distribution with parameter 0.5. When one shape parameter is 0.0, the + distribution degenerates to a point distribution at the non-zero shape parameter. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Beta shape parameter a. + + + + + Beta shape parameter b. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Beta class. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + If any of the Beta parameters are negative. + + + + A string representation of the distribution. + + A string representation of the Beta distribution. + + + + Checks whether the parameters of the distribution are valid. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + When the parameters don't pass the function. + + + + Computes the density of the Beta distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Beta distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Beta distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Samples Beta distributed random variables by sampling two Gamma variables and normalizing. + + The random number generator to use. + The A shape parameter. + The B shape parameter. + a random number from the Beta distribution. + + + + Generates a sample from the Beta distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Beta distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + a sequence of samples from the distribution. + + + + Gets or sets the A shape parameter of the Beta distribution. + + + + + Gets or sets the B shape parameter of the Beta distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Beta distribution. + + + + + Gets the variance of the Beta distribution. + + + + + Gets the standard deviation of the Beta distribution. + + + + + Gets the entropy of the Beta distribution. + + + + + Gets the skewness of the Beta distribution. + + + + + Gets the mode of the Beta distribution; when there are multiple answers, this routine will return 0.5. + + + + + Gets the median of the Beta distribution. + + + + + Gets the minimum of the Beta distribution. + + + + + Gets the maximum of the Beta distribution. + + + + + The continuous uniform distribution is a distribution over real numbers. For details about this distribution, see + Wikipedia - Continuous uniform distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's lower bound. + + + + + The distribution's upper bound. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the ContinuousUniform class with lower bound 0 and upper bound 1. + + + + + Initializes a new instance of the ContinuousUniform class with given lower and upper bounds. + + Lower bound. + Upper bound; must be at least as large as . + If the upper bound is smaller than the lower bound. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + Lower bound. + Upper bound; must be at least as large as . + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + Lower bound. + Upper bound; must be at least as large as . + When the parameters don't pass the function. + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates one sample from the ContinuousUniform distribution without parameter checking. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a uniformly distributed random number. + + + + Generates a sample from the ContinuousUniform distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the ContinuousUniform distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the ContinuousUniform distribution. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a uniformly distributed sample. + + + + Generates a sequence of samples from the ContinuousUniform distribution. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a sequence of uniformly distributed samples. + + + + Gets or sets the lower bound of the distribution. + + + + + Gets or sets the upper bound of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + + Gets the median of the distribution. + + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the univariate Log-Normal distribution. For details about this distribution, see + Wikipedia - Log-Normal distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the mu of the logarithm of the log-log-normal distribution. + + + + + Keeps track of the standard deviation of the logarithm of the log-log-normal distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + The distribution will be initialized with the default + random number generator. + + + The mu of the logarithm of the distribution. + + + The standard deviation of the logarithm of the distribution. + + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + When the parameters don't pass the function. + + + + Computes the density of the log-normal distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the log-normal distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the log-normal distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates a sample from the log-normal distribution using the Box-Muller algorithm. + + a sample from the distribution. + + + + Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm. + + a sequence of samples from the distribution. + + + + Generates a sample from the log-normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + a sequence of samples from the distribution. + + + + Gets or sets the mean of the logarithm of the log-normal. + + + + + Gets or sets the standard deviation of the logarithm of the log-normal. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mu of the log-normal distribution. + + + + + Gets the variance of the log-normal distribution. + + + + + Gets the standard deviation of the log-normal distribution. + + + + + Gets the entropy of the log-normal distribution. + + + + + Gets the skewness of the log-normal distribution. + + + + + Gets the mode of the log-normal distribution. + + + + + Gets the median of the log-normal distribution. + + + + + Gets the minimum of the log-normal distribution. + + + + + Gets the maximum of the log-normal distribution. + + + + + Implements the Weibull distribution. For details about this distribution, see + Wikipedia - Weibull distribution. + + + The Weibull distribution is parametrized by a shape and scale parameter. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Weibull shape parameter. + + + + + Weibull inverse scale parameter. + + + + + Reusable intermediate result 1 / ( ^ ) + + + By caching this parameter we can get slightly better numerics precision + in certain constellations without any additional computations. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Weibull class. + + The shape of the Weibull distribution. + The inverse scale of the Weibull distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Weibull distribution. + The scale of the Weibull distribution. + true when the parameters positive valid floating point numbers, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Weibull distribution. + The inverse scale of the Weibull distribution. + When the parameters don't pass the function. + + + + Computes the density of the Weibull distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Weibull distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Weibull distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates one sample from the Weibull distribution. This method doesn't perform + any parameter checks. + + The random number generator to use. + The shape of the Weibull distribution. + The scale of the Weibull distribution. + A sample from a Weibull distributed random variable. + + + + Generates a sample from the Weibull distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Weibull distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Weibull distribution. + + The random number generator to use. + The shape of the Weibull distribution from which to generate samples. + The scale of the Weibull distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the Weibull distribution. + + The random number generator to use. + The shape of the Weibull distribution from which to generate samples. + The scale of the Weibull distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Weibull distribution. + + + + + Gets or sets the scale of the Weibull distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Weibull distribution. + + + + + Gets the variance of the Weibull distribution. + + + + + Gets the standard deviation of the Weibull distribution. + + + + + Gets the entropy of the Weibull distribution. + + + + + Gets the skewness of the Weibull distribution. + + + + + Gets the mode of the Weibull distribution. + + + + + Gets the median of the Weibull distribution. + + + + + Gets the minimum of the Weibull distribution. + + + + + Gets the maximum of the Weibull distribution. + + + + + Implements the univariate Gamma distribution. For details about this distribution, see + Wikipedia - Gamma distribution. + + + The Gamma distribution is parametrized by a shape and inverse scale parameter. When we want + to specify a Gamma distribution which is a point distribution we set the shape parameter to be the + location of the point distribution and the inverse scale as positive infinity. The distribution + with shape and inverse scale both zero is undefined. + Random number generation for the Gamma distribution is based on the algorithm in: + "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Gamma shape parameter. + + + + + Gamma inverse scale parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Gamma class. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + + + + Constructs a Gamma distribution from a shape and scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Gamma distribution. + The scale of the Gamma distribution. + a normal distribution. + + + + Constructs a Gamma distribution from a shape and inverse scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a normal distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + When the parameters don't pass the function. + + + + Computes the density of the Gamma distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Gamma distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Gamma distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Sampling implementation based on: + "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + This method performs no parameter checks. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + A sample from a Gamma distributed random variable. + + + + Generates a sample from the Gamma distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Gamma distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Gamma distribution. + + The random number generator to use. + The shape of the Gamma distribution from which to generate samples. + The inverse scale of the Gamma distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the Gamma distribution. + + The random number generator to use. + The shape of the Gamma distribution from which to generate samples. + The inverse scale of the Gamma distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Gamma distribution. + + + + + Gets or sets the scale of the Gamma distribution. + + + + + Gets or sets the inverse scale of the Gamma distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Gamma distribution. + + + + + Gets the variance of the Gamma distribution. + + + + + Gets the standard deviation of the Gamma distribution. + + + + + Gets the entropy of the Gamma distribution. + + + + + Gets the skewness of the Gamma distribution. + + + + + Gets the mode of the Gamma distribution. + + + + + Gets the median of the Gamma distribution. + + + + + Gets the minimum of the Gamma distribution. + + + + + Gets the maximum of the Gamma distribution. + + + + + Implements the univariate Normal (or Gaussian) distribution. For details about this distribution, see + Wikipedia - Normal distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the mean of the normal distribution. + + + + + Keeps track of the standard deviation of the normal distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Normal class. This is a normal distribution with mean 0.0 + and standard deviation 1.0. The distribution will + be initialized with the default random number generator. + + + + + Initializes a new instance of the Normal class with a particular mean and standard deviation. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + + + + Constructs a normal distribution from a mean and standard deviation. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + a normal distribution. + + + + Constructs a normal distribution from a mean and variance. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The variance of the normal distribution. + a normal distribution. + + + + Constructs a normal distribution from a mean and precision. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The precision of the normal distribution. + a normal distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + When the parameters don't pass the function. + + + + Computes the density of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the density. + the density at . + + + + Computes the log density of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the density. + the log density at . + + + + Computes the density of the normal distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the normal distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the cumulative distribution function of the normal distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the inverse cumulative distribution function of the normal distribution. + + The location at which to compute the inverse cumulative density. + the inverse cumulative density at . + + + + Samples a pair of standard normal distributed random variables using the Box-Muller algorithm. + + The random number generator to use. + a pair of random numbers from the standard normal distribution. + + + + Samples the distribution. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a random number from the distribution. + + + + Generates a sample from the normal distribution using the Box-Muller algorithm. + + a sample from the distribution. + + + + Generates a sequence of samples from the normal distribution using the Box-Muller algorithm. + + a sequence of samples from the distribution. + + + + Generates a sample from the normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the precision of the normal distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets or sets the mean of the normal distribution. + + + + + Gets or sets the variance of the normal distribution. + + + + + Gets or sets the standard deviation of the normal distribution. + + + + + Gets the entropy of the normal distribution. + + + + + Gets the skewness of the normal distribution. + + + + + Gets the mode of the normal distribution. + + + + + Gets the median of the normal distribution. + + + + + Gets the minimum of the normal distribution. + + + + + Gets the maximum of the normal distribution. + + + + + The Bernoulli distribution is a distribution over bits. The parameter + p specifies the probability that a 1 is generated. + Wikipedia - Bernoulli distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The probability of generating a one. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Bernoulli class. + + The probability of generating one. + If the Bernoulli parameter is not in the range [0,1]. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The probability of generating a one. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The probability of generating a one. + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates one sample from the Bernoulli distribution. + + The random source to use. + The probability of generating a one. + A random sample from the Bernoulli distribution. + + + + Samples a Bernoulli distributed random variable. + + A sample from the Bernoulli distribution. + + + + Samples an array of Bernoulli distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a Bernoulli distributed random variable. + + The random number generator to use. + The probability of generating a 1. + A sample from the Bernoulli distribution. + + + + Samples a sequence of Bernoulli distributed random variables. + + The random number generator to use. + The probability of generating a 1. + a sequence of samples from the distribution. + + + + Gets or sets the probability of generating a one. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Implements the binomial distribution. For details about this distribution, see + Wikipedia - Binomial distribution. + + The distribution is parameterized by a probability (between 0.0 and 1.0). + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Stores the normalized binomial probability. + + + + + The number of trials. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Binomial class. + + The success probability of a trial. + The number of trials. + If is not in the interval [0.0,1.0]. + If is negative. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The success probability of a trial. + The number of trials. + false is not in the interval [0.0,1.0] or is negative, true otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The success probability of a trial. + The number of trials. + If is not in the interval [0.0,1.0]. + If is negative. + + + + Computes the cumulative distribution function of the Binomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates a sample from the Binomial distribution without doing parameter checking. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + The number of successful trials. + + + + Samples a Binomially distributed random variable. + + The number of successes in N trials. + + + + Samples an array of Binomially distributed random variables. + + a sequence of successes in N trials. + + + + Samples a binomially distributed random variable. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + The number of successes in trials. + + + + Samples a sequence of binomially distributed random variable. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + a sequence of successes in trials. + + + + Gets or sets the success probability. + + + + + Gets or sets the number of trials. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Implements the categorical distribution. For details about this distribution, see + Wikipedia - Categorical distribution. This + distribution is sometimes called the Discrete distribution. + + The distribution is parameterized by a vector of ratios: in other words, the parameter + does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized + to sum to 1 in floating point representation. + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Initializes a new instance of the Categorical class. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + If any of the probabilities are negative or do not sum to one. + + + + Initializes a new instance of the Categorical class from a . The distribution + will not be automatically updated when the histogram changes. The categorical distribution will have + one value for each bucket and a probability for that value proportional to the bucket count. + + The histogram from which to create the categorical variable. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic. + If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic. + If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true + + + + Sets the parameters of the distribution after checking their validity. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Binomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Computes the cumulative distribution function. This method performs no parameter checking. + If the probability mass was normalized, the resulting cumulative distribution is normalized as well (up to numerical errors). + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + An array representing the unnormalized cumulative distribution function. + + + + Returns one trials from the categorical distribution. + + The random number generator to use. + The (unnormalized) cumulative distribution of the probability distribution. + One sample from the categorical distribution implied by . + + + + Samples a Binomially distributed random variable. + + The number of successful trials. + + + + Samples an array of Bernoulli distributed random variables. + + a sequence of successful trial counts. + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of the cumulative distribution. Not assumed to be normalized. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of nonnegative ratios. Not assumed to be normalized. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + random integers between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of the cumulative distribution. Not assumed to be normalized. + random integers between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of nonnegative ratios. Not assumed to be normalized. + random integers between 0 and the size of the categorical (exclusive). + + + + Returns the inverse of the distribution function for the categorical distribution + specified by the given normalized CDF, for the given probability. + + An array corresponding to a CDF for a categorical distribution. Not assumed to be normalized. + A real number between 0 and 1. + An integer between 0 and the size of the categorical (exclusive), + that corresponds to the inverse CDF for the given probability. + + + + Gets or sets the normalized probability vector of the multinomial. + + Sometimes the normalized probability vector cannot be represented + exactly in a floating point representation. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + Throws a . + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets he mode of the distribution. + + Throws a . + + + + Gets the median of the distribution. + + + + + The discrete uniform distribution is a distribution over integers. The distribution + is parameterized by a lower and upper bound (both inclusive). + Wikipedia - Discrete uniform distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's lower bound. + + + + + The distribution's upper bound. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the DiscreteUniform class. + + Lower bound. + Upper bound; must be at least as large as . + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Checks whether the parameters of the distribution are valid. + + Lower bound. + Upper bound; must be at least as large as . + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + Lower bound. + Upper bound; must be at least as large as . + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes the probability of a specific value. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates one sample from the discrete uniform distribution. This method does not do any parameter checking. + + The random source to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + A random sample from the discrete uniform distribution. + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Samples an array of uniformly distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a uniformly distributed random variable. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + A sample from the discrete uniform distribution. + + + + Samples a sequence of uniformly distributed random variables. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a sequence of samples from the discrete uniform distribution. + + + + Gets or sets the lower bound of the probability distribution. + + + + + Gets or sets the upper bound of the probability distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution; since every element in the domain has the same probability this method returns the middle one. + + + + + Gets the median of the distribution. + + + + + Implements the multivariate Dirichlet distribution. For details about this distribution, see + Wikipedia - Dirichlet distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The Dirichlet distribution parameters. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Dirichlet class. The distribution will + be initialized with the default random number generator. + + An array with the Dirichlet parameters. + + + + Initializes a new instance of the class. + + random number generator. + + + The value of each parameter of the Dirichlet distribution. + + + The dimension of the Dirichlet distribution. + + + + + Checks whether the parameters of the distribution are valid: no + parameter can be less than zero and at least one parameter should be + larger than zero. + + The parameters of the Dirichlet distribution. + + true when the parameters are valid, false + otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The parameters of the Dirichlet distribution. + When the parameters don't pass the function. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the density of the distribution. + + The locations at which to compute the density. + the density at . + The Dirichlet distribution requires that the sum of the components of x equals 1. + You can also leave out the last component, and it will be computed from the others. + + + + Computes the log density of the distribution. + + The locations at which to compute the density. + the density at . + + + + Samples a Dirichlet distributed random vector. + + A sample from this distribution. + + + + Samples a Dirichlet distributed random vector. + + The random number generator to use. + The Dirichlet distribution parameter. + a sample from the distribution. + + + + Gets the dimension of the Dirichlet distribution. + + + + + Gets or sets the parameters of the Dirichlet distribution. + + + + + Gets the sum of the Dirichlet parameters. + + + + + Gets the mean of the Dirichlet distribution. + + + + + Gets the variance of the Dirichlet distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Implements the multinomial distribution. For details about this distribution, see + Wikipedia - Multinomial distribution. + + The distribution is parameterized by a vector of ratios: in other words, the parameter + does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized + to sum to 1 in floating point representation. + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Stores the normalized multinomial probabilities. + + + + + The number of trials. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Multinomial class. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + If any of the probabilities are negative or do not sum to one. + If is negative. + + + + Initializes a new instance of the Multinomial class from histogram . The distribution will + not be automatically updated when the histogram changes. + + Histogram instance + The number of trials. + If any of the probabilities are negative or do not sum to one. + If is negative. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + If any of the probabilities are negative returns false, + if the sum of parameters is 0.0, or if the number of trials is negative; otherwise true. + + + + Sets the parameters of the distribution after checking their validity. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + When the parameters don't pass the function. + + + + Computes values of the probability mass function. + + Non-negative integers x1, ..., xk + The probability mass at location . + When is null. + When length of is not equal to event probabilities count. + + + + Computes values of the log probability mass function. + + Non-negative integers x1, ..., xk + The log probability mass at location . + When is null. + When length of is not equal to event probabilities count. + + + + Samples one multinomial distributed random variable. + + the counts for each of the different possible values. + + + + Samples a sequence multinomially distributed random variables. + + a sequence of counts for each of the different possible values. + + + + Samples one multinomial distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + the counts for each of the different possible values. + + + + Samples a multinomially distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of variables needed. + a sequence of counts for each of the different possible values. + + + + Gets or sets the proportion of ratios. + + + + + Gets or sets the number of trials. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Fast (FHT) Implementation of the Discrete Hartley Transform (DHT). + + + Fast (FHT) Implementation of the Discrete Hartley Transform (DHT). + + + + + Naive generic DHT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Corresponding frequency-space vector. + + + + Naive forward DHT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Hartley Transform Convention Options. + Corresponding frequency-space vector. + + + + Naive inverse DHT, useful e.g. to verify faster algorithms. + + Frequency-space sample vector. + Hartley Transform Convention Options. + Corresponding time-space vector. + + + + Rescale FFT-the resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Rescale the iFFT-resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Hartley Transform Convention + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction. + + + + + Don't scale at all (neither on forward nor on inverse transformation). + + + + + Universal; Symmetric scaling. + + + + + Globalized String Handling Helpers + + + + + Tries to get a from the format provider, + returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Tries to get a from the format + provider, returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Tries to get a from the format provider, returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Globalized Parsing: Tokenize a node by splitting it into several nodes. + + Node that contains the trimmed string to be tokenized. + List of keywords to tokenize by. + keywords to skip looking for (because they've already been handled). + + + + Globalized Parsing: Parse a double number + + First token of the number. + Culture Info. + The parsed double number using the given culture information. + + + + + Globalized Parsing: Parse a float number + + First token of the number. + Culture Info. + The parsed float number using the given culture information. + + + + + Barycentric Polynomial Interpolation where the given sample points are equidistant. + + + This algorithm neither supports differentiation nor integration. + + + + + Interpolation within the range of a discrete set of known data points. + + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Internal Barycentric Interpolation + + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + Left bound of the sample point interval. + Right bound of the sample point interval. + Sample Values x(t) where t is equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + Equidistant Sample Points t = a+(b-a)*i/(n-1) + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initialize the interpolation method with the given sampls in the interval [leftBound,rightBound]. + + Left bound of the sample point interval. + Right bound of the sample point interval. + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Equidistant Sample Points t = a+(b-a)*i/(n-1) + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Evaluate the barycentric weights as used + internally by this interpolation algorithm. + + Count of Sample Values x(t). + Barycentric Weight Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + + + Extract the exponent sign to be used in forward transforms according to the + provided convention options. + + Fourier Transform Convention Options. + Fourier series exponent sign. + + + + Rescale FFT-the resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Rescale the iFFT-resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Generate the bluestein sequence for the provided problem size. + + Number of samples. + Bluestein sequence exp(I*Pi*k^2/N) + + + + Convolution with the bluestein sequence (Parallel Version). + + Sample Vector. + + + + Swap the real and imaginary parts of each sample. + + Sample Vector. + + + + Bluestein generic FFT for arbitrary sized sample vectors. + + Time-space sample vector. + Fourier series exponent sign. + + + + Bluestein forward FFT for arbitrary sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Bluestein inverse FFT for arbitrary sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Naive generic DFT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Fourier series exponent sign. + Corresponding frequency-space vector. + + + + Naive forward DFT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Fourier Transform Convention Options. + Corresponding frequency-space vector. + + + + Naive inverse DFT, useful e.g. to verify faster algorithms. + + Frequency-space sample vector. + Fourier Transform Convention Options. + Corresponding time-space vector. + + + + Radix-2 Reorder Helper Method + + Sample type + Sample vector + + + + Radix-2 Step Helper Method + + Sample vector. + Fourier series exponent sign. + Level Group Size. + Index inside of the level. + + + + Radix-2 generic FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier series exponent sign. + + + + + Radix-2 generic FFT for power-of-two sample vectors (Parallel Version). + + Sample vector, where the FFT is evaluated in place. + Fourier series exponent sign. + + + + + Radix-2 forward FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + + Radix-2 inverse FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + + Integral Transforms (including FFT). + + + + + Shared internal DET algorithm. + + + + + Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + + + + Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + + + + Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Fourier Transform Convention + + + + + Inverse integrand exponent (forward: positive sign; inverse: negative sign). + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction. + + + + + Don't scale at all (neither on forward nor on inverse transformation). + + + + + Universal; Symmetric scaling and common exponent (used in Maple). + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction (used in Matlab). [= AsymmetricScaling] + + + + + Inverse integrand exponent; No scaling at all (used in all Numerical Recipes based implementations). [= InverseExponent | NoScaling] + + + + + Analytic integration algorithm for smooth functions with no discontinuities + or derivative discontinuities and no poles inside the interval. + + + + + Maximum number of iterations, until the asked + maximum error is (likely to be) satisfied. + + + + + Precomputed abscissa vector per level. + + + + + Precomputed weight vector per level. + + + + + Abscissa vector per level provider. + + + + + Weight vector per level provider. + + + + + Approximate the integral by the double exponential transformation + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Abscissa vector per level provider. + + Level Enumerator. + + + + Weight vector per level provider. + + Level Enumerator. + + + + Compute the abscissa vector for a single level. + + The level to evaluate the abscissa vector for. + Abscissa Vector. + + + + Compute the weight vector for a single level. + + The level to evaluate the weight vector for. + Weight Vector. + + + + Approximation algorithm for definite integrals by Simpson's rule. + + + + + Direct 3-point approximation of the definite integral in the provided interval by Simpson's rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Composite N-point approximation of the definite integral in the provided interval by Simpson's rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Even number of composite subdivision partitions. + Approximation of the finite integral in the given interval. + + + + Approximation algorithm for definite integrals by the Trapezium rule of the Newton-Cotes family. + + + Wikipedia - Trapezium Rule + + + + + Direct 2-point approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Composite N-point approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Number of composite subdivision partitions. + Approximation of the finite integral in the given interval. + + + + Adaptive approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Adaptive approximation of the definite integral by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Abscissa vector per level provider. + Weight vector per level provider. + First Level Step + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Numeric Integration (Quadrature). + + + + + Shared internal DET algorithm. + + + + + Approximation of the definite integral of an analytic smooth function on a closed interval. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Approximation of the definite integral of an analytic smooth function on a closed interval. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Akima Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the AkimaSplineInterpolation class. + + + + + Initializes a new instance of the AkimaSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Evaluate the spline derivatives as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Derivative Vector + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Coefficient Vector + + + + Three-Point Differentiation Helper. + + Sample Points t. + Sample Values x(t). + Index of the point of the differentiation. + Index of the first sample. + Index of the second sample. + Index of the third sample. + The derivative approximation. + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Barycentric Interpolation Algorithm. + + + This algorithm neither supports differentiation nor integration. + + + + + Sample Points t. + + + + + Sample Values x(t). + + + + + Barycentric Weights w(t). + + + + + Initializes a new instance of the BarycentricInterpolation class. + + + + + Initializes a new instance of the BarycentricInterpolation class. + + Sample Points t (no sorting assumed) + Sample Values x(t) + Barycentric weights w(t) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Sample Points t + Sample Values x(t) + Barycentric weights w(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Rational Interpolation (with poles) using Roland Bulirsch and Josef Stoer's Algorithm. + + + + This algorithm supports neither differentiation nor integration. + + + + + + Sample Points t. + + + + + Spline Values x(t). + + + + + Initializes a new instance of the BulirschStoerRationalInterpolation class. + + + + + Initializes a new instance of the BulirschStoerRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initialize the interpolation method with the given sample pairs. + + Sample Points t + Sample Values x(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Cubic Spline Interpolation Algorithm with continuous first and second derivatives. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the CubicSplineInterpolation class. + + + + + Initializes a new instance of the CubicSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initializes a new instance of the CubicSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + + + + Evaluate the spline derivatives as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + Spline Derivative Vector + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + Spline Coefficient Vector + + + + Tridiagonal Solve Helper. + + The a-vector[n]. + The b-vector[n], will be modified by this function. + The c-vector[n]. + The d-vector[n], will be modified by this function. + The x-vector[n] + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Cubic Hermite Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the CubicHermiteSplineInterpolation class. + + + + + Initializes a new instance of the CubicHermiteSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + Spline Coefficient Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Barycentric Rational Interpolation without poles, using Mike Floater and Kai Hormann's Algorithm. + + + This algorithm neither supports differentiation nor integration. + + + + + Internal Barycentric Interpolation + + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + + + + Initialize the interpolation method with the given sample set. + + + The interpolation scheme order will be set to 3. + + Sample Points t (no sorting assumed) + Sample Values x(t) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + + + + Evaluate the barycentric weights as used + internally by this interpolation algorithm. + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + Barycentric Weight Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Linear Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the LinearSplineInterpolation class. + + + + + Initializes a new instance of the LinearSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Coefficient Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Lagrange Polynomial Interpolation using Neville's Algorithm. + + + + This algorithm supports differentiation, but doesn't support integration. + + + When working with equidistant or Chebyshev sample points it is + recommended to use the barycentric algorithms specialized for + these cases instead of this arbitrary Neville algorithm. + + + + + + Sample Points t. + + + + + Spline Values x(t). + + + + + Initializes a new instance of the NevillePolynomialInterpolation class. + + + + + Initializes a new instance of the NevillePolynomialInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initialize the interpolation method with the given sample pairs. + + Sample Points t + Sample Values x(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Third-Degree Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Sample Points t. + + + + + Spline Coefficients c(t). + + + + + Number of samples. + + + + + Initializes a new instance of the SplineInterpolation class. + + + + + Initializes a new instance of the SplineInterpolation class. + + Sample Points t (length: N), sorted ascending. + Spline Coefficients (length: 4*(N-1)). + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t (length: N), sorted ascending. + Spline Coefficients (length: 4*(N-1)). + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Find the index of the greatest sample point smaller than t. + + The value to look for. + The sample point index. + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Interpolation Factory. + + + + + Creates an interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a linear spline interpolation based on arbitrary points (sorted ascending). + + The sample points t, sorted ascending. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a floater hormann rational pole-free interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a burlish stoer rational interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Left and right boundary conditions. + + + + + Natural Boundary (Zero second derivative). + + + + + Parabolically Terminated boundary. + + + + + Fixed first derivative at the boundary. + + + + + Fixed second derivative at the boundary. + + + + + Number theory utility functions for integers. + + + Number theory utility functions for integers. + + + Number theory utility functions for integers. + + + + + Returns the greatest common divisor (gcd) of two big integers. + + First Integer: a. + Second Integer: b. + Greatest common divisor gcd(a,b) + + + + Returns the greatest common divisor (gcd) of a set of big integers. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Returns the greatest common divisor (gcd) of a set of big integers. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Computes the extended greatest common divisor, such that a*x + b*y = gcd(a,b). + + First Integer: a. + Second Integer: b. + Resulting x, such that a*x + b*y = gcd(a,b). + Resulting y, such that a*x + b*y = gcd(a,b) + Greatest common divisor gcd(a,b) + + + long x,y,d; + d = Fn.GreatestCommonDivisor(45,18,out x, out y); + -> d == 9 && x == 1 && y == -2 + + The gcd of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2. + + + + + Returns the least common multiple (lcm) of two big integers. + + First Integer: a. + Second Integer: b. + Least common multiple lcm(a,b) + + + + Returns the least common multiple (lcm) of a set of big integers. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Returns the least common multiple (lcm) of a set of big integers. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Find out whether the provided 32 bit integer is an even number. + + The number to very whether it's even. + True if and only if it is an even number. + + + + Find out whether the provided 64 bit integer is an even number. + + The number to very whether it's even. + True if and only if it is an even number. + + + + Find out whether the provided 32 bit integer is an odd number. + + The number to very whether it's odd. + True if and only if it is an odd number. + + + + Find out whether the provided 64 bit integer is an odd number. + + The number to very whether it's odd. + True if and only if it is an odd number. + + + + Find out whether the provided 32 bit integer is a perfect power of two. + + The number to very whether it's a power of two. + True if and only if it is a power of two. + + + + Find out whether the provided 64 bit integer is a perfect power of two. + + The number to very whether it's a power of two. + True if and only if it is a power of two. + + + + Find the closest perfect power of two that is larger or equal to the provided + 32 bit integer. + + The number of which to find the closest upper power of two. + A power of two. + + + + + Find the closest perfect power of two that is larger or equal to the provided + 64 bit integer. + + The number of which to find the closest upper power of two. + A power of two. + + + + + Raises 2 to the provided integer exponent (0 <= exponent < 31). + + The exponent to raise 2 up to. + 2 ^ exponent. + + + + + Raises 2 to the provided integer exponent (0 <= exponent < 63). + + The exponent to raise 2 up to. + 2 ^ exponent. + + + + + Find out whether the provided 32 bit integer is a perfect square, i.e. a square of an integer. + + The number to very whether it's a perfect square. + True if and only if it is a perfect square. + + + + Find out whether the provided 64 bit integer is a perfect square, i.e. a square of an integer. + + The number to very whether it's a perfect square. + True if and only if it is a perfect square. + + + + Returns the greatest common divisor (gcd) of two integers using Euclid's algorithm. + + First Integer: a. + Second Integer: b. + Greatest common divisor gcd(a,b) + + + + Returns the greatest common divisor (gcd) of a set of integers using Euclid's + algorithm. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Returns the greatest common divisor (gcd) of a set of integers using Euclid's algorithm. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Computes the extended greatest common divisor, such that a*x + b*y = gcd(a,b). + + First Integer: a. + Second Integer: b. + Resulting x, such that a*x + b*y = gcd(a,b). + Resulting y, such that a*x + b*y = gcd(a,b) + Greatest common divisor gcd(a,b) + + + long x,y,d; + d = Fn.GreatestCommonDivisor(45,18,out x, out y); + -> d == 9 && x == 1 && y == -2 + + The gcd of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2. + + + + + Returns the least common multiple (lcm) of two integers using Euclid's algorithm. + + First Integer: a. + Second Integer: b. + Least common multiple lcm(a,b) + + + + Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Utilities for working with floating point numbers. + + + + Useful links: + + + http://docs.sun.com/source/806-3568/ncg_goldberg.html#689 - What every computer scientist should know about floating-point arithmetic + + + http://en.wikipedia.org/wiki/Machine_epsilon - Gives the definition of machine epsilon + + + + + + + + The base number for binary values + + + + + The number of binary digits used to represent the binary number for a double precision floating + point value. i.e. there are this many digits used to represent the + actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5. + + + + + The number of binary digits used to represent the binary number for a single precision floating + point value. i.e. there are this many digits used to represent the + actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5. + + + + + The maximum relative precision of a double + + + + + The maximum relative precision of a single + + + + + The number of significant figures that a double-precision floating point has. + + + + + The number of significant figures that a single-precision floating point has. + + + + Value representing 10 * 2^(-52) + + + Value representing 10 * 2^(-52) + + + + Initializes static members of the Precision class. + + + + + Returns the magnitude of the number. + + The value. + The magnitude of the number. + + + + Returns the magnitude of the number. + + The value. + The magnitude of the number. + + + + Returns the number divided by it's magnitude, effectively returning a number between -10 and 10. + + The value. + The value of the number. + + + + Gets the equivalent long value for the given double value. + + The double value which should be turned into a long value. + + The resulting long value. + + + + + Returns a 'directional' long value. This is a long value which acts the same as a double, + e.g. a negative double value will return a negative double value starting at 0 and going + more negative as the double value gets more negative. + + The input double value. + A long value which is roughly the equivalent of the double value. + + + + Returns a 'directional' int value. This is a int value which acts the same as a float, + e.g. a negative float value will return a negative int value starting at 0 and going + more negative as the float value gets more negative. + + The input float value. + An int value which is roughly the equivalent of the double value. + + + + Increments a floating point number to the next bigger number representable by the data type. + + The value which needs to be incremented. + + The incrementation step length depends on the provided value. + Increment(double.MaxValue) will return positive infinity. + + The next larger floating point value. + + + + Increments a floating point number to the next bigger number representable by the data type. + + The value which needs to be incremented. + How many times the number should be incremented. + + The incrementation step length depends on the provided value. + Increment(double.MaxValue) will return positive infinity. + + The next larger floating point value. + + + + Decrements a floating point number to the next smaller number representable by the data type. + + The value which should be decremented. + + The decrementation step length depends on the provided value. + Decrement(double.MinValue) will return negative infinity. + + The next smaller floating point value. + + + + Decrements a floating point number to the next smaller number representable by the data type. + + The value which should be decremented. + How many times the number should be decremented. + + The decrementation step length depends on the provided value. + Decrement(double.MinValue) will return negative infinity. + + The next smaller floating point value. + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The maximum count of numbers between the zero and the number . + + Zero if || is fewer than numbers from zero, otherwise. + + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The maximum count of numbers between the zero and the number . + + Zero if || is fewer than numbers from zero, otherwise. + + + Thrown if is smaller than zero. + + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The absolute threshold for to consider it as zero. + Zero if || is smaller than , otherwise. + + Thrown if is smaller than zero. + + + + + Forces small numbers near zero to zero. + + The real number to coerce to zero, if it is almost zero. + Zero if || is smaller than 2^(-53) = 1.11e-16, otherwise. + + + + Determines the range of floating point numbers that will match the specified value with the given tolerance. + + The value. + The ulps difference. + The bottom range end. + The top range end. + + Thrown if is smaller than zero. + + + + + Returns the floating point number that will match the value with the tolerance on the maximum size (i.e. the result is + always bigger than the value) + + The value. + The ulps difference. + The maximum floating point number which is larger than the given . + + + + Returns the floating point number that will match the value with the tolerance on the minimum size (i.e. the result is + always smaller than the value) + + The value. + The ulps difference. + The minimum floating point number which is smaller than the given . + + + + Determines the range of ulps that will match the specified value with the given tolerance. + + The value. + The relative difference. + The number of ULPS between the value and the value - relativeDifference. + The number of ULPS between the value and the value + relativeDifference. + + Thrown if is smaller than zero. + + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + + + Evaluates the count of numbers between two double numbers + + The first parameter. + The second parameter. + The second number is included in the number, thus two equal numbers evaluate to zero and two neighbor numbers evaluate to one. Therefore, what is returned is actually the count of numbers between plus 1. + The number of floating point values between and . + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + + + Checks whether two real numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two real numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two Compex numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two Compex numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two structures with precision support are almost equal. + + The type of the structures. Must implement . + The first structure + The second structure + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Compares two complex and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both complex are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two complex and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both complex are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both doubles are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two lists of doubles and determines if they are equal within the + specified maximum error. + + The first value list. + The second value list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two lists of doubles and determines if they are equal within the + specified maximum error. + + The first value list. + The second value list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two structure with precision support and determines if they are equal + within the specified maximum relative error. + + + The type of the structures. Must implement . + + The first structure. + The second structure. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum relative error, otherwise. + + + + + Compares two lists of structures with precision support and determines if they + are equal within the specified maximum error. + + + The type of the structures. Must implement . + + The first structure list. + The second structure list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum error. + + The first value. + The second value. + + The difference of the two values (according to some norm). + + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum absolute error. + + The first value. + The second value. + + The difference of the two values (according to some norm). + + + The absolute accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum absolute error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum relative error. + + The first value. + The second value. + The difference of the two values (according to some norm). + + The relative accuracy required for being + almost equal. + + if both doubles are almost equal up to the specified + maximum relative error, otherwise. + + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers + are very close to zero an absolute difference is compared, otherwise the relative difference is compared. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + Thrown if is smaller than zero. + + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not. If the numbers + are very close to zero an absolute difference is compared, otherwise the relative difference is compared. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + Thrown if is smaller than zero. + + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both floats are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the + number of decimal places as an absolute measure. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not, using the + number of decimal places as an absolute measure. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both floats are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two doubles and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation. + + + + Determines the 'number' of floating point numbers between two values (i.e. the number of discrete steps + between the two numbers) and then checks if that is within the specified tolerance. So if a tolerance + of 1 is passed then the result will be true only if the two numbers have the same binary representation + OR if they are two adjacent numbers that only differ by one step. + + + The comparison method used is explained in http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm . The article + at http://www.extremeoptimization.com/resources/Articles/FPDotNetConceptsAndFormats.aspx explains how to transform the C code to + .NET enabled code without using pointers and unsafe code. + + + The first value. + The second value. + The maximum number of floating point values between the two values. Must be 1 or larger. + if both doubles are equal to each other within the specified tolerance; otherwise . + + Thrown if is smaller than one. + + + + + Compares two floats and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values between the two values. Must be 1 or larger. + if both floats are equal to each other within the specified tolerance; otherwise . + + Thrown if is smaller than one. + + + + + Compares two doubles and determines if the first value is larger than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is larger than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is larger than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is larger than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is smaller than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two floats and determines if the first value is smaller than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is smaller than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two floats and determines if the first value is smaller than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two doubles and determines which double is bigger. + + The first value. + The second value. + The maximum error in terms of Units in Last Place (ulps), i.e. the maximum number of decimals that may be different. Must be 1 or larger. + + + + Return value + Meaning + + + -1 + is smaller than by more than the tolerance. + + + 0 + is equal to within the tolerance. + + + 1 + is bigger than by more than the tolerance. + + + + + + + Compares two doubles and determines which double is bigger. + + The first value. + The second value. + The number of decimal places on which the values must be compared. Must be 1 or larger. + + + + Return value + Meaning + + + -1 + is smaller than by more than a magnitude equal to . + + + 0 + is equal to within a magnitude equal to . + + + 1 + is bigger than by more than a magnitude equal to . + + + + + + + Evaluates the minimum distance to the next distinguishable number near the argument value. + + The value used to determine the minimum distance. + + Relative Epsilon (positive double or NaN). + + Evaluates the negative epsilon. The more common positive epsilon is equal to two times this negative epsilon. + + + + + Evaluates the minimum distance to the next distinguishable number near the argument value. + + The value used to determine the minimum distance. + Relative Epsilon (positive double or NaN) + Evaluates the positive epsilon. See also + + + + + Converts a float valut to a bit array stored in an int. + + The value to convert. + The bit array. + + + + Gets the maximum relative precision of a double. + + The maximum relative precision of a double. + + + + Gets the maximum relative precision of a single. + + The maximum relative precision of a single. + + + + Gets the number of decimal places for floats. + + The number of decimal places for floats. + + + + Gets the number of decimal places for doubles. + + The number of decimal places for doubles. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The accuracy couldn't be reached with the specified number of iterations.. + + + + + Looks up a localized string similar to The array arguments must have the same length.. + + + + + Looks up a localized string similar to The given array is the wrong length. Should be {0}.. + + + + + Looks up a localized string similar to The argument must be between 0 and 1.. + + + + + Looks up a localized string similar to Value cannot be in the range -1 < x < 1.. + + + + + Looks up a localized string similar to Value must be even.. + + + + + Looks up a localized string similar to The histogram does not contains the value.. + + + + + Looks up a localized string similar to Value is expected to be between {0} and {1} (including {0} and {1}).. + + + + + Looks up a localized string similar to At least one item of {0} is a null reference (Nothing in Visual Basic).. + + + + + Looks up a localized string similar to Value must be greater than or equal to one.. + + + + + Looks up a localized string similar to han the given upper bound.. + + + + + Looks up a localized string similar to Matrix dimensions must agree.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: {0}.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: op1 is {0}, op2 is {1}.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: op1 is {0}, op2 is {1}, op3 is {2}.. + + + + + Looks up a localized string similar to The requested matrix does not exist.. + + + + + Looks up a localized string similar to The matrix indices must not be out of range of the given matrix.. + + + + + Looks up a localized string similar to Matrix must not be rank deficient.. + + + + + Looks up a localized string similar to Matrix must not be singular.. + + + + + Looks up a localized string similar to Matrix must be positive definite.. + + + + + Looks up a localized string similar to Matrix column dimensions must agree.. + + + + + Looks up a localized string similar to Matrix row dimensions must agree.. + + + + + Looks up a localized string similar to Matrix must have exactly one column.. + + + + + Looks up a localized string similar to Matrix must have exactly one column and row, thus have only one cell.. + + + + + Looks up a localized string similar to Matrix must have exactly one row.. + + + + + Looks up a localized string similar to Matrix must be square.. + + + + + Looks up a localized string similar to Matrix must be symmetric.. + + + + + Looks up a localized string similar to Matrix must be symmetric positive definite.. + + + + + Looks up a localized string similar to In the specified range, the minimum is greater than maximum.. + + + + + Looks up a localized string similar to Value must be positive.. + + + + + Looks up a localized string similar to Value must neither be infinite nor NaN.. + + + + + Looks up a localized string similar to Value must not be negative (zero is ok).. + + + + + Looks up a localized string similar to {0} is a null reference (Nothing in Visual Basic).. + + + + + Looks up a localized string similar to Value must be odd.. + + + + + Looks up a localized string similar to {0} must be greater than {1}.. + + + + + Looks up a localized string similar to {0} must be greater than or equal to {1}.. + + + + + Looks up a localized string similar to The chosen parameter set is invalid (probably some value is out of range).. + + + + + Looks up a localized string similar to The given expression does not represent a complex number.. + + + + + Looks up a localized string similar to Value must be positive (and not zero).. + + + + + Looks up a localized string similar to Size must be a Power of Two.. + + + + + Looks up a localized string similar to Size must be a Power of Two in every dimension.. + + + + + Looks up a localized string similar to The range between {0} and {1} must be less than or equal to {2}.. + + + + + Looks up a localized string similar to Arguments must be different objects.. + + + + + Looks up a localized string similar to Array must have exactly one dimension (and not be null).. + + + + + Looks up a localized string similar to Value is too large.. + + + + + Looks up a localized string similar to Value is too large for the current iteration limit.. + + + + + Looks up a localized string similar to Type mismatch.. + + + + + Looks up a localized string similar to Array length must be a multiple of {0}.. + + + + + Looks up a localized string similar to All vectors must have the same dimensionality.. + + + + + Looks up a localized string similar to The vector must have 3 dimensions.. + + + + + Looks up a localized string similar to The given array is too small. It must be at least {0} long.. + + + + + Looks up a localized string similar to Big endian files are not supported.. + + + + + Looks up a localized string similar to The supplied collection is empty.. + + + + + Looks up a localized string similar to Complex matrices are not supported.. + + + + + Looks up a localized string similar to An algorithm failed to converge.. + + + + + Looks up a localized string similar to This feature is not implemented yet (but is planned).. + + + + + Looks up a localized string similar to The given file doesn't exist.. + + + + + Looks up a localized string similar to Sample points should be sorted in strictly ascending order. + + + + + Looks up a localized string similar to All sample points should be unique.. + + + + + Looks up a localized string similar to Invalid parameterization for the distribution.. + + + + + Looks up a localized string similar to Invalid Left Boundary Condition.. + + + + + Looks up a localized string similar to The operation could not be performed because the accumulator is empty.. + + + + + Looks up a localized string similar to The operation could not be performed because the histogram is empty.. + + + + + Looks up a localized string similar to Not enough points in the distribution.. + + + + + Looks up a localized string similar to No Samples Provided. Preparation Required.. + + + + + Looks up a localized string similar to Invalid Right Boundary Condition.. + + + + + Looks up a localized string similar to ddd MMM dd HH:mm:ss yyyy. + + + + + Looks up a localized string similar to The number of columns of a matrix must be positive.. + + + + + Looks up a localized string similar to The number of rows of a matrix must be positive.. + + + + + Looks up a localized string similar to The number of rows or columns of a matrix must be positive.. + + + + + Looks up a localized string similar to Only 1 and 2 dimensional arrays are supported.. + + + + + Looks up a localized string similar to Data must contain at least {0} values.. + + + + + Looks up a localized string similar to Name cannot contain a space. name: {0}. + + + + + Looks up a localized string similar to {0} is not a supported type.. + + + + + Looks up a localized string similar to The two arguments can't be compared (maybe they are part of a partial ordering?). + + + + + Looks up a localized string similar to The integer array does not represent a valid permutation.. + + + + + Looks up a localized string similar to The sampler's proposal distribution is not upper bounding the target density.. + + + + + Looks up a localized string similar to The algorithm has failed, exceeded the number of iterations allowed or there is no root within the provided bounds.. + + + + + Looks up a localized string similar to The algorithm has failed, exceeded the number of iterations allowed or there is no root within the provided bounds. Consider to use RobustNewtonRaphson instead.. + + + + + Looks up a localized string similar to The lower and upper bounds must bracket a single root.. + + + + + Looks up a localized string similar to The algorithm ended without root in the range.. + + + + + Looks up a localized string similar to The number of rows must greater than or equal to the number of columns.. + + + + + Looks up a localized string similar to The singular vectors were not computed.. + + + + + Looks up a localized string similar to This special case is not supported yet (but is planned).. + + + + + Looks up a localized string similar to The given stop criterium already exist in the collection.. + + + + + Looks up a localized string similar to There is no stop criterium in the collection.. + + + + + Looks up a localized string similar to String parameter cannot be empty or null.. + + + + + Looks up a localized string similar to We only support sparse matrix with less than int.MaxValue elements.. + + + + + Looks up a localized string similar to The moment of the distribution is undefined.. + + + + + Looks up a localized string similar to A user defined provider has not been specified.. + + + + + Looks up a localized string similar to The given work array is too small. Check work[0] for the corret size.. + + + + + Abstract class for random number generators. This class introduces a layer between + and the Math.Net Numerics random number generators to provide thread safety. + + + + + The method that actually generates samples. + + + + + The object that will be locked for thread safety. + + + + + Initializes a new instance of the class using + the value of to set whether + the instance is thread safe or not. + + + + + Initializes a new instance of the class. + + if set to true , the class is thread safe. + Thread safe instances are two and half times slower than non-thread + safe classes. + + + + Returns an array of uniformly distributed random doubles in the interval [0.0,1.0]. + + The size of the array. + + An array of uniformly distributed random doubles in the interval [0.0,1.0]. + + if n is not greater than 0. + + + + Returns a nonnegative random number. + + + A 32-bit signed integer greater than or equal to zero and less than . + + + + + Returns a random number less then a specified maximum. + + The exclusive upper bound of the random number returned. + A 32-bit signed integer less than . + is negative. + + + + Returns a random number within a specified range. + + The inclusive lower bound of the random number returned. + The exclusive upper bound of the random number returned. must be greater than or equal to . + + A 32-bit signed integer greater than or equal to and less than ; that is, the range of return values includes but not . If equals , is returned. + + is greater than . + + + + Fills the elements of a specified array of bytes with random numbers. + + An array of bytes to contain random numbers. + is null. + + + + Returns a random number between 0.0 and 1.0. + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + Thread safe version of which returns a random number between 0.0 and 1.0. + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0 + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + A delegate type that represents a method that generates random numbers. + + Randomly distributed numbers. + + + + Multiplicative congruential generator using a modulus of 2^31-1 and a multiplier of 1132489760. + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Multiplicative congruential generator using a modulus of 2^59 and a multiplier of 13^13. + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Random number generator using Mersenne Twister 19937 algorithm. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + Uses the value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + A 32-bit combined multiple recursive generator with 2 components of order 3. + + Based off of P. L'Ecuyer, "Combined Multiple Recursive Random Number Generators," Operations Research, 44, 5 (1996), 816--822. + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Represents a Parallel Additive Lagged Fibonacci pseudo-random number generator. + + + The type bases upon the implementation in the + Boost Random Number Library. + It uses the modulus 232 and by default the "lags" 418 and 1279. Some popular pairs are presented on + Wikipedia - Lagged Fibonacci generator. + + + + + Default value for the ShortLag + + + + + Default value for the LongLag + + + + + The multiplier to compute a double-precision floating point number [0, 1) + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + The ShortLag value + TheLongLag value + + + + Stores an array of random numbers + + + + + Stores an index for the random number array element that will be accessed next. + + + + + Fills the array with new unsigned random numbers. + + + Generated random numbers are 32-bit unsigned integers greater than or equal to 0 + and less than or equal to . + + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Gets the short lag of the Lagged Fibonacci pseudo-random number generator. + + + + + Gets the long lag of the Lagged Fibonacci pseudo-random number generator. + + + + + A random number generator based on the class in the .NET library. + + + + + Construct a new random number generator with a random seed. + + Uses and uses the value of + to set whether the instance is thread safe. + + + + Construct a new random number generator with random seed. + + The to use. + Uses the value of to set whether the instance is thread safe. + + + + Construct a new random number generator with random seed. + + Uses + if set to true , the class is thread safe. + + + + Construct a new random number generator with random seed. + + The to use. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + This class implements extension methods for the System.Random class. The extension methods generate + pseudo-random distributed numbers for types other than double and int32. + + + + + Returns a nonnegative random number less than . + + + The random object to extend. + + + A 64-bit signed integer greater than or equal to 0, and less than ; that is, + the range of return values includes 0 but not . + + + + + + Returns a random number of the full Int32 range. + + + The random object to extend. + + + A 32-bit signed integer of the full range, including 0, negative numbers, + and . + + + + + + Returns a random number of the full Int64 range. + + + The random object to extend. + + + A 64-bit signed integer of the full range, including 0, negative numbers, + and . + + + + + + Returns a nonnegative decimal floating point random number less than 1.0. + + + The random object to extend. + + + A decimal floating point number greater than or equal to 0.0, and less than 1.0; that is, + the range of return values includes 0.0 but not 1.0. + + + + + Wichmann-Hill’s 1982 combined multiplicative congruential generator. + + See: Wichmann, B. A. & Hill, I. D. (1982), "Algorithm AS 183: + An efficient and portable pseudo-random number generator". Applied Statistics 31 (1982) 188-190 + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Wichmann-Hill’s 2006 combined multiplicative congruential generator. + + See: Wichmann, B. A. & Hill, I. D. (2006), "Generating good pseudo-random numbers". + Computational Statistics & Data Analysis 51:3 (2006) 1614-1622 + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Implements a multiply-with-carry Xorshift pseudo random number generator (RNG) specified in Marsaglia, George. (2003). Xorshift RNGs. + Xn = a * Xn−3 + c mod 2^32 + http://www.jstatsoft.org/v08/i14/paper + + + + + The default value for X1. + + + + + The default value for X2. + + + + + The default value for the multiplier. + + + + + The default value for the carry over. + + + + + The multiplier to compute a double-precision floating point number [0, 1) + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class using + the current time as the seed. + + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Note: must be less than . + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Seed or last but three unsigned random number. + + + + + Last but two unsigned random number. + + + + + Last but one unsigned random number. + + + + + The value of the carry over. + + + + + The multiplier. + + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Generic Function Sampling and Quantization Provider + + + Generic Function Sampling and Quantization Provider + + + Generic Function Sampling and Quantization Provider + + + + + Samples a function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a two-domain function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function at the roots of the Chebyshev polynomial of the first kind. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + Vector of the function sampled in [a,b] at (b+a)/2+(b-1)/2*cos(pi*(2i-1)/(2n)) + + + + + + Samples a function at the roots of the Chebyshev polynomial of the second kind. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + Vector of the function sampled in [a,b] at (b+a)/2+(b-1)/2*cos(pi*i/(n-1)) + + + + + + Samples a function equidistant within the provided interval. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant within the provided interval. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a periodic function equidistant within one period, but omits the last sample such that the sequence + can be concatenated together. + + The real-domain function to sample. + The real domain full period length. + The real domain offset where to start the sampling period. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a periodic function equidistant within one period, but omits the last sample such that the sequence + can be concatenated together. + + The real-domain function to sample. + The real domain full period length. + The real domain offset where to start the sampling period. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant continuously starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The value type of the function to sample. + The generated sample enumerator. + + + + + Samples a function equidistant with the provided start and step length to an integer-domain function + + The real-domain function to sample. + The real domain location where to start sampling. + The real domain step length between the equidistant samples. + The value type of the function to sample. + The generated samples integer-domain function. + + + + + Sorting algorithms for single, tuple and triple lists. + + + + + Sort a list of keys, in place using the quick sort algorithm. + + The type of elements stored in the list. + List to sort. + + + + Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm. + + The type of elements stored in the key list. + The type of elements stored in the item list. + List to sort. + List to permute the same way as the key list. + + + + Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm. + + The type of elements stored in the key list. + The type of elements stored in the first item list. + The type of elements stored in the second item list. + List to sort. + First list to permute the same way as the key list. + Second list to permute the same way as the key list. + + + + Sort a range of a list of keys, in place using the quick sort algorithm. + + The type of elements in the key list. + List to sort. + The zero-based starting index of the range to sort. + The length of the range to sort. + + + + Sort a list of keys, in place using the quick sort algorithm using the quick sort algorithm. + + The type of elements in the key list. + List to sort. + Comparison, defining the sort order. + + + + Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm. + + The type of elements in the key list. + The type of elements in the item list. + List to sort. + List to permute the same way as the key list. + Comparison, defining the sort order. + + + + Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm. + + The type of elements in the key list. + The type of elements in the first item list. + The type of elements in the second item list. + List to sort. + First list to permute the same way as the key list. + Second list to permute the same way as the key list. + Comparison, defining the sort order. + + + + Sort a range of a list of keys, in place using the quick sort algorithm. + + The type of element in the list. + List to sort. + The zero-based starting index of the range to sort. + The length of the range to sort. + Comparison, defining the sort order. + + + + Recursive implementation for an in place quick sort on a list. + + The type of the list on which the quick sort is performed. + The list which is sorted using quick sort. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Recursive implementation for an in place quick sort on a list while reordering one other list accordingly. + + The type of the list on which the quick sort is performed. + The type of the list which is automatically reordered accordingly. + The list which is sorted using quick sort. + The list which is automatically reordered accordingly. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Recursive implementation for an in place quick sort on one list while reordering two other lists accordingly. + + The type of the list on which the quick sort is performed. + The type of the first list which is automatically reordered accordingly. + The type of the second list which is automatically reordered accordingly. + The list which is sorted using quick sort. + The first list which is automatically reordered accordingly. + The second list which is automatically reordered accordingly. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Performs an in place swap of two elements in a list. + + The type of elements stored in the list. + The list in which the elements are stored. + The index of the first element of the swap. + The index of the second element of the swap. + + + + A class with correlation measures between two datasets. + + + + + Computes the Pearson product-moment correlation coefficient. + + Sample data A. + Sample data B. + The Pearson product-moment correlation coefficient. + + + + Computes the Spearman Ranked Correlation Coefficient. + + Sample data series A. + Sample data series B. + The Spearman Ranked Correlation Coefficient. + + + + Computes the basic statistics of data set. The class meets the + NIST standard of accuracy for mean, variance, and standard deviation + (the only statistics they provide exact values for) and exceeds them + in increased accuracy mode. + + + + + Initializes a new instance of the class. + + The sample data. + + + + Initializes a new instance of the class. + + The sample data. + + + + Initializes a new instance of the class. + + The sample data. + + If set to true, increased accuracy mode used. + Increased accuracy mode uses types for internal calculations. + + + Don't use increased accuracy for data sets containing large values (in absolute value). + This may cause the calculations to overflow. + + + + + Initializes a new instance of the class. + + The sample data. + + If set to true, increased accuracy mode used. + Increased accuracy mode uses types for internal calculations. + + + Don't use increased accuracy for data sets containing large values (in absolute value). + This may cause the calculations to overflow. + + + + + Computes descriptive statistics from a stream of data values. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of nullable data values. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of data values using high accuracy. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of nullable data values using high accuracy. + + A sequence of datapoints. + + + + Internal use. Method use for setting the statistics. + + For setting Mean. + For setting Variance. + For setting Skewness. + For setting Kurtosis. + For setting Minimum. + For setting Maximum. + For setting Count. + + + + Gets the size of the sample. + + The size of the sample. + + + + Gets the sample mean. + + The sample mean. + + + + Gets the unbiased population variance estimator (on a dataset of size N will use an N-1 normalizer). + + The sample variance. + + + + Gets the unbiased population standard deviation (on a dataset of size N will use an N-1 normalizer). + + The sample standard deviation. + + + + Gets the sample skewness. + + The sample skewness. + Returns zero if is less than three. + + + + Gets the sample median. + + The sample median. + + + + Gets the sample kurtosis. + + The sample kurtosis. + Returns zero if is less than four. + + + + Gets the maximum sample value. + + The maximum sample value. + + + + Gets the minimum sample value. + + The minimum sample value. + + + + A consists of a series of s, + each representing a region limited by a lower bound (exclusive) and an upper bound (inclusive). + + + + + Initializes a new instance of the Bucket class. + + + + + Initializes a new instance of the Bucket class. + + + + + Creates a copy of the Bucket with the lowerbound, upperbound and counts exactly equal. + + A cloned Bucket object. + + + + This method check whether a point is contained within this bucket. + + The point to check. + 0 if the point falls within the bucket boundaries; -1 if the point is + smaller than the bucket, +1 if the point is larger than the bucket. + + + + Comparison of two disjoint buckets. The buckets cannot be overlapping. + + + + + Checks whether two Buckets are equal; this method tolerates a difference in lowerbound, upperbound + and count given by . + + + + + Provides a hash code for this bucket. + + + + + Formats a human-readable string for this bucket. + + + + + + Lower Bound of the Bucket. + + + + + Upper Bound of the Bucket. + + + + + The number of datapoints in the bucket. + + + + + Width of the Bucket. + + + + + Default comparer. + + + + + This IComparer performs comparisons between a point and a bucket. + + + + + Compares a point and a bucket. The point will be encapsulated in a bucket with width 0. + + The first bucket to compare. + The second bucket to compare. + -1 when the point is less than this bucket, 0 when it is in this bucket and 1 otherwise. + + + + A class which computes histograms of data. + + + + + Contains all the Buckets of the Histogram. + + + + + Indicates whether the elements of buckets are currently sorted. + + + + + Initializes a new instance of the Histogram class. + + + + + Constructs a Histogram with a specific number of equally sized buckets. The upper and lower bound of the histogram + will be set to the smallest and largest datapoint. + + The datasequence to build a histogram on. + The number of buckets to use. + + + + Constructs a Histogram with a specific number of equally sized buckets. + + The datasequence to build a histogram on. + The number of buckets to use. + The histogram lower bound. + The histogram upper bound. + + + + Add one data point to the histogram. If the datapoint falls outside the range of the histogram, + the lowerbound or upperbound will automatically adapt. + + The datapoint which we want to add. + + + + Add a sequence of data point to the histogram. If the datapoint falls outside the range of the histogram, + the lowerbound or upperbound will automatically adapt. + + The sequence of datapoints which we want to add. + + + + Adds a Bucket to the Histogram. + + + + + Sort the buckets if needed. + + + + + Returns the Bucket that contains the value v. + + The point to search the bucket for. + A copy of the bucket containing point . + + + + Returns the index in the Histogram of the Bucket + that contains the value v. + + The point to search the bucket index for. + The index of the bucket containing the point. + + + + Prints the buckets contained in the . + + + + + Returns the lower bound of the histogram. + + + + + Returns the upper bound of the histogram. + + + + + Gets the n'th bucket. + + The index of the bucket to be returned. + A copy of the n'th bucket. + + + + Gets the number of buckets. + + + + + Gets the total number of datapoints in the histogram. + + + + + A hybrid Monte Carlo sampler for multivariate distributions. + + + + + The Hybrid (also called Hamiltonian) Monte Carlo produces samples from distribition P using a set + of Hamiltonian equations to guide the sampling process. It uses the negative of the log density as + a potential energy, and a randomly generated momentum to set up a Hamiltonian system, which is then used + to sample the distribution. This can result in a faster convergence than the random walk Metropolis sampler + (). + + The type of samples this sampler produces. + + + + The interface which every sampler must implement. + + The type of samples this sampler produces. + + + + The random number generator for this class. + + + + + Keeps track of the number of accepted samples. + + + + + Keeps track of the number of calls to the proposal sampler. + + + + + Initializes a new instance of the class. + + Thread safe instances are two and half times slower than non-thread + safe classes. + + + + Returns one sample. + + + + + Returns a number of samples. + + The number of samples we want. + An array of samples. + + + + Gets or sets the random number generator. + + When the random number generator is null. + + + + Gets the acceptance rate of the sampler. + + + + + Evaluates the energy function of the target distribution. + + + + + The current location of the sampler. + + + + + The number of burn iterations between two samples. + + + + + The size of each step in the Hamiltonian equation. + + + + + The number of iterations in the Hamiltonian equation. + + + + + The algorithm used for differentiation. + + + + + Constructs a new Hybrid Monte Carlo sampler. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + Random number generator used for sampling the momentum. + The method used for differentiation. + When the number of burnInterval iteration is negative. + When either x0, pdfLnP or diff is null. + + + + Returns a sample from the distribution P. + + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Method used to update the sample location. Used in the end of the loop. + + The old energy. + The old gradient/derivative of the energy. + The new sample. + The new gradient/derivative of the energy. + The new energy. + The difference between the old Hamiltonian and new Hamiltonian. Use to determine + if an update should take place. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Method for doing dot product. + + First vector/scalar in the product. + Second vector/scalar in the product. + + + + + Method for adding, multiply the second vector/scalar by factor and then + add it to the first vector/scalar. + + First vector/scalar. + Scalar factor multiplying by the second vector/scalar. + Second vector/scalar. + + + + Multiplying the second vector/scalar by factor and then subtract it from + the first vector/scalar. + + First vector/scalar. + Scalar factor to be multiplied to the second vector/scalar. + Second vector/scalar. + + + + Method for sampling a random momentum. + + Momentum to be randomized. + + + + The Hamiltonian equations that is used to produce the new sample. + + + + + Method to compute the Hamiltonian used in the method. + + The momentum. + The energy. + Hamiltonian=E+p.p/2 + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than or equal to zero. + Throws when value is negative. + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than to zero. + Throws when value is negative or zero. + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than zero. + Throws when value is negative or zero. + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Gets or sets the number of iterations in the Hamiltonian equation. + + When frogleap steps is negative or zero. + + + + Gets or sets the size of each step in the Hamiltonian equation. + + When step size is negative or zero. + + + + The delegate type that defines a derivative evaluated at a certain point. + + Function to be differentiated. + Value where the derivative is computed. + + + + + Number of parameters in the density function. + + + + + Distribution to sample momentum from. + + + + + Standard deviations used in the sampling of different components of the + momentum. + + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The burn interval will be set to 0. + The components of the momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the a random number generator provided by the user. + A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + Random number generator used for sampling the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviations + given by pSdv. This constructor will set the burn interval, the method used for + numerical differentiation and the random number generator. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + Random number generator used for sampling the momentum. + The method used for numerical differentiation. + When the number of burnInterval iteration is negative. + When the length of pSdv is not the same as x0. + + + + Initialize parameters. + + The current location of the sampler. + + + + Checking that the location and the momentum are of the same dimension and that each component is positive. + + The standard deviations used for sampling the momentum. + When the length of pSdv is not the same as Length or if any + component is negative. + When pSdv is null. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + + + + + + + + + + Samples the momentum from a normal distribution. + + The momentum to be randomized. + + + + The default method used for computing the gradient. Uses a simple three point estimation. + + Function which the gradient is to be evaluated. + The location where the gradient is to be evaluated. + The gradient of the function at the point x. + + + + Gets or sets the standard deviations used in the sampling of different components of the + momentum. + + When the length of pSdv is not the same as Length. + + + + Provides utilities to analysis the convergence of a set of samples from + a . + + + + + Computes the auto correlations of a series evaluated by a function f. + + The series for computing the auto correlation. + The lag in the series + The function used to evaluate the series. + The auto correlation. + Throws if lag is zero or if lag is + greater than or equal to the length of Series. + + + + Computes the effective size of the sample when evaluated by a function f. + + The samples. + The function use for evaluating the series. + The effective size when auto correlation is taken into account. + + + + A method which samples datapoints from a proposal distribution. The implementation of this sampler + is stateless: no variables are saved between two calls to Sample. This proposal is different from + in that it doesn't take any parameters; it samples random + variables from the whole domain. + + The type of the datapoints. + A sample from the proposal distribution. + + + + A method which samples datapoints from a proposal distribution given an initial sample. The implementation + of this sampler is stateless: no variables are saved between two calls to Sample. This proposal is different from + in that it samples locally around an initial point. In other words, it + makes a small local move rather than producing a global sample from the proposal. + + The type of the datapoints. + The initial sample. + A sample from the proposal distribution. + + + + A function which evaluates a density. + + The type of data the distribution is over. + The sample we want to evaluate the density for. + + + + A function which evaluates a log density. + + The type of data the distribution is over. + The sample we want to evaluate the log density for. + + + + A function which evaluates the log of a transition kernel probability. + + The type for the space over which this transition kernel is defined. + The new state in the transition. + The previous state in the transition. + The log probability of the transition. + + + + Metropolis-Hastings sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P. Metropolis-Hastings sampling doesn't require that the + proposal distribution Q is symmetric in comparison to . It does need to + be able to evaluate the proposal sampler's log density though. All densities are required to be in log space. + + The Metropolis-Hastings sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + The type of samples this sampler produces. + + + + Evaluates the log density function of the target distribution. + + + + + Evaluates the log transition probability for the proposal distribution. + + + + + A function which samples from a proposal distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + Constructs a new Metropolis-Hastings sampler using the default random + number generator. The burn interval will be set to 0. + + The initial sample. + The log density of the distribution we want to sample from. + The log transition probability for the proposal distribution. + A method that samples from the proposal distribution. + + + + Constructs a new Metropolis-Hastings sampler using the default random number generator. This + constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + The log transition probability for the proposal distribution. + A method that samples from the proposal distribution. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Metropolis sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P. Metropolis sampling requires that the proposal + distribution Q is symmetric. All densities are required to be in log space. + + The Metropolis sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + The type of samples this sampler produces. + + + + Evaluates the log density function of the sampling distribution. + + + + + A function which samples from a proposal distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + Constructs a new Metropolis sampler using the default random + number generator. The burnInterval interval will be set to 0. + + The initial sample. + The log density of the distribution we want to sample from. + A method that samples from the symmetric proposal distribution. + + + + Constructs a new Metropolis sampler using the default random number generator. + + The initial sample. + The log density of the distribution we want to sample from. + A method that samples from the symmetric proposal distribution. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Rejection sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P and Q. The density of P and Q don't need to + to be normalized, but we do need that for each x, P(x) < Q(x). + + The type of samples this sampler produces. + + + + Evaluates the density function of the sampling distribution. + + + + + Evaluates the density function of the proposal distribution. + + + + + A function which samples from a proposal distribution. + + + + + Constructs a new rejection sampler using the default random number generator. + + The density of the distribution we want to sample from. + The density of the proposal distribution. + A method that samples from the proposal distribution. + + + + Returns a sample from the distribution P. + + When the algorithms detects that the proposal + distribution doesn't upper bound the target distribution. + + + + A hybrid Monte Carlo sampler for univariate distributions. + + + + + Distribution to sample momentum from. + + + + + Standard deviations used in the sampling of the + momentum. + + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The burn interval will be set to 0. + The momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using a random + number generator provided by the user. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + Random number generator used to sample the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + given by pSdv using a random + number generator provided by the user. This constructor will set both the burn interval and the method used for + numerical differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + The method used for numerical differentiation. + Random number generator used for sampling the momentum. + When the number of burnInterval iteration is negative. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + + + + + + + + + + Samples the momentum from a normal distribution. + + The momentum to be randomized. + + + + The default method used for computing the derivative. Uses a simple three point estimation. + + Function for which the derivative is to be evaluated. + The location where the derivative is to be evaluated. + The derivative of the function at the point x. + + + + Gets or sets the standard deviation used in the sampling of the + momentum. + + When standard deviation is negative. + + + + Methods to calculate the percentiles. + + + + + Using the method recommened my NIST, + http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm + + + + + Using the nearest rank, http://en.wikipedia.org/wiki/Percentile#Nearest_Rank + + + + + Using the same method as Excel does, + http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm + + + + + Use linear interpolation between the two nearest ranks, + http://en.wikipedia.org/wiki/Percentile#Linear_Interpolation_Between_Closest_Ranks + + + + + Class to calculate percentiles. + + + + + Holds the data. + + + + + Initializes a new instance of the class. + + The data to calculate the percentiles of. + + + + Computes the percentile. + + The percentile, must be between 0.0 and 1.0 (inclusive). + the requested percentile. + + + + Computes the percentiles for the given list. + + The percentiles, must be between 0.0 and 1.0 (inclusive) + the values that correspond to the given percentiles. + + + + Gets or sets the method used to calculate the percentiles. + + The calculation method. + defaults to . + + + + Extension methods to return basic statistics on set of data. + + + + + Returns the minimum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + + The sample data. + The minimum value in the sample data. + + + + Returns the minimum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The sample data. + The minimum value in the sample data. + + + + Returns the maximum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + + The sample data. + The maximum value in the sample data. + + + + Returns the maximum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The sample data. + The maximum value in the sample data. + + + + Estimates the sample mean. + Returns NaN if data is empty or if any entry is NaN. + + The data to calculate the mean of. + The mean of the sample. + + + + Estimates the sample mean. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The data to calculate the mean of. + The mean of the sample. + + + + Estimates the unbiased population variance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population variance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + + + + Evaluates the population variance from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + + + + Evaluates the population variance from the provided full population. + On a dataset of size N will use an N normalize and would thus be biased if applied to a subsetr. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + + + + Estimates the unbiased population standard deviation from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population standard deviation from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + + + + Evaluates the population standard deviation from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + + + + Evaluates the population standard deviation from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + + + + Estimates the unbiased population covariance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population covariance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + A subset of samples, sampled from the full population. + + + + Evaluates the population covariance from the provided full populations. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + The full population data. + + + + Evaluates the population covariance from the provided full populations. + On a dataset of size N will use an N normalize and would thus be biased if applied to a subsetr. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + The full population data. + + + + Estimates the sample median from the provided samples (R8). + + The data sample sequence. + + + + Estimates the sample median from the provided samples (R8). + + The data sample sequence. + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile definition, to choose what product/definition it should be consistent with + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the first quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the first quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the third quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the third quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the inter-quartile range from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the inter-quartile range from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Returns the order statistic (order 1..N) from the provided samples. + + The data sample sequence. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Returns the order statistic (order 1..N) from the provided samples. + + The data sample sequence. + + + + Slice sampling produces samples from distribition P by uniformly sampling from under the pdf of P using + a technique described in "Slice Sampling", R. Neal, 2003. All densities are required to be in log space. + + The slice sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + + + + Evaluates the log density function of the target distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + The scale of the slice sampler. + + + + + Constructs a new Slice sampler using the default random + number generator. The burn interval will be set to 0. + + The initial sample. + The density of the distribution we want to sample from. + The scale factor of the slice sampler. + When the scale of the slice sampler is not positive. + + + + Constructs a new slice sampler using the default random number generator. It + will set the number of burnInterval iterations and run a burnInterval phase. + + The initial sample. + The density of the distribution we want to sample from. + The number of iterations in between returning samples. + The scale factor of the slice sampler. + When the number of burnInterval iteration is negative. + When the scale of the slice sampler is not positive. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Gets or sets the scale of the slice sampler. + + + + + Used to simplify parallel code, particularly between the .NET 4.0 and Silverlight Code. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration. + The argument is null. + At least one invocation of the body threw an exception. + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration range. + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration range. + + + + Executes a for loop in which iterations may run in parallel. + + The array to iterate over. + The body to be invoked for each iteration. + The argument is null. + At least one invocation of the body threw an exception. + + + + Executes each of the provided actions inside a discrete, asynchronous task. + + An array of actions to execute. + The actions array contains a null element. + At least one invocation of the actions threw an exception. + + + + Selects an item (such as Max or Min). + + Starting index of the loop. + Ending index of the loop + The function to select items over a subset. + The function to select the item of selection from the subsets. + The selected value. + + + + Selects an item (such as Max or Min). + + The array to iterate over. + The function to select items over a subset. + The function to select the item of selection from the subsets. + The selected value. + + + + Selects an item (such as Max or Min). + + Starting index of the loop. + Ending index of the loop + The function to select items over a subset. + The function to select the item of selection from the subsets. + Default result of the reduce function on an empty set. + The selected value. + + + + Selects an item (such as Max or Min). + + The array to iterate over. + The function to select items over a subset. + The function to select the item of selection from the subsets. + Default result of the reduce function on an empty set. + The selected value. + + + + Double-precision trigonometry toolkit. + + + + + Constant to convert a degree to grad. + + + + + Trigonometric Cosecant of an angle in radian. + + + The angle in radian. + + + Cosecant of an angle in radian. + + + + + Trigonometric Cosecant of a Complex number. + + + The complex value. + + + The cosecant of a complex number. + + + + + Trigonometric Cosine of an angle in radian. + + + The angle in radian. + + + The cosine of an angle in radian. + + + + + Trigonometric Cosine of a Complex number. + + + The complex value. + + + The cosine of a complex number. + + + + + Trigonometric Cotangent of an angle in radian. + + + The angle in radian. + + + The cotangent of an angle in radian. + + + + + Trigonometric Cotangent of a Complex number. + + + The complex value. + + + The cotangent of the complex number. + + + + + Converts a degree (360-periodic) angle to a grad (400-periodic) angle. + + + The degree to convert. + + + The converted grad angle. + + + + + Converts a degree (360-periodic) angle to a radian (2*Pi-periodic) angle. + + + The degree to convert. + + + The converted radian angle. + + + + + Converts a grad (400-periodic) angle to a degree (360-periodic) angle. + + + The grad to convert. + + + The converted degree. + + + + + Converts a grad (400-periodic) angle to a radian (2*Pi-periodic) angle. + + + The grad to convert. + + + The converted radian. + + + + + Trigonometric Hyperbolic Cosecant + + + The angle in radian. + + + The hyperbolic cosecant of the radian angle. + + + + + Trigonometric Hyperbolic Cosecant of a Complex number. + + + The complex value. + + + The hyperbolic cosecant of a complex number. + + + + + Trigonometric Hyperbolic Cosine + + + The angle in radian. + + + The hyperbolic Cosine of the radian angle. + + + + + Trigonometric Hyperbolic Cosine of a Complex number. + + + The complex value. + + + The hyperbolic cosine of a complex number. + + + + + Trigonometric Hyperbolic Cotangent + + + The angle in radian angle. + + + The hyperbolic cotangent of the radian angle. + + + + + Trigonometric Hyperbolic Cotangent of a Complex number. + + + The complex value. + + + The hyperbolic cotangent of a complex number. + + + + + Trigonometric Hyperbolic Secant + + + The angle in radian angle. + + + The hyperbolic secant of the radian angle. + + + + + Trigonometric Hyperbolic Secant of a Complex number. + + + The complex value. + + + The hyperbolic secant of a complex number. + + + + + Trigonometric Hyperbolic Sine + + + The angle in radian angle. + + + The hyperbolic sine of the radian angle. + + + + + Trigonometric Hyperbolic Sine of a Complex number. + + + The complex value. + + + The hyperbolic sine of a complex number. + + + + + Trigonometric Hyperbolic Tangent in radian + + + The angle in radian angle. + + + The hyperbolic tangent of the radian angle. + + + + + Trigonometric Hyperbolic Tangent of a Complex number. + + + The complex value. + + + The hyperbolic tangent of a complex number. + + + + + Trigonometric Arc Cosecant in radian + + + The angle in radian angle. + + + The inverse cosecant of the radian angle. + + + if -1 < < 1. + + + + + Trigonometric Arc Cosecant of this Complex number. + + + The complex value. + + + The arc cosecant of a complex number. + + + + + Trigonometric Arc Cosine in radian + + + The angle in radian angle. + + + The inverse cosine of the radian angle. + + + if 1 < or < -1. + + + + + Trigonometric Arc Cosine of this Complex number. + + + The complex value. + + + The arc cosine of a complex number. + + + + + Trigonometric Arc Cotangent in radian + + + The angle in radian angle. + + + The inverse cotangent of the radian angle. + + + + + Trigonometric Arc Cotangent of this Complex number. + + + The complex value. + + + The arc cotangent of a complex number. + + + + + Trigonometric Hyperbolic Arc Cosecant + + + The angle in radian angle. + + + The inverse hyperbolic cosecant of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cosecant of this Complex number. + + + The complex value. + + + The hyperbolic arc cosecant of a complex number. + + + + + Trigonometric Hyperbolic Area Cosine + + + The angle in radian angle. + + + The inverse hyperbolic cosine of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cosine of this Complex number. + + + The complex value. + + + The hyperbolic arc cosine of a complex number. + + + + + Trigonometric Hyperbolic Arc Cotangent + + + The angle in radian angle. + + + The inverse hyperbolic cotangent of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cotangent of this Complex number. + + + The complex value. + + + The hyperbolic arc cotangent of a complex number. + + + + + Trigonometric Hyperbolic Area Secant + + + The angle in radian angle. + + + The inverse hyperbolic secant of the radian angle. + + + + + Trigonometric Hyperbolic Arc Secant of this Complex number. + + + The complex value. + + + The hyperbolic arc secant of a complex number. + + + + + Trigonometric Hyperbolic Area Sine + + + The angle in radian angle. + + + The inverse hyperbolic sine of the radian angle. + + + + + Trigonometric Hyperbolic Arc Sine of this Complex number. + + + The complex value. + + + The hyperbolic arc sine of a complex number. + + + + + Trigonometric Hyperbolic Area Tangent + + + The angle in radian angle. + + + The inverse hyperbolic tangent of the radian angle. + + + + + Trigonometric Hyperbolic Arc Tangent of this Complex number. + + + The complex value. + + + The hyperbolic arc tangent of a complex number. + + + + + Trigonometric Arc Secant in radian + + + The angle in radian angle. + + + The inverse secant of the radian angle. + + + + + Trigonometric Arc Secant of this Complex number. + + + The complex value. + + + The arc secant of a complex number. + + + + + Trigonometric Arc Sine in radian + + + The angle in radian angle. + + + The inverse sine of the radian angle. + + + + + Trigonometric Arc Sine of this Complex number. + + + The complex value. + + + The arc sine of a complex number. + + + + + Trigonometric Arc Tangent in radian + + + The angle in radian angle. + + + The inverse tangent of the radian angle. + + + + + Trigonometric Arc Tangent of this Complex number. + + + The complex value. + + + The arc tangent of a complex number. + + + + + Converts a radian (2*Pi-periodic) angle to a degree (360-periodic) angle. + + + The radian to convert. + + + The converted degree. + + + + + Converts a radian (2*Pi-periodic) angle to a grad (400-periodic) angle. + + + The radian to convert. + + + The converted grad. + + + + + Trigonometric Secant of an angle in radian + + + The angle in radian. + + + The secant of the radian angle. + + + + + Trigonometric Secant of a Complex number. + + + The complex value. + + + The secant of the complex number. + + + + + Trigonometric Sine of an angle in radian + + + The angle in radian. + + + The sine of the radian angle. + + + + + Trigonometric Sine of a Complex number. + + + The complex value. + + + The sine of the complex number. + + + + + Trigonometric Tangent of an angle in radian + + + The angle in radian. + + + The tangent of the radian angle. + + + + + Trigonometric Tangent of a Complex number. + + + The complex value. + + + The tangent of the complex number. + + + + + Implements the univariate Student t-distribution. For details about this + distribution, see + + Wikipedia - Student's t-distribution. + + We use a slightly generalized version (compared to + Wikipedia) of the Student t-distribution. Namely, one which also + parameterizes the location and scale. See the book "Bayesian Data + Analysis" by Gelman et al. for more details. + The density of the Student t-distribution p(x|mu,scale,dof) = + Gamma((dof+1)/2) (1 + (x - mu)^2 / (scale * scale * dof))^(-(dof+1)/2) / + (Gamma(dof/2)*Sqrt(dof*pi*scale)). + The distribution will use the by + default. Users can get/set the random number generator by using the + property. + The statistics classes will check all the incoming parameters + whether they are in the allowed range. This might involve heavy + computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the location of the Student t-distribution. + + + + + Keeps track of the degrees of freedom for the Student t-distribution. + + + + + Keeps track of the scale for the Student t-distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the StudentT class. This is a Student t-distribution with location 0.0 + scale 1.0 and degrees of freedom 1. The distribution will + be initialized with the default random number generator. + + + + + Initializes a new instance of the StudentT class with a particular location, scale and degrees of + freedom. The distribution will + be initialized with the default random number generator. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + When the parameters don't pass the function. + + + + Computes the density of the Student t-distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Student t-distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Student t-distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Samples student-t distributed random variables. + + The algorithm is method 2 in section 5, chapter 9 + in L. Devroye's "Non-Uniform Random Variate Generation" + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the standard student-t distribution. + a random number from the standard student-t distribution. + + + + Generates a sample from the Student t-distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Student t-distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Student t-distribution. + + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the Student t-distribution using the Box-Muller algorithm. + + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + a sequence of samples from the distribution. + + + + Gets or sets the location of the Student t-distribution. + + + + + Gets or sets the scale of the Student t-distribution. + + + + + Gets or sets the degrees of freedom of the Student t-distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Student t-distribution. + + + + + Gets the variance of the Student t-distribution. + + + + + Gets the standard deviation of the Student t-distribution. + + + + + Gets the entropy of the Student t-distribution. + + + + + Gets the skewness of the Student t-distribution. + + + + + Gets the mode of the Student t-distribution. + + + + + Gets the median of the Student t-distribution. + + + + + Gets the minimum of the Student t-distribution. + + + + + Gets the maximum of the Student t-distribution. + + + + + This structure represents the type over which the distribution + is defined. + + + + + The mean value. + + + + + The precision value. + + + + + Initializes a new instance of the struct. + + + The mean of the pair. + + + The precision of the pair. + + + + + Gets or sets the mean of the pair. + + + + + Gets or sets the precision of the pair. + + + + + The distribution is the conjugate prior distribution for the + distribution. It specifies a prior over the mean and precision of the distribution. + It is parameterized by four numbers: the mean location, the mean scale, the precision shape and the + precision inverse scale. + The distribution NG(mu, tau | mloc,mscale,psscale,pinvscale) = Normal(mu | mloc, 1/(mscale*tau)) * Gamma(tau | psscale,pinvscale). + The following degenerate cases are special: when the precision is known, + the precision shape will encode the value of the precision while the precision inverse scale is positive + infinity. When the mean is known, the mean location will encode the value of the mean while the scale + will be positive infinity. A completely degenerate NormalGamma distribution with known mean and precision is possible as well. + Wikipedia - Normal-Gamma distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The location of the mean. + + + + + The scale of the mean. + + + + + The shape of the precision. + + + + + The inverse scale of the precision. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The location of the mean. + + + The scale of the mean. + + + The shape of the precision. + + + The inverse scale of the precision. + + + + + Checks whether the parameters of the distribution are valid. + + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + When the parameters don't pass the function. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Returns the marginal distribution for the mean of the NormalGamma distribution. + + the marginal distribution for the mean of the NormalGamma distribution. + + + + Returns the marginal distribution for the precision of the distribution. + + The marginal distribution for the precision of the distribution/ + + + + Evaluates the probability density function for a NormalGamma distribution. + + The mean/precision pair of the distribution + Density value + + + + Evaluates the probability density function for a NormalGamma distribution. + + The mean of the distribution + The precision of the distribution + Density value + + + + Evaluates the log probability density function for a NormalGamma distribution. + + The mean/precision pair of the distribution + The log of the density value + + + + Evaluates the log probability density function for a NormalGamma distribution. + + The mean of the distribution + The precision of the distribution + The log of the density value + + + + Generates a sample from the NormalGamma distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the NormalGamma distribution + + a sequence of samples from the distribution. + + + + Generates a sample from the NormalGamma distribution. + + The random number generator to use. + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + a sample from the distribution. + + + + Generates a sequence of samples from the NormalGamma distribution + + The random number generator to use. + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + a sequence of samples from the distribution. + + + + Gets or sets the location of the mean. + + + + + Gets or sets the scale of the mean. + + + + + Gets or sets the shape of the precision. + + + + + Gets or sets the inverse scale of the precision. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + The mean of the distribution. + + + + Gets the variance of the distribution. + + The mean of the distribution. + +
+
diff --git a/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.dll b/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.dll new file mode 100644 index 0000000..d8d35bc Binary files /dev/null and b/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.dll differ diff --git a/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.xml b/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.xml new file mode 100644 index 0000000..24f1139 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/lib/portable-net40+windows8+wp8+sl5/MathNet.Numerics.xml @@ -0,0 +1,45466 @@ + + + + MathNet.Numerics + + + + + Interface to linear algebra algorithms that work off 1-D arrays. + + + + + Interface to linear algebra algorithms that work off 1-D arrays. + + Supported data types are double, single, Complex, and Complex32. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiply elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Computes the full QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the full QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + Rows must be greater or equal to columns. + The type of QR factorization to perform. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + Rows must be greater or equal to columns. + The type of QR factorization to perform. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. On exit, work[0] contains the optimal work size value. + + This is equivalent to the GESVD LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix + The number of columns of B. + On exit, the solution matrix. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + How to transpose a matrix. + + + + + Don't transpose a matrix. + + + + + Transpose a matrix. + + + + + Conjugate transpose a complex matrix. + + If a conjugate transpose is used with a real matrix, then the matrix is just transposed. + + + + Types of matrix norms. + + + + + The 1-norm. + + + + + The Frobenius norm. + + + + + The infinity norm. + + + + + The largest absolute value norm. + + + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + The managed linear algebra provider. + + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + The B matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Not used in the managed provider. + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the thin QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + This is equivalent to the GESVD LAPACK routine. + + + + + Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Adds a scaled vector to another: result = y + alpha*x. + + The vector to update. + The value to scale by. + The vector to add to . + The result of the addition. + This is similar to the AXPY BLAS routine. + + + + Scales an array. Can be used to scale a vector and a matrix. + + The scalar. + The values to scale. + This result of the scaling. + This is similar to the SCAL BLAS routine. + + + + Computes the dot product of x and y. + + The vector x. + The vector y. + The dot product of x and y. + This is equivalent to the DOT BLAS routine. + + + + Does a point wise add of two arrays z = x + y. This can be used + to add vectors or matrices. + + The array x. + The array y. + The result of the addition. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise subtraction of two arrays z = x - y. This can be used + to subtract vectors or matrices. + + The array x. + The array y. + The result of the subtraction. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise multiplication of two arrays z = x * y. This can be used + to multiple elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise multiplication. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Does a point wise division of two arrays z = x / y. This can be used + to divide elements of vectors or matrices. + + The array x. + The array y. + The result of the point wise division. + There is no equivalent BLAS routine, but many libraries + provide optimized (parallel and/or vectorized) versions of this + routine. + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + + The requested of the matrix. + + + + + Computes the requested of the matrix. + + The type of norm to compute. + The number of rows. + The number of columns. + The matrix to compute the norm from. + The work array. Only used when + and needs to be have a length of at least M (number of rows of . + + The requested of the matrix. + + + + + Multiples two matrices. result = x * y + + The x matrix. + The number of rows in the x matrix. + The number of columns in the x matrix. + The y matrix. + The number of rows in the y matrix. + The number of columns in the y matrix. + Where to store the result of the multiplication. + This is a simplified version of the BLAS GEMM routine with alpha + set to 1.0 and beta set to 0.0, and x and y are not transposed. + + + + Multiplies two matrices and updates another with the result. c = alpha*op(a)*op(b) + beta*c + + How to transpose the matrix. + How to transpose the matrix. + The value to scale matrix. + The a matrix. + The number of rows in the matrix. + The number of columns in the matrix. + The b matrix + The number of rows in the matrix. + The number of columns in the matrix. + The value to scale the matrix. + The c matrix. + + + + Cache-Oblivious Matrix Multiplication + + if set to true transpose matrix A. + if set to true transpose matrix B. + The value to scale the matrix A with. + The matrix A. + Row-shift of the left matrix + Column-shift of the left matrix + The matrix B. + Row-shift of the right matrix + Column-shift of the right matrix + The matrix C. + Row-shift of the result matrix + Column-shift of the result matrix + The number of rows of matrix op(A) and of the matrix C. + The number of columns of matrix op(B) and of the matrix C. + The number of columns of matrix op(A) and the rows of the matrix op(B). + The constant number of rows of matrix op(A) and of the matrix C. + The constant number of columns of matrix op(B) and of the matrix C. + The constant number of columns of matrix op(A) and the rows of the matrix op(B). + Indicates if this is the first recursion. + + + + Computes the LUP factorization of A. P*A = L*U. + + An by matrix. The matrix is overwritten with the + the LU factorization on exit. The lower triangular factor L is stored in under the diagonal of (the diagonal is always 1.0 + for the L factor). The upper triangular factor U is stored on and above the diagonal of . + The order of the square matrix . + On exit, it contains the pivot indices. The size of the array must be . + This is equivalent to the GETRF LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + This is equivalent to the GETRI LAPACK routine. + + + + Computes the inverse of matrix using LU factorization. + + The N by N matrix to invert. Contains the inverse On exit. + The order of the square matrix . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRF and GETRI LAPACK routines. + + + + Computes the inverse of a previously factored matrix. + + The LU factored N by N matrix. Contains the inverse On exit. + The order of the square matrix . + The pivot indices of . + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is equivalent to the GETRI LAPACK routine. + + + + Solves A*X=B for X using LU factorization. + + The number of columns of B. + The square matrix A. + The order of the square matrix . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRF and GETRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The number of columns of B. + The factored A matrix. + The order of the square matrix . + The pivot indices of . + On entry the B matrix; on exit the X matrix. + This is equivalent to the GETRS LAPACK routine. + + + + Computes the Cholesky factorization of A. + + On entry, a square, positive definite matrix. On exit, the matrix is overwritten with the + the Cholesky factorization. + The number of rows or columns in the matrix. + This is equivalent to the POTRF LAPACK routine. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves A*X=B for X using Cholesky factorization. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRF add POTRS LAPACK routines. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The number of columns in the B matrix. + This is equivalent to the POTRS LAPACK routine. + + + + Solves A*X=B for X using a previously factored A matrix. + + The square, positive definite matrix A. Has to be different than . + The number of rows and columns in A. + On entry the B matrix; on exit the X matrix. + The column to solve for. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the R matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A M by M matrix that holds the Q matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Computes the QR factorization of A where M > N. + + On entry, it is the M by N A matrix to factor. On exit, + it is overwritten with the Q matrix of the QR factorization. + The number of rows in the A matrix. + The number of columns in the A matrix. + On exit, A N by N matrix that holds the R matrix of the + QR factorization. + A min(m,n) vector. On exit, contains additional information + to be used by the QR solve routine. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + This is similar to the GEQRF and ORGQR LAPACK routines. + + + + Perform calculation of Q or R + + Work array + Index of column in work array + Q or R matrices + The first row in + The last row + The first column + The last column + Number of available CPUs + + + + Generate column from initial matrix to work array + + Work array + Initial matrix + The number of rows in matrix + The first row + Column index + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using QR factorization of A. + + The A matrix. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The work array. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by QR factor. This is only used for the managed provider and can be + null for the native provider. The native provider uses the Q portion stored in the R matrix. + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + On entry the B matrix; on exit the X matrix. + The number of columns of B. + On exit, the solution matrix. + The work array - only used in the native provider. The array must have a length of at least N, + but should be N*blocksize. The blocksize is machine dependent. On exit, work[0] contains the optimal + work size value. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Solves A*X=B for X using a previously QR factored matrix. + + The Q matrix obtained by calling . + The R matrix obtained by calling . + The number of rows in the A matrix. + The number of columns in the A matrix. + Contains additional information on Q. Only used for the native solver + and can be null for the managed provider. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + The type of QR factorization to perform. + Rows must be greater or equal to columns. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + This is equivalent to the GESVD LAPACK routine. + + + + Computes the singular value decomposition of A. + + Compute the singular U and VT vectors or not. + On entry, the M by N matrix to decompose. On exit, A may be overwritten. + The number of rows in the A matrix. + The number of columns in the A matrix. + The singular values of A in ascending value. + If is true, on exit U contains the left + singular vectors. + If is true, on exit VT contains the transposed + right singular vectors. + The work array. Length should be at least . + + + + + Given the Cartesian coordinates (da, db) of a point p, these function return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Solves A*X=B for X using the singular value decomposition of A. + + On entry, the M by N matrix to decompose. + The number of rows in the A matrix. + The number of columns in the A matrix. + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Solves A*X=B for X using a previously SVD decomposed matrix. + + The number of rows in the A matrix. + The number of columns in the A matrix. + The s values returned by . + The left singular vectors returned by . + The right singular vectors returned by . + The B matrix. + The number of columns of B. + On exit, the solution matrix. + + + + Computes the eigenvalues and eigenvectors of a matrix. + + Wether the matrix is symmetric or not. + The order of the matrix. + The matrix to decompose. The lenth of the array must be order * order. + On output, the matrix contains the eigen vectors. The lenth of the array must be order * order. + On output, the eigen values (λ) of matrix in ascending value. The length of the arry must . + On output, the block diagonal eigenvalue matrix. The lenth of the array must be order * order. + + + + Useful extension methods for Arrays. + + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Copies the values from on array to another. + + The source array. + The destination array. + + + + Enumerative Combinatorics and Counting. + + + + + Counts the number of possible variations without repetition. + The order matters and each object can be chosen only once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen at most once. + Maximum number of distinct variations. + + + + Counts the number of possible variations with repetition. + The order matters and each object can be chosen more than once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times. + Maximum number of distinct variations with repetition. + + + + Counts the number of possible combinations without repetition. + The order does not matter and each object can be chosen only once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen at most once. + Maximum number of combinations. + + + + Counts the number of possible combinations with repetition. + The order does not matter and an object can be chosen more than once. + + Number of elements in the set. + Number of elements to choose from the set. Each element is chosen 0, 1 or multiple times. + Maximum number of combinations with repetition. + + + + Counts the number of possible permutations (without repetition). + + Number of (distinguishable) elements in the set. + Maximum number of permutations without repetition. + + + + 32-bit single precision complex numbers class. + + + + The class Complex32 provides all elementary operations + on complex numbers. All the operators +, -, + *, /, ==, != are defined in the + canonical way. Additional complex trigonometric functions + are also provided. Note that the Complex32 structures + has two special constant values and + . + + + + Complex32 x = new Complex32(1f,2f); + Complex32 y = Complex32.FromPolarCoordinates(1f, Math.Pi); + Complex32 z = (x + y) / (x - y); + + + + For mathematical details about complex numbers, please + have a look at the + Wikipedia + + + + + + Support Interface for Precision Operations (like AlmostEquals). + + Type of the implementing class. + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + A norm of this value. + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + The value to compare with. + A norm of the difference between this and the other value. + + + + The real component of the complex number. + + + + + The imaginary component of the complex number. + + + + + Initializes a new instance of the Complex32 structure with the given real + and imaginary parts. + + The value for the real component. + The value for the imaginary component. + + + + Creates a complex number from a point's polar coordinates. + + A complex number. + The magnitude, which is the distance from the origin (the intersection of the x-axis and the y-axis) to the number. + The phase, which is the angle from the line to the horizontal axis, measured in radians. + + + + Returns a new instance + with a real number equal to zero and an imaginary number equal to zero. + + + + + Returns a new instance + with a real number equal to one and an imaginary number equal to zero. + + + + + Returns a new instance + with a real number equal to zero and an imaginary number equal to one. + + + + + Returns a new instance + with real and imaginary numbers positive infinite. + + + + + Returns a new instance + with real and imaginary numbers not a number. + + + + + Gets a value indicating whether the Complex32 is zero. + + true if this instance is zero; otherwise, false. + + + + Gets a value indicating whether the Complex32 is one. + + true if this instance is one; otherwise, false. + + + + Gets a value indicating whether the Complex32 is the imaginary unit. + + true if this instance is ImaginaryOne; otherwise, false. + + + + Gets a value indicating whether the provided Complex32evaluates + to a value that is not a number. + + + true if this instance is ; otherwise, + false. + + + + + Gets a value indicating whether the provided Complex32 evaluates to an + infinite value. + + + true if this instance is infinite; otherwise, false. + + + True if it either evaluates to a complex infinity + or to a directed infinity. + + + + + Gets a value indicating whether the provided Complex32 is real. + + true if this instance is a real number; otherwise, false. + + + + Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0. + + + true if this instance is real nonnegative number; otherwise, false. + + + + + Exponential of this Complex32 (exp(x), E^x). + + + The exponential of this complex number. + + + + + Natural Logarithm of this Complex32 (Base E). + + The natural logarithm of this complex number. + + + + Common Logarithm of this Complex32 (Base 10). + + The common logarithm of this complex number. + + + + Logarithm of this Complex32 with custom base. + + The logarithm of this complex number. + + + + Raise this Complex32 to the given value. + + + The exponent. + + + The complex number raised to the given exponent. + + + + + Raise this Complex32 to the inverse of the given value. + + + The root exponent. + + + The complex raised to the inverse of the given exponent. + + + + + The Square (power 2) of this Complex32 + + + The square of this complex number. + + + + + The Square Root (power 1/2) of this Complex32 + + + The square root of this complex number. + + + + + Equality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real and imaginary components of the two complex numbers are equal; false otherwise. + + + + Inequality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real or imaginary components of the two complex numbers are not equal; false otherwise. + + + + Unary addition. + + The complex number to operate on. + Returns the same complex number. + + + + Unary minus. + + The complex number to operate on. + The negated value of the . + + + Addition operator. Adds two complex numbers together. + The result of the addition. + One of the complex numbers to add. + The other complex numbers to add. + + + Subtraction operator. Subtracts two complex numbers. + The result of the subtraction. + The complex number to subtract from. + The complex number to subtract. + + + Addition operator. Adds a complex number and float together. + The result of the addition. + The complex numbers to add. + The float value to add. + + + Subtraction operator. Subtracts float value from a complex value. + The result of the subtraction. + The complex number to subtract from. + The float value to subtract. + + + Addition operator. Adds a complex number and float together. + The result of the addition. + The float value to add. + The complex numbers to add. + + + Subtraction operator. Subtracts complex value from a float value. + The result of the subtraction. + The float vale to subtract from. + The complex value to subtract. + + + Multiplication operator. Multiplies two complex numbers. + The result of the multiplication. + One of the complex numbers to multiply. + The other complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a float value. + The result of the multiplication. + The float value to multiply. + The complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a float value. + The result of the multiplication. + The complex number to multiply. + The float value to multiply. + + + Division operator. Divides a complex number by another. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a float value by a complex number. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a complex number by a float value. + The result of the division. + The dividend. + The divisor. + + + + Computes the conjugate of a complex number and returns the result. + + + + + Returns the multiplicative inverse of a complex number. + + + + + Converts the value of the current complex number to its equivalent string representation in Cartesian form. + + The string representation of the current instance in Cartesian form. + + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified format for its real and imaginary parts. + + The string representation of the current instance in Cartesian form. + A standard or custom numeric format string. + + is not a valid format string. + + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified culture-specific formatting information. + + The string representation of the current instance in Cartesian form, as specified by . + An object that supplies culture-specific formatting information. + + + Converts the value of the current complex number to its equivalent string representation + in Cartesian form by using the specified format and culture-specific format information for its real and imaginary parts. + The string representation of the current instance in Cartesian form, as specified by and . + A standard or custom numeric format string. + An object that supplies culture-specific formatting information. + + is not a valid format string. + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + The hash code for the complex number. + + + The hash code of the complex number. + + + The hash code is calculated as + System.Math.Exp(ComplexMath.Absolute(complexNumber)). + + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + + A norm of this value. + + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + + The value to compare with. + + + A norm of the difference between this and the other value. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a float. + + + A complex number containing the value specified by the given string. + + + The string to parse. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a float. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Parse a part (real or complex) from a complex number. + + Start Token. + Is set to true if the part identified itself as being imaginary. + + An that supplies culture-specific + formatting information. + + Resulting part as float. + + + + + Converts the string representation of a complex number to a single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Converts the string representation of a complex number to single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Explicit conversion of a real decimal to a Complex32. + + The decimal value to convert. + The result of the conversion. + + + + Explicit conversion of a Complex to a Complex32. + + The decimal value to convert. + The result of the conversion. + + + + Implicit conversion of a real byte to a Complex32. + + The byte value to convert. + The result of the conversion. + + + + Implicit conversion of a real short to a Complex32. + + The short value to convert. + The result of the conversion. + + + + Implicit conversion of a signed byte to a Complex32. + + The signed byte value to convert. + The result of the conversion. + + + + Implicit conversion of a unsgined real short to a Complex32. + + The unsgined short value to convert. + The result of the conversion. + + + + Implicit conversion of a real int to a Complex32. + + The int value to convert. + The result of the conversion. + + + + Implicit conversion of a real long to a Complex32. + + The long value to convert. + The result of the conversion. + + + + Implicit conversion of a real uint to a Complex32. + + The uint value to convert. + The result of the conversion. + + + + Implicit conversion of a real ulong to a Complex32. + + The ulong value to convert. + The result of the conversion. + + + + Implicit conversion of a real float to a Complex32. + + The float value to convert. + The result of the conversion. + + + + Implicit conversion of a real double to a Complex32. + + The double value to convert. + The result of the conversion. + + + + Converts this Complex32 to a . + + A with the same values as this Complex32. + + + + Returns the additive inverse of a specified complex number. + + The result of the real and imaginary components of the value parameter multiplied by -1. + A complex number. + + + + Computes the conjugate of a complex number and returns the result. + + The conjugate of . + A complex number. + + + + Adds two complex numbers and returns the result. + + The sum of and . + The first complex number to add. + The second complex number to add. + + + + Subtracts one complex number from another and returns the result. + + The result of subtracting from . + The value to subtract from (the minuend). + The value to subtract (the subtrahend). + + + + Returns the product of two complex numbers. + + The product of the and parameters. + The first complex number to multiply. + The second complex number to multiply. + + + + Divides one complex number by another and returns the result. + + The quotient of the division. + The complex number to be divided. + The complex number to divide by. + + + + Returns the multiplicative inverse of a complex number. + + The reciprocal of . + A complex number. + + + + Returns the square root of a specified complex number. + + The square root of . + A complex number. + + + + Gets the absolute value (or magnitude) of a complex number. + + The absolute value of . + A complex number. + + + + Returns e raised to the power specified by a complex number. + + The number e raised to the power . + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a complex number. + + The complex number raised to the power . + A complex number to be raised to a power. + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a single-precision floating-point number. + + The complex number raised to the power . + A complex number to be raised to a power. + A single-precision floating-point number that specifies a power. + + + + Returns the natural (base e) logarithm of a specified complex number. + + The natural (base e) logarithm of . + A complex number. + + + + Returns the logarithm of a specified complex number in a specified base. + + The logarithm of in base . + A complex number. + The base of the logarithm. + + + + Returns the base-10 logarithm of a specified complex number. + + The base-10 logarithm of . + A complex number. + + + + Returns the sine of the specified complex number. + + The sine of . + A complex number. + + + + Returns the cosine of the specified complex number. + + The cosine of . + A complex number. + + + + Returns the tangent of the specified complex number. + + The tangent of . + A complex number. + + + + Returns the angle that is the arc sine of the specified complex number. + + The angle which is the arc sine of . + A complex number. + + + + Returns the angle that is the arc cosine of the specified complex number. + + The angle, measured in radians, which is the arc cosine of . + A complex number that represents a cosine. + + + + Returns the angle that is the arc tangent of the specified complex number. + + The angle that is the arc tangent of . + A complex number. + + + + Returns the hyperbolic sine of the specified complex number. + + The hyperbolic sine of . + A complex number. + + + + Returns the hyperbolic cosine of the specified complex number. + + The hyperbolic cosine of . + A complex number. + + + + Returns the hyperbolic tangent of the specified complex number. + + The hyperbolic tangent of . + A complex number. + + + + Gets the real component of the complex number. + + The real component of the complex number. + + + + Gets the real imaginary component of the complex number. + + The real imaginary component of the complex number. + + + + Gets the phase or argument of this Complex32. + + + Phase always returns a value bigger than negative Pi and + smaller or equal to Pi. If this Complex32 is zero, the Complex32 + is assumed to be positive real with an argument of zero. + + The phase or argument of this Complex32 + + + + Gets the magnitude (or absolute value) of a complex number. + + The magnitude of the current instance. + + + + Gets the squared magnitude (or squared absolute value) of a complex number. + + The squared magnitude of the current instance. + + + + Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg)) + + The unity of this Complex32. + + + + 64-bit double precision complex numbers class. + + + + The class Complex provides all elementary operations + on complex numbers. All the operators +, -, + *, /, ==, != are defined in the + canonical way. Additional complex trigonometric functions + are also provided. Note that the Complex structures + has two special constant values and + . + + + + Complex x = new Complex(1d, 2d); + Complex y = Complex.FromPolarCoordinates(1d, Math.Pi); + Complex z = (x + y) / (x - y); + + + + For mathematical details about complex numbers, please + have a look at the + Wikipedia + + + + + + The real component of the complex number. + + + + + The imaginary component of the complex number. + + + + + Initializes a new instance of the Complex structure with the given real + and imaginary parts. + + The value for the real component. + The value for the imaginary component. + + + + Creates a complex number from a point's polar coordinates. + + A complex number. + The magnitude, which is the distance from the origin (the intersection of the x-axis and the y-axis) to the number. + The phase, which is the angle from the line to the horizontal axis, measured in radians. + + + + Returns a new Complex instance + with a real number equal to zero and an imaginary number equal to zero. + + + + + Returns a new Complex instance + with a real number equal to one and an imaginary number equal to zero. + + + + + Returns a new Complex instance + with a real number equal to zero and an imaginary number equal to one. + + + + + Returns a new Complex instance + with real and imaginary numbers positive infinite. + + + + + Returns a new Complex instance + with real and imaginary numbers not a number. + + + + + Equality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real and imaginary components of the two complex numbers are equal; false otherwise. + + + + Inequality test. + + One of complex numbers to compare. + The other complex numbers to compare. + true if the real or imaginary components of the two complex numbers are not equal; false otherwise. + + + + Unary addition. + + The complex number to operate on. + Returns the same complex number. + + + + Unary minus. + + The complex number to operate on. + The negated value of the . + + + Addition operator. Adds two complex numbers together. + The result of the addition. + One of the complex numbers to add. + The other complex numbers to add. + + + Subtraction operator. Subtracts two complex numbers. + The result of the subtraction. + The complex number to subtract from. + The complex number to subtract. + + + Addition operator. Adds a complex number and double together. + The result of the addition. + The complex numbers to add. + The double value to add. + + + Subtraction operator. Subtracts double value from a complex value. + The result of the subtraction. + The complex number to subtract from. + The double value to subtract. + + + Addition operator. Adds a complex number and double together. + The result of the addition. + The double value to add. + The complex numbers to add. + + + Subtraction operator. Subtracts complex value from a double value. + The result of the subtraction. + The double vale to subtract from. + The complex value to subtract. + + + Multiplication operator. Multiplies two complex numbers. + The result of the multiplication. + One of the complex numbers to multiply. + The other complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a double value. + The result of the multiplication. + The double value to multiply. + The complex number to multiply. + + + Multiplication operator. Multiplies a complex number with a double value. + The result of the multiplication. + The complex number to multiply. + The double value to multiply. + + + Division operator. Divides a complex number by another. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a double value by a complex number. + The result of the division. + The dividend. + The divisor. + + + Division operator. Divides a complex number by a double value. + The result of the division. + The dividend. + The divisor. + + + + A string representation of this complex number. + + + The string representation of this complex number. + + + + + A string representation of this complex number. + + + The string representation of this complex number formatted as specified by the + format string. + + + A format specification. + + + + + A string representation of this complex number. + + + The string representation of this complex number formatted as specified by the + format provider. + + + An that supplies culture-specific formatting information. + + + + + A string representation of this complex number. + + + The string representation of this complex number formatted as specified by the + format string and format provider. + + + if the n, is not a number. + + + if s, is . + + + A format specification. + + + An that supplies culture-specific formatting information. + + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + The hash code for the complex number. + + + The hash code of the complex number. + + + The hash code is calculated as + System.Math.Exp(ComplexMath.Absolute(complexNumber)). + + + + + Checks if two complex numbers are equal. Two complex numbers are equal if their + corresponding real and imaginary components are equal. + + + Returns true if the two objects are the same object, or if their corresponding + real and imaginary components are equal, false otherwise. + + + The complex number to compare to with. + + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + + A norm of this value. + + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + + The value to compare with. + + + A norm of the difference between this and the other value. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + The string to parse. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Parse a part (real or complex) from a complex number. + + Start Token. + Is set to true if the part identified itself as being imaginary. + + An that supplies culture-specific + formatting information. + + Resulting part as double. + + + + + Converts the string representation of a complex number to a single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Converts the string representation of a complex number to single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Explicit conversion of a real decimal to a Complex. + + The decimal value to convert. + The result of the conversion. + + + + Explicit conversion of a Complex to a Complex. + + The decimal value to convert. + The result of the conversion. + + + + Implicit conversion of a real byte to a Complex. + + The byte value to convert. + The result of the conversion. + + + + Implicit conversion of a real short to a Complex. + + The short value to convert. + The result of the conversion. + + + + Implicit conversion of a signed byte to a Complex. + + The signed byte value to convert. + The result of the conversion. + + + + Implicit conversion of a unsgined real short to a Complex. + + The unsgined short value to convert. + The result of the conversion. + + + + Implicit conversion of a real int to a Complex. + + The int value to convert. + The result of the conversion. + + + + Implicit conversion of a real long to a Complex. + + The long value to convert. + The result of the conversion. + + + + Implicit conversion of a real uint to a Complex. + + The uint value to convert. + The result of the conversion. + + + + Implicit conversion of a real ulong to a Complex. + + The ulong value to convert. + The result of the conversion. + + + + Implicit conversion of a real double to a Complex. + + The double value to convert. + The result of the conversion. + + + + Implicit conversion of a real float to a Complex. + + The double value to convert. + The result of the conversion. + + + + Converts this Complex to a . + + A with the same values as this Complex. + + + + Returns the additive inverse of a specified complex number. + + The result of the and components of the parameter multiplied by -1. + A complex number. + + + + Computes the conjugate of a complex number and returns the result. + + The conjugate of . + A complex number. + + + + Adds two complex numbers and returns the result. + + The sum of and . + The first complex number to add. + The second complex number to add. + + + + Subtracts one complex number from another and returns the result. + + The result of subtracting from . + The value to subtract from (the minuend). + The value to subtract (the subtrahend). + + + + Returns the product of two complex numbers. + + The product of the and parameters. + The first complex number to multiply. + The second complex number to multiply. + + + + Divides one complex number by another and returns the result. + + The quotient of the division. + The complex number to be divided. + The complex number to divide by. + + + + Returns the multiplicative inverse of a complex number. + + The reciprocal of . + A complex number. + + + + Returns the square root of a specified complex number. + + The square root of . + A complex number. + + + + Gets the absolute value (or magnitude) of a complex number. + + A complex number. + The absolute value (or magnitude) of a complex number. + + + + Returns e raised to the power specified by a complex number. + + The number e raised to the power . + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a complex number. + + The complex number raised to the power . + A complex number to be raised to a power. + A complex number that specifies a power. + + + + Returns a specified complex number raised to a power specified by a double-precision floating-point number. + + The complex number raised to the power . + A complex number to be raised to a power. + A double-precision floating-point number that specifies a power. + + + + Returns the natural (base e) logarithm of a specified complex number. + + The natural (base e) logarithm of . + A complex number. + + + + Returns the logarithm of a specified complex number in a specified base. + + The logarithm of in base . + A complex number. + The base of the logarithm. + + + + Returns the base-10 logarithm of a specified complex number. + + The base-10 logarithm of . + A complex number. + + + + Returns the sine of the specified complex number. + + The sine of . + A complex number. + + + + Returns the cosine of the specified complex number. + + The cosine of . + A complex number. + + + + Returns the tangent of the specified complex number. + + The tangent of . + A complex number. + + + + Returns the angle that is the arc sine of the specified complex number. + + The angle which is the arc sine of . + A complex number. + + + + Returns the angle that is the arc cosine of the specified complex number. + + The angle, measured in radians, which is the arc cosine of . + A complex number that represents a cosine. + + + + Returns the angle that is the arc tangent of the specified complex number. + + The angle that is the arc tangent of . + A complex number. + + + + Returns the hyperbolic sine of the specified complex number. + + The hyperbolic sine of . + A complex number. + + + + Returns the hyperbolic cosine of the specified complex number. + + The hyperbolic cosine of . + A complex number. + + + + Returns the hyperbolic tangent of the specified complex number. + + The hyperbolic tangent of . + A complex number. + + + + Gets the real component of the complex number. + + The real component of the complex number. + + + + Gets the real imaginary component of the complex number. + + The real imaginary component of the complex number. + + + + Gets the phase or argument of this Complex. + + + Phase always returns a value bigger than negative Pi and + smaller or equal to Pi. If this Complex is zero, the Complex + is assumed to be positive real with an argument of zero. + + The phase or argument of this Complex + + + + Gets the magnitude (or absolute value) of a complex number. + + The magnitude of the current instance. + + + + Extension methods for the Complex type provided by System.Numerics + + + + + Gets the squared magnitude of the Complex number. + + The number to perfom this operation on. + The squared magnitude of the Complex number. + + + + Gets the unity of this complex (same argument, but on the unit circle; exp(I*arg)) + + The unity of this Complex. + + + + Gets the conjugate of the Complex number. + + The number to perfom this operation on. + + The semantic of setting the conjugate is such that + + // a, b of type Complex32 + a.Conjugate = b; + + is equivalent to + + // a, b of type Complex32 + a = b.Conjugate + + + The conjugate of the number. + + + + Returns the multiplicative inverse of a complex number. + + + + + Exponential of this Complex (exp(x), E^x). + + The number to perfom this operation on. + + The exponential of this complex number. + + + + + Natural Logarithm of this Complex (Base E). + + The number to perfom this operation on. + + The natural logarithm of this complex number. + + + + + Common Logarithm of this Complex (Base 10). + + The common logarithm of this complex number. + + + + Logarithm of this Complex with custom base. + + The logarithm of this complex number. + + + + Raise this Complex to the given value. + + The number to perfom this operation on. + + The exponent. + + + The complex number raised to the given exponent. + + + + + Raise this Complex to the inverse of the given value. + + The number to perfom this operation on. + + The root exponent. + + + The complex raised to the inverse of the given exponent. + + + + + The Square (power 2) of this Complex + + The number to perfom this operation on. + + The square of this complex number. + + + + + The Square Root (power 1/2) of this Complex + + The number to perfom this operation on. + + The square root of this complex number. + + + + + Gets a value indicating whether the Complex32 is zero. + + The number to perfom this operation on. + true if this instance is zero; otherwise, false. + + + + Gets a value indicating whether the Complex32 is one. + + The number to perfom this operation on. + true if this instance is one; otherwise, false. + + + + Gets a value indicating whether the Complex32 is the imaginary unit. + + true if this instance is ImaginaryOne; otherwise, false. + The number to perfom this operation on. + + + + Gets a value indicating whether the provided Complex32evaluates + to a value that is not a number. + + The number to perfom this operation on. + + true if this instance is NaN; otherwise, + false. + + + + + Gets a value indicating whether the provided Complex32 evaluates to an + infinite value. + + The number to perfom this operation on. + + true if this instance is infinite; otherwise, false. + + + True if it either evaluates to a complex infinity + or to a directed infinity. + + + + + Gets a value indicating whether the provided Complex32 is real. + + The number to perfom this operation on. + true if this instance is a real number; otherwise, false. + + + + Gets a value indicating whether the provided Complex32 is real and not negative, that is >= 0. + + The number to perfom this operation on. + + true if this instance is real nonnegative number; otherwise, false. + + + + + Returns a Norm of a value of this type, which is appropriate for measuring how + close this value is to zero. + + The number to perfom this operation on. + A norm of this value. + + + + Returns a Norm of the difference of two values of this type, which is + appropriate for measuring how close together these two values are. + + The number to perfom this operation on. + The value to compare with. + A norm of the difference between this and the other value. + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + The string to parse. + + + + + Creates a complex number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Parse a part (real or complex) from a complex number. + + Start Token. + Is set to true if the part identified itself as being imaginary. + + An that supplies culture-specific + formatting information. + + Resulting part as double. + + + + + Converts the string representation of a complex number to a double-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized. + + + + + Converts the string representation of a complex number to double-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized + + + + + Creates a Complex32 number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + + + Creates a Complex32 number based on a string. The string can be in the + following formats (without the quotes): 'n', 'ni', 'n +/- ni', + 'ni +/- n', 'n,n', 'n,ni,' '(n,n)', or '(n,ni)', where n is a double. + + + A complex number containing the value specified by the given string. + + + the string to parse. + + + An that supplies culture-specific + formatting information. + + + + + Converts the string representation of a complex number to a single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain complex32.Zero. This parameter is passed uninitialized. + + + + + Converts the string representation of a complex number to single-precision complex number equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex number to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will contain Complex.Zero. This parameter is passed uninitialized. + + + + + A collection of frequently used mathematical constants. + + + + The number e + + + The number log[2](e) + + + The number log[10](e) + + + The number log[e](2) + + + The number log[e](10) + + + The number log[e](pi) + + + The number log[e](2*pi)/2 + + + The number 1/e + + + The number sqrt(e) + + + The number sqrt(2) + + + The number sqrt(1/2) = 1/sqrt(2) = sqrt(2)/2 + + + The number sqrt(3)/2 + + + The number pi + + + The number 2*pi + + + The number 1/pi + + + The number pi/2 + + + The number pi/4 + + + The number sqrt(pi) + + + The number sqrt(2pi) + + + The number sqrt(2*pi*e) + + + The number log(sqrt(2*pi)) + + + The number log(sqrt(2*pi*e)) + + + The number log(2 * sqrt(e / pi)) + + + The number 1/pi + + + The number 2/pi + + + The number 1/sqrt(pi) + + + The number 1/sqrt(2pi) + + + The number 2/sqrt(pi) + + + The number 2 * sqrt(e / pi) + + + The number (pi)/180 - factor to convert from Degree (deg) to Radians (rad). + + + + + The number (pi)/200 - factor to convert from NewGrad (grad) to Radians (rad). + + + + + The number ln(10)/20 - factor to convert from Power Decibel (dB) to Neper (Np). Use this version when the Decibel represent a power gain but the compared values are not powers (e.g. amplitude, current, voltage). + + + The number ln(10)/10 - factor to convert from Neutral Decibel (dB) to Neper (Np). Use this version when either both or neither of the Decibel and the compared values represent powers. + + + The Catalan constant + Sum(k=0 -> inf){ (-1)^k/(2*k + 1)2 } + + + The Euler-Mascheroni constant + lim(n -> inf){ Sum(k=1 -> n) { 1/k - log(n) } } + + + The number (1+sqrt(5))/2, also known as the golden ratio + + + The Glaisher constant + e^(1/12 - Zeta(-1)) + + + The Khinchin constant + prod(k=1 -> inf){1+1/(k*(k+2))^log(k,2)} + + + + The size of a double in bytes. + + + + + The size of an int in bytes. + + + + + The size of a float in bytes. + + + + + The size of a Complex in bytes. + + + + + The size of a Complex in bytes. + + + + Speed of Light in Vacuum: c_0 = 2.99792458e8 [m s^-1] (defined, exact; 2007 CODATA) + + + Magnetic Permeability in Vacuum: mu_0 = 4*Pi * 10^-7 [N A^-2 = kg m A^-2 s^-2] (defined, exact; 2007 CODATA) + + + Electric Permittivity in Vacuum: epsilon_0 = 1/(mu_0*c_0^2) [F m^-1 = A^2 s^4 kg^-1 m^-3] (defined, exact; 2007 CODATA) + + + Characteristic Impedance of Vacuum: Z_0 = mu_0*c_0 [Ohm = m^2 kg s^-3 A^-2] (defined, exact; 2007 CODATA) + + + Newtonian Constant of Gravitation: G = 6.67429e-11 [m^3 kg^-1 s^-2] (2007 CODATA) + + + Planck's constant: h = 6.62606896e-34 [J s = m^2 kg s^-1] (2007 CODATA) + + + Reduced Planck's constant: h_bar = h / (2*Pi) [J s = m^2 kg s^-1] (2007 CODATA) + + + Planck mass: m_p = (h_bar*c_0/G)^(1/2) [kg] (2007 CODATA) + + + Planck temperature: T_p = (h_bar*c_0^5/G)^(1/2)/k [K] (2007 CODATA) + + + Planck length: l_p = h_bar/(m_p*c_0) [m] (2007 CODATA) + + + Planck time: t_p = l_p/c_0 [s] (2007 CODATA) + + + Elementary Electron Charge: e = 1.602176487e-19 [C = A s] (2007 CODATA) + + + Magnetic Flux Quantum: theta_0 = h/(2*e) [Wb = m^2 kg s^-2 A^-1] (2007 CODATA) + + + Conductance Quantum: G_0 = 2*e^2/h [S = m^-2 kg^-1 s^3 A^2] (2007 CODATA) + + + Josephson Constant: K_J = 2*e/h [Hz V^-1] (2007 CODATA) + + + Von Klitzing Constant: R_K = h/e^2 [Ohm = m^2 kg s^-3 A^-2] (2007 CODATA) + + + Bohr Magneton: mu_B = e*h_bar/2*m_e [J T^-1] (2007 CODATA) + + + Nuclear Magneton: mu_N = e*h_bar/2*m_p [J T^-1] (2007 CODATA) + + + Fine Structure Constant: alpha = e^2/4*Pi*e_0*h_bar*c_0 [1] (2007 CODATA) + + + Rydberg Constant: R_infty = alpha^2*m_e*c_0/2*h [m^-1] (2007 CODATA) + + + Bor Radius: a_0 = alpha/4*Pi*R_infty [m] (2007 CODATA) + + + Hartree Energy: E_h = 2*R_infty*h*c_0 [J] (2007 CODATA) + + + Quantum of Circulation: h/2*m_e [m^2 s^-1] (2007 CODATA) + + + Fermi Coupling Constant: G_F/(h_bar*c_0)^3 [GeV^-2] (2007 CODATA) + + + Weak Mixin Angle: sin^2(theta_W) [1] (2007 CODATA) + + + Electron Mass: [kg] (2007 CODATA) + + + Electron Mass Energy Equivalent: [J] (2007 CODATA) + + + Electron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Electron Compton Wavelength: [m] (2007 CODATA) + + + Classical Electron Radius: [m] (2007 CODATA) + + + Tomson Cross Section: [m^2] (2002 CODATA) + + + Electron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Electon G-Factor: [1] (2007 CODATA) + + + Muon Mass: [kg] (2007 CODATA) + + + Muon Mass Energy Equivalent: [J] (2007 CODATA) + + + Muon Molar Mass: [kg mol^-1] (2007 CODATA) + + + Muon Compton Wavelength: [m] (2007 CODATA) + + + Muon Magnetic Moment: [J T^-1] (2007 CODATA) + + + Muon G-Factor: [1] (2007 CODATA) + + + Tau Mass: [kg] (2007 CODATA) + + + Tau Mass Energy Equivalent: [J] (2007 CODATA) + + + Tau Molar Mass: [kg mol^-1] (2007 CODATA) + + + Tau Compton Wavelength: [m] (2007 CODATA) + + + Proton Mass: [kg] (2007 CODATA) + + + Proton Mass Energy Equivalent: [J] (2007 CODATA) + + + Proton Molar Mass: [kg mol^-1] (2007 CODATA) + + + Proton Compton Wavelength: [m] (2007 CODATA) + + + Proton Magnetic Moment: [J T^-1] (2007 CODATA) + + + Proton G-Factor: [1] (2007 CODATA) + + + Proton Shielded Magnetic Moment: [J T^-1] (2007 CODATA) + + + Proton Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Proton Shielded Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Neutron Mass: [kg] (2007 CODATA) + + + Neutron Mass Energy Equivalent: [J] (2007 CODATA) + + + Neutron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Neuron Compton Wavelength: [m] (2007 CODATA) + + + Neutron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Neutron G-Factor: [1] (2007 CODATA) + + + Neutron Gyro-Magnetic Ratio: [s^-1 T^-1] (2007 CODATA) + + + Deuteron Mass: [kg] (2007 CODATA) + + + Deuteron Mass Energy Equivalent: [J] (2007 CODATA) + + + Deuteron Molar Mass: [kg mol^-1] (2007 CODATA) + + + Deuteron Magnetic Moment: [J T^-1] (2007 CODATA) + + + Helion Mass: [kg] (2007 CODATA) + + + Helion Mass Energy Equivalent: [J] (2007 CODATA) + + + Helion Molar Mass: [kg mol^-1] (2007 CODATA) + + + Avogadro constant: [mol^-1] (2010 CODATA) + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 000 + + + The SI prefix factor corresponding to 1 000 000 + + + The SI prefix factor corresponding to 1 000 + + + The SI prefix factor corresponding to 100 + + + The SI prefix factor corresponding to 10 + + + The SI prefix factor corresponding to 0.1 + + + The SI prefix factor corresponding to 0.01 + + + The SI prefix factor corresponding to 0.001 + + + The SI prefix factor corresponding to 0.000 001 + + + The SI prefix factor corresponding to 0.000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 000 001 + + + The SI prefix factor corresponding to 0.000 000 000 000 000 000 000 001 + + + + Sets parameters for the library. + + + + + Given the number elements, should the operation be parallelized. + + The number elements to check. + true if the operation should be parallelized; false otherwise. + + + + Gets or sets a value indicating whether the distribution classes check validate each parameter. + For the multivariate distributions this could involve an expensive matrix factorization. + The default setting of this property is true. + + + + + Gets or sets a value indicating whether to use thread safe random number generators (RNG). + Thread safe RNG about two and half time slower than non-thread safe RNG. + + + true to use thread safe random number generators ; otherwise, false. + + + + + Gets or sets a value indicating whether parallelization shall be disabled globally. + + + + + Gets or sets the linear algebra provider. + + The linear algebra provider. + + + + Gets or sets a value indicating how many parallel worker threads shall be used + when parallelization is applicable. + + Default to the number of processor cores, must be between 1 and 1024 (inclusive). + + + + Gets or sets the the block size to use for + the native linear algebra provider. + + The block size. Default 512, must be at least 32. + + + + Gets or sets the order of the matrix when linear algebra provider + must calculate multiply in parallel threads. + + The order. Default 64, must be at least 3. + + + + Gets or sets the number of elements a vector or matrix + must contain before we multiply threads. + + Number of elements. Default 300, must be at least 3. + + + + Maximum number of columns to print in ToString methods by default. + + + + + Maximum number of rows to print in ToString methods by default. + + + + + Implements the Beta distribution. For details about this distribution, see + Wikipedia - Beta distribution. + + + There are a few special cases for the parameterization of the Beta distribution. When both + shape parameters are positive infinity, the Beta distribution degenerates to a point distribution + at 0.5. When one of the shape parameters is positive infinity, the distribution degenerates to a point + distribution at the positive infinity. When both shape parameters are 0.0, the Beta distribution + degenerates to a Bernoulli distribution with parameter 0.5. When one shape parameter is 0.0, the + distribution degenerates to a point distribution at the non-zero shape parameter. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The interface for continuous univariate distributions. + + + + + The interface for univariate distributions. + + + + + Computes the cumulative distribution function (cdf) for this probability distribution. + + The location at which to compute the cumulative distribution function. + the cumulative distribution at location . + + + + Gets or sets the random number generator which is used to generate random samples from the distribution. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + The probability density of the distribution. + + The location at which to compute the density. + the density at . + + + + The log probability density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Draws a sequence of random samples from the distribution. + + a sequence of samples from the distribution. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by a double. + + + + + Gets the largest element in the domain of the distributions which can be represented by a double. + + + + + Beta shape parameter a. + + + + + Beta shape parameter b. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Beta class. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + If any of the Beta parameters are negative. + + + + A string representation of the distribution. + + A string representation of the Beta distribution. + + + + Checks whether the parameters of the distribution are valid. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + When the parameters don't pass the function. + + + + Computes the density of the Beta distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Beta distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Beta distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Samples Beta distributed random variables by sampling two Gamma variables and normalizing. + + The random number generator to use. + The A shape parameter. + The B shape parameter. + a random number from the Beta distribution. + + + + Generates a sample from the Beta distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Beta distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The a shape parameter of the Beta distribution. + The b shape parameter of the Beta distribution. + a sequence of samples from the distribution. + + + + Gets or sets the A shape parameter of the Beta distribution. + + + + + Gets or sets the B shape parameter of the Beta distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Beta distribution. + + + + + Gets the variance of the Beta distribution. + + + + + Gets the standard deviation of the Beta distribution. + + + + + Gets the entropy of the Beta distribution. + + + + + Gets the skewness of the Beta distribution. + + + + + Gets the mode of the Beta distribution; when there are multiple answers, this routine will return 0.5. + + + + + Gets the median of the Beta distribution. + + + + + Gets the minimum of the Beta distribution. + + + + + Gets the maximum of the Beta distribution. + + + + + The Cauchy distribution is a symmetric continuous probability distribution. For details about this distribution, see + Wikipedia - Cauchy distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale of the Cauchy distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class with the location parameter set to 0 and the scale parameter set to 1 + + + + + Initializes a new instance of the class. + + + The location parameter for the distribution. + + + The scale parameter for the distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + Location parameter. + Scale parameter. Must be greater than 0. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + Location parameter. + Scale parameter. Must be greater than 0. + True when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Cauchy distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the location parameter of the distribution. + + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the Chi distribution. This distribution is + a continuous probability distribution. The distribution usually arises when a k-dimensional vector's orthogonal + components are independent and each follow a standard normal distribution. The length of the vector will + then have a chi distribution. + Wikipedia - Chi distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the degrees of freedom for the Chi distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the Chi distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Chi distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Chi distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + Degrees of Freedom + a random number from the distribution. + + + + Generates a sample from the Chi distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Chi distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + Degrees of Freedom + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + Degrees of Freedom + a sequence of samples from the distribution. + + + + Gets or sets the degrees of freedom of the Chi distribution. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the ChiSquare distribution. This distribution is + a sum of the squares of k independent standard normal random variables. + Wikipedia - ChiSquare distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the ChiSquare distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the ChiSquare distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the ChiSquare distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The degrees of freedom. + a random number from the distribution. + + + + Generates a sample from the ChiSquare distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the ChiSquare distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the ChiSquare distribution. + + The random number generator to use. + The degrees of freedom. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The degrees of freedom. + a sample from the distribution. + + + + Gets or sets the degrees of freedom of the ChiSquare distribution. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The continuous uniform distribution is a distribution over real numbers. For details about this distribution, see + Wikipedia - Continuous uniform distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's lower bound. + + + + + The distribution's upper bound. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the ContinuousUniform class with lower bound 0 and upper bound 1. + + + + + Initializes a new instance of the ContinuousUniform class with given lower and upper bounds. + + Lower bound. + Upper bound; must be at least as large as . + If the upper bound is smaller than the lower bound. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + Lower bound. + Upper bound; must be at least as large as . + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + Lower bound. + Upper bound; must be at least as large as . + When the parameters don't pass the function. + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates one sample from the ContinuousUniform distribution without parameter checking. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a uniformly distributed random number. + + + + Generates a sample from the ContinuousUniform distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the ContinuousUniform distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the ContinuousUniform distribution. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a uniformly distributed sample. + + + + Generates a sequence of samples from the ContinuousUniform distribution. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a sequence of uniformly distributed samples. + + + + Gets or sets the lower bound of the distribution. + + + + + Gets or sets the upper bound of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + + Gets the median of the distribution. + + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + This class implements functionality for the Erlang distribution. This distribution is + is a continuous probability distribution with wide applicability primarily due to its + relation to the exponential and Gamma distributions. + Wikipedia - Erlang distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Erlang shape parameter. + + + + + Erlang inverse scale parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The shape of the Erlang distribution. + + + The inverse scale of the Erlang distribution. + + + + + Constructs a Erlang distribution from a shape and scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Erlang distribution. + The scale of the Erlang distribution. + a normal distribution. + + + + Constructs a Erlang distribution from a shape and inverse scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + a normal distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Erlang distribution. + The inverse scale of the Erlang distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the Erlang distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the density. + the density at . + + + + Sampling implementation based on: + "A Simple Method for Generating Erlang Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + This method performs no parameter checks. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + A sample from a Erlang distributed random variable. + + + + Generates a sample from the Erlang distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Erlang distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Erlang distribution. + + + + + Gets or sets the scale of the Erlang distribution. + + + + + Gets or sets the inverse scale of the Erlang distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum value. + + + + + Gets the Maximum value. + + + + + The exponential distribution is a distribution over the real numbers parameterized by one non-negative parameter. + Wikipedia - exponential distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The lambda parameter of the Exponential distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The lambda parameter of the Exponential distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + Lambda parameter. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + Lambda parameter. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Exponential distribution. + + a sequence of samples from the distribution. + + + + Draws a random sample from the distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + A random number from this distribution. + + + + Generates a sequence of samples from the Exponential distribution. + + The random number generator to use. + The lambda parameter of the Exponential distribution. + a sequence of samples from the distribution. + + + + Gets or sets the lambda parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the FisherSnedecor distribution. For details about this distribution, see + Wikipedia - FisherSnedecor distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The first parameter - degree of freedom. + + + + + The second parameter - degree of freedom. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The first parameter - degree of freedom. + + + The second parameter - degree of freedom. + + + + + Sets the parameters of the distribution after checking their validity. + + The first parameter - degree of freedom. + The second parameter - degree of freedom. + + + + Checks whether the parameters of the distribution are valid. + + The first parameter - degree of freedom. + The second parameter - degree of freedom. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates one sample from the FisherSnedecor distribution without parameter checking. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a FisherSnedecor distributed random number. + + + + Generates a sample from the FisherSnedecor distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the FisherSnedecor distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The first parameter - degree of freedom. + The second parameter - degree of freedom. + a sequence of samples from the distribution. + + + + Gets or sets the first parameter - degree of freedom. + + + + + Gets or sets the second parameter - degree of freedom. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the univariate Gamma distribution. For details about this distribution, see + Wikipedia - Gamma distribution. + + + The Gamma distribution is parametrized by a shape and inverse scale parameter. When we want + to specify a Gamma distribution which is a point distribution we set the shape parameter to be the + location of the point distribution and the inverse scale as positive infinity. The distribution + with shape and inverse scale both zero is undefined. + Random number generation for the Gamma distribution is based on the algorithm in: + "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Gamma shape parameter. + + + + + Gamma inverse scale parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Gamma class. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + + + + Constructs a Gamma distribution from a shape and scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Gamma distribution. + The scale of the Gamma distribution. + a normal distribution. + + + + Constructs a Gamma distribution from a shape and inverse scale parameter. The distribution will + be initialized with the default random number generator. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + a normal distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + When the parameters don't pass the function. + + + + Computes the density of the Gamma distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Gamma distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Gamma distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Sampling implementation based on: + "A Simple Method for Generating Gamma Variables" - Marsaglia & Tsang + ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000, Pages 363–372. + This method performs no parameter checks. + + The random number generator to use. + The shape of the Gamma distribution. + The inverse scale of the Gamma distribution. + A sample from a Gamma distributed random variable. + + + + Generates a sample from the Gamma distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Gamma distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Gamma distribution. + + The random number generator to use. + The shape of the Gamma distribution from which to generate samples. + The inverse scale of the Gamma distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the Gamma distribution. + + The random number generator to use. + The shape of the Gamma distribution from which to generate samples. + The inverse scale of the Gamma distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Gamma distribution. + + + + + Gets or sets the scale of the Gamma distribution. + + + + + Gets or sets the inverse scale of the Gamma distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Gamma distribution. + + + + + Gets the variance of the Gamma distribution. + + + + + Gets the standard deviation of the Gamma distribution. + + + + + Gets the entropy of the Gamma distribution. + + + + + Gets the skewness of the Gamma distribution. + + + + + Gets the mode of the Gamma distribution. + + + + + Gets the median of the Gamma distribution. + + + + + Gets the minimum of the Gamma distribution. + + + + + Gets the maximum of the Gamma distribution. + + + + + The inverse Gamma distribution is a distribution over the positive real numbers parameterized by + two positive parameters. + Wikipedia - InverseGamma distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Inverse Gamma shape parameter. + + + + + Inverse Gamma scale parameter scale. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + + The shape (alpha) parameter of the inverse Gamma distribution. + + + The scale (beta) parameter of the inverse Gamma distribution. + + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Cauchy distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The shape (alpha) parameter of the inverse Gamma distribution. + The scale (beta) parameter of the inverse Gamma distribution. + a sequence of samples from the distribution. + + + + Gets or sets the shape (alpha) parameter. + + + + + Gets or sets The scale (beta) parameter. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + Throws . + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Laplace distribution is a distribution over the real numbers parameterized by a mean and + scale parameter. The PDF is: + p(x) = \frac{1}{2 * scale} \exp{- |x - mean| / scale}. + Wikipedia - Laplace distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale of the Laplace distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class (location = 0, scale = 1). + + + + + Initializes a new instance of the class. + + + The location for the Laplace distribution. + + + The scale for the Laplace distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The location for the Laplace distribution. + The scale for the Laplace distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The location for the Laplace distribution. + The scale for the Laplace distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a random number from the distribution. + + + + Samples a Laplace distributed random variable. + + a sample from the distribution. + + + + Generates a sample from the Laplace distribution. + + a sample from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The location shape parameter. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the location of the Laplace distribution. + + + + + Gets or sets the scale of the Laplace distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the univariate Log-Normal distribution. For details about this distribution, see + Wikipedia - Log-Normal distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the mu of the logarithm of the log-log-normal distribution. + + + + + Keeps track of the standard deviation of the logarithm of the log-log-normal distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + The distribution will be initialized with the default + random number generator. + + + The mu of the logarithm of the distribution. + + + The standard deviation of the logarithm of the distribution. + + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + When the parameters don't pass the function. + + + + Computes the density of the log-normal distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the log-normal distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the log-normal distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates a sample from the log-normal distribution using the Box-Muller algorithm. + + a sample from the distribution. + + + + Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm. + + a sequence of samples from the distribution. + + + + Generates a sample from the log-normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the log-normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mu of the logarithm of the distribution. + The standard deviation of the logarithm of the distribution. + a sequence of samples from the distribution. + + + + Gets or sets the mean of the logarithm of the log-normal. + + + + + Gets or sets the standard deviation of the logarithm of the log-normal. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mu of the log-normal distribution. + + + + + Gets the variance of the log-normal distribution. + + + + + Gets the standard deviation of the log-normal distribution. + + + + + Gets the entropy of the log-normal distribution. + + + + + Gets the skewness of the log-normal distribution. + + + + + Gets the mode of the log-normal distribution. + + + + + Gets the median of the log-normal distribution. + + + + + Gets the minimum of the log-normal distribution. + + + + + Gets the maximum of the log-normal distribution. + + + + + Implements the univariate Normal (or Gaussian) distribution. For details about this distribution, see + Wikipedia - Normal distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the mean of the normal distribution. + + + + + Keeps track of the standard deviation of the normal distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Normal class. This is a normal distribution with mean 0.0 + and standard deviation 1.0. The distribution will + be initialized with the default random number generator. + + + + + Initializes a new instance of the Normal class with a particular mean and standard deviation. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + + + + Constructs a normal distribution from a mean and standard deviation. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + a normal distribution. + + + + Constructs a normal distribution from a mean and variance. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The variance of the normal distribution. + a normal distribution. + + + + Constructs a normal distribution from a mean and precision. The distribution will + be initialized with the default random number generator. + + The mean of the normal distribution. + The precision of the normal distribution. + a normal distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + When the parameters don't pass the function. + + + + Computes the density of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the density. + the density at . + + + + Computes the log density of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the density. + the log density at . + + + + Computes the density of the normal distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the normal distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the normal distribution. + + The mean of the normal distribution. + The standard deviation of the normal distribution. + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the cumulative distribution function of the normal distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the inverse cumulative distribution function of the normal distribution. + + The location at which to compute the inverse cumulative density. + the inverse cumulative density at . + + + + Samples a pair of standard normal distributed random variables using the Box-Muller algorithm. + + The random number generator to use. + a pair of random numbers from the standard normal distribution. + + + + Samples the distribution. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a random number from the distribution. + + + + Generates a sample from the normal distribution using the Box-Muller algorithm. + + a sample from the distribution. + + + + Generates a sequence of samples from the normal distribution using the Box-Muller algorithm. + + a sequence of samples from the distribution. + + + + Generates a sample from the normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the normal distribution using the Box-Muller algorithm. + + The random number generator to use. + The mean of the normal distribution from which to generate samples. + The standard deviation of the normal distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the precision of the normal distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets or sets the mean of the normal distribution. + + + + + Gets or sets the variance of the normal distribution. + + + + + Gets or sets the standard deviation of the normal distribution. + + + + + Gets the entropy of the normal distribution. + + + + + Gets the skewness of the normal distribution. + + + + + Gets the mode of the normal distribution. + + + + + Gets the median of the normal distribution. + + + + + Gets the minimum of the normal distribution. + + + + + Gets the maximum of the normal distribution. + + + + + The Pareto distribution is a power law probability distribution that coincides with social, + scientific, geophysical, actuarial, and many other types of observable phenomena. + For details about this distribution, see + Wikipedia - Pareto distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale parameter of the distribution. + + + + + The shape parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The scale parameter of the distribution. + + + The shape parameter of the distribution. + + + If or are negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The scale parameter of the distribution. + The shape parameter of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The scale parameter of the distribution. + The shape parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates a sample from the Pareto distribution without doing parameter checking. + + The random number generator to use. + The scale parameter. + The shape parameter. + a random number from the Pareto distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Pareto distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The scale parameter. + The shape parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The scale parameter. + The shape parameter. + a sequence of samples from the distribution. + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the shape parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The Rayleigh distribution (pronounced /ˈreɪli/) is a continuous probability distribution. As an + example of how it arises, the wind speed will have a Rayleigh distribution if the components of + the two-dimensional wind velocity vector are uncorrelated and normally distributed with equal variance. + For details about this distribution, see + Wikipedia - Rayleigh distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The scale parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The scale parameter of the distribution. + + + If is negative. + + + + + Sets the parameters of the distribution after checking their validity. + + The scale parameter of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The scale parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Generates a sample from the Rayleigh distribution without doing parameter checking. + + The random number generator to use. + The scale parameter. + a random number from the Rayleigh distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Rayleigh distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The scale parameter. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The scale parameter. + a sequence of samples from the distribution. + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + A random variable is said to be stable (or to have a stable distribution) if it has + the property that a linear combination of two independent copies of the variable has + the same distribution, up to location and scale parameters. + For details about this distribution, see + Wikipedia - Stable distribution. + + The distribution will use the by default.` + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The stability parameter of the distribution. + + + + + The skewness parameter of the distribution. + + + + + The scale parameter of the distribution. + + + + + The location parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The stability parameter of the distribution. + + + The skewness parameter of the distribution. + + + The scale parameter of the distribution. + + + The location parameter of the distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + Throws a not supported exception if Alpha != 2, (Alpha != 1 and Beta !=0), or (Alpha != 0.5 and Beta != 1) + + + + Computes the cumulative distribution function of the Levy distribution. + + The scale parameter. + The location parameter. + The location at which to compute the cumulative density. + + the cumulative density at . + + + + + Computes the density of the distribution. + + The location at which to compute the density. + the density at . + + + + Computes the density of the Levy distribution. + + The scale parameter of the distribution. + The location parameter of the distribution. + The location at which to compute the density. + the density at . + + + + Computes the log density of the distribution. + + The location at which to compute the log density. + the log density at . + + + + Samples the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a random number from the distribution. + + + + Draws a random sample from the distribution. + + A random number from this distribution. + + + + Generates a sequence of samples from the Stable distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the distribution. + + The random number generator to use. + The stability parameter of the distribution. + The skewness parameter of the distribution. + The scale parameter of the distribution. + The location parameter of the distribution. + a sequence of samples from the distribution. + + + + Gets or sets the stability parameter of the distribution. + + + + + Gets or sets The skewness parameter of the distribution. + + + + + Gets or sets the scale parameter of the distribution. + + + + + Gets or sets the location parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets he entropy of the distribution. + + Always throws a not supported exception. + + + + Gets the skewness of the distribution. + + Throws a not supported exception of Alpha != 2. + + + + Gets the mode of the distribution. + + Throws a not supported exception if Beta != 0. + + + + Gets the median of the distribution. + + Throws a not supported exception if Beta != 0. + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + Implements the univariate Student t-distribution. For details about this + distribution, see + + Wikipedia - Student's t-distribution. + + We use a slightly generalized version (compared to + Wikipedia) of the Student t-distribution. Namely, one which also + parameterizes the location and scale. See the book "Bayesian Data + Analysis" by Gelman et al. for more details. + The density of the Student t-distribution p(x|mu,scale,dof) = + Gamma((dof+1)/2) (1 + (x - mu)^2 / (scale * scale * dof))^(-(dof+1)/2) / + (Gamma(dof/2)*Sqrt(dof*pi*scale)). + The distribution will use the by + default. Users can get/set the random number generator by using the + property. + The statistics classes will check all the incoming parameters + whether they are in the allowed range. This might involve heavy + computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Keeps track of the location of the Student t-distribution. + + + + + Keeps track of the degrees of freedom for the Student t-distribution. + + + + + Keeps track of the scale for the Student t-distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the StudentT class. This is a Student t-distribution with location 0.0 + scale 1.0 and degrees of freedom 1. The distribution will + be initialized with the default random number generator. + + + + + Initializes a new instance of the StudentT class with a particular location, scale and degrees of + freedom. The distribution will + be initialized with the default random number generator. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + When the parameters don't pass the function. + + + + Computes the density of the Student t-distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Student t-distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Student t-distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Samples student-t distributed random variables. + + The algorithm is method 2 in section 5, chapter 9 + in L. Devroye's "Non-Uniform Random Variate Generation" + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the standard student-t distribution. + a random number from the standard student-t distribution. + + + + Generates a sample from the Student t-distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Student t-distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Student t-distribution. + + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + a sample from the distribution. + + + + Generates a sequence of samples from the Student t-distribution using the Box-Muller algorithm. + + The random number generator to use. + The location of the Student t-distribution. + The scale of the Student t-distribution. + The degrees of freedom for the Student t-distribution. + a sequence of samples from the distribution. + + + + Gets or sets the location of the Student t-distribution. + + + + + Gets or sets the scale of the Student t-distribution. + + + + + Gets or sets the degrees of freedom of the Student t-distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Student t-distribution. + + + + + Gets the variance of the Student t-distribution. + + + + + Gets the standard deviation of the Student t-distribution. + + + + + Gets the entropy of the Student t-distribution. + + + + + Gets the skewness of the Student t-distribution. + + + + + Gets the mode of the Student t-distribution. + + + + + Gets the median of the Student t-distribution. + + + + + Gets the minimum of the Student t-distribution. + + + + + Gets the maximum of the Student t-distribution. + + + + + Implements the Weibull distribution. For details about this distribution, see + Wikipedia - Weibull distribution. + + + The Weibull distribution is parametrized by a shape and scale parameter. + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Weibull shape parameter. + + + + + Weibull inverse scale parameter. + + + + + Reusable intermediate result 1 / ( ^ ) + + + By caching this parameter we can get slightly better numerics precision + in certain constellations without any additional computations. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Weibull class. + + The shape of the Weibull distribution. + The inverse scale of the Weibull distribution. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The shape of the Weibull distribution. + The scale of the Weibull distribution. + true when the parameters positive valid floating point numbers, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The shape of the Weibull distribution. + The inverse scale of the Weibull distribution. + When the parameters don't pass the function. + + + + Computes the density of the Weibull distribution. + + The location at which to compute the density. + the density at . + + + + Computes the log density of the Weibull distribution. + + The location at which to compute the log density. + the log density at . + + + + Computes the cumulative distribution function of the Weibull distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Generates one sample from the Weibull distribution. This method doesn't perform + any parameter checks. + + The random number generator to use. + The shape of the Weibull distribution. + The scale of the Weibull distribution. + A sample from a Weibull distributed random variable. + + + + Generates a sample from the Weibull distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the Weibull distribution. + + a sequence of samples from the distribution. + + + + Generates a sample from the Weibull distribution. + + The random number generator to use. + The shape of the Weibull distribution from which to generate samples. + The scale of the Weibull distribution from which to generate samples. + a sample from the distribution. + + + + Generates a sequence of samples from the Weibull distribution. + + The random number generator to use. + The shape of the Weibull distribution from which to generate samples. + The scale of the Weibull distribution from which to generate samples. + a sequence of samples from the distribution. + + + + Gets or sets the shape of the Weibull distribution. + + + + + Gets or sets the scale of the Weibull distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the Weibull distribution. + + + + + Gets the variance of the Weibull distribution. + + + + + Gets the standard deviation of the Weibull distribution. + + + + + Gets the entropy of the Weibull distribution. + + + + + Gets the skewness of the Weibull distribution. + + + + + Gets the mode of the Weibull distribution. + + + + + Gets the median of the Weibull distribution. + + + + + Gets the minimum of the Weibull distribution. + + + + + Gets the maximum of the Weibull distribution. + + + + + The Bernoulli distribution is a distribution over bits. The parameter + p specifies the probability that a 1 is generated. + Wikipedia - Bernoulli distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The interface for discrete univariate distributions. + + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Draws a sequence of random samples from the distribution. + + a sequence of samples from the distribution. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + The probability of generating a one. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Bernoulli class. + + The probability of generating one. + If the Bernoulli parameter is not in the range [0,1]. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The probability of generating a one. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The probability of generating a one. + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates one sample from the Bernoulli distribution. + + The random source to use. + The probability of generating a one. + A random sample from the Bernoulli distribution. + + + + Samples a Bernoulli distributed random variable. + + A sample from the Bernoulli distribution. + + + + Samples an array of Bernoulli distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a Bernoulli distributed random variable. + + The random number generator to use. + The probability of generating a 1. + A sample from the Bernoulli distribution. + + + + Samples a sequence of Bernoulli distributed random variables. + + The random number generator to use. + The probability of generating a 1. + a sequence of samples from the distribution. + + + + Gets or sets the probability of generating a one. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Implements the binomial distribution. For details about this distribution, see + Wikipedia - Binomial distribution. + + The distribution is parameterized by a probability (between 0.0 and 1.0). + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Stores the normalized binomial probability. + + + + + The number of trials. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Binomial class. + + The success probability of a trial. + The number of trials. + If is not in the interval [0.0,1.0]. + If is negative. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The success probability of a trial. + The number of trials. + false is not in the interval [0.0,1.0] or is negative, true otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The success probability of a trial. + The number of trials. + If is not in the interval [0.0,1.0]. + If is negative. + + + + Computes the cumulative distribution function of the Binomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates a sample from the Binomial distribution without doing parameter checking. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + The number of successful trials. + + + + Samples a Binomially distributed random variable. + + The number of successes in N trials. + + + + Samples an array of Binomially distributed random variables. + + a sequence of successes in N trials. + + + + Samples a binomially distributed random variable. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + The number of successes in trials. + + + + Samples a sequence of binomially distributed random variable. + + The random number generator to use. + The success probability of a trial; must be in the interval [0.0, 1.0]. + The number of trials; must be positive. + a sequence of successes in trials. + + + + Gets or sets the success probability. + + + + + Gets or sets the number of trials. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Implements the categorical distribution. For details about this distribution, see + Wikipedia - Categorical distribution. This + distribution is sometimes called the Discrete distribution. + + The distribution is parameterized by a vector of ratios: in other words, the parameter + does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized + to sum to 1 in floating point representation. + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Initializes a new instance of the Categorical class. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + If any of the probabilities are negative or do not sum to one. + + + + Initializes a new instance of the Categorical class from a . The distribution + will not be automatically updated when the histogram changes. The categorical distribution will have + one value for each bucket and a probability for that value proportional to the bucket count. + + The histogram from which to create the categorical variable. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic. + If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized as this is often impossible using floating point arithmetic. + If any of the probabilities are negative returns false, or if the sum of parameters is 0.0; otherwise true + + + + Sets the parameters of the distribution after checking their validity. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Binomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Computes the cumulative distribution function. This method performs no parameter checking. + If the probability mass was normalized, the resulting cumulative distribution is normalized as well (up to numerical errors). + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + An array representing the unnormalized cumulative distribution function. + + + + Returns one trials from the categorical distribution. + + The random number generator to use. + The (unnormalized) cumulative distribution of the probability distribution. + One sample from the categorical distribution implied by . + + + + Samples a Binomially distributed random variable. + + The number of successful trials. + + + + Samples an array of Bernoulli distributed random variables. + + a sequence of successful trial counts. + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of the cumulative distribution. Not assumed to be normalized. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples one categorical distributed random variable; also known as the Discrete distribution. + + The random number generator to use. + An array of nonnegative ratios. Not assumed to be normalized. + One random integer between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + random integers between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of the cumulative distribution. Not assumed to be normalized. + random integers between 0 and the size of the categorical (exclusive). + + + + Samples a categorically distributed random variable. + + The random number generator to use. + An array of nonnegative ratios. Not assumed to be normalized. + random integers between 0 and the size of the categorical (exclusive). + + + + Returns the inverse of the distribution function for the categorical distribution + specified by the given normalized CDF, for the given probability. + + An array corresponding to a CDF for a categorical distribution. Not assumed to be normalized. + A real number between 0 and 1. + An integer between 0 and the size of the categorical (exclusive), + that corresponds to the inverse CDF for the given probability. + + + + Gets or sets the normalized probability vector of the multinomial. + + Sometimes the normalized probability vector cannot be represented + exactly in a floating point representation. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + Throws a . + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets he mode of the distribution. + + Throws a . + + + + Gets the median of the distribution. + + + + + The Conway-Maxwell-Poisson distribution is a generalization of the Poisson, Geometric and Bernoulli + distributions. It is parameterized by two real numbers "lambda" and "nu". For + + nu = 0 the distribution reverts to a Geometric distribution + nu = 1 the distribution reverts to the Poisson distribution + nu -> infinity the distribution converges to a Bernoulli distribution + + This implementation will cache the value of the normalization constant. + Wikipedia - ConwayMaxwellPoisson distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Since many properties of the distribution can only be computed approximately, the tolerance + level specifies how much error we accept. + + + + + The mean of the distribution. + + + + + The variance of the distribution. + + + + + Caches the value of the normalization constant. + + + + + The lambda parameter. + + + + + The nu parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The lambda parameter. + + + The nu parameter. + + + + + Sets the parameters of the distribution after checking their validity. + + The lambda parameter. + The nu parameter. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The lambda parameter. + The nu parameter. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the ConwayMaxwellPoisson distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes the probability of a specific value. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes the log probability of a specific value. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Computes an approximate normalization constant for the CMP distribution. + + The lambda parameter for the CMP distribution. + The nu parameter for the CMP distribution. + + an approximate normalization constant for the CMP distribution. + + + + + Returns one trials from the distribution. + + The random number generator to use. + The lambda parameter + The nu parameter. + The z parameter. + + One sample from the distribution implied by , , and . + + + + + Samples a Conway-Maxwell-Poisson distributed random variable. + + a sample from the distribution. + + + + Samples a sequence of a Conway-Maxwell-Poisson distributed random variables. + + + a sequence of samples from a Conway-Maxwell-Poisson distribution. + + + + + Samples a random variable. + + The random number generator to use. + The lambda parameter + The nu parameter. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The lambda parameter + The nu parameter. + + + + Gets or sets the lambda parameter. + + The value of the lambda parameter. + + + + Gets or sets the Nu parameter. + + The value of the Nu parameter. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the normalization constant of the Conway-Maxwell-Poisson distribution. + + + + + The discrete uniform distribution is a distribution over integers. The distribution + is parameterized by a lower and upper bound (both inclusive). + Wikipedia - Discrete uniform distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The distribution's lower bound. + + + + + The distribution's upper bound. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the DiscreteUniform class. + + Lower bound. + Upper bound; must be at least as large as . + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Checks whether the parameters of the distribution are valid. + + Lower bound. + Upper bound; must be at least as large as . + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + Lower bound. + Upper bound; must be at least as large as . + When the parameters don't pass the function. + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes the probability of a specific value. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates one sample from the discrete uniform distribution. This method does not do any parameter checking. + + The random source to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + A random sample from the discrete uniform distribution. + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Samples an array of uniformly distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a uniformly distributed random variable. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + A sample from the discrete uniform distribution. + + + + Samples a sequence of uniformly distributed random variables. + + The random number generator to use. + The lower bound of the uniform random variable. + The upper bound of the uniform random variable. + a sequence of samples from the discrete uniform distribution. + + + + Gets or sets the lower bound of the probability distribution. + + + + + Gets or sets the upper bound of the probability distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution; since every element in the domain has the same probability this method returns the middle one. + + + + + Gets the median of the distribution. + + + + + The Geometric distribution is a distribution over positive integers parameterized by one positive real number. + This implementation of the Geometric distribution will never generate 0's. + Wikipedia - geometric distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The geometric distribution parameter. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Geometric class. + + The probability of generating one. + If the Geometric parameter is not in the range [0,1]. + + + + Sets the parameters of the distribution after checking their validity. + + The probability of generating a one. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The probability of generating a one. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the Bernoulli distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Returns one sample from the distribution. + + The random number generator to use. + The p parameter + + One sample from the distribution implied by . + + + + + Samples a Geometric distributed random variable. + + A sample from the Geometric distribution. + + + + Samples an array of Geometric distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The p parameter + + + + Samples a sequence of this random variable. + + The random number generator to use. + The p parameter + + + + Gets or sets the probability of generating a one. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + Throws a not supported exception. + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + This class implements functionality for the Hypergeometric distribution. This distribution is + a discrete probability distribution that describes the number of successes in a sequence + of n draws from a finite population without replacement, just as the binomial distribution + describes the number of successes for draws with replacement + Wikipedia - Hypergeometric distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The size of the population. + + + + + The m parameter of the distribution. + + + + + The n parameter (number to draw) of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Hypergeometric class. + + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates a sample from the Hypergeometric distribution without doing parameter checking. + + The random number generator to use. + The Total parameter of the distribution. + The m parameter of the distribution. + The n parameter of the distribution. + a random number from the Hypergeometric distribution. + + + + Samples a Hypergeometric distributed random variable. + + The number of successes in n trials. + + + + Samples an array of Hypergeometric distributed random variables. + + a sequence of successes in n trials. + + + + Samples a random variable. + + The random number generator to use. + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The population size. + The m parameter of the distribution. + The n parameter of the distribution. + + + + Gets or sets the population size. + + + + + Gets or sets the n parameter of the distribution. + + + + + Gets or sets the m parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the minimum of the distribution. + + + + + Gets the maximum of the distribution. + + + + + The negative binomial is a distribution over the natural numbers with two parameters r,p. For the special + case that r is an integer one can interpret the distribution as the number of tails before the r'th head + when the probability of head is p. + Wikipedia - NegativeBinomial distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The r parameter of the distribution. + + + + + The p parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + The number of trials. + The probability of a trial resulting in success. + + + + Sets the parameters of the distribution after checking their validity. + + The number of trials. + The probability of a trial resulting in success. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The number of trials. + The probability of a trial resulting in success. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the NegativeBinomial distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Samples a negative binomial distributed random variable. + + The random number generator to use. + The r parameter. + The p parameter. + a sample from the distribution. + + + + Samples a NegativeBinomial distributed random variable. + + a sample from the distribution. + + + + Samples an array of NegativeBinomial distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The r parameter. + The p parameter. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The r parameter. + The p parameter. + + + + Gets or sets the number of trials. + + + + + Gets or sets the probability of success. + + + + + Gets or sets the distribution's random number generator. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Pseudo-random generation of poisson distributed deviates. + + + Distribution is described at Wikipedia - Poisson distribution. + Knuth's method is used to generate Poisson distributed random variables. + f(x) = exp(-λ)*λ^x/x!; + + + + + The Poisson distribution parameter λ. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + The Poisson distribution parameter λ. + If is equal or less then 0.0. + + + + Sets the parameters of the distribution after checking their validity. + + The mean (λ) of the distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The mean (λ) of the distribution. + true when the parameters are valid, false otherwise. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the cumulative distribution function of the Poisson distribution. + + The location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + the probability mass at location . + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + the log probability mass at location . + + + + Generates one sample from the Poisson distribution. + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + + + + Generates one sample from the Poisson distribution by Knuth's method. + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + + + + Generates one sample from the Poisson distribution by "Rejection method PA". + + The random source to use. + The Poisson distribution parameter λ. + A random sample from the Poisson distribution. + "Rejection method PA" from "The Computer Generation of Poisson Random Variables" by A. C. Atkinson, + Journal of the Royal Statistical Society Series C (Applied Statistics) Vol. 28, No. 1. (1979) + The article is on pages 29-35. The algorithm given here is on page 32. + + + + Samples a Poisson distributed random variable. + + A sample from the Poisson distribution. + + + + Samples an array of Poisson distributed random variables. + + a sequence of successes in N trials. + + + + Samples a Poisson distributed random variable. + + The random number generator to use. + The Poisson distribution parameter λ. + A sample from the Poisson distribution. + + + + Samples a sequence of Poisson distributed random variables. + + The random number generator to use. + The Poisson distribution parameter λ. + a sequence of samples from the distribution. + + + + Gets or sets the Poisson distribution parameter λ. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + Approximation, see Wikipedia Poisson distribution + + + + Gets the skewness of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + Approximation, see Wikipedia Poisson distribution + + + + Zipf's law, an empirical law formulated using mathematical statistics, refers to the fact + that many types of data studied in the physical and social sciences can be approximated with + a Zipfian distribution, one of a family of related discrete power law probability distributions. + For details about this distribution, see + Wikipedia - Zipf distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The s parameter of the distribution. + + + + + The n parameter of the distribution. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The s parameter of the distribution. + + + The n parameter of the distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The s parameter of the distribution. + The n parameter of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + The s parameter of the distribution. + The n parameter of the distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Computes the cumulative distribution function of the distribution. + + The integer location at which to compute the cumulative density. + the cumulative density at . + + + + Computes values of the probability mass function. + + The location in the domain where we want to evaluate the probability mass function. + + the probability mass at location . + + + + + Computes values of the log probability mass function. + + The location in the domain where we want to evaluate the log probability mass function. + + the log probability mass at location . + + + + + Generates a sample from the Zipf distribution without doing parameter checking. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + a random number from the Zipf distribution. + + + + Draws a random sample from the distribution. + + a sample from the distribution. + + + + Samples an array of zipf distributed random variables. + + a sequence of samples from the distribution. + + + + Samples a random variable. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + + + + Samples a sequence of this random variable. + + The random number generator to use. + The s parameter of the distribution. + The n parameter of the distribution. + + + + Gets or sets the s parameter of the distribution. + + + + + Gets or sets the n parameter of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the standard deviation of the distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets the skewness of the distribution. + + + + + Gets the mode of the distribution. + + + + + Gets the median of the distribution. + + + + + Gets the smallest element in the domain of the distributions which can be represented by an integer. + + + + + Gets the largest element in the domain of the distributions which can be represented by an integer. + + + + + Implements the multivariate Dirichlet distribution. For details about this distribution, see + Wikipedia - Dirichlet distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The Dirichlet distribution parameters. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Dirichlet class. The distribution will + be initialized with the default random number generator. + + An array with the Dirichlet parameters. + + + + Initializes a new instance of the class. + + random number generator. + + + The value of each parameter of the Dirichlet distribution. + + + The dimension of the Dirichlet distribution. + + + + + Checks whether the parameters of the distribution are valid: no + parameter can be less than zero and at least one parameter should be + larger than zero. + + The parameters of the Dirichlet distribution. + + true when the parameters are valid, false + otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The parameters of the Dirichlet distribution. + When the parameters don't pass the function. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Computes the density of the distribution. + + The locations at which to compute the density. + the density at . + The Dirichlet distribution requires that the sum of the components of x equals 1. + You can also leave out the last component, and it will be computed from the others. + + + + Computes the log density of the distribution. + + The locations at which to compute the density. + the density at . + + + + Samples a Dirichlet distributed random vector. + + A sample from this distribution. + + + + Samples a Dirichlet distributed random vector. + + The random number generator to use. + The Dirichlet distribution parameter. + a sample from the distribution. + + + + Gets the dimension of the Dirichlet distribution. + + + + + Gets or sets the parameters of the Dirichlet distribution. + + + + + Gets the sum of the Dirichlet parameters. + + + + + Gets the mean of the Dirichlet distribution. + + + + + Gets the variance of the Dirichlet distribution. + + + + + Gets the entropy of the distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + This class implements functionality for the inverse Wishart distribution. This distribution is + parameterized by the degrees of freedom nu and the scale matrix S. The inverse Wishart distribution + is the conjugate prior for the covariance matrix of a multivariate normal distribution. + Wikipedia - Inverse-Wishart distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The degrees of freedom for the inverse Wishart distribution. + + + + + The scale matrix for the inverse Wishart distribution. + + + + + Caches the Cholesky factorization of the scale matrix. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the inverse Wishart distribution. + + + The scale matrix for the inverse Wishart distribution. + + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + true when the parameters are valid, false otherwise. + + + + Evaluates the probability density function for the inverse Wishart distribution. + + The matrix at which to evaluate the density at. + If the argument does not have the same dimensions as the scale matrix. + the density at . + + + + Samples an inverse Wishart distributed random variable by sampling + a Wishart random variable and inverting the matrix. + + a sample from the distribution. + + + + Samples an inverse Wishart distributed random variable by sampling + a Wishart random variable and inverting the matrix. + + The random number generator to use. + The degrees of freedom. + The scale matrix. + a sample from the distribution. + + + + Gets or sets the degrees of freedom for the inverse Wishart distribution. + + + + + Gets or sets the scale matrix for the inverse Wishart distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean. + + The mean of the distribution. + + + + Gets the mode of the distribution. + + The mode of the distribution. + A. O'Hagan, and J. J. Forster (2004). Kendall's Advanced Theory of Statistics: Bayesian Inference. 2B (2 ed.). Arnold. ISBN 0-340-80752-0. + + + + Gets the variance of the distribution. + + The variance of the distribution. + Kanti V. Mardia, J. T. Kent and J. M. Bibby (1979). Multivariate Analysis. + + + + This class implements functionality for matrix valued normal distributions. The distribution + is parameterized by a mean matrix (M), a covariance matrix for the rows (V) and a covariance matrix + for the columns (K). If the dimension of M is d-by-m then V is d-by-d and K is m-by-m. + Wikipedia - MatrixNormal distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The mean of the matrix normal distribution. + + + + + The covariance matrix for the rows. + + + + + The covariance matrix for the columns. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The mean of the matrix normal. + + + The covariance matrix for the rows. + + + The covariance matrix for the columns. + + + If the dimensions of the mean and two covariance matrices don't match. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Sets the parameters of the distribution after checking their validity. + + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + true when the parameters are valid, false otherwise. + + + + Evaluates the probability density function for the matrix normal distribution. + + The matrix at which to evaluate the density at. + the density at + If the argument does not have the correct dimensions. + + + + Samples a matrix normal distributed random variable. + + A random number from this distribution. + + + + Samples a matrix normal distributed random variable. + + The random number generator to use. + The mean of the matrix normal. + The covariance matrix for the rows. + The covariance matrix for the columns. + If the dimensions of the mean and two covariance matrices don't match. + a sequence of samples from the distribution. + + + + Samples a vector normal distributed random variable. + + The random number generator to use. + The mean of the vector normal distribution. + The covariance matrix of the vector normal distribution. + a sequence of samples from defined distribution. + + + + Samples a vector normal distributed random variable. + + The random number generator to use. + The mean of the vector normal distribution. + The Cholesky factorization of the covariance matrix. + a sequence of samples from defined distribution. + + + + Gets or sets the mean. (M) + + The mean of the distribution. + + + + Gets or sets the row covariance. (V) + + The row covariance. + + + + Gets or sets the column covariance. (K) + + The column covariance. + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Implements the multinomial distribution. For details about this distribution, see + Wikipedia - Multinomial distribution. + + The distribution is parameterized by a vector of ratios: in other words, the parameter + does not have to be normalized and sum to 1. The reason is that some vectors can't be exactly normalized + to sum to 1 in floating point representation. + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + Stores the normalized multinomial probabilities. + + + + + The number of trials. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the Multinomial class. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + If any of the probabilities are negative or do not sum to one. + If is negative. + + + + Initializes a new instance of the Multinomial class from histogram . The distribution will + not be automatically updated when the histogram changes. + + Histogram instance + The number of trials. + If any of the probabilities are negative or do not sum to one. + If is negative. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Checks whether the parameters of the distribution are valid. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + If any of the probabilities are negative returns false, + if the sum of parameters is 0.0, or if the number of trials is negative; otherwise true. + + + + Sets the parameters of the distribution after checking their validity. + + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + When the parameters don't pass the function. + + + + Computes values of the probability mass function. + + Non-negative integers x1, ..., xk + The probability mass at location . + When is null. + When length of is not equal to event probabilities count. + + + + Computes values of the log probability mass function. + + Non-negative integers x1, ..., xk + The log probability mass at location . + When is null. + When length of is not equal to event probabilities count. + + + + Samples one multinomial distributed random variable. + + the counts for each of the different possible values. + + + + Samples a sequence multinomially distributed random variables. + + a sequence of counts for each of the different possible values. + + + + Samples one multinomial distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of trials. + the counts for each of the different possible values. + + + + Samples a multinomially distributed random variable. + + The random number generator to use. + An array of nonnegative ratios: this array does not need to be normalized + as this is often impossible using floating point arithmetic. + The number of variables needed. + a sequence of counts for each of the different possible values. + + + + Gets or sets the proportion of ratios. + + + + + Gets or sets the number of trials. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + + + + Gets the variance of the distribution. + + + + + Gets the skewness of the distribution. + + + + + This structure represents the type over which the distribution + is defined. + + + + + The mean value. + + + + + The precision value. + + + + + Initializes a new instance of the struct. + + + The mean of the pair. + + + The precision of the pair. + + + + + Gets or sets the mean of the pair. + + + + + Gets or sets the precision of the pair. + + + + + The distribution is the conjugate prior distribution for the + distribution. It specifies a prior over the mean and precision of the distribution. + It is parameterized by four numbers: the mean location, the mean scale, the precision shape and the + precision inverse scale. + The distribution NG(mu, tau | mloc,mscale,psscale,pinvscale) = Normal(mu | mloc, 1/(mscale*tau)) * Gamma(tau | psscale,pinvscale). + The following degenerate cases are special: when the precision is known, + the precision shape will encode the value of the precision while the precision inverse scale is positive + infinity. When the mean is known, the mean location will encode the value of the mean while the scale + will be positive infinity. A completely degenerate NormalGamma distribution with known mean and precision is possible as well. + Wikipedia - Normal-Gamma distribution. + + The distribution will use the by default. + Users can get/set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The location of the mean. + + + + + The scale of the mean. + + + + + The shape of the precision. + + + + + The inverse scale of the precision. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The location of the mean. + + + The scale of the mean. + + + The shape of the precision. + + + The inverse scale of the precision. + + + + + Checks whether the parameters of the distribution are valid. + + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + true when the parameters are valid, false otherwise. + + + + Sets the parameters of the distribution after checking their validity. + + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + When the parameters don't pass the function. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Returns the marginal distribution for the mean of the NormalGamma distribution. + + the marginal distribution for the mean of the NormalGamma distribution. + + + + Returns the marginal distribution for the precision of the distribution. + + The marginal distribution for the precision of the distribution/ + + + + Evaluates the probability density function for a NormalGamma distribution. + + The mean/precision pair of the distribution + Density value + + + + Evaluates the probability density function for a NormalGamma distribution. + + The mean of the distribution + The precision of the distribution + Density value + + + + Evaluates the log probability density function for a NormalGamma distribution. + + The mean/precision pair of the distribution + The log of the density value + + + + Evaluates the log probability density function for a NormalGamma distribution. + + The mean of the distribution + The precision of the distribution + The log of the density value + + + + Generates a sample from the NormalGamma distribution. + + a sample from the distribution. + + + + Generates a sequence of samples from the NormalGamma distribution + + a sequence of samples from the distribution. + + + + Generates a sample from the NormalGamma distribution. + + The random number generator to use. + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + a sample from the distribution. + + + + Generates a sequence of samples from the NormalGamma distribution + + The random number generator to use. + The location of the mean. + The scale of the mean. + The shape of the precision. + The inverse scale of the precision. + a sequence of samples from the distribution. + + + + Gets or sets the location of the mean. + + + + + Gets or sets the scale of the mean. + + + + + Gets or sets the shape of the precision. + + + + + Gets or sets the inverse scale of the precision. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + The mean of the distribution. + + + + Gets the variance of the distribution. + + The mean of the distribution. + + + + This class implements functionality for the Wishart distribution. This distribution is + parameterized by the degrees of freedom nu and the scale matrix S. The Wishart distribution + is the conjugate prior for the precision (inverse covariance) matrix of the multivariate + normal distribution. + Wikipedia - Wishart distribution. + + The distribution will use the by default. + Users can set the random number generator by using the property. + The statistics classes will check all the incoming parameters whether they are in the allowed + range. This might involve heavy computation. Optionally, by setting Control.CheckDistributionParameters + to false, all parameter checks can be turned off. + + + + The degrees of freedom for the Wishart distribution. + + + + + The scale matrix for the Wishart distribution. + + + + + Caches the Cholesky factorization of the scale matrix. + + + + + The distribution's random number generator. + + + + + Initializes a new instance of the class. + + + The degrees of freedom for the Wishart distribution. + + + The scale matrix for the Wishart distribution. + + + + + Sets the parameters of the distribution after checking their validity. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + When the parameters don't pass the function. + + + + Checks whether the parameters of the distribution are valid. + + The degrees of freedom for the Wishart distribution. + The scale matrix for the Wishart distribution. + true when the parameters are valid, false otherwise. + + + + A string representation of the distribution. + + a string representation of the distribution. + + + + Evaluates the probability density function for the Wishart distribution. + + The matrix at which to evaluate the density at. + If the argument does not have the same dimensions as the scale matrix. + the density at . + + + + Samples a Wishart distributed random variable using the method + Algorithm AS 53: Wishart Variate Generator + W. B. Smith and R. R. Hocking + Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345 + + A random number from this distribution. + + + + Samples a Wishart distributed random variable using the method + Algorithm AS 53: Wishart Variate Generator + W. B. Smith and R. R. Hocking + Applied Statistics, Vol. 21, No. 3 (1972), pp. 341-345 + + The random number generator to use. + The degrees of freedom. + The scale matrix. + a sequence of samples from the distribution. + + + + Samples the distribution. + + The random number generator to use. + The nu parameter to use. + The S parameter to use. + The cholesky decomposition to use. + a random number from the distribution. + + + + Gets or sets the degrees of freedom for the Wishart distribution. + + + + + Gets or sets the scale matrix for the Wishart distribution. + + + + + Gets or sets the random number generator which is used to draw random samples. + + + + + Gets the mean of the distribution. + + The mean of the distribution. + + + + Gets the mode of the distribution. + + The mode of the distribution. + + + + Gets the variance of the distribution. + + The variance of the distribution. + + + + Compound Monthly Return or Geometric Return or Annualized Return + + + + + + + Average Gain or Gain Mean + This is a simple average (arithmetic mean) of the periods with a gain. It is calculated by summing the returns for gain periods (return 0) + and then dividing the total by the number of gain periods. + + + + http://www.offshore-library.com/kb/statistics.php + + + + Average Loss or LossMean + This is a simple average (arithmetic mean) of the periods with a loss. It is calculated by summing the returns for loss periods (return < 0) + and then dividing the total by the number of loss periods. + + + + http://www.offshore-library.com/kb/statistics.php + + + + Calculation is similar to Standard Deviation , except it calculates an average (mean) return only for periods with a gain + and measures the variation of only the gain periods around the gain mean. Measures the volatility of upside performance. + © Copyright 1996, 1999 Gary L.Gastineau. First Edition. © 1992 Swiss Bank Corporation. + + + + + + + Similar to standard deviation, except this statistic calculates an average (mean) return for only the periods with a loss and then + measures the variation of only the losing periods around this loss mean. This statistic measures the volatility of downside performance. + + + + http://www.offshore-library.com/kb/statistics.php + + + + This measure is similar to the loss standard deviation except the downside deviation + considers only returns that fall below a defined minimum acceptable return (MAR) rather than the arithmetic mean. + For example, if the MAR is 7%, the downside deviation would measure the variation of each period that falls below + 7%. (The loss standard deviation, on the other hand, would take only losing periods, calculate an average return for + the losing periods, and then measure the variation between each losing return and the losing return average). + + + + + + + + A measure of volatility in returns below the mean. It's similar to standard deviation, but it only + looks at periods where the investment return was less than average return. + + + + + + + Measures a fund’s average gain in a gain period divided by the fund’s average loss in a losing + period. Periods can be monthly or quarterly depending on the data frequency. + + + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + + + + Find both complex roots of the quadratic equation c + b*x + a*x^2 = 0. + Note the special coefficient order ascending by exponent (consistent with polynomials). + + + + + Least-Squares Curve Fitting Routines + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning its best fitting parameters as [a, b] array. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning a function y' for the best fitting line. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Evaluate.Polynomial. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning a function y' for the best fitting polynomial. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (X,y) = ((x0,x1,..,xk),y) to an arbitrary linear combination y : X -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T), + returning its best fitting parameters as [p0, p1, p2, ..., pk] array. + + + + + Least-Squares fitting the points (T,y) = (T,y) to an arbitrary linear combination y : X -> p0*f0(T) + p1*f1(T) + ... + pk*fk(T), + returning a function y' for the best fitting combination. + + + + + Globalized String Handling Helpers + + + + + Tries to get a from the format provider, + returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Tries to get a from the format + provider, returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Tries to get a from the format provider, returning the current culture if it fails. + + + An that supplies culture-specific + formatting information. + + A instance. + + + + Globalized Parsing: Tokenize a node by splitting it into several nodes. + + Node that contains the trimmed string to be tokenized. + List of keywords to tokenize by. + keywords to skip looking for (because they've already been handled). + + + + Globalized Parsing: Parse a double number + + First token of the number. + The parsed double number using the current culture information. + + + + + Globalized Parsing: Parse a float number + + First token of the number. + The parsed float number using the current culture information. + + + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + Complex Fast (FFT) Implementation of the Discrete Fourier Transform (DFT). + + + + + Generate the bluestein sequence for the provided problem size. + + Number of samples. + Bluestein sequence exp(I*Pi*k^2/N) + + + + Convolution with the bluestein sequence (Parallel Version). + + Sample Vector. + + + + Swap the real and imaginary parts of each sample. + + Sample Vector. + + + + Bluestein generic FFT for arbitrary sized sample vectors. + + Time-space sample vector. + Fourier series exponent sign. + + + + Bluestein forward FFT for arbitrary sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Bluestein inverse FFT for arbitrary sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Naive generic DFT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Fourier series exponent sign. + Corresponding frequency-space vector. + + + + Naive forward DFT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Fourier Transform Convention Options. + Corresponding frequency-space vector. + + + + Naive inverse DFT, useful e.g. to verify faster algorithms. + + Frequency-space sample vector. + Fourier Transform Convention Options. + Corresponding time-space vector. + + + + Extract the exponent sign to be used in forward transforms according to the + provided convention options. + + Fourier Transform Convention Options. + Fourier series exponent sign. + + + + Rescale FFT-the resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Rescale the iFFT-resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Radix-2 Reorder Helper Method + + Sample type + Sample vector + + + + Radix-2 Step Helper Method + + Sample vector. + Fourier series exponent sign. + Level Group Size. + Index inside of the level. + + + + Radix-2 generic FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier series exponent sign. + + + + + Radix-2 generic FFT for power-of-two sample vectors (Parallel Version). + + Sample vector, where the FFT is evaluated in place. + Fourier series exponent sign. + + + + + Radix-2 forward FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + + Radix-2 inverse FFT for power-of-two sized sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + + Fast (FHT) Implementation of the Discrete Hartley Transform (DHT). + + + Fast (FHT) Implementation of the Discrete Hartley Transform (DHT). + + + + + Naive generic DHT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Corresponding frequency-space vector. + + + + Naive forward DHT, useful e.g. to verify faster algorithms. + + Time-space sample vector. + Hartley Transform Convention Options. + Corresponding frequency-space vector. + + + + Naive inverse DHT, useful e.g. to verify faster algorithms. + + Frequency-space sample vector. + Hartley Transform Convention Options. + Corresponding time-space vector. + + + + Rescale FFT-the resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Rescale the iFFT-resulting vector according to the provided convention options. + + Fourier Transform Convention Options. + Sample Vector. + + + + Fourier Transform Convention + + + + + Inverse integrand exponent (forward: positive sign; inverse: negative sign). + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction. + + + + + Don't scale at all (neither on forward nor on inverse transformation). + + + + + Universal; Symmetric scaling and common exponent (used in Maple). + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction (used in Matlab). [= AsymmetricScaling] + + + + + Inverse integrand exponent; No scaling at all (used in all Numerical Recipes based implementations). [= InverseExponent | NoScaling] + + + + + Hartley Transform Convention + + + + + Only scale by 1/N in the inverse direction; No scaling in forward direction. + + + + + Don't scale at all (neither on forward nor on inverse transformation). + + + + + Universal; Symmetric scaling. + + + + + Integral Transforms (including FFT). + + + + + Shared internal DET algorithm. + + + + + Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + + + + Applies the forward Fast Fourier Transform (FFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + + + + Applies the inverse Fast Fourier Transform (iFFT) to arbitrary-length sample vectors. + + Sample vector, where the FFT is evaluated in place. + Fourier Transform Convention Options. + + + + Analytic integration algorithm for smooth functions with no discontinuities + or derivative discontinuities and no poles inside the interval. + + + + + Maximum number of iterations, until the asked + maximum error is (likely to be) satisfied. + + + + + Precomputed abscissa vector per level. + + + + + Precomputed weight vector per level. + + + + + Abscissa vector per level provider. + + + + + Weight vector per level provider. + + + + + Approximate the integral by the double exponential transformation + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Abscissa vector per level provider. + + Level Enumerator. + + + + Weight vector per level provider. + + Level Enumerator. + + + + Compute the abscissa vector for a single level. + + The level to evaluate the abscissa vector for. + Abscissa Vector. + + + + Compute the weight vector for a single level. + + The level to evaluate the weight vector for. + Weight Vector. + + + + Approximation algorithm for definite integrals by the Trapezium rule of the Newton-Cotes family. + + + Wikipedia - Trapezium Rule + + + + + Direct 2-point approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Composite N-point approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Number of composite subdivision partitions. + Approximation of the finite integral in the given interval. + + + + Adaptive approximation of the definite integral in the provided interval by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Adaptive approximation of the definite integral by the trapezium rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Abscissa vector per level provider. + Weight vector per level provider. + First Level Step + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Approximation algorithm for definite integrals by Simpson's rule. + + + + + Direct 3-point approximation of the definite integral in the provided interval by Simpson's rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Composite N-point approximation of the definite integral in the provided interval by Simpson's rule. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Even number of composite subdivision partitions. + Approximation of the finite integral in the given interval. + + + + Numeric Integration (Quadrature). + + + + + Shared internal DET algorithm. + + + + + Approximation of the definite integral of an analytic smooth function on a closed interval. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + The expected relative accuracy of the approximation. + Approximation of the finite integral in the given interval. + + + + Approximation of the definite integral of an analytic smooth function on a closed interval. + + The analytic smooth function to integrate. + Where the interval starts, inclusive and finite. + Where the interval stops, inclusive and finite. + Approximation of the finite integral in the given interval. + + + + Akima Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Interpolation within the range of a discrete set of known data points. + + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the AkimaSplineInterpolation class. + + + + + Initializes a new instance of the AkimaSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Evaluate the spline derivatives as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Derivative Vector + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Coefficient Vector + + + + Three-Point Differentiation Helper. + + Sample Points t. + Sample Values x(t). + Index of the point of the differentiation. + Index of the first sample. + Index of the second sample. + Index of the third sample. + The derivative approximation. + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Barycentric Interpolation Algorithm. + + + This algorithm neither supports differentiation nor integration. + + + + + Sample Points t. + + + + + Sample Values x(t). + + + + + Barycentric Weights w(t). + + + + + Initializes a new instance of the BarycentricInterpolation class. + + + + + Initializes a new instance of the BarycentricInterpolation class. + + Sample Points t (no sorting assumed) + Sample Values x(t) + Barycentric weights w(t) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Sample Points t + Sample Values x(t) + Barycentric weights w(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Rational Interpolation (with poles) using Roland Bulirsch and Josef Stoer's Algorithm. + + + + This algorithm supports neither differentiation nor integration. + + + + + + Sample Points t. + + + + + Spline Values x(t). + + + + + Initializes a new instance of the BulirschStoerRationalInterpolation class. + + + + + Initializes a new instance of the BulirschStoerRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initialize the interpolation method with the given sample pairs. + + Sample Points t + Sample Values x(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Cubic Hermite Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the CubicHermiteSplineInterpolation class. + + + + + Initializes a new instance of the CubicHermiteSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Sample Derivatives x'(t) + Spline Coefficient Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Cubic Spline Interpolation Algorithm with continuous first and second derivatives. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the CubicSplineInterpolation class. + + + + + Initializes a new instance of the CubicSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initializes a new instance of the CubicSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + + + + Evaluate the spline derivatives as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + Spline Derivative Vector + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Condition of the left boundary. + Left boundary value. Ignored in the parabolic case. + Condition of the right boundary. + Right boundary value. Ignored in the parabolic case. + Spline Coefficient Vector + + + + Tridiagonal Solve Helper. + + The a-vector[n]. + The b-vector[n], will be modified by this function. + The c-vector[n]. + The d-vector[n], will be modified by this function. + The x-vector[n] + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Barycentric Polynomial Interpolation where the given sample points are equidistant. + + + This algorithm neither supports differentiation nor integration. + + + + + Internal Barycentric Interpolation + + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + Left bound of the sample point interval. + Right bound of the sample point interval. + Sample Values x(t) where t is equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initializes a new instance of the EquidistantPolynomialInterpolation class. + + Equidistant Sample Points t = a+(b-a)*i/(n-1) + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initialize the interpolation method with the given sampls in the interval [leftBound,rightBound]. + + Left bound of the sample point interval. + Right bound of the sample point interval. + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Equidistant Sample Points t = a+(b-a)*i/(n-1) + Sample Values x(t) where t are equidistant over [a,b], i.e. x[i] = x(a+(b-a)*i/(n-1)) + + + + Evaluate the barycentric weights as used + internally by this interpolation algorithm. + + Count of Sample Values x(t). + Barycentric Weight Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Barycentric Rational Interpolation without poles, using Mike Floater and Kai Hormann's Algorithm. + + + This algorithm neither supports differentiation nor integration. + + + + + Internal Barycentric Interpolation + + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initializes a new instance of the FloaterHormannRationalInterpolation class. + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + + + + Initialize the interpolation method with the given sample set. + + + The interpolation scheme order will be set to 3. + + Sample Points t (no sorting assumed) + Sample Values x(t) + + + + Initialize the interpolation method with the given sample set (no sorting assumed). + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + + + + Evaluate the barycentric weights as used + internally by this interpolation algorithm. + + Sample Points t + Sample Values x(t) + + Order of the interpolation scheme, 0 <= order <= N. + In most cases a value between 3 and 8 gives good results. + + Barycentric Weight Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Linear Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Internal Spline Interpolation + + + + + Initializes a new instance of the LinearSplineInterpolation class. + + + + + Initializes a new instance of the LinearSplineInterpolation class. + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t, sorted ascending. + Sample Values x(t) + + + + Evaluate the spline coefficients as used + internally by this interpolation algorithm. + + Sample Points t, sorted ascending. + Sample Values x(t) + Spline Coefficient Vector + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Lagrange Polynomial Interpolation using Neville's Algorithm. + + + + This algorithm supports differentiation, but doesn't support integration. + + + When working with equidistant or Chebyshev sample points it is + recommended to use the barycentric algorithms specialized for + these cases instead of this arbitrary Neville algorithm. + + + + + + Sample Points t. + + + + + Spline Values x(t). + + + + + Initializes a new instance of the NevillePolynomialInterpolation class. + + + + + Initializes a new instance of the NevillePolynomialInterpolation class. + + Sample Points t + Sample Values x(t) + + + + Initialize the interpolation method with the given sample pairs. + + Sample Points t + Sample Values x(t) + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Third-Degree Spline Interpolation Algorithm. + + + This algorithm supports both differentiation and integration. + + + + + Sample Points t. + + + + + Spline Coefficients c(t). + + + + + Number of samples. + + + + + Initializes a new instance of the SplineInterpolation class. + + + + + Initializes a new instance of the SplineInterpolation class. + + Sample Points t (length: N), sorted ascending. + Spline Coefficients (length: 4*(N-1)). + + + + Initialize the interpolation method with the given spline coefficients (sorted by the sample points t). + + Sample Points t (length: N), sorted ascending. + Spline Coefficients (length: 4*(N-1)). + + + + Interpolate at point t. + + Point t to interpolate at. + Interpolated value x(t). + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated first derivative at point t. + + + + + + Differentiate at point t. + + Point t to interpolate at. + Interpolated value x(t) + Interpolated second derivative at point t. + Interpolated first derivative at point t. + + + + + + Integrate up to point t. + + Right bound of the integration interval [a,t]. + Interpolated definite integral over the interval [a,t]. + + + + + Find the index of the greatest sample point smaller than t. + + The value to look for. + The sample point index. + + + + Gets a value indicating whether the algorithm supports differentiation (interpolated derivative). + + + + + + + Gets a value indicating whether the algorithm supports integration (interpolated quadrature). + + + + + + Interpolation Factory. + + + + + Creates an interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a linear spline interpolation based on arbitrary points (sorted ascending). + + The sample points t, sorted ascending. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a floater hormann rational pole-free interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Create a burlish stoer rational interpolation based on arbitrary points. + + The sample points t. Supports both lists and arrays. + The sample point values x(t). Supports both lists and arrays. + + An interpolation scheme optimized for the given sample points and values, + which can then be used to compute interpolations and extrapolations + on arbitrary points. + + + + + Left and right boundary conditions. + + + + + Natural Boundary (Zero second derivative). + + + + + Parabolically Terminated boundary. + + + + + Fixed first derivative at the boundary. + + + + + Fixed second derivative at the boundary. + + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + Complex32 version of the class. + + + + + Defines the base class for Matrix classes. + + + Defines the base class for Matrix classes. + + Supported data types are double, single, , and . + + + + The value of 1.0. + + + + + The value of 0.0. + + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of this matrix with a scalar. + + The scalar to multiply with. + The result of the multiplication. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Divides each element of this matrix with a scalar. + + The scalar to divide with. + The result of the division. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix by a vector and returns the result. + + The vector to multiply with. + The result of the multiplication. + If is . + If this.ColumnCount != rightSide.Count. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ). + + The vector to multiply with. + The result of the multiplication. + If is . + If this.RowCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.ColumnCount. + If the result matrix's dimensions are not the this.RowCount x other.RowCount. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.ColumnCount. + If the other matrix is . + The result of the multiplication. + + + + Multiplies the transpose of this matrix by a vector and returns the result. + + The vector to multiply with. + The result of the multiplication. + If is . + If this.RowCount != rightSide.Count. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Rows != other.RowCount. + If the result matrix's dimensions are not the this.ColumnCount x other.ColumnCount. + + + + Multiplies the transpose of this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Rows != other.RowCount. + If the other matrix is . + The result of the multiplication. + + + + Negate each element of this matrix. + + A matrix containing the negated values. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + If the result matrix is . + if the result matrix's dimensions are not the same as this matrix. + + + + Complex conjugate each element of this matrix. + + A matrix containing the conjugated values. + + + + Complex conjugate each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + If the result matrix is . + if the result matrix's dimensions are not the same as this matrix. + + + + Pointwise multiplies this matrix with another matrix. + + The matrix to pointwise multiply with this one. + If the other matrix is . + If this matrix and are not the same size. + A new matrix that is the pointwise multiplication of this matrix and . + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + If the other matrix is . + If the result matrix is . + If this matrix and are not the same size. + If this matrix and are not the same size. + + + + Pointwise divide this matrix by another matrix. + + The matrix to pointwise subtract this one by. + If the other matrix is . + If this matrix and are not the same size. + A new matrix that is the pointwise division of this matrix and . + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + If the other matrix is . + If the result matrix is . + If this matrix and are not the same size. + If this matrix and are not the same size. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + A matrix containing the results. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Calculates the rank of the matrix + + effective numerical rank, obtained from SVD + + + Calculates the condition number of this matrix. + The condition number of the matrix. + The condition number is calculated using singular value decomposition. + + + Computes the determinant of this matrix. + The determinant of this matrix. + + + Computes the inverse of this matrix. + The inverse of this matrix. + + + + Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N + with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns. + + The other matrix. + If other is . + The kronecker product of the two matrices. + + + + Computes the Kronecker product of this matrix with the given matrix. The new matrix is M-by-N + with M = this.Rows * lower.Rows and N = this.Columns * lower.Columns. + + The other matrix. + The kronecker product of the two matrices. + If other is . + If the result matrix is . + If the result matrix's dimensions are not (this.Rows * lower.rows) x (this.Columns * lower.Columns). + + + + Normalizes the columns of a matrix. + + The norm under which to normalize the columns under. + A normalized version of the matrix. + If the parameter p is not positive. + + + + Normalizes the rows of a matrix. + + The norm under which to normalize the rows under. + A normalized version of the matrix. + If the parameter p is not positive. + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns a that describes the type, dimensions and shape of this matrix. + + + + + Returns a that represents the content of this matrix. + + + + + Returns a that represents the content of this matrix. + + + + + Returns a that summarizes this matrix. + + + + + Returns a that summarizes this matrix. + The maximum number of cells can be configured in the class. + + + + + Returns a that summarizes this matrix. + The maximum number of cells can be configured in the class. + The format string is ignored. + + + + + Initializes a new instance of the Matrix class. + + + + + Constructs matrix from a list of column vectors. + + The vectors to construct the matrix from. + The matrix constructed from the list of column vectors. + Creates a matrix of size Max([i].Count) x .Count + + + + Constructs matrix from a list of row vectors. + + The vectors to construct the matrix from. + The matrix constructed from the list of row vectors. + Creates a matrix of size Max(.Count) x [i].Count + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + + + + Sets the value of the given element without range checking. + + + The row of the element. + + + The column of the element. + + + The value to set the element to. + + + + + Sets all values to zero. + + + + + Sets all values of a column to zero. + + + + + Sets all values of a row to zero. + + + + + Sets all values of a submatrix to zero. + + + + + Creates a clone of this instance. + + + A clone of the instance. + + + + + Copies the elements of this matrix to the given matrix. + + + The matrix to copy values into. + + + If target is . + + + If this and the target matrix do not have the same dimensions.. + + + + + Creates a Matrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A Matrix with the given dimensions. + + + Creates a matrix of the same matrix type as the current matrix. + + + + + Creates a Vector with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A Vector with the given dimension. + + + Creates a vector of the same type as the current matrix. + + + + + Copies a row into an Vector. + + The row to copy. + A Vector containing the copied elements. + If is negative, + or greater than or equal to the number of rows. + + + + Copies a row into to the given Vector. + + The row to copy. + The Vector to copy the row into. + If the result vector is . + If is negative, + or greater than or equal to the number of rows. + If this.Columns != result.Count. + + + + Copies the requested row elements into a new Vector. + + The row to copy elements from. + The column to start copying from. + The number of elements to copy. + A Vector containing the requested elements. + If: + is negative, + or greater than or equal to the number of rows. + is negative, + or greater than or equal to the number of columns. + (columnIndex + length) >= Columns. + If is not positive. + + + + Copies the requested row elements into a new Vector. + + The row to copy elements from. + The column to start copying from. + The number of elements to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If is negative, + or greater than or equal to the number of rows. + If + + is greater than or equal to the number of rows. + If is not positive. + If result.Count < length. + + + + Copies a column into a new Vector>. + + The column to copy. + A Vector containing the copied elements. + If is negative, + or greater than or equal to the number of columns. + + + + Copies a column into to the given Vector. + + The column to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If this.Rows != result.Count. + + + + Copies the requested column elements into a new Vector. + + The column to copy elements from. + The row to start copying from. + The number of elements to copy. + A Vector containing the requested elements. + If: + is negative, + or greater than or equal to the number of columns. + is negative, + or greater than or equal to the number of rows. + (rowIndex + length) >= Rows. + + If is not positive. + + + + Copies the requested column elements into the given vector. + + The column to copy elements from. + The row to start copying from. + The number of elements to copy. + The Vector to copy the column into. + If the result Vector is . + If is negative, + or greater than or equal to the number of columns. + If is negative, + or greater than or equal to the number of rows. + If + + is greater than or equal to the number of rows. + If is not positive. + If result.Count < length. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Returns the elements of the diagonal in a Vector. + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a new matrix and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new matrix with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Copies the values of the given Vector to the specified column. + + The column to copy the values to. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + + + + Copies the values of the given Vector to the specified sub-column. + + The column to copy the values to. + The row to start copying to. + The number of elements to copy. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + + + + Copies the values of the given array to the specified column. + + The column to copy the values to. + The array to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of columns. + If the size of does not + equal the number of rows of this Matrix. + If the size of does not + equal the number of rows of this Matrix. + + + + Creates a new matrix and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new matrix with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Copies the values of the given Vector to the specified row. + + The row to copy the values to. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of the given Vector to the specified sub-row. + + The row to copy the values to. + The column to start copying to. + The number of elements to copy. + The vector to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of the given array to the specified row. + + The row to copy the values to. + The array to copy the values from. + If is . + If is less than zero, + or greater than or equal to the number of rows. + If the size of does not + equal the number of columns of this Matrix. + + + + Copies the values of a given matrix into a region in this matrix. + + The row to start copying to. + The number of rows to copy. Must be positive. + The column to start copying to. + The number of columns to copy. Must be positive. + The sub-matrix to copy from. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If is + the size of is not at least x . + If or + is not positive. + + + + Copies the values of the given Vector to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + + + + Concatenates this matrix with the given matrix. + + The matrix to concatenate. + The combined matrix. + + + + Concatenates this matrix with the given matrix and places the result into the result matrix. + + The matrix to concatenate. + The combined matrix. + + + + Stacks this matrix on top of the given matrix and places the result into the result matrix. + + The matrix to stack this matrix upon. + The combined matrix. + If lower is . + If upper.Columns != lower.Columns. + + + + Stacks this matrix on top of the given matrix and places the result into the result matrix. + + The matrix to stack this matrix upon. + The combined matrix. + If lower is . + If upper.Columns != lower.Columns. + + + + Diagonally stacks his matrix on top of the given matrix. The new matrix is a M-by-N matrix, + where M = this.Rows + lower.Rows and N = this.Columns + lower.Columns. + The values of off the off diagonal matrices/blocks are set to zero. + + The lower, right matrix. + If lower is . + the combined matrix + + + + Diagonally stacks his matrix on top of the given matrix and places the combined matrix into the result matrix. + + The lower, right matrix. + The combined matrix + If lower is . + If the result matrix is . + If the result matrix's dimensions are not (this.Rows + lower.rows) x (this.Columns + lower.Columns). + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + For sparse matrices, the L2 norm is computed using a dense implementation of singular value decomposition. + In a later release, it will be replaced with a sparse implementation. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Returns an that enumerates over the matrix columns. + + An that enumerates over the matrix columns + + + + + Returns an that enumerates the requested matrix columns. + + The column to start enumerating over. + The number of columns to enumerating over. + An that enumerates over requested matrix columns. + + If: + is negative, + or greater than or equal to the number of columns. + (index + length) >= Columns. + + If is not positive. + + + + Returns an that enumerates the requested matrix rows. + + The row to start enumerating over. + The number of rows to enumerating over. + An that enumerates over requested matrix rows. + + If: + is negative, + or greater than or equal to the number of rows. + (index + length) >= Rows. + If is not positive. + + + + Returns an that enumerates over the matrix rows. + + An that enumerates over the matrix rows + + + + + Iterates through each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Returns this matrix as a multidimensional array. + + A multidimensional containing the values of this matrix. + + + + Returns the matrix's elements as an array with the data laid out column-wise. + +
+            1, 2, 3
+            4, 5, 6  will be returned as  1, 4, 7, 2, 5, 8, 3, 6, 9
+            7, 8, 9
+            
+ An array containing the matrix's elements. +
+ + + Returns the matrix's elements as an array with the data laid row-wise. + +
+            1, 2, 3
+            4, 5, 6  will be returned as  1, 2, 3, 4, 5, 6, 7, 8, 9
+            7, 8, 9
+            
+ An array containing the matrix's elements. +
+ + + Applies a function to each value of this matrix and replaces the value with its result. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse matrices). + + + + + Applies a function to each value of this matrix and replaces the value with its result. + The row and column indices of each value (zero-based) are passed as first arguments to the function. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse matrices). + + + + + Gets the raw matrix data storage. + + + + + Gets the number of columns. + + The number of columns. + + + + Gets the number of rows. + + The number of rows. + + + + Gets or sets the value at the given row and column, with range checking. + + + The row of the element. + + + The column of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + Complex32 version of the class. + + + + + Defines the generic class for Vector classes. + + Supported data types are double, single, , and . + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns a that describes the type, dimensions and shape of this vector. + + + + + Returns a that represents the content of this vector, row by row. + + + + + Returns a that represents the content of this vector, row by row. + + + + + Returns a that summarizes this vector. + + + + + Returns a that summarizes this vector. + The maximum number of cells can be configured in the class. + + + + + Returns a that summarizes this vector. + The maximum number of cells can be configured in the class. + The format string is ignored. + + + + + Returns a that summarizes this vector. + + + + + The zero value for type T. + + + + + The value of 1.0 for type T. + + + + + Initializes a new instance of the Vector class. + + + + Gets the value at the given without range checking.. + The index of the value to get or set. + The value of the vector at the given . + + + Sets the at the given without range checking.. + The index of the value to get or set. + The value to set. + + + + Resets all values to zero. + + + + + Sets all values of a subvector to zero. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + The number of rows. + The number of columns. + A matrix with the given dimensions. + + + + Creates a Vector of the given size using the same storage type + as this vector. + + The size of the Vector to create. + The new Vector. + + + + Negates vector and save result to + + Target vector + + + + Complex conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts each element of the vector from a scalar and stores the result in the result vector. + + The scalar to subtract from. + The vector to store the result of the subtraction. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + The result of the addition. + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + The scalar to divide with. + The vector to store the result of the division. + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The result of the division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Adds a scalar to each element of the vector. + + The scalar to add. + A copy of the vector with the scalar added. + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + If the result vector is . + If this vector and are not the same size. + + + + Returns a copy of this vector. + + This vector. + + Added as an alternative to the unary addition operator. + + + + + Adds another vector to this vector. + + The vector to add to this one. + A new vector containing the sum of both vectors. + If the other vector is . + If this vector and are not the same size. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Subtracts a scalar from each element of the vector. + + The scalar to subtract. + A new vector containing the subtraction of this vector and the scalar. + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + If the result vector is . + If this vector and are not the same size. + + + + Subtracts each element of the vector from a scalar. + + The scalar to subtract from. + A new vector containing the subtraction of the scalar and this vector. + + + + Subtracts each element of the vector from a scalar and stores the result in the result vector. + + The scalar to subtract from. + The vector to store the result of the subtraction. + If the result vector is . + If this vector and are not the same size. + + + + Returns a negated vector. + + The negated vector. + Added as an alternative to the unary negation operator. + + + + Negates vector and save result to + + Target vector + + + + Subtracts another vector from this vector. + + The vector to subtract from this one. + A new vector containing the subtraction of the the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Return vector with complex conjugate values of the source vector + + Conjugated vector + + + + Complex conjugates vector and save result to + + Target vector + + + + Multiplies a scalar to each element of the vector. + + The scalar to multiply. + A new vector that is the multiplication of the vector and the scalar. + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + If the result vector is . + If this vector and are not the same size. + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + The result of the addition. + If is not of the same size. + If is . + + + + Divides each element of the vector by a scalar. + + The scalar to divide with. + A new vector that is the division of the vector and the scalar. + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + The scalar to divide with. + The vector to store the result of the division. + If the result vector is . + If this vector and are not the same size. + + + + Divides a scalar by each element of the vector. + + The scalar to divide. + A new vector that is the division of the vector and the scalar. + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + If the result vector is . + If this vector and are not the same size. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector containing the result. + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector containing the result. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Pointwise multiplies this vector with another vector. + + The vector to pointwise multiply with this one. + A new vector which is the pointwise multiplication of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Pointwise divide this vector with another vector. + + The vector to pointwise divide this one by. + A new vector which is the pointwise division of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Pointwise modulus this vector with another vector. + + The vector to pointwise modulus this one by. + A new vector which is the pointwise modulus of the two vectors. + If the other vector is . + If this vector and are not the same size. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The vector to store the result of the pointwise modulus. + If the other vector is . + If the result vector is . + If this vector and are not the same size. + If this vector and are not the same size. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Returns a Vector containing the same values of . + + This method is included for completeness. + The vector to get the values from. + A vector containing the same values as . + If is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Adds a scalar to each element of a vector. + + The vector to add to. + The scalar value to add. + The result of the addition. + If is . + + + + Adds a scalar to each element of a vector. + + The scalar value to add. + The vector to add to. + The result of the addition. + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of a vector. + + The vector to subtract from. + The scalar value to subtract. + The result of the subtraction. + If is . + + + + Substracts each element of a vector from a scalar. + + The scalar value to subtract from. + The vector to subtract. + The result of the subtraction. + If is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a scalar with a vector. + + The scalar to divide. + The vector. + The result of the division. + If is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Pointwise divides two Vectors. + + The vector to divide. + The other vector. + The result of the division. + If and are not the same size. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use. + The result of the calculation + If is . + + + + Computes the modulus of the given dividend of each element of the vector. + + The dividend we want to compute the modulus of. + The vector whose elements we want to use as divisor. + The result of the calculation + If is . + + + + Computes the pointwise modulus of each element of two vectors. + + The vector whose elements we want to compute the modulus of. + The divisor to use. + The result of the calculation + If and are not the same size. + If is . + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the value of maximum element. + + The value of maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the value of the minimum element. + + The value of the minimum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Returns a deep-copy clone of the vector. + + A deep-copy clone of the vector. + + + + Set the values of this vector to the given values. + + The array containing the values to use. + If is . + If is not the same size as this vector. + + + + Copies the values of this vector into the target vector. + + The vector to copy elements into. + If is . + If is not the same size as this vector. + + + + Creates a vector containing specified elements. + + The first element to begin copying from. + The number of elements to copy. + A vector containing a copy of the specified elements. + If is not positive or + greater than or equal to the size of the vector. + If + is greater than or equal to the size of the vector. + + If is not positive. + + + + Copies the values of a given vector into a region in this vector. + + The field to start copying to + The number of fields to cpy. Must be positive. + The sub-vector to copy from. + If is + + + + Copies the requested elements from this vector to another. + + The vector to copy the elements to. + The element to start copying from. + The element to start copying to. + The number of elements to copy. + + + + Returns the data contained in the vector as an array. + + + The vector's data as an array. + + + + + Create a matrix based on this vector in column form (one single column). + + + This vector as a column matrix. + + + + + Create a matrix based on this vector in row form (one single row). + + + This vector as a row matrix. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an that contains the position and value of the element, for all non-zero elements. + + + An over this vector that contains the position and value of each element. + + + The enumerator returns a + with the first value being the element index and the second value + being the value of the element at that index. + The enumerator will exclude all elements with a zero value. + + + + + Applies a function to each value of this vector and replaces the value with its result. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse vectors). + + + + + Applies a function to each value of this vector and replaces the value with its result. + The index of each value (zero-based) is passed as first argument to the function. + If forceMapZero is not set to true, zero values may or may not be skipped depending + on the actual data storage implementation (relevant mostly for sparse vectors). + + + + + Gets the raw vector data storage. + + + + + Gets the number of items. + + + + Gets or sets the value at the given . + The index of the value to get or set. + The value of the vector at the given . + If is negative or + greater than the size of the vector. + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a complex. + + The vector to scale. + The Complex32 value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The Complex32 value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The Complex32 value. + The result of the division. + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a Complex32 dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex32. + + + A Complex32 dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a Complex32 dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double. + + + A Complex32 dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Conjugates vector and save result to + + Target vector + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + Supported data types are double, single, , and . + + + + Classes that solves a system of linear equations, AX = B. + + Supported data types are double, single, , and . + + + + Solves a system of linear equations, AX = B. + + The right hand side Matrix, B. + The left hand side Matrix, X. + + + + Solves a system of linear equations, AX = B. + + The right hand side Matrix, B. + The left hand side Matrix, X. + + + + Solves a system of linear equations, Ax = b + + The right hand side vector, b. + The left hand side Vector, x. + + + + Solves a system of linear equations, Ax = b. + + The right hand side vector, b. + The left hand side Matrix>, x. + + + + Internal method which routes the call to perform the Cholesky factorization to the appropriate class. + + The matrix to factor. + A cholesky factorization object. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets the lower triangular form of the Cholesky matrix + + + + + Gets the lower triangular form of the Cholesky matrix. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the singular value decomposition to the appropriate class. + + The matrix to factor. + An EVD object. + + + Returns the eigen values as a . + The eigen values. + + + Returns the right eigen vectors as a . + The eigen vectors. + + + Returns the block diagonal eigenvalue matrix . + The block diagonal eigenvalue matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets a value indicating whether matrix is symmetric or not + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Gets or sets the eigen values (λ) of matrix in ascending value. + + + + + Gets or sets eigenvectors. + + + + + Gets or sets the block diagonal eigenvalue matrix. + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Data array of matrix V (eigenvectors) + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of the eigenvectors + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + Supported data types are double, single, , and . + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is performed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the QR factorization to the appropriate class. + + The matrix to factor. + The type of QR factorization to perform. + A QR factorization object. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets orthogonal Q matrix + + + + + Gets or sets upper triangular factor R + + + + + The QR factorization method. + + + + + Gets orthogonal Q matrix + + + + + Gets the upper triangular factor R. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Internal method which routes the call to perform the QR factorization to the appropriate class. + + The matrix to factor. + A QR factorization object. + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + Supported data types are double, single, , and . + + + + Value of one for T. + + + + + Internal method which routes the call to perform the LU factorization to the appropriate class. + + The matrix to factor. + An LU factorization object. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + Gets or sets both the L and U factors in the same matrix. + + + + + Gets or sets the pivot indices of the LU factorization. + + + + + Gets the lower triangular factor. + + + + + Gets the upper triangular factor. + + + + + Gets the permutation applied to LU factorization. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + Supported data types are double, single, , and . + + + + Internal method which routes the call to perform the singular value decomposition to the appropriate class. + + The matrix to factor. + Compute the singular U and VT vectors or not. + An SVD object. + + + Returns the left singular vectors as a . + The left singular vectors. The matrix will be null, if computeVectors in the constructor is set to false. + + + Returns the right singular vectors as a . + The right singular vectors. The matrix will be null, if computeVectors in the constructor is set to false. + This is the transpose of the V matrix. + + + Returns the singular values as a diagonal . + The singular values as a diagonal . + + + Returns the singular values as a . + the singular values as a . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets a value indicating whether to compute U and VT matrices during SVD factorization or not + + + + + Gets or sets the singular values (Σ) of matrix in ascending value. + + + + + Gets or sets left singular vectors (U - m-by-m unitary matrix) + + + + + Gets or sets transpose right singular vectors (transpose of V, an n-by-n unitary matrix + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Complex32 value z1 + Complex32 value z2 + Result multiplication of signum function and absolute value + + + + Interchanges two vectors and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and conjugating the first vector. + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + scalar cos value + scalar sin value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the IIterator that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vectors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current IIterator. Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a complex. + + The vector to scale. + The complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The complex value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a Complex32. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex32. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + Complex version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + Complex version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a complex. + + The vector to scale. + The Complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The Complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The Complex value. + The result of the division. + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a Complex dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex. + + + A Complex dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a Complex dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a double. + + + A Complex dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Conjugates vector and save result to + + Target vector + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Data array of matrix V (eigenvectors) + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of the eigenvectors + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The type of QR factorization to perform. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a complex matrix. + + + If A is hermitan, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is hermitan. + I.e. A = V*D*V' and V*VH=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Reduces a complex hermitian matrix to a real symmetric tridiagonal matrix using unitary similarity transformations. + + Source matrix to reduce + Output: Arrays for internal storage of real parts of eigenvalues + Output: Arrays for internal storage of imaginary parts of eigenvalues + Output: Arrays that contains further information about the transformations. + Order of initial matrix + This is derived from the Algol procedures HTRIDI by + Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Determines eigenvectors by undoing the symmetric tridiagonalize transformation + + Previously tridiagonalized matrix by . + Contains further information about the transformations + Input matrix order + This is derived from the Algol procedures HTRIBK, by + by Smith, Boyle, Dongarra, Garbow, Ikebe, Klema, Moler, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any complex square matrix A may be decomposed as A = QR where Q is an unitary mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an unitary matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Complex value z1 + Complex value z2 + Result multiplication of signum function and absolute value + + + + Interchanges two vectors and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and conjugating the first vector. + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + scalar cos value + scalar sin value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the IIterator that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vecrors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current IIterator. Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Conjugates vector and save result to + + Target vector + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a complex. + + The vector to scale. + The complex value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a complex. + + The complex value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a complex. + + The vector to divide. + The complex value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a Complex. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n;n;..', '(n;n;..)', '[n;n;...]', where n is a Complex. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a complex sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a complex vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + double version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + double version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector to this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real dense vector to double-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is performed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The type of QR factorization to perform. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Double value z1 + Double value z2 + Result multiplication of signum function and absolute value + + + + Swap column and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + Scalar "c" value + Scalar "s" value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + It may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vecrors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was canceled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a double sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a double. + + + A double sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real sparse vector to double-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + A setup functions to help simplify the generic code. + + + + + Sets the value of 1.0 for type T. + + The type to return the value of 1.0 of. + The value of 1.0 for type T. + + + + Sets the value of 0.0 for type T. + + The type to return the value of 0.0 of. + The value of 0.0 for type T. + + + + The type of QR factorization go perform. + + + + + Compute the full QR factorization of a matrix. + + + + + Compute the thin QR factorixation of a matrix. + + + + + Indicates that a calculation was cancelled by the user. + + + + + Defines the base interface for calculation status objects. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that a calculation has converged to the desired convergence levels. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation diverged. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that a calculation has failed for some reason. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the state of the calculation is indetermined, not started or stopped. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation is running and no results are yet known. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Indicates that the calculation has been stopped due to reaching the stopping + limits, but that convergence was not achieved. + + + + + Gets a value indicating whether current status warrants stopping the calculation. + + + + + Iteration stop criteria. + + + + + Monitor calculation failures in the iterative calculation. + + + + + Monitor the calculation for signs of divergence. + + + + + Guard the calculation against unlimited continuation + by monitoring user specified limits, e.g. the maximum number of iterations. + + + + + Monitor the calculation for convergence, usually + based on the residuals of the calculation. + + + + + A Matrix class with dense storage. The underlying storage is a one dimensional array in column-major order (column by column). + + + + + float version of the class. + + + + + Initializes a new instance of the Matrix class. + + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + + Returns the conjugate transpose of this matrix. + + The conjugate transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Divides each element of the matrix by a scalar and places results into the result matrix. + + The scalar to divide the matrix with. + The matrix to store the result of the division. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Complex conjugates each element of this matrix and place the results into the result matrix. + + The result of the conjugation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Number of rows. + + Using this instead of the RowCount property to speed up calculating + a matrix index in the data array. + + + + Number of columns. + + Using this instead of the ColumnCount property to speed up calculating + a matrix index in the data array. + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new dense matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to be in column-major order (column by column) and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable. + The enumerable is assumed to be in column-major order (column by column). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given column vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given row vectors. + This new matrix will be independent from the vectors. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix and initialize each value using the provided init function. + + + + + Create a new dense matrix with values sampled from the provided random distribution. + + + + + Create a new dense matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new dense matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new dense matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DenseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DenseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A dense identity matrix. + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of add + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies the transpose of this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Computes the trace of this matrix. + + The trace of this matrix + If the matrix is not square + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the matrix's data. + + The matrix's data. + + + + Gets the matrix's data. + + The matrix's data. + + + + A vector using dense storage. + + + + + float version of the class. + + + + + Initializes a new instance of the Vector class. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Divides each element of the vector by a scalar and stores the result in the result vector. + + + The scalar to divide with. + + + The vector to store the result of the division. + + + + + Divides a scalar by each element of the vector and stores the result in the result vector. + + The scalar to divide. + The vector to store the result of the division. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise modulus this vector with another vector and stores the result into the result vector. + + The vector to pointwise modulus this one by. + The result of the modulus. + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus for the given dividend for each element of the vector. + + The dividend to use. + A vector to store the results in. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Computes the p-Norm. + + + The p value. + + + Scalar ret = (sum(abs(At(i))^p))^(1/p) + + + + + Conjugates vector and save result to + + Target vector + + + + Negates vector and saves result to + + Target vector + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Normalizes this vector to a unit vector with respect to the p-norm. + + + The p value. + + + This vector normalized to a unit vector with respect to the p-norm. + + + + + Number of elements + + + + + Gets the vector's data. + + + + + Create a new dense vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector directly binding to a raw array. + The array is used directly without copying. + Very efficient, but changes to the array and the vector will affect each other. + + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector and initialize each value using the provided init function. + + + + + Create a new dense vector with values sampled from the provided random distribution. + + + + + Create a new dense vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new dense vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new dense vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Returns a reference to the internal data structure. + + The DenseVector whose internal data we are + returning. + + A reference to the internal date of the given vector. + + + + + Returns a vector bound directly to a reference of the provided array. + + The array to bind to the DenseVector object. + + A DenseVector whose values are bound to the given array. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + + The scalar to add. + The vector to store the result of the addition. + + + + Adds another vector to this vector and stores the result into the result vector. + + The vector to add to this one. + The vector to store the result of the addition. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + The scalar to subtract. + The vector to store the result of the subtraction. + + + + Subtracts another vector from this vector and stores the result into the result vector. + + The vector to subtract from this one. + The vector to store the result of the subtraction. + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + The scalar to multiply. + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + The other vector to add. + s + The result of the addition. + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the value of the absolute minimum element. + + The value of the absolute minimum element. + + + + Returns the value of the absolute maximum element. + + The value of the absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + Pointwise divide this vector with another vector and stores the result into the result vector. + + The vector to pointwise divide this one by. + The vector to store the result of the pointwise division. + + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a float dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float dense vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a float dense vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float dense vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real dense vector to float-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real dense vector to float-precision dense vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the vector's data. + + The vector's data. + + + + A matrix type for diagonal matrices. + + + Diagonal matrices can be non-square matrices but the diagonal always starts + at element 0,0. A diagonal matrix will throw an exception if non diagonal + entries are set. The exception to this is when the off diagonal elements are + 0.0 or NaN; these settings will cause no change to the diagonal matrix. + + + + + Gets the matrix's data. + + The matrix's data. + + + + Create a new diagonal matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns. + All diagonal cells of the matrix will be initialized to the provided value, all non-diagonal ones to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new diagonal matrix with the given number of rows and columns directly binding to a raw array. + The array is assumed to contain the diagonal elements only and is used directly without copying. + Very efficient, but changes to the array and the matrix will affect each other. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value from the provided enumerable. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix and initialize each diagonal value using the provided init function. + + + + + Create a new diagonal matrix with diagonal values sampled from the provided random distribution. + + + + + Create a new diagonal matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + The array to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Create a new diagonal matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + The matrix to copy from must be diagonal as well. + A new memory block will be allocated for storing the matrix. + + + + + Creates a DiagonalMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A DiagonalMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract. + The matrix to store the result of the subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Copies the values of the given array to the diagonal. + + The array to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Copies the values of the given to the diagonal. + + The vector to copy the values from. The length of the vector should be + Min(Rows, Columns). + If is . + If the length of does not + equal Min(Rows, Columns). + For non-square matrices, the elements of are copied to + this[i,i]. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + If the result matrix is . + If the result matrix's dimensions are not the same as this matrix. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Multiplies this matrix with a vector and places the results into the result matrix. + + The vector to multiply with. + The result of the multiplication. + If is . + If is . + If result.Count != this.RowCount. + If this.ColumnCount != .Count. + + + + Left multiply a matrix with a vector ( = vector * matrix ) and place the result in the result vector. + + The vector to multiply with. + The result of the multiplication. + If is . + If the result matrix is . + If result.Count != this.ColumnCount. + If this.RowCount != .Count. + + + + Computes the determinant of this matrix. + + The determinant of this matrix. + + + + Returns the elements of the diagonal in a . + + The elements of the diagonal. + For non-square matrices, the method returns Min(Rows, Columns) elements where + i == j (i is the row index, and j is the column index). + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + If the other matrix is . + If the result matrix is . + If this.Columns != other.Rows. + If the result matrix's dimensions are not the this.Rows x other.Columns. + + + + Multiplies this matrix with transpose of another matrix and returns the result. + + The matrix to multiply with. + If this.Columns != other.Rows. + If the other matrix is . + The result of multiplication. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the L1 norm. + The L1 norm of the matrix. + + + Calculates the L2 norm. + The L2 norm of the matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + Calculates the condition number of this matrix. + The condition number of the matrix. + + + Computes the inverse of this matrix. + If is not a square matrix. + If is singular. + The inverse of this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Creates a matrix that contains the values from the requested sub-matrix. + + The row to start copying from. + The number of rows to copy. Must be positive. + The column to start copying from. + The number of columns to copy. Must be positive. + The requested sub-matrix. + If: is + negative, or greater than or equal to the number of rows. + is negative, or greater than or equal to the number + of columns. + (columnIndex + columnLength) >= Columns + (rowIndex + rowLength) >= Rows + If or + is not positive. + + + + Creates a new and inserts the given column at the given index. + + The index of where to insert the column. + The column to insert. + A new with the inserted column. + If is . + If is < zero or > the number of columns. + If the size of != the number of rows. + + + + Creates a new and inserts the given row at the given index. + + The index of where to insert the row. + The row to insert. + A new with the inserted column. + If is . + If is < zero or > the number of rows. + If the size of != the number of columns. + + + + Permute the columns of a matrix according to a permutation. + + The column permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Permute the rows of a matrix according to a permutation. + + The row permutation to apply to this matrix. + Always thrown + Permutation in diagonal matrix are senseless, because of matrix nature + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + A diagonal identity matrix. + + If is less than one. + + + + + Gets a value indicating whether this matrix is symmetric. + + + + + Extension methods which return factorizations for the various matrix classes. + + + + + Computes the Cholesky decomposition for a matrix. + + The matrix to factor. + The Cholesky decomposition object. + + + + Computes the LU decomposition for a matrix. + + The matrix to factor. + The LU decomposition object. + + + + Computes the QR decomposition for a matrix. + + The matrix to factor. + The type of QR factorization to perform. + The QR decomposition object. + + + + Computes the QR decomposition for a matrix using Modified Gram-Schmidt Orthogonalization. + + The matrix to factor. + The QR decomposition object. + + + + Computes the SVD decomposition for a matrix. + + The matrix to factor. + Compute the singular U and VT vectors or not. + The SVD decomposition object. + + + + Computes the EVD decomposition for a matrix. + + The matrix to factor. + The EVD decomposition object. + + + + A class which encapsulates the functionality of a Cholesky factorization. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Gets the determinant of the matrix for which the Cholesky matrix was computed. + + + + + Gets the log determinant of the matrix for which the Cholesky matrix was computed. + + + + + A class which encapsulates the functionality of a Cholesky factorization for dense matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Gets the absolute value of determinant of the square matrix for which the EVD was computed. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Data array of matrix V (eigenvectors) + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Data array of matrix V (eigenvectors) + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + used for QR solve + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Factorize matrix using the modified Gram-Schmidt method. + + Initial matrix. On exit is replaced by Q. + Number of rows in Q. + Number of columns in Q. + On exit is filled by R. + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + In the Math.Net implementation we also store a set of pivot elements for increased + numerical stability. The pivot elements encode a permutation matrix P such that P*A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Gets the determinant of the matrix for which the LU factorization was computed. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A (m x n) may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + If a factorization is peformed, the resulting Q matrix is an m x m matrix + and the R matrix is an m x n matrix. If a factorization is performed, the + resulting Q matrix is an m x n matrix and the R matrix is an n x n matrix. + + + + + Gets the absolute determinant value of the matrix for which the QR matrix was computed. + + + + + Gets a value indicating whether the matrix is full rank or not. + + true if the matrix is full rank; otherwise false. + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + If row count is less then column count + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Gets or sets Tau vector. Contains additional information on Q - used for native solver. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + A class which encapsulates the functionality of the singular value decomposition (SVD). + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Gets the effective numerical matrix rank. + + The number of non-negligible singular values. + + + + Gets the two norm of the . + + The 2-norm of the . + + + + Gets the condition number max(S) / min(S) + + The condition number. + + + + Gets the determinant of the square matrix for which the SVD was computed. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + If SVD algorithm failed to converge with matrix . + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of a Cholesky factorization for user matrices. + For a symmetric, positive definite matrix A, the Cholesky factorization + is an lower triangular matrix L so that A = L*L'. + + + The computation of the Cholesky factorization is done at construction time. If the matrix is not symmetric + or positive definite, the constructor will throw an exception. + + + + + Initializes a new instance of the class. This object will compute the + Cholesky factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + If is not positive definite. + + + + Calculate Cholesky step + + Factor matrix + Number of rows + Column start + Total columns + Multipliers calculated previously + Number of available processors + + + + Solves a system of linear equations, AX = B, with A Cholesky factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A Cholesky factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Eigenvalues and eigenvectors of a real matrix. + + + If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is + diagonal and the eigenvector matrix V is orthogonal. + I.e. A = V*D*V' and V*VT=I. + If A is not symmetric, then the eigenvalue matrix D is block diagonal + with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, + lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The + columns of V represent the eigenvectors in the sense that A*V = V*D, + i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly + conditioned, or even singular, so the validity of the equation + A = V*D*Inverse(V) depends upon V.Condition(). + + + + + Initializes a new instance of the class. This object will compute the + the eigenvalue decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + If is null. + If EVD algorithm failed to converge with matrix . + + + + Symmetric Householder reduction to tridiagonal form. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tred2 by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Symmetric tridiagonal QL algorithm. + + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedures tql2, by + Bowdler, Martin, Reinsch, and Wilkinson, Handbook for + Auto. Comp., Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + + Nonsymmetric reduction to Hessenberg form. + + Array for internal storage of nonsymmetric Hessenberg form. + Order of initial matrix + This is derived from the Algol procedures orthes and ortran, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutines in EISPACK. + + + + Nonsymmetric reduction from Hessenberg to real Schur form. + + Array for internal storage of nonsymmetric Hessenberg form. + Arrays for internal storage of real parts of eigenvalues + Arrays for internal storage of imaginary parts of eigenvalues + Order of initial matrix + This is derived from the Algol procedure hqr2, + by Martin and Wilkinson, Handbook for Auto. Comp., + Vol.ii-Linear Algebra, and the corresponding + Fortran subroutine in EISPACK. + + + + Complex scalar division X/Y. + + Real part of X + Imaginary part of X + Real part of Y + Imaginary part of Y + Division result as a number. + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A EVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the QR decomposition Modified Gram-Schmidt Orthogonalization. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal mxn matrix and R is an nxn upper triangular matrix. + + + The computation of the QR decomposition is done at construction time by modified Gram-Schmidt Orthogonalization. + + + + + Initializes a new instance of the class. This object creates an orthogonal matrix + using the modified Gram-Schmidt method. + + The matrix to factor. + If is null. + If row count is less then column count + If is rank deficient + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of an LU factorization. + For a matrix A, the LU factorization is a pair of lower triangular matrix L and + upper triangular matrix U so that A = L*U. + + + The computation of the LU factorization is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + LU factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + If is null. + If is not a square matrix. + + + + Solves a system of linear equations, AX = B, with A LU factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A LU factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Returns the inverse of this matrix. The inverse is calculated using LU decomposition. + + The inverse of this matrix. + + + + A class which encapsulates the functionality of the QR decomposition. + Any real square matrix A may be decomposed as A = QR where Q is an orthogonal matrix + (its columns are orthogonal unit vectors meaning QTQ = I) and R is an upper triangular matrix + (also called right triangular matrix). + + + The computation of the QR decomposition is done at construction time by Householder transformation. + + + + + Initializes a new instance of the class. This object will compute the + QR factorization when the constructor is called and cache it's factorization. + + The matrix to factor. + The QR factorization method to use. + If is null. + + + + Generate column from initial matrix to work array + + Initial matrix + The first row + Column index + Generated vector + + + + Perform calculation of Q or R + + Work array + Q or R matrices + The first row + The last row + The first column + The last column + Number of available CPUs + + + + Solves a system of linear equations, AX = B, with A QR factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A QR factorized. + + The right hand side vector, b. + The left hand side , x. + + + + A class which encapsulates the functionality of the singular value decomposition (SVD) for . + Suppose M is an m-by-n matrix whose entries are real numbers. + Then there exists a factorization of the form M = UΣVT where: + - U is an m-by-m unitary matrix; + - Σ is m-by-n diagonal matrix with nonnegative real numbers on the diagonal; + - VT denotes transpose of V, an n-by-n unitary matrix; + Such a factorization is called a singular-value decomposition of M. A common convention is to order the diagonal + entries Σ(i,i) in descending order. In this case, the diagonal matrix Σ is uniquely determined + by M (though the matrices U and V are not). The diagonal entries of Σ are known as the singular values of M. + + + The computation of the singular value decomposition is done at construction time. + + + + + Initializes a new instance of the class. This object will compute the + the singular value decomposition when the constructor is called and cache it's decomposition. + + The matrix to factor. + Compute the singular U and VT vectors or not. + If is null. + + + + + Calculates absolute value of multiplied on signum function of + + Double value z1 + Double value z2 + Result multiplication of signum function and absolute value + + + + Swap column and + + Source matrix + The number of rows in + Column A index to swap + Column B index to swap + + + + Scale column by starting from row + + Source matrix + The number of rows in + Column to scale + Row to scale from + Scale value + + + + Scale vector by starting from index + + Source vector + Row to scale from + Scale value + + + + Given the Cartesian coordinates (da, db) of a point p, these fucntion return the parameters da, db, c, and s + associated with the Givens rotation that zeros the y-coordinate of the point. + + Provides the x-coordinate of the point p. On exit contains the parameter r associated with the Givens rotation + Provides the y-coordinate of the point p. On exit contains the parameter z associated with the Givens rotation + Contains the parameter c associated with the Givens rotation + Contains the parameter s associated with the Givens rotation + This is equivalent to the DROTG LAPACK routine. + + + + Calculate Norm 2 of the column in matrix starting from row + + Source matrix + The number of rows in + Column index + Start row index + Norm2 (Euclidean norm) of the column + + + + Calculate Norm 2 of the vector starting from index + + Source vector + Start index + Norm2 (Euclidean norm) of the vector + + + + Calculate dot product of and + + Source matrix + The number of rows in + Index of column A + Index of column B + Starting row index + Dot product value + + + + Performs rotation of points in the plane. Given two vectors x and y , + each vector element of these vectors is replaced as follows: x(i) = c*x(i) + s*y(i); y(i) = c*y(i) - s*x(i) + + Source matrix + The number of rows in + Index of column A + Index of column B + Scalar "c" value + Scalar "s" value + + + + Solves a system of linear equations, AX = B, with A SVD factorized. + + The right hand side , B. + The left hand side , X. + + + + Solves a system of linear equations, Ax = b, with A SVD factorized. + + The right hand side vector, b. + The left hand side , x. + + + + Defines the interface for classes that solve the matrix equation Ax = b in + an iterative manner. + + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + Defines the interface for objects that can create an iterative solver with + specific settings. This interface is used to pass iterative solver creation + setup information around. + + + + + Creates a fully functional iterative solver with the default settings + given by this setup. + + A new . + + + + Gets the type of the solver that will be created by this setup object. + + + + + Gets type of preconditioner, if any, that will be created by this setup object. + + + + + Gets the relative speed of the solver. + + Returns a value between 0 and 1, inclusive. + + + + Gets the relative reliability of the solver. + + Returns a value between 0 and 1 inclusive. + + + + Defines the base interface for iterators that help control an iterative calculation. + + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + Thrown if is of the same type as an already stored criterium. + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + Does not reset the stop-criteria. + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + Note to implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation.. + + + + A Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Bi-Conjugate Gradient Stabilized (BiCGStab) solver is an 'improvement' + of the standard Conjugate Gradient (CG) solver. Unlike the CG solver the + BiCGStab can be used on non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The Bi-CGSTAB algorithm was taken from:
+ Templates for the solution of linear systems: Building blocks + for iterative methods +
+ Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, + June M. Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, + Charles Romine and Henk van der Vorst +
+ Url: http://www.netlib.org/templates/Templates.html +
+ Algorithm is described in Chapter 2, section 2.3.8, page 27 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient , A. + The solution , b. + The result , x. + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient , A. + The solution , B. + The result , X + + + + Gets the status of the iteration once the calculation is finished. + + + + + A composite matrix solver. The actual solver is made by a sequence of + matrix solvers. + + + + Solver based on:
+ Faster PDE-based simulations using robust composite linear solvers
+ S. Bhowmicka, P. Raghavan a,*, L. McInnes b, B. Norris
+ Future Generation Computer Systems, Vol 20, 2004, pp 373–387
+
+ + Note that if an iterator is passed to this solver it will be used for all the sub-solvers. + +
+
+ + + The default status used if the solver is not running. + + + + + The default status used if the solver is running. + + + + + Loads all the available objects from the MathNet.Numerics assembly. + + + + + Loads the available objects from the MathNet.Numerics assembly. + + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the assembly name. + + The of the assembly that should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + + + + Loads the available objects from the assembly specified by the type. + + The type in the assembly which should be searched for setup objects. + The types that should not be loaded. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + + + + Loads the available objects from the specified assembly. + + The assembly which will be searched for setup objects. + The types that should not be loaded. + + + + The collection of solvers that will be used to + + + + + The status of the calculation. + + + + + The iterator that is used to control the iteration process. + + + + + A flag indicating if the solver has been stopped or not. + + + + + The solver that is currently running. Reference is used to be able to stop the + solver if the user cancels the solve process. + + + + + Initializes a new instance of the class with the default iterator. + + + + + Initializes a new instance of the class with the specified iterator. + + The iterator that will be used to control the iteration process. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Load solvers + + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An IComparer used to compare double precision floating points. + + NOTE: The instance of this class is used only in . If C# suppports interface inheritence + NOTE: and methods in anonymous types, then this class should be deleted and anonymous type implemented with IComaprer support + NOTE: in constructor + + + + Compares two double values based on the selected comparison method. + + The first double to compare. + The second double to compare. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return + value has the following meanings: + Value Meaning Less than zero This object is less than the other parameter. + Zero This object is equal to other. + Greater than zero This object is greater than other. + + + + + A Generalized Product Bi-Conjugate Gradient iterative matrix solver. + + + + The Generalized Product Bi-Conjugate Gradient (GPBiCG) solver is an + alternative version of the Bi-Conjugate Gradient stabilized (CG) solver. + Unlike the CG solver the GPBiCG solver can be used on + non-symmetric matrices.
+ Note that much of the success of the solver depends on the selection of the + proper preconditioner. +
+ + The GPBiCG algorithm was taken from:
+ GPBiCG(m,l): A hybrid of BiCGSTAB and GPBiCG methods with + efficiency and robustness +
+ S. Fujino +
+ Applied Numerical Mathematics, Volume 41, 2002, pp 107 - 117 +
+
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to null, in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates the number of BiCGStab steps should be taken + before switching. + + + + + Indicates the number of GPBiCG steps should be taken + before switching. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually + stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Decide if to do steps with BiCgStab + + Number of iteration + true if yes, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of steps taken with the BiCgStab algorithm + before switching over to the GPBiCG algorithm. + + + + + Gets or sets the number of steps taken with the GPBiCG algorithm + before switching over to the BiCgStab algorithm. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Multiple-Lanczos Bi-Conjugate Gradient stabilized iterative matrix solver. + + + + The Multiple-Lanczos Bi-Conjugate Gradient stabilized (ML(k)-BiCGStab) solver is an 'improvement' + of the standard BiCgStab solver. + + + The algorithm was taken from:
+ ML(k)BiCGSTAB: A BiCGSTAB variant based on multiple Lanczos starting vectors +
+ Man-chung Yeung and Tony F. Chan +
+ SIAM Journal of Scientific Computing +
+ Volume 21, Number 4, pp. 1263 - 1290 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The default number of starting vectors. + + + + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + The collection of starting vectors which are used as the basis for the Krylov sub-space. + + + + + The number of starting vectors used by the algorithm + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Resets the number of starting vectors to the default value. + + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Gets the number of starting vectors to create + + Maximum number + Number of variables + Number of starting vectors to create + + + + Returns an array of starting vectors. + + The maximum number of starting vectors that should be created. + The number of variables. + + An array with starting vectors. The array will never be larger than the + but it may be smaller if + the is smaller than + the . + + + + + Create random vectors array + + Number of vectors + Size of each vector + Array of random vectors + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Source A. + Residual data. + x data. + b data. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets or sets the number of starting vectors. + + + Must be larger than 1 and smaller than the number of variables in the matrix that + for which this solver will be used. + + + + + Gets or sets a series of orthonormal vectors which will be used as basis for the + Krylov sub-space. + + + + + Gets the status of the iteration once the calculation is finished. + + + + + A Transpose Free Quasi-Minimal Residual (TFQMR) iterative matrix solver. + + + + The TFQMR algorithm was taken from:
+ Iterative methods for sparse linear systems. +
+ Yousef Saad +
+ Algorithm is described in Chapter 7, section 7.4.3, page 219 +
+ + The example code below provides an indication of the possible use of the + solver. + +
+
+ + + The status used if there is no status, i.e. the solver hasn't run yet and there is no + iterator. + + + + + The preconditioner that will be used. Can be set to , in which case the default + pre-conditioner will be used. + + + + + The iterative process controller. + + + + + Indicates if the user has stopped the solver. + + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings and a default preconditioner. + + + + + Initializes a new instance of the class. + + + + When using this constructor the solver will use a default preconditioner. + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to monitor the iterative process. + + + + Initializes a new instance of the class. + + + When using this constructor the solver will use the with + the standard settings. + + The that will be used to precondition the matrix equation. + + + + Initializes a new instance of the class. + + + + The main advantages of using a user defined are: + + It is possible to set the desired convergence limits. + + It is possible to check the reason for which the solver finished + the iterative procedure by calling the property. + + + + + The that will be used to precondition the matrix equation. + The that will be used to monitor the iterative process. + + + + Sets the that will be used to precondition the iterative process. + + The preconditioner. + + + + Sets the that will be used to track the iterative process. + + The iterator. + + + + Stops the solve process. + + + Note that it may take an indetermined amount of time for the solver to actually stop the process. + + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b. + The result vector, x. + + + + Solves the matrix equation Ax = b, where A is the coefficient matrix, b is the + solution vector and x is the unknown vector. + + The coefficient matrix, A. + The solution vector, b + The result vector, x + + + + Calculates the true residual of the matrix equation Ax = b according to: residual = b - Ax + + Instance of the A. + Residual values in . + Instance of the x. + Instance of the b. + + + + Determine if calculation should continue + + Number of iterations passed + Result . + Source . + Residual . + true if continue, otherwise false + + + + Is even? + + Number to check + true if even, otherwise false + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X. + + + + Solves the matrix equation AX = B, where A is the coefficient matrix, B is the + solution matrix and X is the unknown matrix. + + The coefficient matrix, A. + The solution matrix, B. + The result matrix, X + + + + Gets the status of the iteration once the calculation is finished. + + + + + An iterator that is used to check if an iterative calculation should continue or stop. + + + + + The default status for the iterator. + + + + + Creates a default iterator with all the objects. + + A new object. + + + + The collection that holds all the stop criteria and the flag indicating if they should be added + to the child iterators. + + + + + The status of the iterator. + + + + + Indicates if the iteration was cancelled. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified stop criteria. + + + The specified stop criteria. Only one stop criterium of each type can be passed in. None + of the stop criteria will be passed on to child iterators. + + Thrown if contains multiple stop criteria of the same type. + + + + Adds an to the internal collection of stop-criteria. Only a + single stop criterium of each type can be stored. + + The stop criterium to add. + Thrown if is . + + Thrown if is of the same type as an already + stored criterium. + + + + + Removes the from the internal collection. + + The stop criterium that must be removed. + + + + Indicates if the specific stop criterium is stored by the . + + The stop criterium. + true if the contains the stop criterium; otherwise false. + + + + Indicates to the iterator that the iterative process has been cancelled. + + + Does not reset the stop-criteria. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual iterators may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + + + + Creates a deep clone of the current iterator. + + The deep clone of the current iterator. + + + + Gets the number of stored stop criteria. + + Used for testing only. + + + + Gets an IEnumerator that enumerates over all the stored stop criteria. + + Used for testing only. + + + + Gets the current calculation status. + + + + + A diagonal preconditioner. The preconditioner uses the inverse + of the matrix diagonal as preconditioning values. + + + + + The base interface for preconditioner classes. + + + + Preconditioners are used by iterative solvers to improve the convergence + speed of the solving process. Increase in convergence speed + is related to the number of iterations necessary to get a converged solution. + So while in general the use of a preconditioner means that the iterative + solver will perform fewer iterations it does not guarantee that the actual + solution time decreases given that some preconditioners can be expensive to + setup and run. + + + Note that in general changes to the matrix will invalidate the preconditioner + if the changes occur after creating the preconditioner. + + + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix on which the preconditioner is based. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Mx = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + The inverse of the matrix diagonal. + + + + + Returns the decomposed matrix diagonal. + + The matrix diagonal. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + This class performs an Incomplete LU factorization with drop tolerance + and partial pivoting. The drop tolerance indicates which additional entries + will be dropped from the factorized LU matrices. + + + The ILUTP-Mem algorithm was taken from:
+ ILUTP_Mem: a Space-Efficient Incomplete LU Preconditioner +
+ Tzu-Yi Chen, Department of Mathematics and Computer Science,
+ Pomona College, Claremont CA 91711, USA
+ Published in:
+ Lecture Notes in Computer Science
+ Volume 3046 / 2004
+ pp. 20 - 28
+ Algorithm is described in Section 2, page 22 +
+
+ + + The default fill level. + + + + + The default drop tolerance. + + + + + The decomposed upper triangular matrix. + + + + + The decomposed lower triangular matrix. + + + + + The array containing the pivot values. + + + + + The fill level. + + + + + The drop tolerance. + + + + + The pivot tolerance. + + + + + Initializes a new instance of the class with the default settings. + + + + + Initializes a new instance of the class with the specified settings. + + + The amount of fill that is allowed in the matrix. The value is a fraction of + the number of non-zero entries in the original matrix. Values should be positive. + + + The absolute drop tolerance which indicates below what absolute value an entry + will be dropped from the matrix. A drop tolerance of 0.0 means that no values + will be dropped. Values should always be positive. + + + The pivot tolerance which indicates at what level pivoting will take place. A + value of 0.0 means that no pivoting will take place. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + + This method is used for debugging purposes only and should normally not be used. + + A new matrix containing the lower triagonal elements. + + + + Returns the pivot array. This array is not needed for normal use because + the preconditioner will return the solution vector values in the proper order. + + + This method is used for debugging purposes only and should normally not be used. + + The pivot array. + + + + Initializes the preconditioner and loads the internal data structures. + + + The upon which this preconditioner is based. Note that the + method takes a general matrix type. However internally the data is stored + as a sparse matrix. Therefore it is not recommended to pass a dense matrix. + + If is . + If is not a square matrix. + + + + Pivot elements in the according to internal pivot array + + Row to pivot in + + + + Was pivoting already performed + + Pivots already done + Current item to pivot + true if performed, otherwise false + + + + Swap columns in the + + Source . + First column index to swap + Second column index to swap + + + + Sort vector descending, not changing vector but placing sorted indicies to + + Start sort form + Sort till upper bound + Array with sorted vector indicies + Source + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + Pivot elements in according to internal pivot array + + Source . + Result after pivoting. + + + + Gets or sets the amount of fill that is allowed in the matrix. The + value is a fraction of the number of non-zero entries in the original + matrix. The standard value is 200. + + + + Values should always be positive and can be higher than 1.0. A value lower + than 1.0 means that the eventual preconditioner matrix will have fewer + non-zero entries as the original matrix. A value higher than 1.0 means that + the eventual preconditioner can have more non-zero values than the original + matrix. + + + Note that any changes to the FillLevel after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the absolute drop tolerance which indicates below what absolute value + an entry will be dropped from the matrix. The standard value is 0.0001. + + + + The values should always be positive and can be larger than 1.0. A low value will + keep more small numbers in the preconditioner matrix. A high value will remove + more small numbers from the preconditioner matrix. + + + Note that any changes to the DropTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + Gets or sets the pivot tolerance which indicates at what level pivoting will + take place. The standard value is 0.0 which means pivoting will never take place. + + + + The pivot tolerance is used to calculate if pivoting is necessary. Pivoting + will take place if any of the values in a row is bigger than the + diagonal value of that row divided by the pivot tolerance, i.e. pivoting + will take place if row(i,j) > row(i,i) / PivotTolerance for + any j that is not equal to i. + + + Note that any changes to the PivotTolerance after creating the preconditioner + will invalidate the created preconditioner and will require a re-initialization of + the preconditioner. + + + Thrown if a negative value is provided. + + + + An element sort algorithm for the class. + + + This sort algorithm is used to sort the columns in a sparse matrix based on + the value of the element on the diagonal of the matrix. + + + + + Sorts the elements of the vector in decreasing + fashion. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Sorts the elements of the vector in decreasing + fashion using heap sort algorithm. The vector itself is not affected. + + The starting index. + The stopping index. + An array that will contain the sorted indices once the algorithm finishes. + The that contains the values that need to be sorted. + + + + Build heap for double indicies + + Root position + Length of + Indicies of + Target + + + + Sift double indicies + + Indicies of + Target + Root position + Length of + + + + Sorts the given integers in a decreasing fashion. + + The values. + + + + Sort the given integers in a decreasing fashion using heapsort algorithm + + Array of values to sort + Length of + + + + Build heap + + Target values array + Root position + Length of + + + + Sift values + + Target value array + Root position + Length of + + + + Exchange values in array + + Target values array + First value to exchange + Second value to exchange + + + + An incomplete, level 0, LU factorization preconditioner. + + + The ILU(0) algorithm was taken from:
+ Iterative methods for sparse linear systems
+ Yousef Saad
+ Algorithm is described in Chapter 10, section 10.3.2, page 275
+
+
+ + + The matrix holding the lower (L) and upper (U) matrices. The + decomposition matrices are combined to reduce storage. + + + + + Returns the upper triagonal matrix that was created during the LU decomposition. + + A new matrix containing the upper triagonal elements. + + + + Returns the lower triagonal matrix that was created during the LU decomposition. + + A new matrix containing the lower triagonal elements. + + + + Initializes the preconditioner and loads the internal data structures. + + The matrix upon which the preconditioner is based. + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + + + + A unit preconditioner. This preconditioner does not actually do anything + it is only used when running an without + a preconditioner. + + + + + The coefficient matrix on which this preconditioner operates. + Is used to check dimensions on the different vectors that are processed. + + + + + Initializes the preconditioner and loads the internal data structures. + + + The matrix upon which the preconditioner is based. + + If is . + If is not a square matrix. + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. Also known as the result vector. + If is . + If is . + + + If and do not have the same size. + + + - or - + + + If the size of is different the number of rows of the coefficient matrix. + + + + + + Approximates the solution to the matrix equation Ax = b. + + The right hand side vector. + The left hand side vector. + If is . + + If the size of is different the number of rows of the coefficient matrix. + + + + + Monitors an iterative calculation for signs of divergence. + + + + + The base interface for classes that provide stop criteria for iterative calculations. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Status is set to Status field of current object. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Resets the to the pre-calculation state. + + To implementers: Invoking this method should not clear the user defined + property values, only the state that is used to track the progress of the + calculation. + + + + Gets the current calculation status. + + is not a legal value. Status should be set in implementation. + + + + Gets the which indicates what sort of stop criterium this + monitors. + + + + + Default value for the maximum relative increase that the + residual may experience before a divergence warning is issued. + + + + + Default value for the minimum number of iterations over which + the residual must grow before a divergence warning is issued. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The maximum relative increase the residual may experience without triggering a divergence warning. + + + + + The number of iterations over which a residual increase should be tracked before issuing a divergence warning. + + + + + The status of the calculation + + + + + The array that holds the tracking information. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + relative increase and the default minimum number of tracking iterations. + + + + + Initializes a new instance of the class with the specified maximum + relative increase and the default minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + + + + Initializes a new instance of the class with the default maximum + relative increase and the specified minimum number of tracking iterations. + + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Initializes a new instance of the class with the specified maximum + relative increase and the specified minimum number of tracking iterations. + + The maximum relative increase that the residual may experience before a divergence warning is issued. + The minimum number of iterations over which the residual must grow before a divergence warning is issued. + + + + Returns the maximum relative increase to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Detect if solution is diverging + + true if diverging, otherwise false + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum relative increase that the residual may experience before a divergence warning is issued. + + Thrown if the Maximum is set to zero or below. + + + + Gets or sets the minimum number of iterations over which the residual must grow before + issuing a divergence warning. + + Thrown if the value is set to less than one. + + + + Gets required history Length + + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals for NaN's. + + + + + Defines the default last iteration number. Set to -1 because iterations normally + start at 0. + + + + + The default status. + + + + + The status of the calculation + + + + + The iteration number of the last iteration. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors the numbers of iteration + steps as stop criterium. + + + + + The default value for the maximum number of iterations the process is allowed + to perform. + + + + + The default status. + + + + + The maximum number of iterations the calculation is allowed to perform. + + + + + The status of the calculation + + + + + Initializes a new instance of the class with the default maximum + number of iterations. + + + + + Initializes a new instance of the class with the specified maximum + number of iterations. + + The maximum number of iterations the calculation is allowed to perform. + + + + Returns the maximum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum number of iterations the calculation is allowed to perform. + + Thrown if the Maximum is set to a negative value. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + Defines an that monitors residuals as stop criterium. + + + + + The default value for the maximum value of the residual. + + + + + The default value for the minimum number of iterations. + + + + + Defines the default last iteration number. Set to -1 because iterations normally start at 0. + + + + + The default status. + + + + + The maximum value for the residual below which the calculation is considered converged. + + + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + The status of the calculation + + + + + The number of iterations since the residuals got below the maximum. + + + + + The iteration number of the last iteration. + + + + + Initializes a new instance of the class with the default maximum + residual and the default minimum number of iterations. + + + + + Initializes a new instance of the class with the specified + maximum residual and the default minimum number of iterations. + + The maximum value for the residual below which the calculation is considered converged. + + + + Initializes a new instance of the class with the default maximum residual + and specified minimum number of iterations. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Initializes a new instance of the class with the specified + maximum residual and minimum number of iterations. + + + The maximum value for the residual below which the calculation is considered converged. + + + The minimum number of iterations for which the residual has to be below the maximum before + the calculation is considered converged. + + + + + Returns the maximum residual to the default. + + + + + Returns the minimum number of iterations to the default. + + + + + Determines the status of the iterative calculation based on the stop criteria stored + by the current . Result is set into Status field. + + The number of iterations that have passed so far. + The vector containing the current solution values. + The right hand side vector. + The vector containing the current residual vectors. + + The individual stop criteria may internally track the progress of the calculation based + on the invocation of this method. Therefore this method should only be called if the + calculation has moved forwards at least one step. + + + + + Calculate stop criterium + + Solution vector norm + Criterium value + + + + Set status to + + + + + Set status to + + + + + Set status to + + + + + Resets the to the pre-calculation state. + + + + + Clones the current and its settings. + + A new instance of the class. + + + + Gets or sets the maximum value for the residual below which the calculation is considered + converged. + + Thrown if the Maximum is set to a negative value. + + + + Gets or sets the minimum number of iterations for which the residual has to be + below the maximum before the calculation is considered converged. + + Thrown if the BelowMaximumFor is set to a value less than 1. + + + + Gets the current calculation status. + + + + + Gets the which indicates what sort of stop criterium this + monitors. + + Returns . + + + + A Matrix with sparse storage, intended for very large matrices where most of the cells are zero. + The underlying storage scheme is 3-array compressed-sparse-row (CSR) Format. + Wikipedia - CSR. + + + + + Create a new sparse matrix straight from an initialized matrix storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new square sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the order is less than one. + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to zero. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable. + The enumerable is assumed to be in row-major order (row by row). + This new matrix will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable columns. + Each enumerable in the master enumerable specifies a column. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given enumerable of enumerable rows. + Each enumerable in the master enumerable specifies a row. + This new matrix will be independent from the enumerables. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix and initialize each value using the provided init function. + + + + + Create a new sparse matrix with the given number of rows and columns. + All cells of the matrix will be initialized to the provided value. + Zero-length matrices are not supported. + + If the row or column count is less than one. + + + + Create a new sparse matrix with the given number of rows and columns as a copy of the given array. + The array is assumed to be in column-major order (column by column). + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + + Create a new sparse matrix as a copy of the given two-dimensional array. + This new matrix will be independent from the provided array. + A new memory block will be allocated for storing the matrix. + + + + + Create a new sparse matrix as a copy of the given other matrix. + This new matrix will be independent from the other matrix. + A new memory block will be allocated for storing the matrix. + + + + + Creates a SparseMatrix for the given number of rows and columns. + + The number of rows. + The number of columns. + True if all fields must be mutable (e.g. not a diagonal matrix). + + A SparseMatrix with the given dimensions. + + + + + Creates a with a the given dimension. + + The size of the vector. + True if all fields must be mutable. + + A with the given dimension. + + + + + Returns a new matrix containing the lower triangle of this matrix. + + The lower triangle of this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. + + The upper triangle of this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the lower triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The lower triangle of this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly lower triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns a new matrix containing the upper triangle of this matrix. The new matrix + does not contain the diagonal elements of this matrix. + + The upper triangle of this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + If is . + If the result matrix's dimensions are not the same as this matrix. + + + + Puts the strictly upper triangle of this matrix into the result matrix. + + Where to store the lower triangle. + + + + Returns the transpose of this matrix. + + The transpose of this matrix. + + + Calculates the Frobenius norm of this matrix. + The Frobenius norm of this matrix. + + + Calculates the infinity norm of this matrix. + The infinity norm of this matrix. + + + + Initializes a square with all zero's except for ones on the diagonal. + + the size of the square matrix. + Identity SparseMatrix + + If is less than one. + + + + + Adds another matrix to this matrix. + + The matrix to add to this matrix. + The matrix to store the result of the addition. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Subtracts another matrix from this matrix. + + The matrix to subtract to this matrix. + The matrix to store the result of subtraction. + If the other matrix is . + If the two matrices don't have the same dimensions. + + + + Multiplies each element of the matrix by a scalar and places results into the result matrix. + + The scalar to multiply the matrix with. + The matrix to store the result of the multiplication. + + + + Multiplies this matrix with another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with a vector and places the results into the result vector. + + The vector to multiply with. + The result of the multiplication. + + + + Multiplies this matrix with transpose of another matrix and places the results into the result matrix. + + The matrix to multiply with. + The result of the multiplication. + + + + Negate each element of this matrix and place the results into the result matrix. + + The result of the negation. + + + + Pointwise multiplies this matrix with another matrix and stores the result into the result matrix. + + The matrix to pointwise multiply with this one. + The matrix to store the result of the pointwise multiplication. + + + + Pointwise divide this matrix by another matrix and stores the result into the result matrix. + + The matrix to pointwise divide this one by. + The matrix to store the result of the pointwise division. + + + + Computes the modulus for each element of the matrix. + + The divisor to use. + Matrix to store the results in. + + + + Iterates throw each element in the matrix (row-wise). + + The value at the current iteration along with its position (row, column, value). + + + + Checks if opposites in a range are equal. + + The start of the range. + The end of the range. + The row the row to check. + If the values are equal or not. + + + + Adds two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to add. + The right matrix to add. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Returns a Matrix containing the same values of . + + The matrix to get the values from. + A matrix containing a the same values as . + If is . + + + + Subtracts two matrices together and returns the results. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to subtract. + The right matrix to subtract. + The result of the addition. + If and don't have the same dimensions. + If or is . + + + + Negates each element of the matrix. + + The matrix to negate. + A matrix containing the negated values. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Multiplies two matrices. + + This operator will allocate new memory for the result. It will + choose the representation of either or depending on which + is denser. + The left matrix to multiply. + The right matrix to multiply. + The result of multiplication. + If or is . + If the dimensions of or don't conform. + + + + Multiplies a Matrix and a Vector. + + The matrix to multiply. + The vector to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Vector and a Matrix. + + The vector to multiply. + The matrix to multiply. + The result of multiplication. + If or is . + + + + Multiplies a Matrix by a constant and returns the result. + + The matrix to multiply. + The constant to multiply the matrix by. + The result of the multiplication. + If is . + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Gets a value indicating whether this matrix is symmetric. + + + + + A vector with sparse storage, intended for very large vectors where most of the cells are zero. + + The sparse vector is not thread safe. + + + + Create a new sparse vector straight from an initialized vector storage instance. + The storage is used directly without copying. + Intended for advanced scenarios where you're working directly with + storage for performance or interop reasons. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized to zero. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given indexed enumerable. + Keys must be provided at most once, zero is assumed if a key is omitted. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector and initialize each value using the provided init function. + + + + + Create a new sparse vector with the given length. + All cells of the vector will be initialized with the provided value. + Zero-length vectors are not supported. + + If length is less than one. + + + + Create a new sparse vector as a copy of the given other vector. + This new vector will be independent from the other vector. + A new memory block will be allocated for storing the vector. + + + + + Create a new sparse vector as a copy of the given enumerable. + This new vector will be independent from the enumerable. + A new memory block will be allocated for storing the vector. + + + + + Creates a matrix with the given dimensions using the same storage type + as this vector. + + + The number of rows. + + + The number of columns. + + + A matrix with the given dimensions. + + + + + Creates a Vector of the given size using the same storage type + as this vector. + + + The size of the Vector to create. + + + The new Vector. + + + + + Adds a scalar to each element of the vector and stores the result in the result vector. + Warning, the new 'sparse vector' with a non-zero scalar added to it will be a 100% filled + sparse vector and very inefficient. Would be better to work with a dense vector instead. + + + The scalar to add. + + + The vector to store the result of the addition. + + + + + Adds another vector to this vector and stores the result into the result vector. + + + The vector to add to this one. + + + The vector to store the result of the addition. + + + + + Subtracts a scalar from each element of the vector and stores the result in the result vector. + + + The scalar to subtract. + + + The vector to store the result of the subtraction. + + + + + Subtracts another vector to this vector and stores the result into the result vector. + + + The vector to subtract from this one. + + + The vector to store the result of the subtraction. + + + + + Negates vector and saves result to + + Target vector + + + + Multiplies a scalar to each element of the vector and stores the result in the result vector. + + + The scalar to multiply. + + + The vector to store the result of the multiplication. + + + + + Computes the dot product between this vector and another vector. + + + The other vector to add. + + s + The result of the addition. + + + + + Computes the modulus for each element of the vector for the given divisor. + + The divisor to use. + A vector to store the results in. + + + + Adds two Vectors together and returns the results. + + One of the vectors to add. + The other vector to add. + The result of the addition. + If and are not the same size. + If or is . + + + + Returns a Vector containing the negated values of . + + The vector to get the values from. + A vector containing the negated values as . + If is . + + + + Subtracts two Vectors and returns the results. + + The vector to subtract from. + The vector to subtract. + The result of the subtraction. + If and are not the same size. + If or is . + + + + Multiplies a vector with a scalar. + + The vector to scale. + The scalar value. + The result of the multiplication. + If is . + + + + Multiplies a vector with a scalar. + + The scalar value. + The vector to scale. + The result of the multiplication. + If is . + + + + Computes the dot product between two Vectors. + + The left row vector. + The right column vector. + The dot product between the two vectors. + If and are not the same size. + If or is . + + + + Divides a vector with a scalar. + + The vector to divide. + The scalar value. + The result of the division. + If is . + + + + Computes the modulus of each element of the vector of the given divisor. + + The vector whose elements we want to compute the modulus of. + The divisor to use, + The result of the calculation + If is . + + + + Returns the index of the absolute minimum element. + + The index of absolute minimum element. + + + + Returns the index of the absolute maximum element. + + The index of absolute maximum element. + + + + Returns the index of the minimum element. + + The index of minimum element. + + + + Computes the sum of the vector's elements. + + The sum of the vector's elements. + + + + Computes the sum of the absolute value of the vector's elements. + + The sum of the absolute value of the vector's elements. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Pointwise multiplies this vector with another vector and stores the result into the result vector. + + The vector to pointwise multiply with this one. + The vector to store the result of the pointwise multiplication. + + + + Outer product of two vectors + + First vector + Second vector + Matrix M[i,j] = u[i]*v[j] + If the u vector is . + If the v vector is . + + + + Outer product of this and another vector. + + The vector to operate on. + + Matrix M[i,j] = this[i] * v[j]. + + + + + Computes the p-Norm. + + The p value. + Scalar ret = (sum(abs(this[i])^p))^(1/p) + + + + Creates a float sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float sparse vector containing the values specified by the given string. + + + The string to parse. + + + + + Creates a float sparse vector based on a string. The string can be in the following formats (without the + quotes): 'n', 'n,n,..', '(n,n,..)', '[n,n,...]', where n is a float. + + + A float sparse vector containing the values specified by the given string. + + + the string to parse. + + + An that supplies culture-specific formatting information. + + + + + Converts the string representation of a real sparse vector to float-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Converts the string representation of a real sparse vector to float-precision sparse vector equivalent. + A return value indicates whether the conversion succeeded or failed. + + + A string containing a real vector to convert. + + + An that supplies culture-specific formatting information about value. + + + The parsed value. + + + If the conversion succeeds, the result will contain a complex number equivalent to value. + Otherwise the result will be null. + + + + + Gets the number of non zero elements in the vector. + + The number of non zero elements. + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + Not range-checked. + + + + Sets the element without range checking. + + The row of the element. + The column of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + True if the specified field can be set to any value. + False if the field is fixed, like an off-diagonal field on a diagonal matrix. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Gets or sets the value at the given row and column, with range checking. + + + The row of the element. + + + The column of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + True if all fields of this matrix can be set to any value. + False if some fields are fixed, like on a diagonal matrix. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Retrieves the requested element without range checking. + + The index of the element. + The requested element. + Not range-checked. + + + + Sets the element without range checking. + + The index of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + True if the specified field can be set to any value. + False if the field is fixed. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Gets or sets the value at the given index, with range checking. + + + The index of the element. + + The value to get or set. + This method is ranged checked. and + to get and set values without range checking. + + + + True if all fields of this vector can be set to any value. + False if some fields are fixed. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + The array containing the row indices of the existing rows. Element "j" of the array gives the index of the + element in the array that is first non-zero element in a row "j" + + + + + An array containing the column indices of the non-zero values. Element "I" of the array + is the number of the column in matrix that contains the I-th value in the array. + + + + + Array that contains the non-zero elements of matrix. Values of the non-zero elements of matrix are mapped into the values + array using the row-major storage mapping described in a compressed sparse row (CSR) format. + + + + + Gets the number of non zero elements in the matrix. + + The number of non zero elements. + + + + Retrieves the requested element without range checking. + + + The row of the element. + + + The column of the element. + + + The requested element. + + Not range-checked. + + + + Sets the element without range checking. + + The row of the element. + The column of the element. + The value to set the element to. + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks. + + + + Delete value from internal storage + + Index of value in nonZeroValues array + Row number of matrix + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks + + + + Find item Index in nonZeroValues array + + Matrix row index + Matrix column index + Item index + WARNING: This method is not thread safe. Use "lock" with it and be sure to avoid deadlocks + + + + Calculates the amount with which to grow the storage array's if they need to be + increased in size. + + The amount grown. + + + + Indicates whether the current object is equal to another object of the same type. + + + An object to compare with this object. + + + true if the current object is equal to the parameter; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Array that contains the indices of the non-zero values. + + + + + Array that contains the non-zero elements of the vector. + + + + + Gets the number of non-zero elements in the vector. + + + + + Retrieves the requested element without range checking. + + + + + Sets the element without range checking. + + + + + Calculates the amount with which to grow the storage array's if they need to be + increased in size. + + The amount grown. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + An algorithm failed to converge. + + + + + Number theory utility functions for integers. + + + Number theory utility functions for integers. + + + + + Find out whether the provided 32 bit integer is an even number. + + The number to very whether it's even. + True if and only if it is an even number. + + + + Find out whether the provided 64 bit integer is an even number. + + The number to very whether it's even. + True if and only if it is an even number. + + + + Find out whether the provided 32 bit integer is an odd number. + + The number to very whether it's odd. + True if and only if it is an odd number. + + + + Find out whether the provided 64 bit integer is an odd number. + + The number to very whether it's odd. + True if and only if it is an odd number. + + + + Find out whether the provided 32 bit integer is a perfect power of two. + + The number to very whether it's a power of two. + True if and only if it is a power of two. + + + + Find out whether the provided 64 bit integer is a perfect power of two. + + The number to very whether it's a power of two. + True if and only if it is a power of two. + + + + Find the closest perfect power of two that is larger or equal to the provided + 32 bit integer. + + The number of which to find the closest upper power of two. + A power of two. + + + + + Find the closest perfect power of two that is larger or equal to the provided + 64 bit integer. + + The number of which to find the closest upper power of two. + A power of two. + + + + + Raises 2 to the provided integer exponent (0 <= exponent < 31). + + The exponent to raise 2 up to. + 2 ^ exponent. + + + + + Raises 2 to the provided integer exponent (0 <= exponent < 63). + + The exponent to raise 2 up to. + 2 ^ exponent. + + + + + Find out whether the provided 32 bit integer is a perfect square, i.e. a square of an integer. + + The number to very whether it's a perfect square. + True if and only if it is a perfect square. + + + + Find out whether the provided 64 bit integer is a perfect square, i.e. a square of an integer. + + The number to very whether it's a perfect square. + True if and only if it is a perfect square. + + + + Returns the greatest common divisor (gcd) of two integers using Euclid's algorithm. + + First Integer: a. + Second Integer: b. + Greatest common divisor gcd(a,b) + + + + Returns the greatest common divisor (gcd) of a set of integers using Euclid's + algorithm. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Returns the greatest common divisor (gcd) of a set of integers using Euclid's algorithm. + + List of Integers. + Greatest common divisor gcd(list of integers) + + + + Computes the extended greatest common divisor, such that a*x + b*y = gcd(a,b). + + First Integer: a. + Second Integer: b. + Resulting x, such that a*x + b*y = gcd(a,b). + Resulting y, such that a*x + b*y = gcd(a,b) + Greatest common divisor gcd(a,b) + + + long x,y,d; + d = Fn.GreatestCommonDivisor(45,18,out x, out y); + -> d == 9 && x == 1 && y == -2 + + The gcd of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2. + + + + + Returns the least common multiple (lcm) of two integers using Euclid's algorithm. + + First Integer: a. + Second Integer: b. + Least common multiple lcm(a,b) + + + + Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Returns the least common multiple (lcm) of a set of integers using Euclid's algorithm. + + List of Integers. + Least common multiple lcm(list of integers) + + + + Class to represent a permutation for a subset of the natural numbers. + + + + + Entry _indices[i] represents the location to which i is permuted to. + + + + + Initializes a new instance of the Permutation class. + + An array which represents where each integer is permuted too: indices[i] represents that integer i + is permuted to location indices[i]. + + + + Computes the inverse of the permutation. + + The inverse of the permutation. + + + + Construct an array from a sequence of inversions. + + + From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be + encoded using the array [22244]. + + The set of inversions to construct the permutation from. + A permutation generated from a sequence of inversions. + + + + Construct a sequence of inversions from the permutation. + + + From wikipedia: the permutation 12043 has the inversions (0,2), (1,2) and (3,4). This would be + encoded using the array [22244]. + + A sequence of inversions. + + + + Checks whether the array represents a proper permutation. + + An array which represents where each integer is permuted too: indices[i] represents that integer i + is permuted to location indices[i]. + True if represents a proper permutation, false otherwise. + + + + Gets the number of elements this permutation is over. + + + + + Computes where permutes too. + + The index to permute from. + The index which is permuted to. + + + + Utilities for working with floating point numbers. + + + + Useful links: + + + http://docs.sun.com/source/806-3568/ncg_goldberg.html#689 - What every computer scientist should know about floating-point arithmetic + + + http://en.wikipedia.org/wiki/Machine_epsilon - Gives the definition of machine epsilon + + + + + + + + The base number for binary values + + + + + The number of binary digits used to represent the binary number for a double precision floating + point value. i.e. there are this many digits used to represent the + actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5. + + + + + The number of binary digits used to represent the binary number for a single precision floating + point value. i.e. there are this many digits used to represent the + actual number, where in a number as: 0.134556 * 10^5 the digits are 0.134556 and the exponent is 5. + + + + + The maximum relative precision of a double + + + + + The maximum relative precision of a single + + + + + The number of significant figures that a double-precision floating point has. + + + + + The number of significant figures that a single-precision floating point has. + + + + Value representing 10 * 2^(-52) + + + Value representing 10 * 2^(-52) + + + + Initializes static members of the Precision class. + + + + + Returns the magnitude of the number. + + The value. + The magnitude of the number. + + + + Returns the magnitude of the number. + + The value. + The magnitude of the number. + + + + Returns the number divided by it's magnitude, effectively returning a number between -10 and 10. + + The value. + The value of the number. + + + + Gets the equivalent long value for the given double value. + + The double value which should be turned into a long value. + + The resulting long value. + + + + + Returns a 'directional' long value. This is a long value which acts the same as a double, + e.g. a negative double value will return a negative double value starting at 0 and going + more negative as the double value gets more negative. + + The input double value. + A long value which is roughly the equivalent of the double value. + + + + Returns a 'directional' int value. This is a int value which acts the same as a float, + e.g. a negative float value will return a negative int value starting at 0 and going + more negative as the float value gets more negative. + + The input float value. + An int value which is roughly the equivalent of the double value. + + + + Increments a floating point number to the next bigger number representable by the data type. + + The value which needs to be incremented. + + The incrementation step length depends on the provided value. + Increment(double.MaxValue) will return positive infinity. + + The next larger floating point value. + + + + Increments a floating point number to the next bigger number representable by the data type. + + The value which needs to be incremented. + How many times the number should be incremented. + + The incrementation step length depends on the provided value. + Increment(double.MaxValue) will return positive infinity. + + The next larger floating point value. + + + + Decrements a floating point number to the next smaller number representable by the data type. + + The value which should be decremented. + + The decrementation step length depends on the provided value. + Decrement(double.MinValue) will return negative infinity. + + The next smaller floating point value. + + + + Decrements a floating point number to the next smaller number representable by the data type. + + The value which should be decremented. + How many times the number should be decremented. + + The decrementation step length depends on the provided value. + Decrement(double.MinValue) will return negative infinity. + + The next smaller floating point value. + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The maximum count of numbers between the zero and the number . + + Zero if || is fewer than numbers from zero, otherwise. + + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The maximum count of numbers between the zero and the number . + + Zero if || is fewer than numbers from zero, otherwise. + + + Thrown if is smaller than zero. + + + + + Forces small numbers near zero to zero, according to the specified absolute accuracy. + + The real number to coerce to zero, if it is almost zero. + The absolute threshold for to consider it as zero. + Zero if || is smaller than , otherwise. + + Thrown if is smaller than zero. + + + + + Forces small numbers near zero to zero. + + The real number to coerce to zero, if it is almost zero. + Zero if || is smaller than 2^(-53) = 1.11e-16, otherwise. + + + + Determines the range of floating point numbers that will match the specified value with the given tolerance. + + The value. + The ulps difference. + The bottom range end. + The top range end. + + Thrown if is smaller than zero. + + + + + Returns the floating point number that will match the value with the tolerance on the maximum size (i.e. the result is + always bigger than the value) + + The value. + The ulps difference. + The maximum floating point number which is larger than the given . + + + + Returns the floating point number that will match the value with the tolerance on the minimum size (i.e. the result is + always smaller than the value) + + The value. + The ulps difference. + The minimum floating point number which is smaller than the given . + + + + Determines the range of ulps that will match the specified value with the given tolerance. + + The value. + The relative difference. + The number of ULPS between the value and the value - relativeDifference. + The number of ULPS between the value and the value + relativeDifference. + + Thrown if is smaller than zero. + + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + + + Evaluates the count of numbers between two double numbers + + The first parameter. + The second parameter. + The second number is included in the number, thus two equal numbers evaluate to zero and two neighbor numbers evaluate to one. Therefore, what is returned is actually the count of numbers between plus 1. + The number of floating point values between and . + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + Thrown if is double.PositiveInfinity or double.NegativeInfinity. + + + Thrown if is double.NaN. + + + + + Checks whether two real numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two real numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two Compex numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two Compex numbers are almost equal. + + The first number + The second number + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Checks whether two structures with precision support are almost equal. + + The type of the structures. Must implement . + The first structure + The second structure + true if the two values differ by no more than 10 * 2^(-52); false otherwise. + + + + Compares two complex and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both complex are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two complex and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both complex are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within + the specified maximum error. + + The first value. + The second value. + The accuracy required for being almost equal. + + if both doubles are almost equal up to the + specified maximum error, otherwise. + + + + + Compares two lists of doubles and determines if they are equal within the + specified maximum error. + + The first value list. + The second value list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two lists of doubles and determines if they are equal within the + specified maximum error. + + The first value list. + The second value list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two structure with precision support and determines if they are equal + within the specified maximum relative error. + + + The type of the structures. Must implement . + + The first structure. + The second structure. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum relative error, otherwise. + + + + + Compares two lists of structures with precision support and determines if they + are equal within the specified maximum error. + + + The type of the structures. Must implement . + + The first structure list. + The second structure list. + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum error. + + The first value. + The second value. + + The difference of the two values (according to some norm). + + + The accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum absolute error. + + The first value. + The second value. + + The difference of the two values (according to some norm). + + + The absolute accuracy required for being almost equal. + + + if both doubles are almost equal up to the specified + maximum absolute error, otherwise. + + + + + Compares two doubles and determines if they are equal within the specified + maximum relative error. + + The first value. + The second value. + The difference of the two values (according to some norm). + + The relative accuracy required for being + almost equal. + + if both doubles are almost equal up to the specified + maximum relative error, otherwise. + + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not. If the numbers + are very close to zero an absolute difference is compared, otherwise the relative difference is compared. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + Thrown if is smaller than zero. + + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not. If the numbers + are very close to zero an absolute difference is compared, otherwise the relative difference is compared. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + Thrown if is smaller than zero. + + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both floats are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two doubles and determines if they are equal to within the specified number of decimal places or not, using the + number of decimal places as an absolute measure. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both doubles are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two floats and determines if they are equal to within the specified number of decimal places or not, using the + number of decimal places as an absolute measure. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + if both floats are equal to each other within the specified number of decimal places; otherwise . + + + + Compares two doubles and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation. + + + + Determines the 'number' of floating point numbers between two values (i.e. the number of discrete steps + between the two numbers) and then checks if that is within the specified tolerance. So if a tolerance + of 1 is passed then the result will be true only if the two numbers have the same binary representation + OR if they are two adjacent numbers that only differ by one step. + + + The comparison method used is explained in http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm . The article + at http://www.extremeoptimization.com/resources/Articles/FPDotNetConceptsAndFormats.aspx explains how to transform the C code to + .NET enabled code without using pointers and unsafe code. + + + The first value. + The second value. + The maximum number of floating point values between the two values. Must be 1 or larger. + if both doubles are equal to each other within the specified tolerance; otherwise . + + Thrown if is smaller than one. + + + + + Compares two floats and determines if they are equal to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values between the two values. Must be 1 or larger. + if both floats are equal to each other within the specified tolerance; otherwise . + + Thrown if is smaller than one. + + + + + Compares two doubles and determines if the first value is larger than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is larger than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is larger than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of the numbers, e.g. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is larger than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is smaller than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two floats and determines if the first value is smaller than the second + value to within the tolerance or not. Equality comparison is based on the binary representation. + + The first value. + The second value. + The maximum number of floating point values for which the two values are considered equal. Must be 1 or larger. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two doubles and determines if the first value is smaller than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two floats and determines if the first value is smaller than the second + value to within the specified number of decimal places or not. + + + + The values are equal if the difference between the two numbers is smaller than 10^(-numberOfDecimalPlaces). We divide by + two so that we have half the range on each side of thg. if == 2, then 0.01 will equal between + 0.005 and 0.015, but not 0.02 and not 0.00 + + + The first value. + The second value. + The number of decimal places. + true if the first value is smaller than the second value; otherwise false. + + + + Compares two doubles and determines which double is bigger. + + The first value. + The second value. + The maximum error in terms of Units in Last Place (ulps), i.e. the maximum number of decimals that may be different. Must be 1 or larger. + + + + Return value + Meaning + + + -1 + is smaller than by more than the tolerance. + + + 0 + is equal to within the tolerance. + + + 1 + is bigger than by more than the tolerance. + + + + + + + Compares two doubles and determines which double is bigger. + + The first value. + The second value. + The number of decimal places on which the values must be compared. Must be 1 or larger. + + + + Return value + Meaning + + + -1 + is smaller than by more than a magnitude equal to . + + + 0 + is equal to within a magnitude equal to . + + + 1 + is bigger than by more than a magnitude equal to . + + + + + + + Evaluates the minimum distance to the next distinguishable number near the argument value. + + The value used to determine the minimum distance. + + Relative Epsilon (positive double or NaN). + + Evaluates the negative epsilon. The more common positive epsilon is equal to two times this negative epsilon. + + + + + Evaluates the minimum distance to the next distinguishable number near the argument value. + + The value used to determine the minimum distance. + Relative Epsilon (positive double or NaN) + Evaluates the positive epsilon. See also + + + + + Converts a float valut to a bit array stored in an int. + + The value to convert. + The bit array. + + + + Gets the maximum relative precision of a double. + + The maximum relative precision of a double. + + + + Gets the maximum relative precision of a single. + + The maximum relative precision of a single. + + + + Gets the number of decimal places for floats. + + The number of decimal places for floats. + + + + Gets the number of decimal places for doubles. + + The number of decimal places for doubles. + + + + Abstract class for random number generators. This class introduces a layer between + and the Math.Net Numerics random number generators to provide thread safety. + + + + + The method that actually generates samples. + + + + + The object that will be locked for thread safety. + + + + + Initializes a new instance of the class using + the value of to set whether + the instance is thread safe or not. + + + + + Initializes a new instance of the class. + + if set to true , the class is thread safe. + Thread safe instances are two and half times slower than non-thread + safe classes. + + + + Returns an array of uniformly distributed random doubles in the interval [0.0,1.0]. + + The size of the array. + + An array of uniformly distributed random doubles in the interval [0.0,1.0]. + + if n is not greater than 0. + + + + Returns a nonnegative random number. + + + A 32-bit signed integer greater than or equal to zero and less than . + + + + + Returns a random number less then a specified maximum. + + The exclusive upper bound of the random number returned. + A 32-bit signed integer less than . + is negative. + + + + Returns a random number within a specified range. + + The inclusive lower bound of the random number returned. + The exclusive upper bound of the random number returned. must be greater than or equal to . + + A 32-bit signed integer greater than or equal to and less than ; that is, the range of return values includes but not . If equals , is returned. + + is greater than . + + + + Fills the elements of a specified array of bytes with random numbers. + + An array of bytes to contain random numbers. + is null. + + + + Returns a random number between 0.0 and 1.0. + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + Thread safe version of which returns a random number between 0.0 and 1.0. + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0 + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + A delegate type that represents a method that generates random numbers. + + Randomly distributed numbers. + + + + Multiplicative congruential generator using a modulus of 2^31-1 and a multiplier of 1132489760. + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Multiplicative congruential generator using a modulus of 2^59 and a multiplier of 13^13. + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Random number generator using Mersenne Twister 19937 algorithm. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Mersenne twister constant. + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + Uses the value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + A 32-bit combined multiple recursive generator with 2 components of order 3. + + Based off of P. L'Ecuyer, "Combined Multiple Recursive Random Number Generators," Operations Research, 44, 5 (1996), 816--822. + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Represents a Parallel Additive Lagged Fibonacci pseudo-random number generator. + + + The type bases upon the implementation in the + Boost Random Number Library. + It uses the modulus 232 and by default the "lags" 418 and 1279. Some popular pairs are presented on + Wikipedia - Lagged Fibonacci generator. + + + + + Default value for the ShortLag + + + + + Default value for the LongLag + + + + + The multiplier to compute a double-precision floating point number [0, 1) + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + The ShortLag value + TheLongLag value + + + + Stores an array of random numbers + + + + + Stores an index for the random number array element that will be accessed next. + + + + + Fills the array with new unsigned random numbers. + + + Generated random numbers are 32-bit unsigned integers greater than or equal to 0 + and less than or equal to . + + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Gets the short lag of the Lagged Fibonacci pseudo-random number generator. + + + + + Gets the long lag of the Lagged Fibonacci pseudo-random number generator. + + + + + This class implements extension methods for the System.Random class. The extension methods generate + pseudo-random distributed numbers for types other than double and int32. + + + + + Returns a nonnegative random number less than . + + + The random object to extend. + + + A 64-bit signed integer greater than or equal to 0, and less than ; that is, + the range of return values includes 0 but not . + + + + + + Returns a random number of the full Int32 range. + + + The random object to extend. + + + A 32-bit signed integer of the full range, including 0, negative numbers, + and . + + + + + + Returns a random number of the full Int64 range. + + + The random object to extend. + + + A 64-bit signed integer of the full range, including 0, negative numbers, + and . + + + + + + Returns a nonnegative decimal floating point random number less than 1.0. + + + The random object to extend. + + + A decimal floating point number greater than or equal to 0.0, and less than 1.0; that is, + the range of return values includes 0.0 but not 1.0. + + + + + Wichmann-Hill’s 1982 combined multiplicative congruential generator. + + See: Wichmann, B. A. & Hill, I. D. (1982), "Algorithm AS 183: + An efficient and portable pseudo-random number generator". Applied Statistics 31 (1982) 188-190 + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Wichmann-Hill’s 2006 combined multiplicative congruential generator. + + See: Wichmann, B. A. & Hill, I. D. (2006), "Generating good pseudo-random numbers". + Computational Statistics & Data Analysis 51:3 (2006) 1614-1622 + + + + + Initializes a new instance of the class using + the current time as the seed. + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + + + + Initializes a new instance of the class. + + The seed value. + The seed is set to 1, if the zero is used as the seed. + if set to true , the class is thread safe. + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Implements a multiply-with-carry Xorshift pseudo random number generator (RNG) specified in Marsaglia, George. (2003). Xorshift RNGs. + Xn = a * Xn−3 + c mod 2^32 + http://www.jstatsoft.org/v08/i14/paper + + + + + The default value for X1. + + + + + The default value for X2. + + + + + The default value for the multiplier. + + + + + The default value for the carry over. + + + + + The multiplier to compute a double-precision floating point number [0, 1) + + + + + Initializes a new instance of the class using + the current time as the seed. + + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class using + the current time as the seed. + + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Note: must be less than . + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class using + the current time as the seed. + + if set to true , the class is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class. + + The seed value. + If the seed value is zero, it is set to one. Uses the + value of to + set whether the instance is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + + Uses the default values of: + + a = 916905990 + c = 13579 + X1 = 77465321 + X2 = 362436069 + + + + + Initializes a new instance of the class. + + The seed value. + if set to true, the class is thread safe. + The multiply value + The initial carry value. + The initial value if X1. + The initial value if X2. + must be less than . + + + + Seed or last but three unsigned random number. + + + + + Last but two unsigned random number. + + + + + Last but one unsigned random number. + + + + + The value of the carry over. + + + + + The multiplier. + + + + + Returns a random number between 0.0 and 1.0. + + + A double-precision floating point number greater than or equal to 0.0, and less than 1.0. + + + + + Bisection root-finding algorithm without any recovery measures in case of lacking bracketing. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Guess for the low value of the range where the root is supposed to be. Will be expanded if needed. + Guess for the high value of the range where the root is supposed to be. Will be expanded if needed. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Factor at which to expand the bounds, if needed. Default 1.6. + Maximum number of expand iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Algorithm by by Brent, Van Wijngaarden, Dekker et al. + Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + Helper method useful for preventing rounding errors. + a*sign(b) + + + + Algorithm by Broyden. + Implementation inspired by Press, Teukolsky, Vetterling, and Flannery, "Numerical Recipes in C", 2nd edition, Cambridge University Press + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Initial guess of the root. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + Initial guess of the root. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. + Maximum number of iterations. Usually 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Helper method to calculate an approxiamtion of the Jacobian. + + The function. + The argument. + + + + + Pure Newton-Raphson root-finding algorithm without any recovery measures in cases it behaves badly. + The algorithm aborts immediately if the root leaves the bound interval. + + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + Initial guess of the root. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MinValue. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. Default MaxValue. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + Initial guess of the root. + The low value of the range where the root is supposed to be. Aborts if it leaves the interval. + The high value of the range where the root is supposed to be. Aborts if it leaves the interval. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + + Robust Newton-Raphson root-finding algorithm that falls back to bisection when overshooting or converging too slow, or to subdivision on lacking bracketing. + + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Default 1e-8. + Maximum number of iterations. Default 100. + How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Default 20. + Returns the root with the specified accuracy. + + + + Find a solution of the equation f(x)=0. + The function to find roots from. + The first derivative of the function to find roots from. + The low value of the range where the root is supposed to be. + The high value of the range where the root is supposed to be. + Desired accuracy. The root will be refined until the accuracy or the maximum number of iterations is reached. Example: 1e-14. + Maximum number of iterations. Example: 100. + How many parts an interval should be split into for zero crossing scanning in case of lacking bracketing. Example: 20. + The root that was found, if any. Undefined if the function returns false. + True if a root with the specified accuracy was found, else false. + + + Detect a range containing at least one root. + The function to detect roots from. + Lower value of the range. + Upper value of the range + The growing factor of research. Usually 1.6. + Maximum number of iterations. Usually 50. + True if the bracketing operation succeeded, false otherwise. + This iterative methods stops when two values with opposite signs are found. + + + + Generic Function Sampling and Quantization Provider + + + Generic Function Sampling and Quantization Provider + + + Generic Function Sampling and Quantization Provider + + + + + Samples a function at the roots of the Chebyshev polynomial of the first kind. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + Vector of the function sampled in [a,b] at (b+a)/2+(b-1)/2*cos(pi*(2i-1)/(2n)) + + + + + + Samples a function at the roots of the Chebyshev polynomial of the second kind. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + Vector of the function sampled in [a,b] at (b+a)/2+(b-1)/2*cos(pi*i/(n-1)) + + + + + + Samples a function equidistant within the provided interval. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant within the provided interval. + + The real-domain function to sample. + The real domain interval begin where to start sampling. + The real domain interval end where to stop sampling. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a periodic function equidistant within one period, but omits the last sample such that the sequence + can be concatenated together. + + The real-domain function to sample. + The real domain full period length. + The real domain offset where to start the sampling period. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a periodic function equidistant within one period, but omits the last sample such that the sequence + can be concatenated together. + + The real-domain function to sample. + The real domain full period length. + The real domain offset where to start the sampling period. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function equidistant continuously starting from the provided location with a fixed step length. + + The real-domain function to sample. + The real domain location offset where to start sampling. + The real domain step length between the equidistant samples. + The value type of the function to sample. + The generated sample enumerator. + + + + + Samples a function equidistant with the provided start and step length to an integer-domain function + + The real-domain function to sample. + The real domain location where to start sampling. + The real domain step length between the equidistant samples. + The value type of the function to sample. + The generated samples integer-domain function. + + + + + Samples a function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The real domain points where the samples are taken at. + The value type of the function to sample. + The generated sample vector. + + + + + + Samples a two-domain function randomly with the provided distribution. + + The real-domain function to sample. + Random distribution of the real domain sample points. + The number of samples to generate. + The value type of the function to sample. + The generated sample vector. + + + + + + Sorting algorithms for single, tuple and triple lists. + + + + + Sort a list of keys, in place using the quick sort algorithm. + + The type of elements stored in the list. + List to sort. + + + + Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm. + + The type of elements stored in the key list. + The type of elements stored in the item list. + List to sort. + List to permute the same way as the key list. + + + + Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm. + + The type of elements stored in the key list. + The type of elements stored in the first item list. + The type of elements stored in the second item list. + List to sort. + First list to permute the same way as the key list. + Second list to permute the same way as the key list. + + + + Sort a range of a list of keys, in place using the quick sort algorithm. + + The type of elements in the key list. + List to sort. + The zero-based starting index of the range to sort. + The length of the range to sort. + + + + Sort a list of keys, in place using the quick sort algorithm using the quick sort algorithm. + + The type of elements in the key list. + List to sort. + Comparison, defining the sort order. + + + + Sort a list of keys and items with respect to the keys, in place using the quick sort algorithm. + + The type of elements in the key list. + The type of elements in the item list. + List to sort. + List to permute the same way as the key list. + Comparison, defining the sort order. + + + + Sort a list of keys, items1 and items2 with respect to the keys, in place using the quick sort algorithm. + + The type of elements in the key list. + The type of elements in the first item list. + The type of elements in the second item list. + List to sort. + First list to permute the same way as the key list. + Second list to permute the same way as the key list. + Comparison, defining the sort order. + + + + Sort a range of a list of keys, in place using the quick sort algorithm. + + The type of element in the list. + List to sort. + The zero-based starting index of the range to sort. + The length of the range to sort. + Comparison, defining the sort order. + + + + Recursive implementation for an in place quick sort on a list. + + The type of the list on which the quick sort is performed. + The list which is sorted using quick sort. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Recursive implementation for an in place quick sort on a list while reordering one other list accordingly. + + The type of the list on which the quick sort is performed. + The type of the list which is automatically reordered accordingly. + The list which is sorted using quick sort. + The list which is automatically reordered accordingly. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Recursive implementation for an in place quick sort on one list while reordering two other lists accordingly. + + The type of the list on which the quick sort is performed. + The type of the first list which is automatically reordered accordingly. + The type of the second list which is automatically reordered accordingly. + The list which is sorted using quick sort. + The first list which is automatically reordered accordingly. + The second list which is automatically reordered accordingly. + The method with which to compare two elements of the quick sort. + The left boundary of the quick sort. + The right boundary of the quick sort. + + + + Performs an in place swap of two elements in a list. + + The type of elements stored in the list. + The list in which the elements are stored. + The index of the first element of the swap. + The index of the second element of the swap. + + + + This partial implementation of the SpecialFunctions class contains all methods related to the error function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the harmonic function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the logistic function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the modified bessel function. + + + This partial implementation of the SpecialFunctions class contains all methods related to the modified bessel function. + + + + + The order of the approximation. + + + + + Auxiliary variable when evaluating the function. + + + + + Computes the logarithm of the Euler Beta function. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The logarithm of the Euler Beta function evaluated at z,w. + If or are not positive. + + + + Computes the Euler Beta function. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The Euler Beta function evaluated at z,w. + If or are not positive. + + + + Returns the lower incomplete (unregularized) beta function + I_x(a,b) = int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The upper limit of the integral. + The lower incomplete (unregularized) beta function. + + + + Returns the regularized lower incomplete beta function + I_x(a,b) = 1/Beta(a,b) * int(t^(a-1)*(1-t)^(b-1),t=0..x) for real a > 0, b > 0, 1 >= x >= 0. + + The first Beta parameter, a positive real number. + The second Beta parameter, a positive real number. + The upper limit of the integral. + The regularized lower incomplete beta function. + + + Calculates the error function. + The value to evaluate. + the error function evaluated at given value. + + + returns 1 if x == Double.PositiveInfinity. + returns -1 if x == Double.NegativeInfinity. + + + + + Calculates the complementary error function. + The value to evaluate. + the complementary error function evaluated at given value. + + + returns 0 if x == Double.PositiveInfinity. + returns 2 if x == Double.NegativeInfinity. + + + + + Calculates the inverse error function evaluated at z. + The inverse error function evaluated at given value. + + + returns Double.PositiveInfinity if z >= 1.0. + returns Double.NegativeInfinity if z <= -1.0. + + + Calculates the inverse error function evaluated at z. + value to evaluate. + the inverse error function evaluated at Z. + + + + Implementation of the error function. + + Where to evaluate the error function. + Whether to compute 1 - the error function. + the error function. + + + Calculates the complementary inverse error function evaluated at z. + The complementary inverse error function evaluated at given value. + We have tested this implementation against the arbitrary precision mpmath library + and found cases where we can only guarantee 9 significant figures correct. + + returns Double.PositiveInfinity if z <= 0.0. + returns Double.NegativeInfinity if z >= 2.0. + + + calculates the complementary inverse error function evaluated at z. + value to evaluate. + the complementary inverse error function evaluated at Z. + + + + The implementation of the inverse error function. + + First intermediate parameter. + Second intermediate parameter. + Third intermediate parameter. + the inverse error function. + + + + Initializes static members of the SpecialFunctions class. + + + + + Computes the factorial function x -> x! of an integer number > 0. The function can represent all number up + to 22! exactly, all numbers up to 170! using a double representation. All larger values will overflow. + + A value value! for value > 0 + + If you need to multiply or divide various such factorials, consider using the logarithmic version + instead so you can add instead of multiply and subtract instead of divide, and + then exponentiate the result using . This will also circumvent the problem that + factorials become very large even for small parameters. + + + + + + Computes the logarithmic factorial function x -> ln(x!) of an integer number > 0. + + A value value! for value > 0 + + + + Computes the binomial coefficient: n choose k. + + A nonnegative value n. + A nonnegative value h. + The binomial coefficient: n choose k. + + + + Computes the natural logarithm of the binomial coefficient: ln(n choose k). + + A nonnegative value n. + A nonnegative value h. + The logarithmic binomial coefficient: ln(n choose k). + + + + Computes the multinomial coefficient: n choose n1, n2, n3, ... + + A nonnegative value n. + An array of nonnegative values that sum to . + The multinomial coefficient. + if is . + If or any of the are negative. + If the sum of all is not equal to . + + + + Polynomial coefficients for the approximation. + + + + + Computes the logarithm of the Gamma function. + + The argument of the gamma function. + The logarithm of the gamma function. + + This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in + "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004. + We use the implementation listed on p. 116 which achieves an accuracy of 16 floating point digits. Although 16 digit accuracy + should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh). + Our unit tests suggest that the accuracy of the Gamma function is correct up to 14 floating point digits. + + + + + Computes the Gamma function. + + The argument of the gamma function. + The logarithm of the gamma function. + + + This implementation of the computation of the gamma and logarithm of the gamma function follows the derivation in + "An Analysis Of The Lanczos Gamma Approximation", Glendon Ralph Pugh, 2004. + We use the implementation listed on p. 116 which should achieve an accuracy of 16 floating point digits. Although 16 digit accuracy + should be sufficient for double values, improving accuracy is possible (see p. 126 in Pugh). + + Our unit tests suggest that the accuracy of the Gamma function is correct up to 13 floating point digits. + + + + + Returns the upper incomplete regularized gamma function + Q(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The lower integral limit. + The upper incomplete regularized gamma function. + + + + Returns the upper incomplete gamma function + Gamma(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The lower integral limit. + The upper incomplete gamma function. + + + + Returns the lower incomplete gamma function + gamma(a,x) = int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The upper integral limit. + The lower incomplete gamma function. + + + + Returns the lower incomplete regularized gamma function + P(a,x) = 1/Gamma(a) * int(exp(-t)t^(a-1),t=0..x) for real a > 0, x > 0. + + The argument for the gamma function. + The upper integral limit. + The lower incomplete gamma function. + + + + Computes the Digamma function which is mathematically defined as the derivative of the logarithm of the gamma function. + This implementation is based on + Jose Bernardo + Algorithm AS 103: + Psi ( Digamma ) Function, + Applied Statistics, + Volume 25, Number 3, 1976, pages 315-317. + Using the modifications as in Tom Minka's lightspeed toolbox. + + The argument of the digamma function. + The value of the DiGamma function at . + + + + Computes the inverse Digamma function: this is the inverse of the logarithm of the gamma function. This function will + only return solutions that are positive. + This implementation is based on the bisection method. + + The argument of the inverse digamma function. + The positive solution to the inverse DiGamma function at . + + + + Computes the 'th Harmonic number. + + The Harmonic number which needs to be computed. + The t'th Harmonic number. + + + + Compute the generalized harmonic number of order n of m. (1 + 1/2^m + 1/3^m + ... + 1/n^m) + + The order parameter. + The power parameter. + General Harmonic number. + + + + Computes the logistic function. see: http://en.wikipedia.org/wiki/Logistic + + The parameter for which to compute the logistic function. + The logistic function of . + + + + Computes the logit function, the inverse of the sigmoid logistic function. see: http://en.wikipedia.org/wiki/Logit + + The parameter for which to compute the logit function. This number should be + between 0 and 1. + The logarithm of divided by 1.0 - . + + + + ************************************** + COEFFICIENTS FOR METHODS bessi0 * + ************************************** + + Chebyshev coefficients for exp(-x) I0(x) + in the interval [0, 8]. + + lim(x->0){ exp(-x) I0(x) } = 1. + + + + Chebyshev coefficients for exp(-x) sqrt(x) I0(x) + in the inverted interval [8, infinity]. + + lim(x->inf){ exp(-x) sqrt(x) I0(x) } = 1/sqrt(2pi). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessi1 * + ************************************** + + Chebyshev coefficients for exp(-x) I1(x) / x + in the interval [0, 8]. + + lim(x->0){ exp(-x) I1(x) / x } = 1/2. + + + + Chebyshev coefficients for exp(-x) sqrt(x) I1(x) + in the inverted interval [8, infinity]. + + lim(x->inf){ exp(-x) sqrt(x) I1(x) } = 1/sqrt(2pi). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessk0, bessk0e * + ************************************** + + Chebyshev coefficients for K0(x) + log(x/2) I0(x) + in the interval [0, 2]. The odd order coefficients are all + zero; only the even order coefficients are listed. + + lim(x->0){ K0(x) + log(x/2) I0(x) } = -EUL. + + + + Chebyshev coefficients for exp(x) sqrt(x) K0(x) + in the inverted interval [2, infinity]. + + lim(x->inf){ exp(x) sqrt(x) K0(x) } = sqrt(pi/2). + + + + + ************************************** + COEFFICIENTS FOR METHODS bessk1, bessk1e * + ************************************** + + Chebyshev coefficients for x(K1(x) - log(x/2) I1(x)) + in the interval [0, 2]. + + lim(x->0){ x(K1(x) - log(x/2) I1(x)) } = 1. + + + + Chebyshev coefficients for exp(x) sqrt(x) K1(x) + in the interval [2, infinity]. + + lim(x->inf){ exp(x) sqrt(x) K1(x) } = sqrt(pi/2). + + + + Returns the modified Bessel function of first kind, order 0 of the argument. +

+ The function is defined as i0(x) = j0( ix ). +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the modified Bessel function of first kind, + order 1 of the argument. +

+ The function is defined as i1(x) = -i j1( ix ). +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the modified Bessel function of the second kind + of order 0 of the argument. +

+ The range is partitioned into the two intervals [0, 8] and + (8, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the exponentially scaled modified Bessel function + of the second kind of order 0 of the argument. + + The value to compute the bessel function of. + + + + Returns the modified Bessel function of the second kind + of order 1 of the argument. +

+ The range is partitioned into the two intervals [0, 2] and + (2, infinity). Chebyshev polynomial expansions are employed + in each interval. +

+ The value to compute the bessel function of. + +
+ + Returns the exponentially scaled modified Bessel function + of the second kind of order 1 of the argument. +

+ k1e(x) = exp(x) * k1(x). +

+ The value to compute the bessel function of. + +
+ + + Returns the modified Struve function of order 0. + + The value to compute the function of. + + + + + Returns the modified Struve function of order 1. + + The value to compute the function of. + + + + + Returns the difference between the Bessel I0 and Struve L0 functions. + + The value to compute the function of. + + + + + Returns the difference between the Bessel I1 and Struve L1 functions. + + The value to compute the function of. + + + + + Numerically stable exponential minus one, i.e. x -> exp(x)-1 + + A number specifying a power. + Returns exp(power)-1. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Numerically stable hypotenuse of a right angle triangle, i.e. (a,b) -> sqrt(a^2 + b^2) + + The length of side a of the triangle. + The length of side b of the triangle. + Returns sqrt(a2 + b2) without underflow/overflow. + + + + Evaluation functions, useful for function approximation. + + + + + Evaluate polynomials. + + The coefficients of the polynomial. + The location where to evaluate the polynomial at. + the evaluation of the polynomial. + + + + Evaluate a polynomial at point x. + Coefficients are ordered by power with power k at index k. + Example: coefficients [3,-1,2] represent y=2x^2-x+3. + + The location where to evaluate the polynomial at. + The coefficients of the polynomial, coefficient for power k at index k. + + + + Numerically stable series summation + + provides the summands sequentially + Sum + + + Evaluates the series of Chebyshev polynomials Ti at argument x/2. + The series is given by +
+                  N-1
+                   - '
+            y  =   >   coef[i] T (x/2)
+                   -            i
+                  i=0
+            
+ Coefficients are stored in reverse order, i.e. the zero + order term is last in the array. Note N is the number of + coefficients, not the order. +

+ If coefficients are for the interval a to b, x must + have been transformed to x -> 2(2x - b - a)/(b-a) before + entering the routine. This maps x from (a, b) to (-1, 1), + over which the Chebyshev polynomials are defined. +

+ If the coefficients are for the inverted interval, in + which (a, b) is mapped to (1/b, 1/a), the transformation + required is x -> 2(2ab/x - b - a)/(b-a). If b is infinity, + this becomes x -> 4a/x - 1. +

+ SPEED: +

+ Taking advantage of the recurrence properties of the + Chebyshev polynomials, the routine requires one more + addition per loop than evaluating a nested polynomial of + the same degree. +

+ The coefficients of the polynomial. + Argument to the polynomial. + + Reference: https://bpm2.svn.codeplex.com/svn/Common.Numeric/Arithmetic.cs +

+ Marked as Deprecated in + http://people.apache.org/~isabel/mahout_site/mahout-matrix/apidocs/org/apache/mahout/jet/math/Arithmetic.html + + + +

+ Summation of Chebyshev polynomials, using the Clenshaw method with Reinsch modification. + + The no. of terms in the sequence. + The coefficients of the Chebyshev series, length n+1. + The value at which the series is to be evaluated. + + ORIGINAL AUTHOR: + Dr. Allan J. MacLeod; Dept. of Mathematics and Statistics, University of Paisley; High St., PAISLEY, SCOTLAND + REFERENCES: + "An error analysis of the modified Clenshaw method for evaluating Chebyshev and Fourier series" + J. Oliver, J.I.M.A., vol. 20, 1977, pp379-391 + +
+ + + Statistics operating on arrays assumed to be unsorted. + WARNING: Methods with the Inplace-suffix may modify the data array by reordering its entries. + + + + + + + + Returns the smallest value from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Returns the smallest value from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the arithmetic sample mean from the unsorted data array. + Returns NaN if data is empty or any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population variance from the provided samples as unsorted array. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Evaluates the population variance from the full population provided as unsorted array. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population standard deviation from the provided samples as unsorted array. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Evaluates the population standard deviation from the full population provided as unsorted array. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample array, no sorting is assumed. + + + + Estimates the unbiased population covariance from the provided two sample arrays. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + First sample array. + Second sample array. + + + + Evaluates the population covariance from the full population provided as two arrays. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + First population array. + Second population array. + + + + Returns the order statistic (order 1..N) from the unsorted data array. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Estimates the median value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the p-Percentile value from the unsorted data array. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the first quartile value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the third quartile value from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the inter-quartile range from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the unsorted data array. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive). + + R-8, SciPy-(1/3,1/3): + Linear interpolation of the approximate medians for order statistics. + When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN. + + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile defintion can be specified + by 4 parameters a, b, c and d, consistent with Mathematica. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive) + + + + Estimates the tau-th quantile from the unsorted data array. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + WARNING: Works inplace and can thus causes the data array to be reordered. + + Sample array, no sorting is assumed. Will be reordered. + Quantile selector, between 0.0 and 1.0 (inclusive) + Quantile definition, to choose what product/definition it should be consistent with + + + + A class with correlation measures between two datasets. + + + + + Computes the Pearson product-moment correlation coefficient. + + Sample data A. + Sample data B. + The Pearson product-moment correlation coefficient. + + + + Computes the Spearman Ranked Correlation Coefficient. + + Sample data series A. + Sample data series B. + The Spearman Ranked Correlation Coefficient. + + + + Computes the basic statistics of data set. The class meets the + NIST standard of accuracy for mean, variance, and standard deviation + (the only statistics they provide exact values for) and exceeds them + in increased accuracy mode. + + + + + Initializes a new instance of the class. + + The sample data. + + + + Initializes a new instance of the class. + + The sample data. + + + + Initializes a new instance of the class. + + The sample data. + + If set to true, increased accuracy mode used. + Increased accuracy mode uses types for internal calculations. + + + Don't use increased accuracy for data sets containing large values (in absolute value). + This may cause the calculations to overflow. + + + + + Initializes a new instance of the class. + + The sample data. + + If set to true, increased accuracy mode used. + Increased accuracy mode uses types for internal calculations. + + + Don't use increased accuracy for data sets containing large values (in absolute value). + This may cause the calculations to overflow. + + + + + Computes descriptive statistics from a stream of data values. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of nullable data values. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of data values using high accuracy. + + A sequence of datapoints. + + + + Computes descriptive statistics from a stream of nullable data values using high accuracy. + + A sequence of datapoints. + + + + Internal use. Method use for setting the statistics. + + For setting Mean. + For setting Variance. + For setting Skewness. + For setting Kurtosis. + For setting Minimum. + For setting Maximum. + For setting Count. + + + + Gets the size of the sample. + + The size of the sample. + + + + Gets the sample mean. + + The sample mean. + + + + Gets the unbiased population variance estimator (on a dataset of size N will use an N-1 normalizer). + + The sample variance. + + + + Gets the unbiased population standard deviation (on a dataset of size N will use an N-1 normalizer). + + The sample standard deviation. + + + + Gets the sample skewness. + + The sample skewness. + Returns zero if is less than three. + + + + Gets the sample median. + + The sample median. + + + + Gets the sample kurtosis. + + The sample kurtosis. + Returns zero if is less than four. + + + + Gets the maximum sample value. + + The maximum sample value. + + + + Gets the minimum sample value. + + The minimum sample value. + + + + A consists of a series of s, + each representing a region limited by a lower bound (exclusive) and an upper bound (inclusive). + + + + + Initializes a new instance of the Bucket class. + + + + + Initializes a new instance of the Bucket class. + + + + + Creates a copy of the Bucket with the lowerbound, upperbound and counts exactly equal. + + A cloned Bucket object. + + + + This method check whether a point is contained within this bucket. + + The point to check. + 0 if the point falls within the bucket boundaries; -1 if the point is + smaller than the bucket, +1 if the point is larger than the bucket. + + + + Comparison of two disjoint buckets. The buckets cannot be overlapping. + + + + + Checks whether two Buckets are equal; this method tolerates a difference in lowerbound, upperbound + and count given by . + + + + + Provides a hash code for this bucket. + + + + + Formats a human-readable string for this bucket. + + + + + + Lower Bound of the Bucket. + + + + + Upper Bound of the Bucket. + + + + + The number of datapoints in the bucket. + + + + + Width of the Bucket. + + + + + Default comparer. + + + + + This IComparer performs comparisons between a point and a bucket. + + + + + Compares a point and a bucket. The point will be encapsulated in a bucket with width 0. + + The first bucket to compare. + The second bucket to compare. + -1 when the point is less than this bucket, 0 when it is in this bucket and 1 otherwise. + + + + A class which computes histograms of data. + + + + + Contains all the Buckets of the Histogram. + + + + + Indicates whether the elements of buckets are currently sorted. + + + + + Initializes a new instance of the Histogram class. + + + + + Constructs a Histogram with a specific number of equally sized buckets. The upper and lower bound of the histogram + will be set to the smallest and largest datapoint. + + The datasequence to build a histogram on. + The number of buckets to use. + + + + Constructs a Histogram with a specific number of equally sized buckets. + + The datasequence to build a histogram on. + The number of buckets to use. + The histogram lower bound. + The histogram upper bound. + + + + Add one data point to the histogram. If the datapoint falls outside the range of the histogram, + the lowerbound or upperbound will automatically adapt. + + The datapoint which we want to add. + + + + Add a sequence of data point to the histogram. If the datapoint falls outside the range of the histogram, + the lowerbound or upperbound will automatically adapt. + + The sequence of datapoints which we want to add. + + + + Adds a Bucket to the Histogram. + + + + + Sort the buckets if needed. + + + + + Returns the Bucket that contains the value v. + + The point to search the bucket for. + A copy of the bucket containing point . + + + + Returns the index in the Histogram of the Bucket + that contains the value v. + + The point to search the bucket index for. + The index of the bucket containing the point. + + + + Prints the buckets contained in the . + + + + + Returns the lower bound of the histogram. + + + + + Returns the upper bound of the histogram. + + + + + Gets the n'th bucket. + + The index of the bucket to be returned. + A copy of the n'th bucket. + + + + Gets the number of buckets. + + + + + Gets the total number of datapoints in the histogram. + + + + + A hybrid Monte Carlo sampler for multivariate distributions. + + + + + The Hybrid (also called Hamiltonian) Monte Carlo produces samples from distribition P using a set + of Hamiltonian equations to guide the sampling process. It uses the negative of the log density as + a potential energy, and a randomly generated momentum to set up a Hamiltonian system, which is then used + to sample the distribution. This can result in a faster convergence than the random walk Metropolis sampler + (). + + The type of samples this sampler produces. + + + + The interface which every sampler must implement. + + The type of samples this sampler produces. + + + + The random number generator for this class. + + + + + Keeps track of the number of accepted samples. + + + + + Keeps track of the number of calls to the proposal sampler. + + + + + Initializes a new instance of the class. + + Thread safe instances are two and half times slower than non-thread + safe classes. + + + + Returns one sample. + + + + + Returns a number of samples. + + The number of samples we want. + An array of samples. + + + + Gets or sets the random number generator. + + When the random number generator is null. + + + + Gets the acceptance rate of the sampler. + + + + + Evaluates the energy function of the target distribution. + + + + + The current location of the sampler. + + + + + The number of burn iterations between two samples. + + + + + The size of each step in the Hamiltonian equation. + + + + + The number of iterations in the Hamiltonian equation. + + + + + The algorithm used for differentiation. + + + + + Constructs a new Hybrid Monte Carlo sampler. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + Random number generator used for sampling the momentum. + The method used for differentiation. + When the number of burnInterval iteration is negative. + When either x0, pdfLnP or diff is null. + + + + Returns a sample from the distribution P. + + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Method used to update the sample location. Used in the end of the loop. + + The old energy. + The old gradient/derivative of the energy. + The new sample. + The new gradient/derivative of the energy. + The new energy. + The difference between the old Hamiltonian and new Hamiltonian. Use to determine + if an update should take place. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Method for doing dot product. + + First vector/scalar in the product. + Second vector/scalar in the product. + + + + + Method for adding, multiply the second vector/scalar by factor and then + add it to the first vector/scalar. + + First vector/scalar. + Scalar factor multiplying by the second vector/scalar. + Second vector/scalar. + + + + Multiplying the second vector/scalar by factor and then subtract it from + the first vector/scalar. + + First vector/scalar. + Scalar factor to be multiplied to the second vector/scalar. + Second vector/scalar. + + + + Method for sampling a random momentum. + + Momentum to be randomized. + + + + The Hamiltonian equations that is used to produce the new sample. + + + + + Method to compute the Hamiltonian used in the method. + + The momentum. + The energy. + Hamiltonian=E+p.p/2 + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than or equal to zero. + Throws when value is negative. + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than to zero. + Throws when value is negative or zero. + + + + Method to check and set a quantity to a non-negative value. + + Proposed value to be checked. + Returns value if it is greater than zero. + Throws when value is negative or zero. + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Gets or sets the number of iterations in the Hamiltonian equation. + + When frogleap steps is negative or zero. + + + + Gets or sets the size of each step in the Hamiltonian equation. + + When step size is negative or zero. + + + + The delegate type that defines a derivative evaluated at a certain point. + + Function to be differentiated. + Value where the derivative is computed. + + + + + Number of parameters in the density function. + + + + + Distribution to sample momentum from. + + + + + Standard deviations used in the sampling of different components of the + momentum. + + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The burn interval will be set to 0. + The components of the momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the a random number generator provided by the user. + A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + Random number generator used for sampling the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The components of the momentum will be sampled from a normal distribution with standard deviations + given by pSdv. This constructor will set the burn interval, the method used for + numerical differentiation and the random number generator. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviations of the normal distributions that are used to sample + the components of the momentum. + Random number generator used for sampling the momentum. + The method used for numerical differentiation. + When the number of burnInterval iteration is negative. + When the length of pSdv is not the same as x0. + + + + Initialize parameters. + + The current location of the sampler. + + + + Checking that the location and the momentum are of the same dimension and that each component is positive. + + The standard deviations used for sampling the momentum. + When the length of pSdv is not the same as Length or if any + component is negative. + When pSdv is null. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + + + + + + + + + + Samples the momentum from a normal distribution. + + The momentum to be randomized. + + + + The default method used for computing the gradient. Uses a simple three point estimation. + + Function which the gradient is to be evaluated. + The location where the gradient is to be evaluated. + The gradient of the function at the point x. + + + + Gets or sets the standard deviations used in the sampling of different components of the + momentum. + + When the length of pSdv is not the same as Length. + + + + Provides utilities to analysis the convergence of a set of samples from + a . + + + + + Computes the auto correlations of a series evaluated by a function f. + + The series for computing the auto correlation. + The lag in the series + The function used to evaluate the series. + The auto correlation. + Throws if lag is zero or if lag is + greater than or equal to the length of Series. + + + + Computes the effective size of the sample when evaluated by a function f. + + The samples. + The function use for evaluating the series. + The effective size when auto correlation is taken into account. + + + + A method which samples datapoints from a proposal distribution. The implementation of this sampler + is stateless: no variables are saved between two calls to Sample. This proposal is different from + in that it doesn't take any parameters; it samples random + variables from the whole domain. + + The type of the datapoints. + A sample from the proposal distribution. + + + + A method which samples datapoints from a proposal distribution given an initial sample. The implementation + of this sampler is stateless: no variables are saved between two calls to Sample. This proposal is different from + in that it samples locally around an initial point. In other words, it + makes a small local move rather than producing a global sample from the proposal. + + The type of the datapoints. + The initial sample. + A sample from the proposal distribution. + + + + A function which evaluates a density. + + The type of data the distribution is over. + The sample we want to evaluate the density for. + + + + A function which evaluates a log density. + + The type of data the distribution is over. + The sample we want to evaluate the log density for. + + + + A function which evaluates the log of a transition kernel probability. + + The type for the space over which this transition kernel is defined. + The new state in the transition. + The previous state in the transition. + The log probability of the transition. + + + + Metropolis-Hastings sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P. Metropolis-Hastings sampling doesn't require that the + proposal distribution Q is symmetric in comparison to . It does need to + be able to evaluate the proposal sampler's log density though. All densities are required to be in log space. + + The Metropolis-Hastings sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + The type of samples this sampler produces. + + + + Evaluates the log density function of the target distribution. + + + + + Evaluates the log transition probability for the proposal distribution. + + + + + A function which samples from a proposal distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + Constructs a new Metropolis-Hastings sampler using the default random + number generator. The burn interval will be set to 0. + + The initial sample. + The log density of the distribution we want to sample from. + The log transition probability for the proposal distribution. + A method that samples from the proposal distribution. + + + + Constructs a new Metropolis-Hastings sampler using the default random number generator. This + constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + The log transition probability for the proposal distribution. + A method that samples from the proposal distribution. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Metropolis sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P. Metropolis sampling requires that the proposal + distribution Q is symmetric. All densities are required to be in log space. + + The Metropolis sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + The type of samples this sampler produces. + + + + Evaluates the log density function of the sampling distribution. + + + + + A function which samples from a proposal distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + Constructs a new Metropolis sampler using the default random + number generator. The burnInterval interval will be set to 0. + + The initial sample. + The log density of the distribution we want to sample from. + A method that samples from the symmetric proposal distribution. + + + + Constructs a new Metropolis sampler using the default random number generator. + + The initial sample. + The log density of the distribution we want to sample from. + A method that samples from the symmetric proposal distribution. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Rejection sampling produces samples from distribition P by sampling from a proposal distribution Q + and accepting/rejecting based on the density of P and Q. The density of P and Q don't need to + to be normalized, but we do need that for each x, P(x) < Q(x). + + The type of samples this sampler produces. + + + + Evaluates the density function of the sampling distribution. + + + + + Evaluates the density function of the proposal distribution. + + + + + A function which samples from a proposal distribution. + + + + + Constructs a new rejection sampler using the default random number generator. + + The density of the distribution we want to sample from. + The density of the proposal distribution. + A method that samples from the proposal distribution. + + + + Returns a sample from the distribution P. + + When the algorithms detects that the proposal + distribution doesn't upper bound the target distribution. + + + + A hybrid Monte Carlo sampler for univariate distributions. + + + + + Distribution to sample momentum from. + + + + + Standard deviations used in the sampling of the + momentum. + + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The burn interval will be set to 0. + The momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + 1 using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using the default random + number generator. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a univariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + specified by pSdv using a random + number generator provided by the user. A three point estimation will be used for differentiation. + This constructor will set the burn interval. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + Random number generator used to sample the momentum. + When the number of burnInterval iteration is negative. + + + + Constructs a new Hybrid Monte Carlo sampler for a multivariate probability distribution. + The momentum will be sampled from a normal distribution with standard deviation + given by pSdv using a random + number generator provided by the user. This constructor will set both the burn interval and the method used for + numerical differentiation. + + The initial sample. + The log density of the distribution we want to sample from. + Number frogleap simulation steps. + Size of the frogleap simulation steps. + The number of iterations in between returning samples. + The standard deviation of the normal distribution that is used to sample + the momentum. + The method used for numerical differentiation. + Random number generator used for sampling the momentum. + When the number of burnInterval iteration is negative. + + + + Use for copying objects in the Burn method. + + The source of copying. + A copy of the source object. + + + + Use for creating temporary objects in the Burn method. + + An object of type T. + + + + + + + + + + + + + Samples the momentum from a normal distribution. + + The momentum to be randomized. + + + + The default method used for computing the derivative. Uses a simple three point estimation. + + Function for which the derivative is to be evaluated. + The location where the derivative is to be evaluated. + The derivative of the function at the point x. + + + + Gets or sets the standard deviation used in the sampling of the + momentum. + + When standard deviation is negative. + + + + Slice sampling produces samples from distribition P by uniformly sampling from under the pdf of P using + a technique described in "Slice Sampling", R. Neal, 2003. All densities are required to be in log space. + + The slice sampler is a stateful sampler. It keeps track of where it currently is in the domain + of the distribution P. + + + + + Evaluates the log density function of the target distribution. + + + + + The current location of the sampler. + + + + + The log density at the current location. + + + + + The number of burn iterations between two samples. + + + + + The scale of the slice sampler. + + + + + Constructs a new Slice sampler using the default random + number generator. The burn interval will be set to 0. + + The initial sample. + The density of the distribution we want to sample from. + The scale factor of the slice sampler. + When the scale of the slice sampler is not positive. + + + + Constructs a new slice sampler using the default random number generator. It + will set the number of burnInterval iterations and run a burnInterval phase. + + The initial sample. + The density of the distribution we want to sample from. + The number of iterations in between returning samples. + The scale factor of the slice sampler. + When the number of burnInterval iteration is negative. + When the scale of the slice sampler is not positive. + + + + This method runs the sampler for a number of iterations without returning a sample + + + + + Returns a sample from the distribution P. + + + + + Gets or sets the number of iterations in between returning samples. + + When burn interval is negative. + + + + Gets or sets the scale of the slice sampler. + + + + + Methods to calculate the percentiles. + + + + + Using the method recommened my NIST, + http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm + + + + + Using the nearest rank, http://en.wikipedia.org/wiki/Percentile#Nearest_Rank + + + + + Using the same method as Excel does, + http://www.itl.nist.gov/div898/handbook/prc/section2/prc252.htm + + + + + Use linear interpolation between the two nearest ranks, + http://en.wikipedia.org/wiki/Percentile#Linear_Interpolation_Between_Closest_Ranks + + + + + Class to calculate percentiles. + + + + + Holds the data. + + + + + Initializes a new instance of the class. + + The data to calculate the percentiles of. + + + + Computes the percentile. + + The percentile, must be between 0.0 and 1.0 (inclusive). + the requested percentile. + + + + Computes the percentiles for the given list. + + The percentiles, must be between 0.0 and 1.0 (inclusive) + the values that correspond to the given percentiles. + + + + Gets or sets the method used to calculate the percentiles. + + The calculation method. + defaults to . + + + + Statistics operating on an array already sorted ascendingly. + + + + + + + + Returns the smallest value from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + + + + Returns the largest value from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + + + + Returns the order statistic (order 1..N) from the sorted data array (ascending). + + Sample array, must be sorted ascendingly. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Estimates the median value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the p-Percentile value from the sorted data array (ascending). + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the first quartile value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the third quartile value from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the inter-quartile range from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the sorted data array (ascending). + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + + R-8, SciPy-(1/3,1/3): + Linear interpolation of the approximate medians for order statistics. + When tau < (2/3) / (N + 1/3), use x1. When tau >= (N - 1/3) / (N + 1/3), use xN. + + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile defintion can be specified + by 4 parameters a, b, c and d, consistent with Mathematica. + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the sorted data array (ascending). + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + Sample array, must be sorted ascendingly. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + Extension methods to return basic statistics on set of data. + + + + + Returns the minimum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + + The sample data. + The minimum value in the sample data. + + + + Returns the minimum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The sample data. + The minimum value in the sample data. + + + + Returns the maximum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + + The sample data. + The maximum value in the sample data. + + + + Returns the maximum value in the sample data. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The sample data. + The maximum value in the sample data. + + + + Estimates the sample mean. + Returns NaN if data is empty or if any entry is NaN. + + The data to calculate the mean of. + The mean of the sample. + + + + Estimates the sample mean. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The data to calculate the mean of. + The mean of the sample. + + + + Estimates the unbiased population variance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population variance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + + + + Evaluates the population variance from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + + + + Evaluates the population variance from the provided full population. + On a dataset of size N will use an N normalize and would thus be biased if applied to a subsetr. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + + + + Estimates the unbiased population standard deviation from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population standard deviation from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + + + + Evaluates the population standard deviation from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + + + + Evaluates the population standard deviation from the provided full population. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + + + + Estimates the unbiased population covariance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + A subset of samples, sampled from the full population. + A subset of samples, sampled from the full population. + + + + Estimates the unbiased population covariance from the provided samples. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + Null-entries are ignored. + + A subset of samples, sampled from the full population. + A subset of samples, sampled from the full population. + + + + Evaluates the population covariance from the provided full populations. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + The full population data. + The full population data. + + + + Evaluates the population covariance from the provided full populations. + On a dataset of size N will use an N normalize and would thus be biased if applied to a subsetr. + Returns NaN if data is empty or if any entry is NaN. + Null-entries are ignored. + + The full population data. + The full population data. + + + + Estimates the sample median from the provided samples (R8). + + The data sample sequence. + + + + Estimates the sample median from the provided samples (R8). + + The data sample sequence. + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + + + + Estimates the empirical inverse CDF at tau from the provided samples. + + The data sample sequence. + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile selector, between 0.0 and 1.0 (inclusive). + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile definition, to choose what product/definition it should be consistent with + + + + stimates the tau-th quantile from the provided samples. + The tau-th quantile is the data value where the cumulative distribution + function crosses tau. The quantile definition can be specificed to be compatible + with an existing system. + + The data sample sequence. + Quantile definition, to choose what product/definition it should be consistent with + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + Percentile selector, between 0 and 100 (inclusive). + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the p-Percentile value from the provided samples. + If a non-integer Percentile is needed, use Quantile instead. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the first quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the first quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the third quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the third quartile value from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the inter-quartile range from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates the inter-quartile range from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Estimates {min, lower-quantile, median, upper-quantile, max} from the provided samples. + Approximately median-unbiased regardless of the sample distribution (R8). + + The data sample sequence. + + + + Returns the order statistic (order 1..N) from the provided samples. + + The data sample sequence. + One-based order of the statistic, must be between 1 and N (inclusive). + + + + Returns the order statistic (order 1..N) from the provided samples. + + The data sample sequence. + + + + Statistics operating on an IEnumerable in a single pass, without keeping the full data in memory. + Can be used in a streaming way, e.g. on large datasets not fitting into memory. + + + + + + + + Returns the smallest value from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Returns the largest value from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the arithmetic sample mean from the enumerable, in a single pass without memoization. + Returns NaN if data is empty or any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population variance from the provided samples as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Evaluates the population variance from the full population provided as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population standard deviation from the provided samples as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Evaluates the population standard deviation from the full population provided as enumerable sequence, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + Sample stream, no sorting is assumed. + + + + Estimates the unbiased population covariance from the provided two sample enumerable sequences, in a single pass without memoization. + On a dataset of size N will use an N-1 normalizer (Bessel's correction). + Returns NaN if data has less than two entries or if any entry is NaN. + + First sample stream. + Second sample stream. + + + + Evaluates the population covariance from the full population provided as two enumerable sequences, in a single pass without memoization. + On a dataset of size N will use an N normalizer and would thus be biased if applied to a subset. + Returns NaN if data is empty or if any entry is NaN. + + First population stream. + Second population stream. + + + + Used to simplify parallel code, particularly between the .NET 4.0 and Silverlight Code. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration. + The argument is null. + At least one invocation of the body threw an exception. + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration range. + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The body to be invoked for each iteration range. + + + + Executes a for loop in which iterations may run in parallel. + + The array to iterate over. + The body to be invoked for each iteration. + The argument is null. + At least one invocation of the body threw an exception. + + + + Executes each of the provided actions inside a discrete, asynchronous task. + + An array of actions to execute. + The actions array contains a null element. + At least one invocation of the actions threw an exception. + + + + Selects an item (such as Max or Min). + + Starting index of the loop. + Ending index of the loop + The function to select items over a subset. + The function to select the item of selection from the subsets. + The selected value. + + + + Selects an item (such as Max or Min). + + The array to iterate over. + The function to select items over a subset. + The function to select the item of selection from the subsets. + The selected value. + + + + Selects an item (such as Max or Min). + + Starting index of the loop. + Ending index of the loop + The function to select items over a subset. + The function to select the item of selection from the subsets. + Default result of the reduce function on an empty set. + The selected value. + + + + Selects an item (such as Max or Min). + + The array to iterate over. + The function to select items over a subset. + The function to select the item of selection from the subsets. + Default result of the reduce function on an empty set. + The selected value. + + + + Double-precision trigonometry toolkit. + + + + + Constant to convert a degree to grad. + + + + + Trigonometric Cosecant of an angle in radian. + + + The angle in radian. + + + Cosecant of an angle in radian. + + + + + Trigonometric Cosecant of a Complex number. + + + The complex value. + + + The cosecant of a complex number. + + + + + Trigonometric Cosine of an angle in radian. + + + The angle in radian. + + + The cosine of an angle in radian. + + + + + Trigonometric Cosine of a Complex number. + + + The complex value. + + + The cosine of a complex number. + + + + + Trigonometric Cotangent of an angle in radian. + + + The angle in radian. + + + The cotangent of an angle in radian. + + + + + Trigonometric Cotangent of a Complex number. + + + The complex value. + + + The cotangent of the complex number. + + + + + Converts a degree (360-periodic) angle to a grad (400-periodic) angle. + + + The degree to convert. + + + The converted grad angle. + + + + + Converts a degree (360-periodic) angle to a radian (2*Pi-periodic) angle. + + + The degree to convert. + + + The converted radian angle. + + + + + Converts a grad (400-periodic) angle to a degree (360-periodic) angle. + + + The grad to convert. + + + The converted degree. + + + + + Converts a grad (400-periodic) angle to a radian (2*Pi-periodic) angle. + + + The grad to convert. + + + The converted radian. + + + + + Trigonometric Hyperbolic Cosecant + + + The angle in radian. + + + The hyperbolic cosecant of the radian angle. + + + + + Trigonometric Hyperbolic Cosecant of a Complex number. + + + The complex value. + + + The hyperbolic cosecant of a complex number. + + + + + Trigonometric Hyperbolic Cosine + + + The angle in radian. + + + The hyperbolic Cosine of the radian angle. + + + + + Trigonometric Hyperbolic Cosine of a Complex number. + + + The complex value. + + + The hyperbolic cosine of a complex number. + + + + + Trigonometric Hyperbolic Cotangent + + + The angle in radian angle. + + + The hyperbolic cotangent of the radian angle. + + + + + Trigonometric Hyperbolic Cotangent of a Complex number. + + + The complex value. + + + The hyperbolic cotangent of a complex number. + + + + + Trigonometric Hyperbolic Secant + + + The angle in radian angle. + + + The hyperbolic secant of the radian angle. + + + + + Trigonometric Hyperbolic Secant of a Complex number. + + + The complex value. + + + The hyperbolic secant of a complex number. + + + + + Trigonometric Hyperbolic Sine + + + The angle in radian angle. + + + The hyperbolic sine of the radian angle. + + + + + Trigonometric Hyperbolic Sine of a Complex number. + + + The complex value. + + + The hyperbolic sine of a complex number. + + + + + Trigonometric Hyperbolic Tangent in radian + + + The angle in radian angle. + + + The hyperbolic tangent of the radian angle. + + + + + Trigonometric Hyperbolic Tangent of a Complex number. + + + The complex value. + + + The hyperbolic tangent of a complex number. + + + + + Trigonometric Arc Cosecant in radian + + + The angle in radian angle. + + + The inverse cosecant of the radian angle. + + + if -1 < < 1. + + + + + Trigonometric Arc Cosecant of this Complex number. + + + The complex value. + + + The arc cosecant of a complex number. + + + + + Trigonometric Arc Cosine in radian + + + The angle in radian angle. + + + The inverse cosine of the radian angle. + + + if 1 < or < -1. + + + + + Trigonometric Arc Cosine of this Complex number. + + + The complex value. + + + The arc cosine of a complex number. + + + + + Trigonometric Arc Cotangent in radian + + + The angle in radian angle. + + + The inverse cotangent of the radian angle. + + + + + Trigonometric Arc Cotangent of this Complex number. + + + The complex value. + + + The arc cotangent of a complex number. + + + + + Trigonometric Hyperbolic Arc Cosecant + + + The angle in radian angle. + + + The inverse hyperbolic cosecant of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cosecant of this Complex number. + + + The complex value. + + + The hyperbolic arc cosecant of a complex number. + + + + + Trigonometric Hyperbolic Area Cosine + + + The angle in radian angle. + + + The inverse hyperbolic cosine of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cosine of this Complex number. + + + The complex value. + + + The hyperbolic arc cosine of a complex number. + + + + + Trigonometric Hyperbolic Arc Cotangent + + + The angle in radian angle. + + + The inverse hyperbolic cotangent of the radian angle. + + + + + Trigonometric Hyperbolic Arc Cotangent of this Complex number. + + + The complex value. + + + The hyperbolic arc cotangent of a complex number. + + + + + Trigonometric Hyperbolic Area Secant + + + The angle in radian angle. + + + The inverse hyperbolic secant of the radian angle. + + + + + Trigonometric Hyperbolic Arc Secant of this Complex number. + + + The complex value. + + + The hyperbolic arc secant of a complex number. + + + + + Trigonometric Hyperbolic Area Sine + + + The angle in radian angle. + + + The inverse hyperbolic sine of the radian angle. + + + + + Trigonometric Hyperbolic Arc Sine of this Complex number. + + + The complex value. + + + The hyperbolic arc sine of a complex number. + + + + + Trigonometric Hyperbolic Area Tangent + + + The angle in radian angle. + + + The inverse hyperbolic tangent of the radian angle. + + + + + Trigonometric Hyperbolic Arc Tangent of this Complex number. + + + The complex value. + + + The hyperbolic arc tangent of a complex number. + + + + + Trigonometric Arc Secant in radian + + + The angle in radian angle. + + + The inverse secant of the radian angle. + + + + + Trigonometric Arc Secant of this Complex number. + + + The complex value. + + + The arc secant of a complex number. + + + + + Trigonometric Arc Sine in radian + + + The angle in radian angle. + + + The inverse sine of the radian angle. + + + + + Trigonometric Arc Sine of this Complex number. + + + The complex value. + + + The arc sine of a complex number. + + + + + Trigonometric Arc Tangent in radian + + + The angle in radian angle. + + + The inverse tangent of the radian angle. + + + + + Trigonometric Arc Tangent of this Complex number. + + + The complex value. + + + The arc tangent of a complex number. + + + + + Converts a radian (2*Pi-periodic) angle to a degree (360-periodic) angle. + + + The radian to convert. + + + The converted degree. + + + + + Converts a radian (2*Pi-periodic) angle to a grad (400-periodic) angle. + + + The radian to convert. + + + The converted grad. + + + + + Trigonometric Secant of an angle in radian + + + The angle in radian. + + + The secant of the radian angle. + + + + + Trigonometric Secant of a Complex number. + + + The complex value. + + + The secant of the complex number. + + + + + Trigonometric Sine of an angle in radian + + + The angle in radian. + + + The sine of the radian angle. + + + + + Trigonometric Sine of a Complex number. + + + The complex value. + + + The sine of the complex number. + + + + + Trigonometric Tangent of an angle in radian + + + The angle in radian. + + + The tangent of the radian angle. + + + + + Trigonometric Tangent of a Complex number. + + + The complex value. + + + The tangent of the complex number. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The accuracy couldn't be reached with the specified number of iterations.. + + + + + Looks up a localized string similar to The array arguments must have the same length.. + + + + + Looks up a localized string similar to The given array is the wrong length. Should be {0}.. + + + + + Looks up a localized string similar to The argument must be between 0 and 1.. + + + + + Looks up a localized string similar to Value cannot be in the range -1 < x < 1.. + + + + + Looks up a localized string similar to Value must be even.. + + + + + Looks up a localized string similar to The histogram does not contains the value.. + + + + + Looks up a localized string similar to Value is expected to be between {0} and {1} (including {0} and {1}).. + + + + + Looks up a localized string similar to At least one item of {0} is a null reference (Nothing in Visual Basic).. + + + + + Looks up a localized string similar to Value must be greater than or equal to one.. + + + + + Looks up a localized string similar to han the given upper bound.. + + + + + Looks up a localized string similar to Matrix dimensions must agree.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: {0}.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: op1 is {0}, op2 is {1}.. + + + + + Looks up a localized string similar to Matrix dimensions must agree: op1 is {0}, op2 is {1}, op3 is {2}.. + + + + + Looks up a localized string similar to The requested matrix does not exist.. + + + + + Looks up a localized string similar to The matrix indices must not be out of range of the given matrix.. + + + + + Looks up a localized string similar to Matrix must not be rank deficient.. + + + + + Looks up a localized string similar to Matrix must not be singular.. + + + + + Looks up a localized string similar to Matrix must be positive definite.. + + + + + Looks up a localized string similar to Matrix column dimensions must agree.. + + + + + Looks up a localized string similar to Matrix row dimensions must agree.. + + + + + Looks up a localized string similar to Matrix must have exactly one column.. + + + + + Looks up a localized string similar to Matrix must have exactly one column and row, thus have only one cell.. + + + + + Looks up a localized string similar to Matrix must have exactly one row.. + + + + + Looks up a localized string similar to Matrix must be square.. + + + + + Looks up a localized string similar to Matrix must be symmetric.. + + + + + Looks up a localized string similar to Matrix must be symmetric positive definite.. + + + + + Looks up a localized string similar to In the specified range, the minimum is greater than maximum.. + + + + + Looks up a localized string similar to Value must be positive.. + + + + + Looks up a localized string similar to Value must neither be infinite nor NaN.. + + + + + Looks up a localized string similar to Value must not be negative (zero is ok).. + + + + + Looks up a localized string similar to {0} is a null reference (Nothing in Visual Basic).. + + + + + Looks up a localized string similar to Value must be odd.. + + + + + Looks up a localized string similar to {0} must be greater than {1}.. + + + + + Looks up a localized string similar to {0} must be greater than or equal to {1}.. + + + + + Looks up a localized string similar to The chosen parameter set is invalid (probably some value is out of range).. + + + + + Looks up a localized string similar to The given expression does not represent a complex number.. + + + + + Looks up a localized string similar to Value must be positive (and not zero).. + + + + + Looks up a localized string similar to Size must be a Power of Two.. + + + + + Looks up a localized string similar to Size must be a Power of Two in every dimension.. + + + + + Looks up a localized string similar to The range between {0} and {1} must be less than or equal to {2}.. + + + + + Looks up a localized string similar to Arguments must be different objects.. + + + + + Looks up a localized string similar to Array must have exactly one dimension (and not be null).. + + + + + Looks up a localized string similar to Value is too large.. + + + + + Looks up a localized string similar to Value is too large for the current iteration limit.. + + + + + Looks up a localized string similar to Type mismatch.. + + + + + Looks up a localized string similar to Array length must be a multiple of {0}.. + + + + + Looks up a localized string similar to All vectors must have the same dimensionality.. + + + + + Looks up a localized string similar to The vector must have 3 dimensions.. + + + + + Looks up a localized string similar to The given array is too small. It must be at least {0} long.. + + + + + Looks up a localized string similar to Big endian files are not supported.. + + + + + Looks up a localized string similar to The supplied collection is empty.. + + + + + Looks up a localized string similar to Complex matrices are not supported.. + + + + + Looks up a localized string similar to An algorithm failed to converge.. + + + + + Looks up a localized string similar to This feature is not implemented yet (but is planned).. + + + + + Looks up a localized string similar to The given file doesn't exist.. + + + + + Looks up a localized string similar to Sample points should be sorted in strictly ascending order. + + + + + Looks up a localized string similar to All sample points should be unique.. + + + + + Looks up a localized string similar to Invalid parameterization for the distribution.. + + + + + Looks up a localized string similar to Invalid Left Boundary Condition.. + + + + + Looks up a localized string similar to The operation could not be performed because the accumulator is empty.. + + + + + Looks up a localized string similar to The operation could not be performed because the histogram is empty.. + + + + + Looks up a localized string similar to Not enough points in the distribution.. + + + + + Looks up a localized string similar to No Samples Provided. Preparation Required.. + + + + + Looks up a localized string similar to Invalid Right Boundary Condition.. + + + + + Looks up a localized string similar to ddd MMM dd HH:mm:ss yyyy. + + + + + Looks up a localized string similar to The number of columns of a matrix must be positive.. + + + + + Looks up a localized string similar to The number of rows of a matrix must be positive.. + + + + + Looks up a localized string similar to The number of rows or columns of a matrix must be positive.. + + + + + Looks up a localized string similar to Only 1 and 2 dimensional arrays are supported.. + + + + + Looks up a localized string similar to Data must contain at least {0} values.. + + + + + Looks up a localized string similar to Name cannot contain a space. name: {0}. + + + + + Looks up a localized string similar to {0} is not a supported type.. + + + + + Looks up a localized string similar to The two arguments can't be compared (maybe they are part of a partial ordering?). + + + + + Looks up a localized string similar to The integer array does not represent a valid permutation.. + + + + + Looks up a localized string similar to The sampler's proposal distribution is not upper bounding the target density.. + + + + + Looks up a localized string similar to The algorithm has failed, exceeded the number of iterations allowed or there is no root within the provided bounds.. + + + + + Looks up a localized string similar to The algorithm has failed, exceeded the number of iterations allowed or there is no root within the provided bounds. Consider to use RobustNewtonRaphson instead.. + + + + + Looks up a localized string similar to The lower and upper bounds must bracket a single root.. + + + + + Looks up a localized string similar to The algorithm ended without root in the range.. + + + + + Looks up a localized string similar to The number of rows must greater than or equal to the number of columns.. + + + + + Looks up a localized string similar to The singular vectors were not computed.. + + + + + Looks up a localized string similar to This special case is not supported yet (but is planned).. + + + + + Looks up a localized string similar to The given stop criterium already exist in the collection.. + + + + + Looks up a localized string similar to There is no stop criterium in the collection.. + + + + + Looks up a localized string similar to String parameter cannot be empty or null.. + + + + + Looks up a localized string similar to We only support sparse matrix with less than int.MaxValue elements.. + + + + + Looks up a localized string similar to The moment of the distribution is undefined.. + + + + + Looks up a localized string similar to A user defined provider has not been specified.. + + + + + Looks up a localized string similar to The given work array is too small. Check work[0] for the corret size.. + + +
+
diff --git a/packages/MathNet.Numerics.2.6.1/license.txt b/packages/MathNet.Numerics.2.6.1/license.txt new file mode 100644 index 0000000..8ee4a87 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/license.txt @@ -0,0 +1,94 @@ +Math.NET Numerics License (MIT/X11) +=================================== + +Copyright (c) 2002-2013 Math.NET + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Other Copyrights +================ + +Portions of code are inspired by or derived from code +covered by the following copyrights: + +ALGLIB +------ + +Any code from ALGLIB is from version 2.0.1 which is distributed +under the license below. + +Copyright (c) 2007, Sergey Bochkanov (ALGLIB project). + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +- Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +BOOST +----- + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/packages/MathNet.Numerics.2.6.1/readme.txt b/packages/MathNet.Numerics.2.6.1/readme.txt new file mode 100644 index 0000000..c32f355 --- /dev/null +++ b/packages/MathNet.Numerics.2.6.1/readme.txt @@ -0,0 +1,171 @@ +Math.NET Numerics Release Notes +=============================== + +- **Website: [numerics.mathdotnet.com](http://numerics.mathdotnet.com)** +- GitHub/Mainline: [github.com/mathnet/mathnet-numerics](https://github.com/mathnet/mathnet-numerics) +- CodePlex: [mathnetnumerics.codeplex.com](http://mathnetnumerics.codeplex.com) +- License: MIT/X11 Open Source + +NuGet Packages, available in the [NuGet Gallery](https://nuget.org/profiles/mathnet/): + +- `MathNet.Numerics` - core package, including both .Net 4 and portable builds +- `MathNet.Numerics.FSharp` - optional extensions for a better F# experience +- `MathNet.Numerics.Data.Text` - NEW: optional extensions for text-based matrix input/output (CSV for now) +- `MathNet.Numerics.Data.Matlab` - NEW: optional extensions for Matlab matrix file input/output +- `MathNet.Numerics.MKL.Win-x86` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Win-x64` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Linux-x86` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Linux-x64` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.Signed` - strong-named version of the core package (not recommended) +- `MathNet.Numerics.Sample` - code samples in C# +- `MathNet.Numerics.FSharp.Sample` - code samples in F# + +Zip Packages, available on [CodePlex](http://mathnetnumerics.codeplex.com/releases): + +- Binaries - core package and F# extensions, including both .Net 4 and portable builds +- Signed Binaries - strong-named version of the core package (not recommended) + +Over time some members and classes have been replaced with more suitable alternatives. In order to maintain compatibility, such parts are not removed immediately but instead marked with the **Obsolete**-attribute. We strongly recommend to follow the instructions in the attribute text whenever you find any code calling an obsolete member, since we *do* intend to remove them at the next *major* release, v3.0. + +v2.6.0 - July 26, 2013 +------------------------------ + +See also: [What's New in Math.NET Numerics 2.6](http://christoph.ruegg.name/blog/new-in-mathnet-numerics-2-6.html): Announcement, Explanations and Sample Code. + +### New: Linear Curve Fitting + +- Linear least-squares fitting (regression) to lines, polynomials and linear combinations of arbitrary functions. +- Multi-dimensional fitting. +- Also works well in F# with the F# extensions. + +### New: Root Finding + +- Brent's method. *~Candy Chiu, Alexander Täschner* +- Bisection method. *~Scott Stephens, Alexander Täschner* +- Broyden's method, for multi-dimensional functions. *~Alexander Täschner* +- Newton-Raphson method. +- Robust Newton-Raphson variant that tries to recover automatically in cases where it would fail or converge too slowly. This modification makes it more robust e.g. in the presence of singularities and less sensitive to the search range/interval. +- All algorithms support a TryFind-pattern which returns success instead of throwing an exception. +- Special case for quadratic functions, in the future to be extended e.g. to polynomials. +- Basic bracketing algorithm +- Also works well in F# with the F# extensions. + +### Linear Algebra + +- Native eigenvalue decomposition (EVD) support with our MKL packages *~Marcus Cuda* +- Add missing scalar-vector operations (s-v, s/v, s%v) *~Thomas Ibel* +- Support for new F# 3.1 row/column slicing syntax on matrices +- Matrices learned proper OfColumn/RowVectors, analog also in F#. +- Documentation Fixes *~Robin Neatherway* +- BUG: Fixed exception text message when creating a matrix from enumerables (rows vs columns) *~Thomas Ibel* +- We're phasing out MathNet.Numerics.IO that used to be included in the main package for matrix file I/O for text and Matlab formats. Use the new .Data.Text and .Data.Matlab packages instead. + +### Statistics & Distributions + +- Spearman Rank Correlation Coefficient *~Iain McDonald* +- Covariance function, in Array-, Streaming- and common Statistics. +- Categorical: distribution more consistent, no longer requires normalized pdf/cdf parameters +- Categorical: inverse CDF function *~Paul Varkey* +- BUG: Fixed static sampling methods of the `Stable` distribution. *~Artyom Baranovskiy* + +### Misc + +- BUG: Fixed a bug in the Gamma Regularized special function where in some cases with large values it returned 1 instead of 0 and vice versa. +- The F# extensions now have a strong name in (and only in) the signed package as well (previously had not been signed). *~Gauthier Segay* +- Evaluate.Polynomial with new overload which is easier to use. +- Fixed a couple badly designed unit tests that failed on Mono. +- Repository now Vagrant-ready for easy testing against recent Mono on Debian. + +v2.5.0 - April 14, 2013 +----------------------- + +See also: [What's New in Math.NET Numerics 2.5](http://christoph.ruegg.name/blog/new-in-mathnet-numerics-2-5.html): Announcement, Explanations and Sample Code. + +### *Potentially Breaking Changes:* + +Despite semver this release contains two changes that may break code but without triggering a major version number change. The changes fix semantic bugs and a major usability issue without changing the formal API itself. Most users are not expected to be affected negatively. Nevertheless, this is an exceptional case and we try hard to avoid such changes in the future. + +- Statistics: Empty statistics now return NaN instead of either 0 or throwing an exception. *This may break code in case you relied upon the previous unusual and inconsistent behavior.* + +- Linear Algebra: More reasonable ToString behavior for matrices and vectors. *This may break code if you relied upon ToString to export your full data to text form intended to be parsed again later. Note that the classes in the MathNet.Numerics.IO library are more appropriate for storing and loading data.* + +### Statistics: + +- More consistent behavior for empty and single-element data sets: Min, Max, Mean, Variance, Standard Deviation etc. no longer throw exceptions if the data set is empty but instead return NaN. Variance and Standard Deviation will also return NaN if the set contains only a single entry. Population Variance and Population Standard Deviation will return 0 in this case. +- Reworked order statistics (Quantile, Quartile, Percentile, IQR, Fivenum, etc.), now much easier to use and supporting compatibility with all 9 R-types, Excel and Mathematica. The obsolete Percentile class now leverages the new order statistics, fixing a range check bug as side effect. +- New Hybrid Monte Carlo sampler for multivariate distributions. *~manyue* +- New financial statistics: absolute risk and return measures. *~Phil Cleveland* +- Explicit statistics for sorted arrays, unsorted arrays and sequences/streams. Faster algorithms on sorted data, also avoids multiple enumerations. +- Some statistics like Quantile or empirical inverse CDF can optionally return a parametric function when multiple evaluations are needed, like for plotting. + +### Linear Algebra: + +- More reasonable ToString behavior for matrices and vectors: `ToString` methods no longer render the whole structure to a string for large data, among others because they used to wreak havoc in debugging and interactive scenarios like F# FSI. Instead, ToString now only renders an excerpt of the data, together with a line about dimension, type and in case of sparse data a sparseness indicator. The intention is to give a good idea about the data in a visually useful way. How much data is shown can be adjusted in the Control class. See also ToTypeString and ToVector/MatrixString. +- Performance: reworked and tuned common parallelization. Some operations are up to 3 magnitudes faster in some extreme cases. Replaced copy loops with native routines. More algorithms are storage-aware (and should thus perform better especially on sparse data). *~Thomas Ibel, Iain McDonald, Marcus Cuda* +- Fixed range checks in the Thin-QR decomposition. *~Marcus Cuda* +- Fixed bug in Gram Schmidt for solving tall matrices. *~Marcus Cuda* +- Vectors now implement the BCL IList interfaces (fixed-length) for better integration with existing .Net code. *~Scott Stephens* +- Matrix/Vector parsing has been updated to be able to parse the new visual format as well (see ToMatrixString). +- DebuggerDisplay attributes for matrices and vectors. +- Map/IndexedMap combinators with storage-aware and partially parallelized implementations for both dense and sparse data. +- Reworked Matrix/Vector construction from arrays, enumerables, indexed enumerables, nested enumerables or by providing an init function/lambda. Non-obsolete constructors now always use the raw data array directly without copying, while static functions always return a matrix/vector independent of the provided data source. +- F#: Improved extensions for matrix and vector construction: create, zeroCreate, randomCreate, init, ofArray2, ofRows/ofRowsList, ofColumns/ofColumnsList, ofSeqi/Listi (indexed). Storage-aware for performance. +- F#: Updated map/mapi and other combinators to leverage core implementation, added -nz variants where zero-values may be skipped (relevant mostly for sparse matrices). +- F#: Idiomatic slice setters for sub-matrices and sub-vectors +- F#: More examples for matrix/vector creation and linear regression in the F# Sample-package. + +### Misc: + +- Control: Simpler usage with new static ConfigureAuto and ConfigureSingleThread methods. Resolved misleading configuration logic and naming around disabling parallelization. +- Control: New settings for linear algebra ToString behavior. +- Fixed range check in the Xor-shift pseudo-RNG. +- Parallelization: Reworked our common logic to avoid expensive lambda calls in inner loops. Tunable. +- F#: Examples (and thus the NuGet Sample package) are now F# scripts prepared for experimenting interactively in FSI, instead of normal F# files. Tries to get the assembly references right for most users, both within the Math.NET Numerics solution and the NuGet package. +- Various minor improvements on consistency, performance, tests, xml docs, obsolete attributes, redundant code, argument checks, resources, cleanup, nuget, etc. + + +v2.4.0 - February 3, 2013 +------------------------- + +- Drops the dependency on the zlib library. We thus no longer have any dependencies on other packages. *~Marcus Cuda, Thomas Ibel* +- Adds Modified Bessel & Struve special functions *~Wei Wu* +- Fixes a bug in our iterative kurtosis statistics formula *~Artyom Baranovskiy* + +### Linear Algebra: + +- Performance work, this time mostly around accessing matrix rows/columns as vectors. Opting out from targeted patching in our matrix and vector indexers to allow inlining. +- Fixes an issue around Thin-QR solve *~Marcus Cuda* +- Simplifications around using native linear algebra providers (see Math.NET Numerics With Native Linear Algebra) + +### F#: + +- Adds the BigRational module from the F# PowerPack, now to be maintained here instead. *~Gustavo Guerra* +- Better support for our Complex types (close to the F# PowerPack Complex type) *~Gustavo Guerra* + + +v2.3.0 - November 25, 2012 +-------------------------- + +### Portable Library Build: + +- Adds support for WP8 (.Net 4.0 and higher, SL5, WP8 and .NET for Windows Store apps) +- New: portable build also for F# extensions (.Net 4.5, SL5 and .NET for Windows Store apps) +- NuGet: portable builds are now included in the main packages, no more need for special portable packages + +### Linear Algebra: + +- Continued major storage rework, in this release focusing on vectors (previous release was on matrices) +- Thin QR decomposition (in addition to existing full QR) +- Static CreateRandom for all dense matrix and vector types +- F#: slicing support for matrices and vectors + +### Random and Probability Distributions: + +- Consistent static Sample methods for all continuous and discrete distributions (was previously missing on a few) +- F#: better usability for random numbers and distributions. + +### Misc: + +- F# extensions are now using F# 3.0 +- Updated Intel MKL references for our native linear algebra providers +- Various bug, performance and usability fixes diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nupkg b/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nupkg new file mode 100644 index 0000000..d2e05a1 Binary files /dev/null and b/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nupkg differ diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nuspec b/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nuspec new file mode 100644 index 0000000..1af0d19 --- /dev/null +++ b/packages/MathNet.Numerics.FSharp.2.6.0/MathNet.Numerics.FSharp.2.6.0.nuspec @@ -0,0 +1,68 @@ + + + + MathNet.Numerics.FSharp + 2.6.0 + Math.NET Numerics for F# + Marcus Cuda, Christoph Ruegg, Jurgen Van Gael + Marcus Cuda, Christoph Ruegg, Jurgen Van Gael + http://mathnetnumerics.codeplex.com/license + http://numerics.mathdotnet.com/ + http://www.mathdotnet.com/images/MathNet128.png + false + F# Modules for Math.NET Numerics, the numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Numerics is the result of merging dnAnalytics with Math.NET Iridium and is intended to replace both. Also includes a portable build supporting .Net 4.5, SL5 and .NET for Windows Store apps. + F# Modules for Math.NET Numerics, providing methods and algorithms for numerical computations in science, engineering and every day use. Supports F# 3.0 with .Net 4 and higher, SL5 and .NET for Windows Store apps. + ### New: Linear Curve Fitting + +- Linear least-squares fitting (regression) to lines, polynomials and linear combinations of arbitrary functions. +- Multi-dimensional fitting. +- Also works well in F# with the F# extensions. + +### New: Root Finding + +- Brent's method. +- Bisection method. +- Broyden's method, for multi-dimensional functions. +- Newton-Raphson method. +- Robust Newton-Raphson variant that tries to recover automatically in cases where it would fail or converge too slowly. This modification makes it more robust e.g. in the presence of singularities and less sensitive to the search range/interval. +- All algorithms support a TryFind-pattern which returns success instead of throwing an exception. +- Special case for quadratic functions, in the future to be extended e.g. to polynomials. +- Basic bracketing algorithm +- Also works well in F# with the F# extensions. + +### Linear Algebra + +- Native eigenvalue decomposition (EVD) support with our MKL packages +- Add missing scalar-vector operations (s-v, s/v, s%v) +- Support for new F# 3.1 row/column slicing syntax on matrices +- Matrices learned proper OfColumn/RowVectors, analog also in F#. +- Documentation Fixes +- BUG: Fixed exception text message when creating a matrix from enumerables (rows vs columns) +- We're phasing out MathNet.Numerics.IO that used to be included in the main package for matrix file I/O for text and Matlab formats. Use the new .Data.Text and .Data.Matlab packages instead. + +### Statistics & Distributions + +- Spearman Rank Correlation Coefficient +- Covariance function, in Array-, Streaming- and common Statistics. +- Categorical: distribution more consistent, no longer requires normalized pdf/cdf parameters +- Categorical: inverse CDF function +- BUG: Fixed static sampling methods of the `Stable` distribution. + +### Misc + +- BUG: Fixed a bug in the Gamma Regularized special function where in some cases with large values it returned 1 instead of 0 and vice versa. +- The F# extensions now have a strong name in (and only in) the signed package as well (previously had not been signed). +- Evaluate.Polynomial with new overload which is easier to use. +- Fixed a couple badly designed unit tests that failed on Mono. +- Repository now Vagrant-ready for easy testing against recent Mono on Debian. + + + math numeric statistics probability integration interpolation linear algebra matrix fft + + + + + + + + \ No newline at end of file diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.dll b/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.dll new file mode 100644 index 0000000..72af885 Binary files /dev/null and b/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.dll differ diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.xml b/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.xml new file mode 100644 index 0000000..4e718ee --- /dev/null +++ b/packages/MathNet.Numerics.FSharp.2.6.0/lib/net40/MathNet.Numerics.FSharp.xml @@ -0,0 +1,1660 @@ + + +MathNet.Numerics.FSharp + + + + + + + Return the given rational number + + + + + Return the negation of a rational number + + + + + Return the difference of two rational numbers + + + + + Return the product of two rational numbers + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + Return the result of converting the given rational number to an integer + + + + + Return the result of converting the given rational number to a big integer + + + + + Return the result of converting the given rational number to a floating point number + + + + + This operator is for use from other .NET languages + + + + + Return the ratio of two rational numbers + + + + + Return the sum of two rational numbers + + + + + Get zero as a rational number + + + + + + + + Return the sign of a rational number; 0, +1 or -1 + + + + + Get one as a rational number + + + + + Return the numerator of the normalized rational number + + + + + Return a boolean indicating if this rational number is strictly positive + + + + + Return a boolean indicating if this rational number is strictly negative + + + + + Return the denominator of the normalized rational number + + + + + + + + Return the result of converting the given rational number to an integer + + + + + Return the result of converting the given rational number to a floating point number + + + + + Return the result of converting the given rational number to a big integer + + + + + Return the result of raising the given rational number to the given power + + + + + Return the result of converting the string to a rational number + + + + + + + + Return the result of converting the given integer to a rational number + + + + + Return the result of converting the given big integer to a rational number + + + + + Return the absolute value of a rational number + + + + + The type of arbitrary-sized rational numbers + + + + + + + + The type of complex numbers + + + + + + + + Hyperbolic Cotangent + + + + + Hyperbolic Cosecant + + + + + Hyperbolic Secant + + + + + Arc Cotangent + + + + + Arc Cosecant + + + + + Arc Secant + + + + + Cotangent + + + + + Cosecant + + + + + Secant + + + + + Hyperbolic Tagent + + + + + Hyperbolic Cosine + + + + + Hyperbolic Sine + + + + + Arc Tagent + + + + + Arc Cosine + + + + + Arc Sine + + + + + Tagent + + + + + Cosine + + + + + Sine + + + + + sqrt(x) and 0 <= phase(x) < pi + + + + + sqr(x) is the square (power 2) + + + + + pow(power,x) is the float power + + + + + pow(power,x) is the complex power + + + + + log(base,x) is log with custom base + + + + + log10(x) is common log (base 10) + + + + + ln(x) is natural log (base e) + + + + + exp(x) = e^x + + + + + Multiply a complex number by a scalar + + + + + Multiply a scalar by a complex number + + + + + Complex division of two complex numbers + + + + + Multiply two complex numbers + + + + + Subtract one complex number from another + + + + + Add two complex numbers + + + + + The conjugate of a complex number, i.e. x-yi + + + + + Unary negation of a complex number + + + + + The polar-coordinate phase of a complex number + + + + + The polar-coordinate magnitude of a complex number + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + pi + + + + + The complex number 0+1i + + + + + The complex number 1+0i + + + + + The complex number 0+0i + + + + + A complex of magnitude 1 and the given phase and , i.e. cis x = mkPolar 1.0 x + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number using real and imaginary parts + + + + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number x+ij using rectangular coordinates + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number x+ij using rectangular coordinates + + + + + Constructs a single precision complex number from both the real and imaginary part. + + + + + Constructs a double precision complex number from both the real and imaginary part. + + + + + + + + Hyperbolic Cotangent + + + + + Hyperbolic Cosecant + + + + + Hyperbolic Secant + + + + + Arc Cotangent + + + + + Arc Cosecant + + + + + Arc Secant + + + + + Cotangent + + + + + Cosecant + + + + + Secant + + + + + Hyperbolic Tagent + + + + + Hyperbolic Cosine + + + + + Hyperbolic Sine + + + + + Arc Tagent + + + + + Arc Cosine + + + + + Arc Sine + + + + + Tagent + + + + + Cosine + + + + + Sine + + + + + sqrt(x) and 0 <= phase(x) < pi + + + + + sqr(x) is the square (power 2) + + + + + pow(power,x) is the float power + + + + + pow(power,x) is the complex power + + + + + log(base,x) is log with custom base + + + + + log10(x) is common log (base 10) + + + + + ln(x) is natural log (base e) + + + + + exp(x) = e^x + + + + + Multiply a complex number by a scalar + + + + + Multiply a scalar by a complex number + + + + + Complex division of two complex numbers + + + + + Multiply two complex numbers + + + + + Subtract one complex number from another + + + + + Add two complex numbers + + + + + The conjugate of a complex number, i.e. x-yi + + + + + Unary negation of a complex number + + + + + The polar-coordinate phase of a complex number + + + + + The polar-coordinate magnitude of a complex number + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + pi + + + + + The complex number 0+1i + + + + + The complex number 1+0i + + + + + The complex number 0+0i + + + + + A complex of magnitude 1 and the given phase and , i.e. cis x = mkPolar 1.0 x + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number using real and imaginary parts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] list. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning a function y' for the best fitting polynomial. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Evaluate.Polynomial. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning a function y' for the best fitting line. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning its best fitting parameters as [a, b] array. + + + + + + + + + + + Initialize a matrix by calling a construction function for every column. + + + + + Initialize a matrix by calling a construction function for every row. + + + + + Create a square matrix with the vector elements on the diagonal. + + + + + Create a square matrix with constant diagonal entries. + + + + + Create a matrix with the given entries. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a list of column vectors. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a column. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a column. + + + + + Create a matrix from a list of row vectors. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + If the dimensions are known, consider to use ofRowList instead to avoid multiple enumeration. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + If the dimensions are known, consider to use ofRowSeq instead to avoid multiple enumeration. + + + + + Create a matrix from a 2D array of floating point numbers. + + + + + Initialize a matrix by calling a construction function for every element. + + + + + Create a matrix with the given dimension and set all values to x. + + + + + Create a random matrix with the given dimension and value distribution. + + + + + Create an all-zero matrix with the given dimension. + + + + + Create a matrix that directly binds to a raw storage array in column-major (column by column) format, without copying. + + + + + A module which implements functional dense vector operations. + + + + + Create a vector with integer entries in the given range. + + + + + Create a vector with evenly spaced entries: e.g. rangef -1.0 0.5 1.0 = [-1.0 -0.5 0.0 0.5 1.0] + + + + + Create a vector with a given dimension from an indexed sequences of index, value pairs. + + + + + Create a vector with a given dimension from an indexed list of index, value pairs. + + + + + Create a vector from a sequences. + + + + + Create a vector from a float list. + + + + + Initialize a vector by calling a construction function for every element. + + + + + Initialize an x-valued vector with the given dimension. + + + + + Initialize a random vector with the given dimension and distribution. + + + + + Initialize an all-zero vector with the given dimension. + + + + + Create a vector that directly binds to a raw storage array, without copying. + + + + + A module which implements functional dense vector operations. + + + + + Fold all rows into one column vector. + + + + + Fold all columns into one row vector. + + + + + Fold one row. + + + + + Fold one column. + + + + + Iterates over all elements of a matrix using the element indices. + + + + + Iterates over all elements of a matrix. + + + + + Returns the sum of the results generated by applying a position dependent function to each row of the matrix. + + + + + Returns the sum of the results generated by applying a position dependent function to each column of the matrix. + + + + + Returns the sum of all elements of a matrix. + + + + + Creates a sequence that iterates the non-zero entries in the matrix. + + + + + In-place assignment. + + + + + Checks whether a position dependent predicate holds for at least one element of a matrix. + + + + + Checks whether a position dependent predicate holds for all elements of a matrix. + + + + + Chechks whether a predicate holds for at least one element of a matrix. + + + + + Checks whether a predicate holds for all elements of a matrix. + + + + + Fold a matrix by applying a given function to all matrix elements. + + + + + Fold a function over all matrix elements in reverse order. + + + + + Fold a function over all matrix elements. + + + + + Map every matrix row using the given position dependent function. + + + + + Map every matrix column using the given position dependent function. + + + + + Map every matrix element using the given position dependent function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + Map every matrix element using the given position dependent function. + + + + + Map every matrix element using the given function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + Map every matrix element using the given function. + + + + + + + + + + + + + + In-place map every matrix row using the given position dependent function. + + + + + In-place map every matrix column using the given position dependent function. + + + + + In-place map of every matrix element using a position dependent function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + In-place map of every matrix element using a function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + In-place map of every matrix element using a position dependent function. + + + + + In-place map of every matrix element using a function. + + + + + Transform a vector into a 2D array. + + + + + A module which implements functional matrix operations. + + + + + Initialize a matrix by calling a construction function for every column. + + + + + Initialize a matrix by calling a construction function for every row. + + + + + Create a square matrix with the vector elements on the diagonal. + + + + + Create a square matrix with constant diagonal entries. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a column. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a column. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a 2D array of floating point numbers. + + + + + Initialize a matrix by calling a construction function for every element. + + + + + Create an all-zero matrix with the given dimension. + + + + + A module which implements functional sparse vector operations. + + + + + Create a sparse vector with a given dimension from an indexed sequence of index, value pairs. + + + + + Create a sparse vector with a given dimension from an indexed list of index, value pairs. + + + + + Create a sparse vector with a given dimension from a sequence of index, value pairs. + + + + + Create a sparse vector with a given dimension from a list of index, value pairs. + + + + + Initialize a vector by calling a construction function for every element. + + + + + Initialize an all-zero vector with the given dimension. + + + + + A module which implements functional sparse vector operations. + + + + + Construct a dense vector from a list of floating point numbers. + + + + + Construct a dense matrix from a list of floating point numbers. + + + + + A module which implements some F# utility functions. + + + + + Creates a new vector and inserts the given value at the given index. + + + + + Reduces a vector in reverse order: the result of this function will be f(v[1], ..., f(v[n-2], f(v[n-1],v[n]))...). + + + + + Reduces a vector: the result of this function will be f(...f(f(v[0],v[1]), v[2]),..., v[n]). + + + + + Scans a vector in reverse order; like foldBack but returns the intermediate result. + + + + + Scans a vector; like fold but returns the intermediate result. + + + + + Checks whether there is an entry in the vector that satisfies a given position dependent predicate. + + + + + Checks whether a predicate is true for all entries in a vector. + + + + + Checks whether there is an entry in the vector that satisfies a given predicate. + + + + + Checks whether a predicate is satisfied for every element in the vector. + + + + + Fold all entries of a vector using a position dependent folding function. + + + + + Fold all entries of a vector in reverse order. + + + + + Fold all entries of a vector. + + + + + Applies a function to all elements of the vector. + + + + + Applies a function to all elements of the vector. + + + + + In place vector subtraction. + + + + + In-place vector addition. + + + + + Maps a vector to a new vector by applying a function to every element. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + Maps a vector to a new vector by applying a function to every element. + + + + + Maps a vector to a new vector by applying a function to every element. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + Maps a vector to a new vector by applying a function to every element. + + + + + In-place mutation by applying a function to every element of the vector. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + In-place mutation by applying a function to every element of the vector. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + In-place mutation by applying a function to every element of the vector. + + + + + In-place mutation by applying a function to every element of the vector. + + + + + Transform a vector into a list. + + + + + Transform a vector into an array. + + + + + A module which implements functional vector operations. + + + + + Sets a column subvector using a specified row index and column range. + This method can be used via the x.[r1 .. r2, c] <- v syntax (F#3.1) + + + + + Sets a row subvector using a specified row index and column range. + This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1) + + + + + Gets a column subvector using a specified row index and column range. + This method can be used via the x.[r1 .. r2, c] syntax (F#3.1) + + + + + Gets a row subvector using a specified row index and column range. + This method can be used via the x.[r, c1 .. c2] syntax (F#3.1) + + + + + Sets a submatrix using a specified column range and + row range (all indices are optional) + This method can be used via the x.[r1 .. r2, c1 .. c2 ] <- m syntax + + + + + Gets a submatrix using a specified column range and + row range (all indices are optional) + This method can be used via the x.[r1 .. r2, c1 .. c2 ] syntax + + + + + Sets a slice of a vector starting at a specified index + and ending at a specified index (both indices are optional) + This method can be used via the x.[start .. finish] <- v syntax + + + + + Gets a slice of a vector starting at a specified index + and ending at a specified index (both indices are optional) + This method can be used via the x.[start .. finish] syntax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inject a value into the RandomVariable type + + + + + + + + + + + + + + + + + + + + Transforms a RandomVariable value by using a specified mapping function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a 32-bit combined multiple recursive generator with 2 components of order 3 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Multiplicative congruential generator using a modulus of 2^31-1 and a multiplier of 1132489760 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Multiplicative congruential generator using a modulus of 2^59 and a multiplier of 13^13 pRNG with a custom seed based on uinque GUIDs + + + + + + + + + + + Creates a Parallel Additive Lagged Fibonacci pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Wichmann-Hill’s 2006 combined multiplicative congruential pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Wichmann-Hill’s 1982 combined multiplicative congruential pRNG with a custom seed based on uinque GUIDs + + + + + + + + + + + Creates a multiply-with-carry Xorshift (Xn = a * Xn−3 + c mod 2^32) pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Mersenne Twister 19937 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a default .Net cryptographic system pRNG + + + + + + + + Creates a default .Net system pRNG with a custom seed based on uinque GUIDs + + + + + Provides a time-dependent seed value (caution, can produce the same value on quick repeated execution) + + + + + Provides a seed based on unique GUIDs + + + + + + + diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.dll b/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.dll new file mode 100644 index 0000000..5be186a Binary files /dev/null and b/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.dll differ diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.xml b/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.xml new file mode 100644 index 0000000..bbaf74c --- /dev/null +++ b/packages/MathNet.Numerics.FSharp.2.6.0/lib/portable-net45+windows8+sl5/MathNet.Numerics.FSharp.xml @@ -0,0 +1,1658 @@ + + +MathNet.Numerics.FSharp + + + + + + + Return the given rational number + + + + + Return the negation of a rational number + + + + + Return the difference of two rational numbers + + + + + Return the product of two rational numbers + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + This operator is for use from other .NET languages + + + + + Return the result of converting the given rational number to an integer + + + + + Return the result of converting the given rational number to a big integer + + + + + Return the result of converting the given rational number to a floating point number + + + + + This operator is for use from other .NET languages + + + + + Return the ratio of two rational numbers + + + + + Return the sum of two rational numbers + + + + + Get zero as a rational number + + + + + + + + Return the sign of a rational number; 0, +1 or -1 + + + + + Get one as a rational number + + + + + Return the numerator of the normalized rational number + + + + + Return a boolean indicating if this rational number is strictly positive + + + + + Return a boolean indicating if this rational number is strictly negative + + + + + Return the denominator of the normalized rational number + + + + + + + + Return the result of converting the given rational number to an integer + + + + + Return the result of converting the given rational number to a floating point number + + + + + Return the result of converting the given rational number to a big integer + + + + + Return the result of raising the given rational number to the given power + + + + + Return the result of converting the string to a rational number + + + + + + + + Return the result of converting the given integer to a rational number + + + + + Return the result of converting the given big integer to a rational number + + + + + Return the absolute value of a rational number + + + + + The type of arbitrary-sized rational numbers + + + + + + + + The type of complex numbers + + + + + + + + Hyperbolic Cotangent + + + + + Hyperbolic Cosecant + + + + + Hyperbolic Secant + + + + + Arc Cotangent + + + + + Arc Cosecant + + + + + Arc Secant + + + + + Cotangent + + + + + Cosecant + + + + + Secant + + + + + Hyperbolic Tagent + + + + + Hyperbolic Cosine + + + + + Hyperbolic Sine + + + + + Arc Tagent + + + + + Arc Cosine + + + + + Arc Sine + + + + + Tagent + + + + + Cosine + + + + + Sine + + + + + sqrt(x) and 0 <= phase(x) < pi + + + + + sqr(x) is the square (power 2) + + + + + pow(power,x) is the float power + + + + + pow(power,x) is the complex power + + + + + log(base,x) is log with custom base + + + + + log10(x) is common log (base 10) + + + + + ln(x) is natural log (base e) + + + + + exp(x) = e^x + + + + + Multiply a complex number by a scalar + + + + + Multiply a scalar by a complex number + + + + + Complex division of two complex numbers + + + + + Multiply two complex numbers + + + + + Subtract one complex number from another + + + + + Add two complex numbers + + + + + The conjugate of a complex number, i.e. x-yi + + + + + Unary negation of a complex number + + + + + The polar-coordinate phase of a complex number + + + + + The polar-coordinate magnitude of a complex number + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + pi + + + + + The complex number 0+1i + + + + + The complex number 1+0i + + + + + The complex number 0+0i + + + + + A complex of magnitude 1 and the given phase and , i.e. cis x = mkPolar 1.0 x + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number using real and imaginary parts + + + + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number x+ij using rectangular coordinates + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number x+ij using rectangular coordinates + + + + + Constructs a single precision complex number from both the real and imaginary part. + + + + + Constructs a double precision complex number from both the real and imaginary part. + + + + + + + + Hyperbolic Cotangent + + + + + Hyperbolic Cosecant + + + + + Hyperbolic Secant + + + + + Arc Cotangent + + + + + Arc Cosecant + + + + + Arc Secant + + + + + Cotangent + + + + + Cosecant + + + + + Secant + + + + + Hyperbolic Tagent + + + + + Hyperbolic Cosine + + + + + Hyperbolic Sine + + + + + Arc Tagent + + + + + Arc Cosine + + + + + Arc Sine + + + + + Tagent + + + + + Cosine + + + + + Sine + + + + + sqrt(x) and 0 <= phase(x) < pi + + + + + sqr(x) is the square (power 2) + + + + + pow(power,x) is the float power + + + + + pow(power,x) is the complex power + + + + + log(base,x) is log with custom base + + + + + log10(x) is common log (base 10) + + + + + ln(x) is natural log (base e) + + + + + exp(x) = e^x + + + + + Multiply a complex number by a scalar + + + + + Multiply a scalar by a complex number + + + + + Complex division of two complex numbers + + + + + Multiply two complex numbers + + + + + Subtract one complex number from another + + + + + Add two complex numbers + + + + + The conjugate of a complex number, i.e. x-yi + + + + + Unary negation of a complex number + + + + + The polar-coordinate phase of a complex number + + + + + The polar-coordinate magnitude of a complex number + + + + + The imaginary part of a complex number + + + + + The real part of a complex number + + + + + pi + + + + + The complex number 0+1i + + + + + The complex number 1+0i + + + + + The complex number 0+0i + + + + + A complex of magnitude 1 and the given phase and , i.e. cis x = mkPolar 1.0 x + + + + + Create a complex number using magnitude/phase polar coordinates + + + + + Create a complex number using real and imaginary parts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning a function y' for the best fitting combination. + + + + + Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x), + returning its best fitting parameters as [p0, p1, p2, ..., pk] list. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning a function y' for the best fitting polynomial. + + + + + Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k, + returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Evaluate.Polynomial. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning a function y' for the best fitting line. + + + + + Least-Squares fitting the points (x,y) to a line y : x -> a+b*x, + returning its best fitting parameters as [a, b] array. + + + + + + + + + + + Initialize a matrix by calling a construction function for every column. + + + + + Initialize a matrix by calling a construction function for every row. + + + + + Create a square matrix with the vector elements on the diagonal. + + + + + Create a square matrix with constant diagonal entries. + + + + + Create a matrix with the given entries. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a list of column vectors. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a column. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a column. + + + + + Create a matrix from a list of row vectors. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + If the dimensions are known, consider to use ofRowList instead to avoid multiple enumeration. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + If the dimensions are known, consider to use ofRowSeq instead to avoid multiple enumeration. + + + + + Create a matrix from a 2D array of floating point numbers. + + + + + Initialize a matrix by calling a construction function for every element. + + + + + Create a matrix with the given dimension and set all values to x. + + + + + Create a random matrix with the given dimension and value distribution. + + + + + Create an all-zero matrix with the given dimension. + + + + + Create a matrix that directly binds to a raw storage array in column-major (column by column) format, without copying. + + + + + A module which implements functional dense vector operations. + + + + + Create a vector with integer entries in the given range. + + + + + Create a vector with evenly spaced entries: e.g. rangef -1.0 0.5 1.0 = [-1.0 -0.5 0.0 0.5 1.0] + + + + + Create a vector with a given dimension from an indexed sequences of index, value pairs. + + + + + Create a vector with a given dimension from an indexed list of index, value pairs. + + + + + Create a vector from a sequences. + + + + + Create a vector from a float list. + + + + + Initialize a vector by calling a construction function for every element. + + + + + Initialize an x-valued vector with the given dimension. + + + + + Initialize a random vector with the given dimension and distribution. + + + + + Initialize an all-zero vector with the given dimension. + + + + + Create a vector that directly binds to a raw storage array, without copying. + + + + + A module which implements functional dense vector operations. + + + + + Fold all rows into one column vector. + + + + + Fold all columns into one row vector. + + + + + Fold one row. + + + + + Fold one column. + + + + + Iterates over all elements of a matrix using the element indices. + + + + + Iterates over all elements of a matrix. + + + + + Returns the sum of the results generated by applying a position dependent function to each row of the matrix. + + + + + Returns the sum of the results generated by applying a position dependent function to each column of the matrix. + + + + + Returns the sum of all elements of a matrix. + + + + + Creates a sequence that iterates the non-zero entries in the matrix. + + + + + In-place assignment. + + + + + Checks whether a position dependent predicate holds for at least one element of a matrix. + + + + + Checks whether a position dependent predicate holds for all elements of a matrix. + + + + + Chechks whether a predicate holds for at least one element of a matrix. + + + + + Checks whether a predicate holds for all elements of a matrix. + + + + + Fold a matrix by applying a given function to all matrix elements. + + + + + Fold a function over all matrix elements in reverse order. + + + + + Fold a function over all matrix elements. + + + + + Map every matrix row using the given position dependent function. + + + + + Map every matrix column using the given position dependent function. + + + + + Map every matrix element using the given position dependent function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + Map every matrix element using the given position dependent function. + + + + + Map every matrix element using the given function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + Map every matrix element using the given function. + + + + + + + + + + + + + + In-place map every matrix row using the given position dependent function. + + + + + In-place map every matrix column using the given position dependent function. + + + + + In-place map of every matrix element using a position dependent function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + In-place map of every matrix element using a function. + Zero-values may be skipped (relevant mostly for sparse matrices). + + + + + In-place map of every matrix element using a position dependent function. + + + + + In-place map of every matrix element using a function. + + + + + Transform a vector into a 2D array. + + + + + A module which implements functional matrix operations. + + + + + Initialize a matrix by calling a construction function for every column. + + + + + Initialize a matrix by calling a construction function for every row. + + + + + Create a square matrix with the vector elements on the diagonal. + + + + + Create a square matrix with constant diagonal entries. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a column. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a column. + + + + + Create a matrix from a list of float lists. Every list in the master list specifies a row. + + + + + Create a matrix from a list of sequences. Every sequence in the master sequence specifies a row. + + + + + Create a matrix with a given dimension from an indexed list of row, column, value tuples. + + + + + Create a matrix with a given dimension from an indexed sequences of row, column, value tuples. + + + + + Create a matrix from a 2D array of floating point numbers. + + + + + Initialize a matrix by calling a construction function for every element. + + + + + Create an all-zero matrix with the given dimension. + + + + + A module which implements functional sparse vector operations. + + + + + Create a sparse vector with a given dimension from an indexed sequence of index, value pairs. + + + + + Create a sparse vector with a given dimension from an indexed list of index, value pairs. + + + + + Create a sparse vector with a given dimension from a sequence of index, value pairs. + + + + + Create a sparse vector with a given dimension from a list of index, value pairs. + + + + + Initialize a vector by calling a construction function for every element. + + + + + Initialize an all-zero vector with the given dimension. + + + + + A module which implements functional sparse vector operations. + + + + + Construct a dense vector from a list of floating point numbers. + + + + + Construct a dense matrix from a list of floating point numbers. + + + + + A module which implements some F# utility functions. + + + + + Creates a new vector and inserts the given value at the given index. + + + + + Reduces a vector in reverse order: the result of this function will be f(v[1], ..., f(v[n-2], f(v[n-1],v[n]))...). + + + + + Reduces a vector: the result of this function will be f(...f(f(v[0],v[1]), v[2]),..., v[n]). + + + + + Scans a vector in reverse order; like foldBack but returns the intermediate result. + + + + + Scans a vector; like fold but returns the intermediate result. + + + + + Checks whether there is an entry in the vector that satisfies a given position dependent predicate. + + + + + Checks whether a predicate is true for all entries in a vector. + + + + + Checks whether there is an entry in the vector that satisfies a given predicate. + + + + + Checks whether a predicate is satisfied for every element in the vector. + + + + + Fold all entries of a vector using a position dependent folding function. + + + + + Fold all entries of a vector in reverse order. + + + + + Fold all entries of a vector. + + + + + Applies a function to all elements of the vector. + + + + + Applies a function to all elements of the vector. + + + + + In place vector subtraction. + + + + + In-place vector addition. + + + + + Maps a vector to a new vector by applying a function to every element. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + Maps a vector to a new vector by applying a function to every element. + + + + + Maps a vector to a new vector by applying a function to every element. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + Maps a vector to a new vector by applying a function to every element. + + + + + In-place mutation by applying a function to every element of the vector. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + In-place mutation by applying a function to every element of the vector. + Zero-values may be skipped (relevant mostly for sparse vectors). + + + + + In-place mutation by applying a function to every element of the vector. + + + + + In-place mutation by applying a function to every element of the vector. + + + + + Transform a vector into a list. + + + + + Transform a vector into an array. + + + + + A module which implements functional vector operations. + + + + + Sets a column subvector using a specified row index and column range. + This method can be used via the x.[r1 .. r2, c] <- v syntax (F#3.1) + + + + + Sets a row subvector using a specified row index and column range. + This method can be used via the x.[r, c1 .. c2] <- v syntax (F#3.1) + + + + + Gets a column subvector using a specified row index and column range. + This method can be used via the x.[r1 .. r2, c] syntax (F#3.1) + + + + + Gets a row subvector using a specified row index and column range. + This method can be used via the x.[r, c1 .. c2] syntax (F#3.1) + + + + + Sets a submatrix using a specified column range and + row range (all indices are optional) + This method can be used via the x.[r1 .. r2, c1 .. c2 ] <- m syntax + + + + + Gets a submatrix using a specified column range and + row range (all indices are optional) + This method can be used via the x.[r1 .. r2, c1 .. c2 ] syntax + + + + + Sets a slice of a vector starting at a specified index + and ending at a specified index (both indices are optional) + This method can be used via the x.[start .. finish] <- v syntax + + + + + Gets a slice of a vector starting at a specified index + and ending at a specified index (both indices are optional) + This method can be used via the x.[start .. finish] syntax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inject a value into the RandomVariable type + + + + + + + + + + + + + + + + + + + + Transforms a RandomVariable value by using a specified mapping function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creates a 32-bit combined multiple recursive generator with 2 components of order 3 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Multiplicative congruential generator using a modulus of 2^31-1 and a multiplier of 1132489760 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Multiplicative congruential generator using a modulus of 2^59 and a multiplier of 13^13 pRNG with a custom seed based on uinque GUIDs + + + + + + + + + + + Creates a Parallel Additive Lagged Fibonacci pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Wichmann-Hill’s 2006 combined multiplicative congruential pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Wichmann-Hill’s 1982 combined multiplicative congruential pRNG with a custom seed based on uinque GUIDs + + + + + + + + + + + Creates a multiply-with-carry Xorshift (Xn = a * Xn−3 + c mod 2^32) pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a Mersenne Twister 19937 pRNG with a custom seed based on uinque GUIDs + + + + + + + + Creates a default .Net system pRNG with a custom seed based on uinque GUIDs + + + + + Provides a time-dependent seed value (caution, can produce the same value on quick repeated execution) + + + + + Provides a seed based on unique GUIDs + + + + + + + + + + + + + + + + diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/license.txt b/packages/MathNet.Numerics.FSharp.2.6.0/license.txt new file mode 100644 index 0000000..8ee4a87 --- /dev/null +++ b/packages/MathNet.Numerics.FSharp.2.6.0/license.txt @@ -0,0 +1,94 @@ +Math.NET Numerics License (MIT/X11) +=================================== + +Copyright (c) 2002-2013 Math.NET + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Other Copyrights +================ + +Portions of code are inspired by or derived from code +covered by the following copyrights: + +ALGLIB +------ + +Any code from ALGLIB is from version 2.0.1 which is distributed +under the license below. + +Copyright (c) 2007, Sergey Bochkanov (ALGLIB project). + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer listed + in this license in the documentation and/or other materials + provided with the distribution. + +- Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +BOOST +----- + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/packages/MathNet.Numerics.FSharp.2.6.0/readme.txt b/packages/MathNet.Numerics.FSharp.2.6.0/readme.txt new file mode 100644 index 0000000..c32f355 --- /dev/null +++ b/packages/MathNet.Numerics.FSharp.2.6.0/readme.txt @@ -0,0 +1,171 @@ +Math.NET Numerics Release Notes +=============================== + +- **Website: [numerics.mathdotnet.com](http://numerics.mathdotnet.com)** +- GitHub/Mainline: [github.com/mathnet/mathnet-numerics](https://github.com/mathnet/mathnet-numerics) +- CodePlex: [mathnetnumerics.codeplex.com](http://mathnetnumerics.codeplex.com) +- License: MIT/X11 Open Source + +NuGet Packages, available in the [NuGet Gallery](https://nuget.org/profiles/mathnet/): + +- `MathNet.Numerics` - core package, including both .Net 4 and portable builds +- `MathNet.Numerics.FSharp` - optional extensions for a better F# experience +- `MathNet.Numerics.Data.Text` - NEW: optional extensions for text-based matrix input/output (CSV for now) +- `MathNet.Numerics.Data.Matlab` - NEW: optional extensions for Matlab matrix file input/output +- `MathNet.Numerics.MKL.Win-x86` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Win-x64` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Linux-x86` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.MKL.Linux-x64` - optional Linear Algebra MKL native provider +- `MathNet.Numerics.Signed` - strong-named version of the core package (not recommended) +- `MathNet.Numerics.Sample` - code samples in C# +- `MathNet.Numerics.FSharp.Sample` - code samples in F# + +Zip Packages, available on [CodePlex](http://mathnetnumerics.codeplex.com/releases): + +- Binaries - core package and F# extensions, including both .Net 4 and portable builds +- Signed Binaries - strong-named version of the core package (not recommended) + +Over time some members and classes have been replaced with more suitable alternatives. In order to maintain compatibility, such parts are not removed immediately but instead marked with the **Obsolete**-attribute. We strongly recommend to follow the instructions in the attribute text whenever you find any code calling an obsolete member, since we *do* intend to remove them at the next *major* release, v3.0. + +v2.6.0 - July 26, 2013 +------------------------------ + +See also: [What's New in Math.NET Numerics 2.6](http://christoph.ruegg.name/blog/new-in-mathnet-numerics-2-6.html): Announcement, Explanations and Sample Code. + +### New: Linear Curve Fitting + +- Linear least-squares fitting (regression) to lines, polynomials and linear combinations of arbitrary functions. +- Multi-dimensional fitting. +- Also works well in F# with the F# extensions. + +### New: Root Finding + +- Brent's method. *~Candy Chiu, Alexander Täschner* +- Bisection method. *~Scott Stephens, Alexander Täschner* +- Broyden's method, for multi-dimensional functions. *~Alexander Täschner* +- Newton-Raphson method. +- Robust Newton-Raphson variant that tries to recover automatically in cases where it would fail or converge too slowly. This modification makes it more robust e.g. in the presence of singularities and less sensitive to the search range/interval. +- All algorithms support a TryFind-pattern which returns success instead of throwing an exception. +- Special case for quadratic functions, in the future to be extended e.g. to polynomials. +- Basic bracketing algorithm +- Also works well in F# with the F# extensions. + +### Linear Algebra + +- Native eigenvalue decomposition (EVD) support with our MKL packages *~Marcus Cuda* +- Add missing scalar-vector operations (s-v, s/v, s%v) *~Thomas Ibel* +- Support for new F# 3.1 row/column slicing syntax on matrices +- Matrices learned proper OfColumn/RowVectors, analog also in F#. +- Documentation Fixes *~Robin Neatherway* +- BUG: Fixed exception text message when creating a matrix from enumerables (rows vs columns) *~Thomas Ibel* +- We're phasing out MathNet.Numerics.IO that used to be included in the main package for matrix file I/O for text and Matlab formats. Use the new .Data.Text and .Data.Matlab packages instead. + +### Statistics & Distributions + +- Spearman Rank Correlation Coefficient *~Iain McDonald* +- Covariance function, in Array-, Streaming- and common Statistics. +- Categorical: distribution more consistent, no longer requires normalized pdf/cdf parameters +- Categorical: inverse CDF function *~Paul Varkey* +- BUG: Fixed static sampling methods of the `Stable` distribution. *~Artyom Baranovskiy* + +### Misc + +- BUG: Fixed a bug in the Gamma Regularized special function where in some cases with large values it returned 1 instead of 0 and vice versa. +- The F# extensions now have a strong name in (and only in) the signed package as well (previously had not been signed). *~Gauthier Segay* +- Evaluate.Polynomial with new overload which is easier to use. +- Fixed a couple badly designed unit tests that failed on Mono. +- Repository now Vagrant-ready for easy testing against recent Mono on Debian. + +v2.5.0 - April 14, 2013 +----------------------- + +See also: [What's New in Math.NET Numerics 2.5](http://christoph.ruegg.name/blog/new-in-mathnet-numerics-2-5.html): Announcement, Explanations and Sample Code. + +### *Potentially Breaking Changes:* + +Despite semver this release contains two changes that may break code but without triggering a major version number change. The changes fix semantic bugs and a major usability issue without changing the formal API itself. Most users are not expected to be affected negatively. Nevertheless, this is an exceptional case and we try hard to avoid such changes in the future. + +- Statistics: Empty statistics now return NaN instead of either 0 or throwing an exception. *This may break code in case you relied upon the previous unusual and inconsistent behavior.* + +- Linear Algebra: More reasonable ToString behavior for matrices and vectors. *This may break code if you relied upon ToString to export your full data to text form intended to be parsed again later. Note that the classes in the MathNet.Numerics.IO library are more appropriate for storing and loading data.* + +### Statistics: + +- More consistent behavior for empty and single-element data sets: Min, Max, Mean, Variance, Standard Deviation etc. no longer throw exceptions if the data set is empty but instead return NaN. Variance and Standard Deviation will also return NaN if the set contains only a single entry. Population Variance and Population Standard Deviation will return 0 in this case. +- Reworked order statistics (Quantile, Quartile, Percentile, IQR, Fivenum, etc.), now much easier to use and supporting compatibility with all 9 R-types, Excel and Mathematica. The obsolete Percentile class now leverages the new order statistics, fixing a range check bug as side effect. +- New Hybrid Monte Carlo sampler for multivariate distributions. *~manyue* +- New financial statistics: absolute risk and return measures. *~Phil Cleveland* +- Explicit statistics for sorted arrays, unsorted arrays and sequences/streams. Faster algorithms on sorted data, also avoids multiple enumerations. +- Some statistics like Quantile or empirical inverse CDF can optionally return a parametric function when multiple evaluations are needed, like for plotting. + +### Linear Algebra: + +- More reasonable ToString behavior for matrices and vectors: `ToString` methods no longer render the whole structure to a string for large data, among others because they used to wreak havoc in debugging and interactive scenarios like F# FSI. Instead, ToString now only renders an excerpt of the data, together with a line about dimension, type and in case of sparse data a sparseness indicator. The intention is to give a good idea about the data in a visually useful way. How much data is shown can be adjusted in the Control class. See also ToTypeString and ToVector/MatrixString. +- Performance: reworked and tuned common parallelization. Some operations are up to 3 magnitudes faster in some extreme cases. Replaced copy loops with native routines. More algorithms are storage-aware (and should thus perform better especially on sparse data). *~Thomas Ibel, Iain McDonald, Marcus Cuda* +- Fixed range checks in the Thin-QR decomposition. *~Marcus Cuda* +- Fixed bug in Gram Schmidt for solving tall matrices. *~Marcus Cuda* +- Vectors now implement the BCL IList interfaces (fixed-length) for better integration with existing .Net code. *~Scott Stephens* +- Matrix/Vector parsing has been updated to be able to parse the new visual format as well (see ToMatrixString). +- DebuggerDisplay attributes for matrices and vectors. +- Map/IndexedMap combinators with storage-aware and partially parallelized implementations for both dense and sparse data. +- Reworked Matrix/Vector construction from arrays, enumerables, indexed enumerables, nested enumerables or by providing an init function/lambda. Non-obsolete constructors now always use the raw data array directly without copying, while static functions always return a matrix/vector independent of the provided data source. +- F#: Improved extensions for matrix and vector construction: create, zeroCreate, randomCreate, init, ofArray2, ofRows/ofRowsList, ofColumns/ofColumnsList, ofSeqi/Listi (indexed). Storage-aware for performance. +- F#: Updated map/mapi and other combinators to leverage core implementation, added -nz variants where zero-values may be skipped (relevant mostly for sparse matrices). +- F#: Idiomatic slice setters for sub-matrices and sub-vectors +- F#: More examples for matrix/vector creation and linear regression in the F# Sample-package. + +### Misc: + +- Control: Simpler usage with new static ConfigureAuto and ConfigureSingleThread methods. Resolved misleading configuration logic and naming around disabling parallelization. +- Control: New settings for linear algebra ToString behavior. +- Fixed range check in the Xor-shift pseudo-RNG. +- Parallelization: Reworked our common logic to avoid expensive lambda calls in inner loops. Tunable. +- F#: Examples (and thus the NuGet Sample package) are now F# scripts prepared for experimenting interactively in FSI, instead of normal F# files. Tries to get the assembly references right for most users, both within the Math.NET Numerics solution and the NuGet package. +- Various minor improvements on consistency, performance, tests, xml docs, obsolete attributes, redundant code, argument checks, resources, cleanup, nuget, etc. + + +v2.4.0 - February 3, 2013 +------------------------- + +- Drops the dependency on the zlib library. We thus no longer have any dependencies on other packages. *~Marcus Cuda, Thomas Ibel* +- Adds Modified Bessel & Struve special functions *~Wei Wu* +- Fixes a bug in our iterative kurtosis statistics formula *~Artyom Baranovskiy* + +### Linear Algebra: + +- Performance work, this time mostly around accessing matrix rows/columns as vectors. Opting out from targeted patching in our matrix and vector indexers to allow inlining. +- Fixes an issue around Thin-QR solve *~Marcus Cuda* +- Simplifications around using native linear algebra providers (see Math.NET Numerics With Native Linear Algebra) + +### F#: + +- Adds the BigRational module from the F# PowerPack, now to be maintained here instead. *~Gustavo Guerra* +- Better support for our Complex types (close to the F# PowerPack Complex type) *~Gustavo Guerra* + + +v2.3.0 - November 25, 2012 +-------------------------- + +### Portable Library Build: + +- Adds support for WP8 (.Net 4.0 and higher, SL5, WP8 and .NET for Windows Store apps) +- New: portable build also for F# extensions (.Net 4.5, SL5 and .NET for Windows Store apps) +- NuGet: portable builds are now included in the main packages, no more need for special portable packages + +### Linear Algebra: + +- Continued major storage rework, in this release focusing on vectors (previous release was on matrices) +- Thin QR decomposition (in addition to existing full QR) +- Static CreateRandom for all dense matrix and vector types +- F#: slicing support for matrices and vectors + +### Random and Probability Distributions: + +- Consistent static Sample methods for all continuous and discrete distributions (was previously missing on a few) +- F#: better usability for random numbers and distributions. + +### Misc: + +- F# extensions are now using F# 3.0 +- Updated Intel MKL references for our native linear algebra providers +- Various bug, performance and usability fixes diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 index 0000000..903393d --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file