Skip to content

Update type definitions of random matrix ensembles #91

Open
@apkille

Description

@apkille

The type definitions for Ginibre, GaussianHermite, GaussianJacobi, Ginibre, and Haar are wonky, and they could all become parametric immutable types instead. Below, I list their definitions and suggest improvements, some of which are breaking:

struct GaussianHermite{β} <: ContinuousMatrixDistribution end
GaussianHermite(β) = GaussianHermite{β}()

struct GaussianHermite{B} <: ContinuousMatrixDistribution 
    beta::B
end 

mutable struct GaussianLaguerre <: ContinuousMatrixDistribution
beta::Real
a::Real
end
const Wishart = GaussianLaguerre

struct GaussianLaguerre{B,A} <: ContinuousMatrixDistribution 
    beta::B
    a::A
end 

mutable struct GaussianJacobi <: ContinuousMatrixDistribution
beta::Real
a::Real
b::Real
end
const MANOVA = GaussianJacobi

struct GaussianJacobi{B,A} <: ContinuousMatrixDistribution 
    beta::B
    a::A
    b::A
end 

struct Ginibre <: ContinuousMatrixDistribution
beta::Float64
N::Integer
end

struct Ginibre{B} <: ContinuousMatrixDistribution 
    beta::B
end 

mutable struct Haar <: ContinuousMatrixDistribution
beta::Real
end

struct Haar{B} <: ContinuousMatrixDistribution 
    beta::B
end 

@dlfivefifty please let me know your thoughts, I'm happy to implement these changes. I'm also aware that I'm new to this old package, so I won't be upset if you turn down this proposal 😄

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions