Skip to content

Update type definitions of random matrix ensembles #91

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions