cabal-version: 3.0
name: moonlight-linalg
version: 0.1.0.0
homepage: https://github.com/PaleRoses/moonlight
bug-reports: https://github.com/PaleRoses/moonlight/issues
synopsis: Dense tensor and algebraic matrix core for Pale Meridian.
description: Typed dense and sparse matrices, GF(2) and Smith-normal-form backends, symmetry-indexed operators, and restarted Krylov and Lanczos spectral solvers over a typed shape-and-domain failure vocabulary.
license: MIT
license-file: LICENSE
copyright: (c) 2026 Blue Rose
author: Blue Rose
maintainer: rosaliafialkova@gmail.com
category: Math
build-type: Simple
tested-with: GHC == 9.14.1
extra-doc-files:
README.md
CHANGELOG.md
THIRD_PARTY_NOTICES.md
docs/ARCHITECTURE.md
docs/CONSTRUCTION.md
docs/BENCHMARKS-m4-pro.md
common shared-properties
default-language: GHC2024
ghc-options:
-Wall
-Wcompat
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wredundant-constraints
-Wpartial-fields
-Wno-missing-import-lists
-O2
default-extensions:
TypeFamilies
UndecidableInstances
FunctionalDependencies
library moonlight-linalg-carrier
import: shared-properties
visibility: public
hs-source-dirs: src-carrier
exposed-modules:
Moonlight.LinAlg.Internal.DenseList
Moonlight.LinAlg.Internal.Discrete
Moonlight.LinAlg.Internal.GF2.SparseColumn
Moonlight.LinAlg.Internal.GF2.Xor
Moonlight.LinAlg.Internal.Primitives
Moonlight.LinAlg.Internal.Storage
Moonlight.LinAlg.Internal.VectorOps
Moonlight.LinAlg.Pure.Dense.Flat
Moonlight.LinAlg.Pure.Dense.Rows
Moonlight.LinAlg.Pure.Dense.Types
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, moonlight-algebra:abstract >= 0.1 && < 0.2
, moonlight-core >= 0.1 && < 0.2
, primitive >= 0.8 && < 0.10
, vector >= 0.13 && < 0.14
library moonlight-linalg-structured
import: shared-properties
visibility: public
hs-source-dirs: src-structured
exposed-modules:
Moonlight.LinAlg.Pure.Structured.BlockTridiagonal
Moonlight.LinAlg.Pure.Structured.Tridiagonal
build-depends:
base >= 4.22 && < 5
, moonlight-core >= 0.1 && < 0.2
, primitive >= 0.8 && < 0.10
, vector >= 0.13 && < 0.14
library moonlight-linalg-eigen
import: shared-properties
visibility: public
hs-source-dirs: src-eigen
exposed-modules:
Moonlight.LinAlg.Internal.Eigen.DenseWork
Moonlight.LinAlg.Internal.Eigen.Householder
Moonlight.LinAlg.Internal.Eigen.Input
Moonlight.LinAlg.Internal.Eigen.Kernels
Moonlight.LinAlg.Internal.Eigen.Residual
Moonlight.LinAlg.Internal.Eigen.Symmetric
Moonlight.LinAlg.Internal.Eigen.Tridiagonal
build-depends:
base >= 4.22 && < 5
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, primitive >= 0.8 && < 0.10
, vector >= 0.13 && < 0.14
library moonlight-linalg-geometry
import: shared-properties
visibility: public
hs-source-dirs: src-geometry
exposed-modules:
Moonlight.LinAlg.Pure.Geometry.AABB
Moonlight.LinAlg.Pure.Geometry.AABB2
Moonlight.LinAlg.Pure.Geometry.Frame
Moonlight.LinAlg.Pure.Geometry.Symmetric
Moonlight.LinAlg.Pure.Geometry.Transform.Affine
Moonlight.LinAlg.Pure.Geometry.Vec2
Moonlight.LinAlg.Pure.Geometry.Vec3
build-depends:
base >= 4.22 && < 5
, deepseq >= 1.4 && < 1.6
, moonlight-algebra:abstract >= 0.1 && < 0.2
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, vector >= 0.13 && < 0.14
library moonlight-linalg-dense
import: shared-properties
visibility: public
hs-source-dirs: src-dense
exposed-modules:
Moonlight.LinAlg.Internal.Backend.Core
Moonlight.LinAlg.Internal.Backend.Elimination
Moonlight.LinAlg.Internal.Backend.PLU
Moonlight.LinAlg.Internal.Backend.RREF
Moonlight.LinAlg.Internal.Backend.RowOps
Moonlight.LinAlg.Internal.Backend.RowStore
Moonlight.LinAlg.Internal.Backend.Smith
Moonlight.LinAlg.Internal.Dense.DoubleFactorization
Moonlight.LinAlg.Internal.Dense.OneSidedJacobiSVD
Moonlight.LinAlg.Pure.Dense.Basic
Moonlight.LinAlg.Pure.Dense.Block
Moonlight.LinAlg.Pure.Dense.Decomposition
Moonlight.LinAlg.Pure.Dense.Dynamic
Moonlight.LinAlg.Pure.Dense.Exterior
Moonlight.LinAlg.Pure.Dense.Field
Moonlight.LinAlg.Pure.Dense.GF2
Moonlight.LinAlg.Pure.Dense.Solver
build-depends:
base >= 4.22 && < 5
, moonlight-algebra:abstract >= 0.1 && < 0.2
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-eigen
, primitive >= 0.8 && < 0.10
, vector >= 0.13 && < 0.14
library moonlight-linalg-domain
import: shared-properties
visibility: public
hs-source-dirs: src-domain
exposed-modules:
Moonlight.LinAlg.Pure.Domain.Bareiss
Moonlight.LinAlg.Pure.Domain.Smith
Moonlight.LinAlg.Pure.Domain.Smith.Multimodular
Moonlight.LinAlg.Pure.Domain.Smith.Witnessed
build-depends:
base >= 4.22 && < 5
, moonlight-algebra:abstract >= 0.1 && < 0.2
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-dense
, vector >= 0.13 && < 0.14
library moonlight-linalg-sparse
import: shared-properties
visibility: public
hs-source-dirs: src-sparse
exposed-modules:
Moonlight.LinAlg.Pure.Sparse.Assembly
Moonlight.LinAlg.Pure.Sparse.Packed
Moonlight.LinAlg.Pure.Sparse.Solver.CG
Moonlight.LinAlg.Pure.Sparse.Solver.Common
Moonlight.LinAlg.Pure.Sparse.Solver.GMRES
Moonlight.LinAlg.Pure.Sparse.Solver.IncompleteCholesky0
Moonlight.LinAlg.Pure.Sparse.Solver.Mutable
Moonlight.LinAlg.Pure.Sparse.Solver.Preconditioner
Moonlight.LinAlg.Pure.Sparse.Solver.Stationary
Moonlight.LinAlg.Pure.Sparse.Solver.Types
Moonlight.LinAlg.Pure.Sparse.Structured
Moonlight.LinAlg.Pure.Sparse.Types
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-structured
, primitive >= 0.8 && < 0.10
, transformers >= 0.6 && < 1
, vector >= 0.13 && < 0.14
library moonlight-linalg-statics
import: shared-properties
visibility: public
hs-source-dirs: src-statics
exposed-modules:
Moonlight.LinAlg.Pure.Statics.Algebra
Moonlight.LinAlg.Pure.Statics.Compile
Moonlight.LinAlg.Pure.Statics.Core
Moonlight.LinAlg.Pure.Statics.Network
Moonlight.LinAlg.Pure.Statics.Types
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-dense
, moonlight-linalg:moonlight-linalg-geometry
library moonlight-linalg-spectral
import: shared-properties
visibility: public
hs-source-dirs: src-spectral
exposed-modules:
Moonlight.LinAlg.Pure.Operator
Moonlight.LinAlg.Pure.Krylov.Arnoldi
Moonlight.LinAlg.Pure.Krylov.Block
Moonlight.LinAlg.Pure.Krylov.Config
Moonlight.LinAlg.Pure.Krylov.Decomposition
Moonlight.LinAlg.Pure.Krylov.Internal
Moonlight.LinAlg.Pure.Krylov.Lanczos
Moonlight.LinAlg.Pure.Krylov.Projected
Moonlight.LinAlg.Pure.Krylov.Selection
Moonlight.LinAlg.Pure.Krylov.SelectedTridiagonal
Moonlight.LinAlg.Pure.Spectral.Request
Moonlight.LinAlg.Pure.Spectral.Result
Moonlight.LinAlg.Pure.Spectral.Solve
other-modules:
Moonlight.LinAlg.Pure.Operator.Internal
Moonlight.LinAlg.Pure.Krylov.CascadicGraph
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-eigen
, moonlight-linalg:moonlight-linalg-sparse
, moonlight-linalg:moonlight-linalg-structured
, primitive >= 0.8 && < 0.10
, vector >= 0.13 && < 0.14
library moonlight-linalg-native
import: shared-properties
visibility: public
hs-source-dirs: src-native
exposed-modules:
Moonlight.LinAlg.Effect.Native.Dispatch
Moonlight.LinAlg.Effect.Native.LAPACK
Moonlight.LinAlg.Native
c-sources:
cbits/moonlight_linalg_native.c
build-depends:
base >= 4.22 && < 5
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-dense
, moonlight-linalg:moonlight-linalg-eigen
, moonlight-linalg:moonlight-linalg-spectral
, moonlight-linalg:moonlight-linalg-structured
, vector >= 0.13 && < 0.14
if os(darwin)
frameworks:
Accelerate
else
extra-libraries:
lapack
blas
library
import: shared-properties
hs-source-dirs: src-public
exposed-modules:
Moonlight.LinAlg
Moonlight.LinAlg.Dense
Moonlight.LinAlg.Dense.Block
Moonlight.LinAlg.Dense.Decomposition
Moonlight.LinAlg.Dense.Exterior
Moonlight.LinAlg.Dense.Field
Moonlight.LinAlg.Dense.GF2
Moonlight.LinAlg.Dense.Primitives
Moonlight.LinAlg.Dense.Rows
Moonlight.LinAlg.Dense.Solver
Moonlight.LinAlg.Domain
Moonlight.LinAlg.Geometry
Moonlight.LinAlg.Krylov
Moonlight.LinAlg.Operator
Moonlight.LinAlg.Sparse
Moonlight.LinAlg.Spectral
Moonlight.LinAlg.Statics
build-depends:
base >= 4.22 && < 5
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-dense
, moonlight-linalg:moonlight-linalg-domain
, moonlight-linalg:moonlight-linalg-geometry
, moonlight-linalg:moonlight-linalg-sparse
, moonlight-linalg:moonlight-linalg-spectral
, moonlight-linalg:moonlight-linalg-statics
library moonlight-linalg-laws
import: shared-properties
visibility: public
hs-source-dirs: src-laws
-- This test-law vocabulary has no production or benchmark consumers.
ghc-options: -O0
exposed-modules:
Moonlight.LinAlg.Effect.Harness
Moonlight.LinAlg.Effect.Harness.Core
Moonlight.LinAlg.Effect.Harness.Dense
Moonlight.LinAlg.Effect.Harness.Decomposition
Moonlight.LinAlg.Effect.Harness.Domain
Moonlight.LinAlg.Effect.Harness.Field
Moonlight.LinAlg.Effect.Harness.Geometry
Moonlight.LinAlg.Effect.Harness.KrylovSpectral
Moonlight.LinAlg.Effect.Harness.Operator
Moonlight.LinAlg.Effect.Harness.Preconditioner
Moonlight.LinAlg.Effect.Harness.Sparse
Moonlight.LinAlg.Effect.Harness.Statics
Moonlight.LinAlg.Effect.LawNames
Moonlight.LinAlg.Effect.Laws
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, moonlight-core >= 0.1 && < 0.2
, moonlight-linalg
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-eigen
, moonlight-pale:test-laws >= 0.1 && < 0.2
, tasty >= 1.4 && < 1.6
, tasty-hunit >= 0.10 && < 0.11
, tasty-quickcheck >= 0.10 && < 0.12
, vector >= 0.13 && < 0.14
test-suite moonlight-linalg-laws-test
import: shared-properties
type: exitcode-stdio-1.0
hs-source-dirs: test-laws
main-is: Main.hs
ghc-options: -Wall -Wcompat -O0
build-depends:
base >= 4.22 && < 5
, moonlight-linalg:moonlight-linalg-laws
, tasty >= 1.4
test-suite moonlight-linalg-test
type: exitcode-stdio-1.0
default-language: GHC2024
hs-source-dirs: test test/dense test/domain test/geometry test/sparse test/statics test/spectral test/architecture test/support
main-is: Main.hs
ghc-options: -Wall -Wcompat -O0
default-extensions:
TypeFamilies
other-modules:
AdvancedSpec
ArchitectureSpec
BasicSpec
BlockSpec
DenseFlatSpec
DenseRowsSpec
KrylovSpec
FieldSpec
DomainSpec
DynamicSpec
ExteriorSpec
GF2Spec
GeometryStorageSpec
SymmetricSpec
StaticsSpec
SparseSolverSpec
SparsePackedSpec
Helpers
build-depends:
base >= 4.22 && < 5
, moonlight-linalg
, moonlight-linalg:moonlight-linalg-carrier
, moonlight-linalg:moonlight-linalg-dense
, moonlight-linalg:moonlight-linalg-domain
, moonlight-linalg:moonlight-linalg-eigen
, moonlight-linalg:moonlight-linalg-native
, moonlight-linalg:moonlight-linalg-sparse
, moonlight-linalg:moonlight-linalg-spectral
, moonlight-linalg:moonlight-linalg-structured
, moonlight-core >= 0.1 && < 0.2
, moonlight-algebra:abstract >= 0.1 && < 0.2
, containers >= 0.6 && < 0.9
, directory >= 1.3 && < 1.4
, filepath >= 1.4
, tasty >= 1.4
, tasty-hunit >= 0.10
, tasty-quickcheck >= 0.10
, vector >= 0.13 && < 0.14
benchmark moonlight-linalg-bench
import: shared-properties
type: exitcode-stdio-1.0
hs-source-dirs: bench bench/dense bench/domain bench/statics bench/native bench/sparse bench/spectral bench/support
main-is: Main.hs
other-modules:
DenseCore
DenseDecomposition
DomainAlgebra
Env
Fixtures
GeometryStatics
NativeLapack
ProjectedBlock
SparseKrylov
SparseSolvers
SpectralDispatch
SparseStorage
Types
ghc-options: -O2 -rtsopts
ghc-prof-options: -fprof-auto-top
build-depends:
base >= 4.22 && < 5
, containers >= 0.6 && < 0.9
, deepseq >= 1.4 && < 1.6
, moonlight-linalg
, moonlight-linalg:moonlight-linalg-dense
, moonlight-linalg:moonlight-linalg-native
, moonlight-linalg:moonlight-linalg-spectral
, moonlight-linalg:moonlight-linalg-structured
, tasty-bench
, vector >= 0.13 && < 0.14
source-repository head
type: git
location: https://github.com/PaleRoses/moonlight.git
subdir: moonlight-linalg