module Data.RangeMin.Common (
	module Data.RangeMin.Common.Combinators,
	module Data.RangeMin.Common.Math,
	module Data.RangeMin.Common.Types,
	module Data.RangeMin.Common.Vector,
	n2Cross,
	nlognCross,
	nearNCross,
	forceBlockN2,
	forceNLogN,
	forceBlockMins) where

import Data.RangeMin.Common.Combinators
import Data.RangeMin.Common.Math
import Data.RangeMin.Common.Types
import Data.RangeMin.Common.Vector

n2Cross, nlognCross, nearNCross :: Int
n2Cross = 5
nlognCross = 30
nearNCross = 50000

 -- Whether or not the internal block range-mins must be done with the O(n^2) algorithm.
forceBlockN2 :: Bool
forceBlockN2 = False

 -- Whether or not the O(n) algorithms should force recursion to the O(n log n) algorithm or may allow
 -- the O(n), O(log n) algorithm.
forceNLogN :: Bool
forceNLogN = True

 -- Whether or not the O(n) algorithms must force the block-internal range min thunks.
forceBlockMins :: Bool
forceBlockMins = True