Safe Haskell | None |
---|---|
Language | Haskell2010 |
Triangular numbers and various helper functions.
Main use is for linearization of triangular array indexing.
Triangular numbers: @ T_n = Σ_{k=1)^n k = 1 + 2 + 3 + ... + n =
n * (n+1) / 2 = (n+1) choose
2
@
Documentation
triangularNumber :: Int -> Int Source #
Triangular numbers.
linearizeUppertri :: (Int, Int) -> Int Source #
Size of an upper triangle starting at i
and ending at j
. "(0,N)" what
be the normal thing to use.
toLinear :: Int -> (Int, Int) -> Int Source #
Subword indexing. Given the longest subword and the current subword, calculate a linear index "[0,..]". "(l,n)" in this case means "l"ower bound, length "n". And "(i,j)" is the normal index.
0 1 2 3 <- j = ... 0 1 2 3 i=0 _ 4 5 6 i=1 _ _ 7 8 i=2 9 i=3 i=2, j=3 -> (4+1) * i - tri i + j _ _ _ the triangular number to subtract.