1.0.2 • Published 3 years ago

nv-uintyped-mat v1.0.2

Weekly downloads
124
License
ISC
Repository
-
Last release
3 years ago

nv-uintyped-mat

  • nv-uintyped-mat creat a mat-view of Uint-TypedArray
  • fixed col-number and row-number (when init)
  • the buffer can be SharedArrayBuffer

install

  • npm install nv-uintyped-mat

usage

- creat\_uint\_mat(maxn,rownum,colnum=1,shared=true,empty=0,loc\_style=0)

- maxn is max-number/max-bigint permitted

- rownum  is size
-     if undefined, it will be calc from maxn,
-     such as maxn = 9 (1001), size will be 16(10000)

- real\_size = colnum * rownum 
-     when colnum = 1(by default),its a series
-          colnum >1 , its a mat 

- buf\_size = Cls["BYTES\_PER\_ELEMENT"] * real\_size

- shared 
-     means if the bottom-buf is a sharedArrayBuffer

- empty  
-     means  which number is used as empty,default is 0/0n
-     used by clear 

- loc\_style index for mat (colnum>1)
-     0: start from 0
-     1: start  from 1 

example

maxn and rownum

var uint = creat_uint_mat(13)
> uint
Uint8Array(16) [
  0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0,
  0, 0, 0, 0
]
>

> var uint = creat_uint_mat(255)
> uint
Uint8Array(256) [
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  .....
  0, 0, 0, 0,
  ... 156 more items
]
>

> var uint = creat_uint_mat(50000)
> uint
Uint16Array(65536) [
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  ............
  0, 0, 0, 0,
  ... 65436 more items
]
>

> var uint = creat_uint_mat(2**32-1,20)
> uint
Uint32Array(20) [
  0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0
]
>

shared-buffer (default true)

> var uint = creat_uint_mat(2**53,20)
> uint
BigUint64Array(20) [
  0n, 0n, 0n, 0n, 0n, 0n, 0n,
  0n, 0n, 0n, 0n, 0n, 0n, 0n,
  0n, 0n, 0n, 0n, 0n, 0n
]
> uint.buffer
SharedArrayBuffer {
  [Uint8Contents]: <00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... 60 more bytes>,
  byteLength: 160
}
>

mat

//4 rows * 9 cols
var uint = creat_uint_mat(65535,4,9)

> uint
Uint16Array(36) [
  0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0
]
> uint.colnum
9
>
> uint.rownum
4
> uint.real_size
36
> uint.buf_size
72
>

uint.set_row(2,999)
> uint
Uint16Array(36) [
    0,   0,   0,   0,   0,   0,   0,   0,   0,
    0,   0,   0,   0,   0,   0,   0,   0,   0,
  999, 999, 999, 999, 999, 999, 999, 999, 999,
    0,   0,   0,   0,   0,   0,   0,   0,   0
]
>

uint.set_col(2,888)

> uint
Uint16Array(36) [
    0,   0, 888,   0,   0,   0,   0,   0,   0,
    0,   0, 888,   0,   0,   0,   0,   0,   0,
  999, 999, 888, 999, 999, 999, 999, 999, 999,
    0,   0, 888,   0,   0,   0,   0,   0,   0
]
>
> var col = uint.get_col(2)
undefined
> col
[
  Uint16Array(1) [ 888 ],
  Uint16Array(1) [ 888 ],
  Uint16Array(1) [ 888 ],
  Uint16Array(1) [ 888 ]
]
>
col[1][0] = 777
> uint
Uint16Array(36) [
    0,   0, 888,   0,   0,   0,   0,   0,   0,
    0,   0, 777,   0,   0,   0,   0,   0,   0,
  999, 999, 888, 999, 999, 999, 999, 999, 999,
    0,   0, 888,   0,   0,   0,   0,   0,   0
]
>

> uint.locget(1,2)
777
>

uint.from_row(0,[1,2,3,4,5,6,7,8])

> uint
Uint16Array(36) [
    1,   2,   3,   4,   5,   6,   7,   8,   0,
    0,   0, 777,   0,   0,   0,   0,   0,   0,
  999, 999, 888, 999, 999, 999, 999, 999, 999,
    0,   0, 888,   0,   0,   0,   0,   0,   0
]
>
> uint.from_col(7,[10,10,10,10])
[
  Uint16Array(1) [ 10 ],
  Uint16Array(1) [ 10 ],
  Uint16Array(1) [ 10 ],
  Uint16Array(1) [ 10 ]
]
> uint
Uint16Array(36) [
    1,   2,   3,   4,   5,   6,   7, 10,   0,
    0,   0, 777,   0,   0,   0,   0, 10,   0,
  999, 999, 888, 999, 999, 999, 999, 10, 999,
    0,   0, 888,   0,   0,   0,   0, 10,   0
]
>



> uint.empty=65535
> uint.clear_row(2)
Uint16Array(9) [
  65535, 65535,
  65535, 65535,
  65535, 65535,
  65535, 65535,
  65535
]
>
> uint
Uint16Array(36) [
      1,     2,     3,     4,     5,     6,
      7,    10,     0,     0,     0,   777,
      0,     0,     0,     0,    10,     0,
  65535, 65535, 65535, 65535, 65535, 65535,
  65535, 65535, 65535,     0,     0,   888,
      0,     0,     0,     0,    10,     0
]
>

swap

var uint = creat_uint_mat(65535,4,9)
uint.set_row(0,11)
uint.set_row(1,22)
uint.set_row(2,33)
uint.set_row(3,44)

> uint
Uint16Array(36) [
  11, 11, 11, 11, 11, 11, 11, 11, 11,
  22, 22, 22, 22, 22, 22, 22, 22, 22,
  33, 33, 33, 33, 33, 33, 33, 33, 33,
  44, 44, 44, 44, 44, 44, 44, 44, 44
]
>

uint.swap_row(0,2)

> uint
Uint16Array(36) [
  33, 33, 33, 33, 33, 33, 33, 33, 33,
  22, 22, 22, 22, 22, 22, 22, 22, 22,
  11, 11, 11, 11, 11, 11, 11, 11, 11,
  44, 44, 44, 44, 44, 44, 44, 44, 44
]
>

var uint = creat_uint_mat(65535,4,9)
uint.set_col(0,11)
uint.set_col(1,22)
uint.set_col(2,33)
uint.set_col(3,44)

> uint
Uint16Array(36) [
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0
]
>
> uint.swap_col(0,2)
> uint
Uint16Array(36) [
  33, 22, 11, 44, 0, 0, 0, 0, 0,
  33, 22, 11, 44, 0, 0, 0, 0, 0,
  33, 22, 11, 44, 0, 0, 0, 0, 0,
  33, 22, 11, 44, 0, 0, 0, 0, 0
]
>

submat

var uint = creat_uint_mat(65535,4,9)
uint.set_col(0,11)
uint.set_col(1,22)
uint.set_col(2,33)
uint.set_col(3,44)

var m = uint.get_mat()
[
  [11, 22, 33, 44, 0,0,  0,  0,  0],
  [11, 22, 33, 44, 0,0,  0,  0,  0],
  [11, 22, 33, 44, 0,0,  0,  0,  0],
  [11, 22, 33, 44, 0,0,  0,  0,  0],
]
>

var uint = creat_uint_mat(65535,4,9)
uint.from_mat(m)
> uint
Uint16Array(36) [
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0,
  11, 22, 33, 44, 0, 0, 0, 0, 0
]
>

var uint = creat_uint_mat(65535,4,9)
uint.from_range(1,37)

> uint
Uint16Array(36) [
   0,  1,  2,  3,  4,  5,  6,  7,  8,
   9, 10, 11, 12, 13, 14, 15, 16, 17,
  18, 19, 20, 21, 22, 23, 24, 25, 26,
  27, 28, 29, 30, 31, 32, 33, 34, 35
]
>

> uint.submat([1,1],[3,4])
[
  Uint16Array(4) [ 10, 11, 12, 13 ],
  Uint16Array(4) [ 19, 20, 21, 22 ],
  Uint16Array(4) [ 28, 29, 30, 31 ]
]
>
uint.submat([1,1],[3,4])[1][1] = 999

> uint
Uint16Array(36) [
   0,  1,   2,  3,  4,  5,  6,  7,  8,
   9, 10,  11, 12, 13, 14, 15, 16, 17,
  18, 19, 999, 21, 22, 23, 24, 25, 26,
  27, 28,  29, 30, 31, 32, 33, 34, 35
]
>

uint.set_submat([1,1],[3,4],0)
> uint
Uint16Array(36) [
   0, 1, 2, 3, 4,  5,  6,  7,  8,
   9, 0, 0, 0, 0, 14, 15, 16, 17,
  18, 0, 0, 0, 0, 23, 24, 25, 26,
  27, 0, 0, 0, 0, 32, 33, 34, 35
]
>

var sm = [
    [400,500],
    [600,700]
]
uint.from_submat([1,6],[2,7],sm)

> uint
Uint16Array(36) [
   0, 1, 2, 3, 4,  5,   6,   7,  8,
   9, 0, 0, 0, 0, 14, 400, 500, 17,
  18, 0, 0, 0, 0, 23, 600, 700, 26,
  27, 0, 0, 0, 0, 32,  33,  34, 35
]
>


uint.swap_submat([1,6],[2,7],[2,1],[3,2])

> uint
Uint16Array(36) [
   0,   1,   2, 3, 4,  5,  6,  7,  8,
   9,   0,   0, 0, 0, 14,  0,  0, 17,
  18, 400, 500, 0, 0, 23,  0,  0, 26,
  27, 600, 700, 0, 0, 32, 33, 34, 35
]
>

METHODS

uint.buffer                uint.byteLength            uint.byteOffset
uint.copyWithin            uint.entries               uint.every
uint.fill                  uint.filter                uint.find
uint.findIndex             uint.forEach               uint.includes
uint.indexOf               uint.join                  uint.keys
uint.lastIndexOf           uint.length                uint.map
uint.reduce                uint.reduceRight           uint.reverse
uint.set                   uint.slice                 uint.some
uint.sort                  uint.subarray              uint.toLocaleString
uint.toString              uint.values

uint.BYTES_PER_ELEMENT     uint.constructor

uint.buf_size              uint.clear                 uint.clear_col
uint.clear_row             uint.cnget_indexes         uint.colnum
uint.empty                 uint.from_array            uint.from_col
uint.from_mat              uint.from_range            uint.from_row
uint.from_submat           uint.get_col               uint.get_mat
uint.get_row               uint.iclear_col            uint.iclear_row
uint.iget_cn               uint.iget_col              uint.iget_loc
uint.iget_range            uint.iget_rn               uint.iget_row
uint.iset_col              uint.iset_row              uint.loc_style
uint.locget                uint.locget_index          uint.locset
uint.real_size             uint.rnget_index           uint.rnget_range
uint.rownum                uint.set_col               uint.set_row
uint.set_submat            uint.shared                uint.submat
uint.swap_col              uint.swap_row              uint.swap_submat

LICENSE

  • ISC