Skip to content
CAI
Software that uses CAICheck a score

fslaborg/FsMath

62.8

Adequate · 3 October 2026

5k

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FsMath is a numerical computing library for F\# that provides SIMD-accelerated vector and matrix operations alongside advanced linear algebra primitives. It supports generic numeric types through .NET's INumber interfaces and includes specialized functions such as gamma calculations and matrix decompositions like SVD and QR. The system is designed for high-performance numerical workloads with interoperability in mind, featuring a comprehensive build and testing infrastructure to ensure reliability and performance.

Features

Add generic Gamma function support

The FsMath library now includes a new \Gamma\ type in the \FsMath.SpecialFunctions\ namespace, providing implementations for the gamma function (\gamma\, \\_gamma\), the log-gamma function (\gammaLn\, \\_gammaLn\), and the lower/upper incomplete gamma functions (\gser\, \gcf\). These functions are implemented using the Lanczos approximation and are generic over any type implementing the .NET \Numerics\ interfaces (such as \IFloatingPoint\), allowing them to work with \float\, \double\, and other numeric types. The public API includes edge-case handling for NaN and infinity, while internal unchecked versions are also exposed for performance-critical paths.

src/FsMath/SpecialFunctions · high confidence

Automated coverage report generation scripts added

Added PowerShell (generate-coverage.ps1) and Bash (generate-coverage.sh) scripts to automate the generation of code coverage reports. These scripts execute tests with coverage collection, install the dotnet-reportgenerator-globaltool if necessary, and produce HTML, Cobertura, JSON, and Markdown summaries in the TestResults/CoverageReport directory, facilitating easier review of test coverage in CI/CD pipelines.

scripts · high confidence

Initial FAKE-based build system setup

The project now uses a new FAKE (F\# Make) build script located in the \build/\ directory to manage the build lifecycle. This setup introduces tasks for cleaning artifacts, building the solution, running unit tests, packaging NuGet releases (both stable and prerelease), and generating documentation via FsDocs. It also includes automation for creating Git tags, publishing packages to NuGet, and updating GitHub release notes, providing a standardized workflow for development and release processes.

build · high confidence

Initial release of FsMath library and project structure

This change introduces the FsMath library, a numerical foundation for F\# featuring SIMD-accelerated Vector and Matrix operations, idiomatic operators (such as .+ and .\*), and row-major storage for interoperability with libraries like TorchSharp. The diff establishes the complete project scaffolding, including the solution file, build scripts (build.sh/cmd), code coverage configuration (Coverlet), and a comprehensive README detailing usage, testing, and documentation workflows.

(repo-wide) · high confidence

Introduce generic, SIMD-optimized vector and matrix types

FsMath now provides generic Vector and Matrix types that work with any type implementing .NET's INumber interfaces, rather than being limited to specific numeric types. These types are backed by hardware-accelerated SIMD operations for core computations like dot products, sums, and element-wise operations, resulting in significantly improved performance for numerical workloads.

src/FsMath · high confidence

New linear algebra primitives and matrix extensions

The FsMath library now includes a new Algebra module providing core linear algebra capabilities: Eigenvalue Decomposition (EVD) via symmetric tridiagonal reduction, Singular Value Decomposition (SVD) using Golub-Kahan bidiagonalization, and QR decomposition via Modified Gram-Schmidt. It also introduces optimized forward and back substitution methods for triangular systems, a generic Householder reflection type for vector/matrix transformations, and a Matrix extension that exposes an Inverse() method.

src/FsMath/Algebra · high confidence

Behavioural changes

Documentation cache regenerated for FsMath

The .fsdocs/cache file has been regenerated, reflecting updated build metadata for the FsMath library targeting .NET 8.0. This cache update includes configuration details such as the default theme, logo, and favicon paths, as well as the package version (1.0.0), ensuring the generated documentation aligns with the current build artifacts and project settings.

.fsdocs · medium confidence

Test coverage

Added comprehensive benchmark suite for FsMath linear algebra and vector operations; Expanded test coverage for FsMath linear algebra and special functions.

Dependencies

Initial project structure and dependency configuration

This change introduces the foundational project files for the FsMath library, establishing the build and test infrastructure. It defines the main library project (FsMath.fsproj) targeting .NET 8.0 with documentation and symbol generation enabled, a dedicated benchmarking project (FsMath.Benchmarks.fsproj) using BenchmarkDotNet 0.15.2, and a comprehensive test suite (FsMath.Tests.fsproj) configured with xUnit 2.9.3, Microsoft.NET.Test.Sdk 17.13.0, and Coverlet 6.0.4. Additionally, a build automation project (build.fsproj) is added, incorporating the Fake build system (version 6.1.3) and related tools for CI/CD, packaging, and release management.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 63 → 63 (+0.2)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 74 → 74 (-0.4)
  • Architecture 100 → 100 (+0.0)
  • Maturity 55 → 55 (+0.0)
  • Readiness 60 → 60 (+0.0)
  • Security 75 → 70 (-4.9)
  • Performance 100 (new)

Resolved (5)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (5–6 lines × 4) (src/FsMath/Algebra/Householder.fs)
  • Duplicated block (9 lines × 2) (src/FsMath/Algebra/Householder.fs)
  • Off-boarding risk: anonymized user #1

New (4)

  • Duplicated block (5 lines × 4) (src/FsMath/Algebra/Householder.fs)
  • Duplicated block (5–6 lines × 3) (src/FsMath/Algebra/LinearAlgebra.fs)
  • Duplicated block (9 lines × 2) (src/FsMath/Algebra/Householder.fs)
  • Off-boarding risk: anonymized user #1

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

fslaborg/FsMath was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 35aecb3531ad6c74f2831eb6b74701490db1caeb — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.