Tuple partitioners

Haskell implementation of fast Practicable Inducers/Tuple partitioners

Sections

Tuple partitioner

Maximum-roll-by-derived-dimension tuple partitioner

Tuple partitioner

The application of the tuple partitioner $I_{P,U,\mathrm{K}} \in \mathrm{computers}$ is described in Haskell.

The tuple partitioner is defined in module AlignmentPracticable,

parametersSystemsPartitioner :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> Histogram -> Histogram -> Double ->
  Maybe (Set.Set ([Set.Set (State,Int)], Histogram, Histogram))

parametersSystemsPartitioner mmax umax pmax uu kk bb bbrr y1
  ...

The repa tuple partitioner is defined in module AlignmentPracticableRepa,

parametersSystemsPartitionerRepa :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  Maybe [(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))]

parametersSystemsPartitionerRepa mmax umax pmax uu kk (rrv,ggv,ssv) y1
  ...

There is also a version that does no checking on the arguments,

parametersSystemsPartitionerRepa_u :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  [(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))]

parametersSystemsPartitionerRepa_u mmax umax pmax uu kk (rrv,ggv,ssv) y1
  ...

Another version does no checking on the arguments and returns the cardinality of the searched,

parametersSystemsPartitionerRepa_ui :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  ([(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))],Integer)

parametersSystemsPartitionerRepa_ui mmax umax pmax uu kk (rrv,ggv,ssv) y1
  ...

Note that the repa partitioners are partly implemented in C using the Foreign Function Interface.

Maximum-roll-by-derived-dimension tuple partitioner

The application of the maximum-roll-by-derived-dimension tuple partitioner $I_{P,U,\mathrm{K},\mathrm{mm}} \in \mathrm{computers}$ is described in Haskell.

The tuple partitioner is defined in module AlignmentPracticable,

parametersSystemsPartitionerMaxRollByM :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> Histogram -> Histogram -> Double ->
  Maybe (Set.Set ([Set.Set (State,Int)], Histogram, Histogram))

parametersSystemsPartitionerMaxRollByM mmax umax pmax uu kk bb bbrr y1
  ...

The repa tuple partitioner is defined in module AlignmentPracticableRepa,

parametersSystemsPartitionerMaxRollByMRepa :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  Maybe [(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))]

parametersSystemsPartitionerMaxRollByMRepa mmax umax pmax uu kk bb y1
  ...

There is also a version that does no checking on the arguments,

parametersSystemsPartitionerMaxRollByMRepa_u :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  [(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))]

parametersSystemsPartitionerMaxRollByMRepa_u mmax umax pmax uu kk bb y1
  ...

Another version does no checking on the arguments and returns the cardinality of the searched,

parametersSystemsPartitionerMaxRollByMRepa_ui :: 
  Integer -> Integer -> Integer -> System -> Set.Set Variable -> 
  (HistogramRepaVec, HistogramRepaVec, UV.Vector Double) -> Double ->
  ([(Set.Set (Set.Set Variable),(HistogramRepaVec,HistogramRepaVec))],Integer)

parametersSystemsPartitionerMaxRollByMRepa_ui mmax umax pmax uu kk (rrv,_,_) y1
  ...

Note that the repa partitioners are partly implemented in C using the Foreign Function Interface.


top