HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Moduletdigest-0.3Haskell2010

Data.TDigest.Vector.Internal

  • 1 type
  • 20 values
  • Packagetdigest-0.3
  • Exports21
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceInternal.hs
datadata TDigest (compression :: Nat)
#

TDigest is a vector of centroids plus not yet merged elements.

The size of structure is dictated by compression, *𝛿*. And is *O(𝛿)*.

Constructors

Instances6Reducer, Show, Semigroup, Monoid, NFData, HasHistogram
valueminimumValue :: KnownNat comp => TDigest comp -> Mean
#

Center of left-most centroid. Note: may be different than min element inserted.

Example1 expression
minimumValue (tdigest [1..100] :: TDigest 3)1.0
valuemaximumValue :: KnownNat comp => TDigest comp -> Mean
#

Center of right-most centroid. Note: may be different than max element inserted.

Example1 expression
maximumValue (tdigest [1..100] :: TDigest 3)100.0
valueksize
  1. :: Double

    compression parameter, 𝛿

  2. -> Double

    quantile, q

  3. -> Double

    notional index, k

#

Mapping from quantile *q* to notional index *k* with compression parameter *𝛿*.

Example1 expression
ksize 42 00.0
Example1 expression
ksize 42 142.0
  • q@ is clamped.:

Example1 expression
ksize 42 242.0
valueksizeInv
  1. :: Double

    compression parameter, 𝛿

  2. -> Double

    notional index, k

  3. -> Double

    quantile, q

#

Inverse of ksize.

Example1 expression
ksizeInv 42 00.0
Example1 expression
ksizeInv 42 421.0
Example1 expression
ksizeInv 42 (ksize 42 0.3)0.3
valueinsert'
  1. :: KnownNat comp
  2. => Double

    element

  3. -> TDigest comp
  4. -> TDigest comp
#

Insert single value, don't compress TDigest even if needed.

This may violate the insertion buffer size invariant.

For sensibly bounded input, it makes sense to let TDigest grow (it might grow linearly in size), and after that compress it once.

Example1 expression
:set -XDataKinds