Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
3edd073
update to .net 8 in preparation for INumerics core
kMutagene Apr 8, 2025
3a4c854
Remove Algebra types and the Linerar Algebra services
muehlhaus Apr 9, 2025
f730824
Remove Surprisal analysis
muehlhaus Apr 9, 2025
96f49d7
Remove PCA
muehlhaus Apr 9, 2025
9987be0
Add new Vector and Matrix types using Numerics.INumber<'T>
muehlhaus Apr 9, 2025
0190794
Add basic Linerar Algebra (necessary for advanced statistics)
muehlhaus Apr 9, 2025
efb3fe7
Integrate CrossValidation and new AlgTypes
muehlhaus Apr 9, 2025
4d0e564
Integrate LinearRegression new AlgTypes
muehlhaus Apr 9, 2025
444dab5
Integrate LogisticRegression and new AlgTypes
muehlhaus Apr 9, 2025
edd3318
Integrate NomLinearRegression and new AlgTypes
muehlhaus Apr 9, 2025
32d0183
Integrate Spline and new AlgTypes
muehlhaus Apr 9, 2025
85acabe
Integrate GoodnessOfFit and new AlgTypes
muehlhaus Apr 9, 2025
54df125
Integrate Clustering and new AlgTypes
muehlhaus Apr 9, 2025
de7b7e8
Refactor GLM into an external project with FSharp.Stats dependencies
muehlhaus Apr 9, 2025
f9c3770
Integrate new AlgTypes
muehlhaus Apr 9, 2025
a5b0a60
Refactoring Interpolation
muehlhaus Apr 9, 2025
a417172
Updated savitzkyGolay
muehlhaus Apr 9, 2025
e421198
Normalization needs a revision
muehlhaus Apr 9, 2025
b714e20
Integrate in Signal
muehlhaus Apr 9, 2025
d3d9aea
Change to Numeric. Compiles but without test!
muehlhaus Apr 11, 2025
94830de
Exclude all Unit tests to successively update it
muehlhaus Apr 11, 2025
2df732c
Update Test: Hypothesis Testing
muehlhaus Apr 11, 2025
f4cf68f
Add Matrix compare by value
muehlhaus Apr 11, 2025
36f4139
Add some updated test cases
muehlhaus Apr 11, 2025
ef409e0
Add Vector tests
muehlhaus Apr 11, 2025
85c1a60
Add Matrix test cases
muehlhaus Apr 11, 2025
9c0a9f3
Add Unit test for SummaryStats (former RunningStats)
muehlhaus Apr 12, 2025
83c5c11
Update unit testing for Optimization
muehlhaus Apr 12, 2025
1596e41
Add benchmarks
muehlhaus Apr 12, 2025
24bc9b3
Improved Vector^T * Matrix with new benchmark
muehlhaus Apr 12, 2025
9975d96
Add SolveTriangularSystem benchmark
muehlhaus Apr 12, 2025
7795deb
Add LinearAlgebra unit test cases
muehlhaus Apr 12, 2025
280857d
Add distribution Categorical
muehlhaus Apr 13, 2025
cf1aa55
Add sampling from multinomial distribution
muehlhaus Apr 13, 2025
a854ed5
Add Unit testing categorical distribution
muehlhaus Apr 13, 2025
6b231f3
Add unit testing for Multinomial.sample
muehlhaus Apr 13, 2025
ddf5e26
Add testing accuracy veryLow for random sampling tests
muehlhaus Apr 13, 2025
616d3c6
Add Geometric distribution
muehlhaus Apr 17, 2025
837a8df
Add Vector.pow
muehlhaus Apr 17, 2025
210a403
Change Vector scalar parameter order
muehlhaus Apr 17, 2025
edc17ec
Add Gamma inverse CDF
muehlhaus Apr 24, 2025
43d1b45
Add sample from ChiSquared
muehlhaus Apr 24, 2025
43d4ecb
Change Gamma.InvCDF using Newton-Raphson refinement
muehlhaus Apr 24, 2025
27094a5
ADd ChiSquare contingency table
muehlhaus Jul 27, 2025
2e6f9c6
fix qrDecompose
muehlhaus Jul 28, 2025
4a71736
Refactoring towards FsMath dependency
muehlhaus Aug 8, 2025
c1ba0dd
update to .net 8 in preparation for INumerics core
kMutagene Apr 8, 2025
81a4c8f
Remove Algebra types and the Linerar Algebra services
muehlhaus Apr 9, 2025
4fb4c36
Remove Surprisal analysis
muehlhaus Apr 9, 2025
8ab9da9
Remove PCA
muehlhaus Apr 9, 2025
c0ee207
Add new Vector and Matrix types using Numerics.INumber<'T>
muehlhaus Apr 9, 2025
c63c741
Add basic Linerar Algebra (necessary for advanced statistics)
muehlhaus Apr 9, 2025
1f2d819
Integrate CrossValidation and new AlgTypes
muehlhaus Apr 9, 2025
524390f
Integrate LinearRegression new AlgTypes
muehlhaus Apr 9, 2025
5cfc2a8
Integrate LogisticRegression and new AlgTypes
muehlhaus Apr 9, 2025
5548791
Integrate NomLinearRegression and new AlgTypes
muehlhaus Apr 9, 2025
5a2a5b5
Integrate Spline and new AlgTypes
muehlhaus Apr 9, 2025
ad402df
Integrate GoodnessOfFit and new AlgTypes
muehlhaus Apr 9, 2025
ebfe35e
Integrate Clustering and new AlgTypes
muehlhaus Apr 9, 2025
6a3af6e
Refactor GLM into an external project with FSharp.Stats dependencies
muehlhaus Apr 9, 2025
0680183
Integrate new AlgTypes
muehlhaus Apr 9, 2025
6ba1d50
Refactoring Interpolation
muehlhaus Apr 9, 2025
1681143
Updated savitzkyGolay
muehlhaus Apr 9, 2025
449d66a
Normalization needs a revision
muehlhaus Apr 9, 2025
79022bd
Integrate in Signal
muehlhaus Apr 9, 2025
5791442
Change to Numeric. Compiles but without test!
muehlhaus Apr 11, 2025
a967c81
Exclude all Unit tests to successively update it
muehlhaus Apr 11, 2025
e1baf69
Update Test: Hypothesis Testing
muehlhaus Apr 11, 2025
7d4777e
Add Matrix compare by value
muehlhaus Apr 11, 2025
1e85c67
Add some updated test cases
muehlhaus Apr 11, 2025
967a802
Add Vector tests
muehlhaus Apr 11, 2025
fb2d0dd
Add Matrix test cases
muehlhaus Apr 11, 2025
9606473
Add Unit test for SummaryStats (former RunningStats)
muehlhaus Apr 12, 2025
6f18b6e
Update unit testing for Optimization
muehlhaus Apr 12, 2025
ca4f20d
Add benchmarks
muehlhaus Apr 12, 2025
c7edc67
Improved Vector^T * Matrix with new benchmark
muehlhaus Apr 12, 2025
cf45888
Add SolveTriangularSystem benchmark
muehlhaus Apr 12, 2025
0d87ed6
Add LinearAlgebra unit test cases
muehlhaus Apr 12, 2025
74384f4
Add distribution Categorical
muehlhaus Apr 13, 2025
8ff9bb5
Add sampling from multinomial distribution
muehlhaus Apr 13, 2025
386253c
Add Unit testing categorical distribution
muehlhaus Apr 13, 2025
8ebd288
Add unit testing for Multinomial.sample
muehlhaus Apr 13, 2025
7a71caa
Add testing accuracy veryLow for random sampling tests
muehlhaus Apr 13, 2025
1ce22d2
Add Geometric distribution
muehlhaus Apr 17, 2025
4751a01
Add Vector.pow
muehlhaus Apr 17, 2025
3dc4a5e
Change Vector scalar parameter order
muehlhaus Apr 17, 2025
c1834e3
Add Gamma inverse CDF
muehlhaus Apr 24, 2025
c536fb1
Add sample from ChiSquared
muehlhaus Apr 24, 2025
791dc76
Change Gamma.InvCDF using Newton-Raphson refinement
muehlhaus Apr 24, 2025
6ac3745
ADd ChiSquare contingency table
muehlhaus Jul 27, 2025
6e7da1c
fix qrDecompose
muehlhaus Jul 28, 2025
789223f
Refactoring towards FsMath dependency
muehlhaus Aug 8, 2025
fa5ae9a
use .net 8, update fsdocs, adapt exisiting docs
kMutagene Jul 18, 2024
72ca958
setup .net 8 in ci
kMutagene Jul 18, 2024
b16911f
fix docs references
kMutagene Aug 9, 2025
2a4cc63
fix some xml docs
kMutagene Aug 9, 2025
9620a9c
Merge branch 'datascience' of https://github.com/fslaborg/FSharp.Stat…
ZimmerD Aug 9, 2025
4e7f494
add Holm and Hochberg FWER correction
ZimmerD Aug 9, 2025
908ce3f
Update Normalizaiton module towards using FsMath
muehlhaus Aug 10, 2025
bd10bfe
Update docs using FsMath
muehlhaus Aug 10, 2025
8054b5c
- Fix xml doc errors
kMutagene Aug 10, 2025
8f85c12
Merge pull request #337 from fslaborg/update-docs
kMutagene Aug 10, 2025
3f626bc
Fixed Namespace
muehlhaus Aug 10, 2025
cbcd5c7
add tool references for holm and hochberg validation data
ZimmerD Aug 14, 2025
d573364
#352: remove native lapack dlls
kMutagene Oct 16, 2025
d34fe13
Fix incorrect use of anovaType in twoWayANOVA
LibraChris Aug 7, 2025
d7005e9
Init ANOVA tests for oneway and twoway models
LibraChris Aug 7, 2025
1e45147
Update Anova oneway tests
LibraChris Aug 8, 2025
d442db1
Fix m F-test statistics in ANOVA mixed model
LibraChris Aug 8, 2025
e7cf1fe
Finish twowayAnova tests
LibraChris Aug 8, 2025
e9c7190
Merge pull request #350 from LibraChris/anova_update
kMutagene Oct 21, 2025
55f8f1e
Update SpecialFunctions/Gamma.fs to support generic type 'T as implem…
LibraChris May 28, 2025
1c82ab7
Update Beta.fs
LibraChris Jun 23, 2025
dc849cc
Start Update for Beta.lowerIncompleteRegularized<'T>
LibraChris Jun 24, 2025
bc3f0b7
Start Update for TestStatistics for 'T
LibraChris Jun 24, 2025
eb3b9d2
Refactor to support generic numeric type 'T
LibraChris Jun 26, 2025
64ac64a
Partial update to support generic numeric type 'T in TestStatistics
LibraChris Jun 26, 2025
8080cea
Update SpecialFunctions.fs
LibraChris Jun 26, 2025
77ba43e
Update FSharp.Stats.GenericMath to FsMath.GenericMath
LibraChris Oct 20, 2025
b956775
Update FsMath Reference
LibraChris Oct 21, 2025
47d93e9
Update FsMath Reference in Docs
LibraChris Oct 21, 2025
00d3a40
Fix incorrect function calls in docs
LibraChris Oct 21, 2025
050e07a
Fix XML Comments
LibraChris Oct 21, 2025
caa7215
Merge pull request #348 from LibraChris/updateTestStatistics
kMutagene Oct 21, 2025
1889d5c
add release notes
kMutagene Oct 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@
"version": 1,
"isRoot": true,
"tools": {
"fsdocs-tool": {
"version": "16.1.1",
"commands": [
"fsdocs"
]
},
"fantomas": {
"version": "6.1.1",
"commands": [
"fantomas"
]
],
"rollForward": false
},
"fsdocs-tool": {
"version": "20.0.1",
"commands": [
"fsdocs"
],
"rollForward": false
}
}
}
14 changes: 7 additions & 7 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: '6.x.x'
dotnet-version: '8.x.x'
- name: Restore local tools
run: dotnet tool restore
- name: make script executable
Expand All @@ -30,11 +30,11 @@ jobs:
runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- name: Setup .NET 6
uses: actions/setup-dotnet@v1
- uses: actions/checkout@v4
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: '6.x.x'
dotnet-version: '8.x.x'
- name: Restore local tools
run: dotnet tool restore
- name: Build and test
Expand Down
23 changes: 18 additions & 5 deletions FSharp.Stats.sln
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{23F9FB2E-6
docs\Integration.fsx = docs\Integration.fsx
docs\Interpolation.fsx = docs\Interpolation.fsx
docs\Intervals.fsx = docs\Intervals.fsx
docs\LinearAlgebra.fsx = docs\LinearAlgebra.fsx
docs\Matrix_Vector.fsx = docs\Matrix_Vector.fsx
docs\Normalization.fsx = docs\Normalization.fsx
docs\NuGet.config = docs\NuGet.config
docs\Optimization.fsx = docs\Optimization.fsx
docs\Quantiles.fsx = docs\Quantiles.fsx
docs\NuGet.config = docs\NuGet.config
docs\Rank.fsx = docs\Rank.fsx
docs\Signal.fsx = docs\Signal.fsx
docs\Normalization.fsx = docs\Normalization.fsx
docs\ML.fsx = docs\ML.fsx
docs\Testing.fsx = docs\Testing.fsx
docs\_template.html = docs\_template.html
docs\_template.ipynb = docs\_template.ipynb
Expand All @@ -76,6 +73,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "content", "content", "{50E3
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Stats.Interactive", "src\FSharp.Stats.Interactive\FSharp.Stats.Interactive.fsproj", "{D7BCF5C0-9E2B-4170-9390-607B0B65A8CD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Stats.Benchmarks", "benchmarks\FSharp.Stats.Benchmarks\FSharp.Stats.Benchmarks.fsproj", "{E3942700-8589-770A-6224-F6D2DDF977E8}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Stats.LegacyBenchmarks", "benchmarks\FSharp.Stats.LegacyBenchmarks\FSharp.Stats.LegacyBenchmarks.fsproj", "{D84267B7-0C5A-4679-A63C-D94315A458CB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -98,6 +101,14 @@ Global
{D7BCF5C0-9E2B-4170-9390-607B0B65A8CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D7BCF5C0-9E2B-4170-9390-607B0B65A8CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D7BCF5C0-9E2B-4170-9390-607B0B65A8CD}.Release|Any CPU.Build.0 = Release|Any CPU
{E3942700-8589-770A-6224-F6D2DDF977E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3942700-8589-770A-6224-F6D2DDF977E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3942700-8589-770A-6224-F6D2DDF977E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3942700-8589-770A-6224-F6D2DDF977E8}.Release|Any CPU.Build.0 = Release|Any CPU
{D84267B7-0C5A-4679-A63C-D94315A458CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D84267B7-0C5A-4679-A63C-D94315A458CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D84267B7-0C5A-4679-A63C-D94315A458CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D84267B7-0C5A-4679-A63C-D94315A458CB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -106,6 +117,8 @@ Global
{DA7E2263-283A-497F-B122-B2E1A5AC2C8C} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}
{8830D84C-C999-4816-9742-AC54A3CC1E13} = {7C6D08E7-3EAC-4335-8F4B-252C193C27C9}
{50E3E339-AA4D-4FD2-8791-DEBD2EBF0504} = {23F9FB2E-6804-4AF9-B6D5-5CBD00E14A02}
{E3942700-8589-770A-6224-F6D2DDF977E8} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{D84267B7-0C5A-4679-A63C-D94315A458CB} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {97270415-1E71-487B-BDF5-FBE2D8EFFD09}
Expand Down
29 changes: 29 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
### 1.0.0 (Released TBD)

This version marks the journey to our first stable release and introduces significant architectural changes, which obviously are backward incompatible.

* Decoupled vector and matrix representations from *FSharp.Stats*.
* Integrated `FsMath` as the new lightweight, array-centric math backend.
* Updated internal references in *FSharp.Stats* to use `FsMath` primitives for zero-friction integration.
* Improved performance in core operations by leveraging `FsMath`’s optimized routines.

**Description**
This PR introduces a separation of concerns between statistical algorithms and low-level numerical primitives.
Vector and matrix types have been moved to the new `FsMath` library under FsLab.org, which is optimized for performance and designed for seamless interoperability.
This change keeps *FSharp.Stats* focused on statistical functionality while making it easier to maintain and integrate into other F# workflows that rely on common libraries.

**Migration note**
If your project uses `Vector` or `Matrix` types from *FSharp.Stats*, you will now need to reference `FsMath` and update your `open` statements accordingly:

```fsharp
open FsMath
```

All existing APIs are preserved with minimal changes, so most code will require slight modifications from `vector` to `Vector<float>` explicitly, along with namespace adjustments.
Previously, arrays needed to be explicitly converted to vectors - now, `Array` and `Vector` can be used synonymously, removing the need for manual conversions in most cases.

Other Changes:

- [Fix incorrect F-test denominator assignments in TwoWayAnovaModel](https://github.com/fslaborg/FSharp.Stats/pull/350)
- [Update test statistics to support generic type 'T data](https://github.com/fslaborg/FSharp.Stats/pull/348)

### 0.6.0 (Released 2025-1-7)
* Additions:
* latest commit #529c2c01
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
```

BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3775)
13th Gen Intel Core i7-13800H, 1 CPU, 20 logical and 14 physical cores
.NET SDK 9.0.201
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2 DEBUG
DefaultJob : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2


```
| Method | Size | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
|------------------ |----- |------------------:|-----------------:|-----------------:|---------:|---------:|---------:|-----------:|
| **Add** | **10** | **40.06 ns** | **0.550 ns** | **0.488 ns** | **0.0682** | **0.0002** | **-** | **856 B** |
| MatMultiply | 10 | 442.83 ns | 2.841 ns | 2.373 ns | 0.1364 | - | - | 1712 B |
| MultiplyVector | 10 | 33.28 ns | 0.425 ns | 0.397 ns | 0.0083 | - | - | 104 B |
| MultiplyRowVector | 10 | 50.55 ns | 0.500 ns | 0.468 ns | 0.0083 | - | - | 104 B |
| **Add** | **500** | **280,736.93 ns** | **5,376.045 ns** | **5,279.995 ns** | **212.4023** | **212.4023** | **212.4023** | **2000164 B** |
| MatMultiply | 500 | 17,572,322.92 ns | 318,470.458 ns | 297,897.464 ns | 375.0000 | 375.0000 | 375.0000 | 4000242 B |
| MultiplyVector | 500 | 31,726.43 ns | 202.403 ns | 189.328 ns | 0.3052 | - | - | 4024 B |
| MultiplyRowVector | 500 | 127,918.10 ns | 996.783 ns | 832.359 ns | 0.2441 | - | - | 4024 B |
| **Add** | **1000** | **1,377,902.79 ns** | **20,816.673 ns** | **18,453.438 ns** | **148.4375** | **148.4375** | **148.4375** | **8000105 B** |
| MatMultiply | 1000 | 143,300,325.00 ns | 1,445,291.857 ns | 1,606,438.070 ns | 250.0000 | 250.0000 | 250.0000 | 16000296 B |
| MultiplyVector | 1000 | 135,247.34 ns | 1,334.685 ns | 1,248.465 ns | 0.4883 | - | - | 8024 B |
| MultiplyRowVector | 1000 | 677,195.35 ns | 6,896.007 ns | 6,450.529 ns | - | - | - | 8024 B |
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Size,Mean,Error,StdDev,Gen0,Gen1,Gen2,Allocated
Add,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,40.06 ns,0.550 ns,0.488 ns,0.0682,0.0002,0.0000,856 B
MatMultiply,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,442.83 ns,2.841 ns,2.373 ns,0.1364,0.0000,0.0000,1712 B
MultiplyVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,33.28 ns,0.425 ns,0.397 ns,0.0083,0.0000,0.0000,104 B
MultiplyRowVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,10,50.55 ns,0.500 ns,0.468 ns,0.0083,0.0000,0.0000,104 B
Add,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,500,"280,736.93 ns","5,376.045 ns","5,279.995 ns",212.4023,212.4023,212.4023,2000164 B
MatMultiply,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,500,"17,572,322.92 ns","318,470.458 ns","297,897.464 ns",375.0000,375.0000,375.0000,4000242 B
MultiplyVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,500,"31,726.43 ns",202.403 ns,189.328 ns,0.3052,0.0000,0.0000,4024 B
MultiplyRowVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,500,"127,918.10 ns",996.783 ns,832.359 ns,0.2441,0.0000,0.0000,4024 B
Add,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1000,"1,377,902.79 ns","20,816.673 ns","18,453.438 ns",148.4375,148.4375,148.4375,8000105 B
MatMultiply,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1000,"143,300,325.00 ns","1,445,291.857 ns","1,606,438.070 ns",250.0000,250.0000,250.0000,16000296 B
MultiplyVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1000,"135,247.34 ns","1,334.685 ns","1,248.465 ns",0.4883,0.0000,0.0000,8024 B
MultiplyRowVector,DefaultJob,False,Default,Default,Default,Default,Default,Default,11111111111111111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,Default,16,Default,1000,"677,195.35 ns","6,896.007 ns","6,450.529 ns",0.0000,0.0000,0.0000,8024 B
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>FSharp.Stats.Benchmarks.MatrixBenchmarks-20250412-175902</title>

<style type="text/css">
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; }
tr { background-color: #fff; border-top: 1px solid #ccc; }
tr:nth-child(even) { background: #f8f8f8; }
</style>
</head>
<body>
<pre><code>
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3775)
13th Gen Intel Core i7-13800H, 1 CPU, 20 logical and 14 physical cores
.NET SDK 9.0.201
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2 DEBUG
DefaultJob : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2
</code></pre>
<pre><code></code></pre>

<table>
<thead><tr><th>Method </th><th>Size</th><th>Mean </th><th>Error </th><th>StdDev </th><th>Gen0</th><th>Gen1</th><th>Gen2</th><th>Allocated</th>
</tr>
</thead><tbody><tr><td>Add</td><td>10</td><td>40.06 ns</td><td>0.550 ns</td><td>0.488 ns</td><td>0.0682</td><td>0.0002</td><td>-</td><td>856 B</td>
</tr><tr><td>MatMultiply</td><td>10</td><td>442.83 ns</td><td>2.841 ns</td><td>2.373 ns</td><td>0.1364</td><td>-</td><td>-</td><td>1712 B</td>
</tr><tr><td>MultiplyVector</td><td>10</td><td>33.28 ns</td><td>0.425 ns</td><td>0.397 ns</td><td>0.0083</td><td>-</td><td>-</td><td>104 B</td>
</tr><tr><td>MultiplyRowVector</td><td>10</td><td>50.55 ns</td><td>0.500 ns</td><td>0.468 ns</td><td>0.0083</td><td>-</td><td>-</td><td>104 B</td>
</tr><tr><td>Add</td><td>500</td><td>280,736.93 ns</td><td>5,376.045 ns</td><td>5,279.995 ns</td><td>212.4023</td><td>212.4023</td><td>212.4023</td><td>2000164 B</td>
</tr><tr><td>MatMultiply</td><td>500</td><td>17,572,322.92 ns</td><td>318,470.458 ns</td><td>297,897.464 ns</td><td>375.0000</td><td>375.0000</td><td>375.0000</td><td>4000242 B</td>
</tr><tr><td>MultiplyVector</td><td>500</td><td>31,726.43 ns</td><td>202.403 ns</td><td>189.328 ns</td><td>0.3052</td><td>-</td><td>-</td><td>4024 B</td>
</tr><tr><td>MultiplyRowVector</td><td>500</td><td>127,918.10 ns</td><td>996.783 ns</td><td>832.359 ns</td><td>0.2441</td><td>-</td><td>-</td><td>4024 B</td>
</tr><tr><td>Add</td><td>1000</td><td>1,377,902.79 ns</td><td>20,816.673 ns</td><td>18,453.438 ns</td><td>148.4375</td><td>148.4375</td><td>148.4375</td><td>8000105 B</td>
</tr><tr><td>MatMultiply</td><td>1000</td><td>143,300,325.00 ns</td><td>1,445,291.857 ns</td><td>1,606,438.070 ns</td><td>250.0000</td><td>250.0000</td><td>250.0000</td><td>16000296 B</td>
</tr><tr><td>MultiplyVector</td><td>1000</td><td>135,247.34 ns</td><td>1,334.685 ns</td><td>1,248.465 ns</td><td>0.4883</td><td>-</td><td>-</td><td>8024 B</td>
</tr><tr><td>MultiplyRowVector</td><td>1000</td><td>677,195.35 ns</td><td>6,896.007 ns</td><td>6,450.529 ns</td><td>-</td><td>-</td><td>-</td><td>8024 B</td>
</tr></tbody></table>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
```

BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3775)
13th Gen Intel Core i7-13800H, 1 CPU, 20 logical and 14 physical cores
.NET SDK 9.0.201
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2 DEBUG
DefaultJob : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX2


```
| Method | N | Mean | Error | StdDev | Gen0 | Allocated |
|--------------------------- |----- |---------------:|-------------:|-------------:|-------:|----------:|
| **SolveTriangularSystemLower** | **10** | **186.3 ns** | **1.23 ns** | **1.09 ns** | **0.0172** | **216 B** |
| SolveTriangularSystemUpper | 10 | 185.9 ns | 1.33 ns | 1.18 ns | 0.0172 | 216 B |
| **SolveTriangularSystemLower** | **500** | **372,737.0 ns** | **2,926.50 ns** | **2,737.45 ns** | **0.4883** | **8056 B** |
| SolveTriangularSystemUpper | 500 | 357,818.8 ns | 1,729.90 ns | 1,618.15 ns | 0.4883 | 8056 B |
| **SolveTriangularSystemLower** | **1000** | **1,510,031.5 ns** | **7,131.73 ns** | **6,671.03 ns** | **-** | **16057 B** |
| SolveTriangularSystemUpper | 1000 | 1,422,197.8 ns | 8,642.37 ns | 8,084.08 ns | - | 16057 B |
| **SolveTriangularSystemLower** | **2000** | **6,119,478.8 ns** | **40,341.69 ns** | **37,735.64 ns** | **-** | **32059 B** |
| SolveTriangularSystemUpper | 2000 | 5,776,260.6 ns | 30,122.54 ns | 28,176.64 ns | - | 32059 B |
Loading
Loading