packages feed

moonlight-linalg-0.1.0.0: moonlight-linalg.cabal

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