package Ġio . kin ference . ndarray Ċ Ċ import Ġio . kin ference . ndarray . arrays . t iled . Primitive T iled Array Ċ Ċ fun ĠDouble . to U Short () Ġ= Ġthis . toInt (). to U Short () Ċ fun ĠDouble . to U Byte () Ġ= Ġthis . toInt (). to U Byte () Ċ Ċ fun ĠCollection < Number >. to IntArray (): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( this . size ) ĊĠĠĠ Ġfor Ġ(( i , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray [ i ] Ġ= Ġelement . toInt () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray Ċ } Ċ Ċ fun ĠLong Array . to IntArray () Ġ= ĠInt Array ( this . size ) Ġ{ Ġthis [ it ]. toInt () Ġ} Ċ fun ĠInt Array . toByteArray () Ġ= ĠByteArray ( this . size ) Ġ{ Ġthis [ it ]. to Byte () Ġ} Ċ fun ĠInt Array . to U ByteArray () Ġ= ĠU ByteArray ( this . size ) Ġ{ Ġthis [ it ]. to U Byte () Ġ} Ċ fun ĠInt Array . to Boolean Array () Ġ= ĠBoolean Array ( this . size ) Ġ{ Ġthis [ it ] Ġ!= Ġ 0 Ġ} Ċ fun ĠInt Array . to Long Array () Ġ= ĠLong Array ( this . size ) Ġ{ Ġthis [ it ]. to Long () Ġ} Ċ Ċ fun ĠInt Array ?. isNull OrEmpty () Ġ= Ġthis Ġ== Ġnull Ġ|| Ġthis . isEmpty () Ċ fun ĠLong Array ?. isNull OrEmpty () Ġ= Ġthis Ġ== Ġnull Ġ|| Ġthis . isEmpty () Ċ Ċ fun ĠCollection < Number >. toFloat Array (): ĠFloat Array Ġ{ ĊĠĠĠ Ġval Ġarray Ġ= ĠFloat Array ( this . size ) ĊĠĠĠ Ġfor Ġ(( i , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray [ i ] Ġ= Ġelement . toFloat () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray Ċ } Ċ Ċ fun ĠInt Progress ion . to IntArray (): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( this . count ()) ĊĠĠĠ Ġfor Ġ(( i , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray [ i ] Ġ= Ġelement ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray Ċ } Ċ Ċ fun ĠInt Range . reversed (): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġthis . last Ġ- Ġthis . first Ġ+ Ġ 1 ĊĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( size ) ĊĠĠĠ Ġfor Ġ(( i , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray [ size Ġ- Ġi Ġ- Ġ 1 ] Ġ= Ġelement ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray Ċ } Ċ Ċ fun ĠInt Range . to IntArray (): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġthis . last Ġ- Ġthis . first Ġ+ Ġ 1 ĊĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( size ) ĊĠĠĠ Ġfor Ġ(( i , Ġelement ) Ġin Ġthis . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray [ i ] Ġ= Ġelement ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġarray Ċ } Ċ Ċ fun ĠInt . concat ( array : ĠInt Array ): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġcopy Ġ= ĠInt Array ( array . size Ġ+ Ġ 1 ) ĊĠĠĠ Ġarray . copy Into ( copy , Ġ 1 ) ĊĠĠĠ Ġcopy [ 0 ] Ġ= Ġthis ĊĠĠĠ Ġreturn Ġcopy Ċ } Ċ Ċ fun ĠInt Array . concat ( value : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠ Ġval Ġcopy Ġ= ĠInt Array ( size Ġ+ Ġ 1 ) ĊĠĠĠ Ġthis . copy Into ( copy ) ĊĠĠĠ Ġcopy [ size ] Ġ= Ġvalue ĊĠĠĠ Ġreturn Ġcopy Ċ } Ċ Ċ const Ġval ĠMIN _ BLOCK _ SIZE Ġ= Ġ 5 1 2 Ċ Ċ fun ĠblockSize By Stride s ( strides : ĠSt rides ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġstrides . linear Size Ġ== Ġ 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġstrides . shape . isEmpty () Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrow Size Ġ= Ġstrides . shape . last () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠblockSize Ġ= Ġif Ġ( row Size Ġ< ĠMIN _ BLOCK _ SIZE ) Ġrow Size Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Ġ= Ġrow Size Ġ/ ĠMIN _ BLOCK _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( row Size Ġ% Ġnum Ġ!= Ġ 0 ) Ġnum -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Size Ġ/ Ġnum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠblockSize ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ const Ġval ĠE RF _ P _ VALUE Ġ= Ġ 0 . 3 2 7 5 9 1 1 Ċ val ĠE RF _ CO EF Ġ= Ġdouble ArrayOf ( ĊĠĠĠĠ 0 . 2 5 4 8 2 9 5 9 2 , ĊĠĠĠ Ġ- 0 . 2 8 4 4 9 6 7 3 6 , ĊĠĠĠĠ 1 . 4 2 1 4 1 3 7 4 1 , ĊĠĠĠ Ġ- 1 . 4 5 3 1 5 2 0 2 7 , ĊĠĠĠĠ 1 . 0 6 1 4 0 5 4 2 9 Ċ ) Ċ Ċ internal Ġfun ĠInt Array . swap ( left Idx : ĠInt , Ġright Idx : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġtemp Ġ= Ġget ( left Idx ) ĊĠĠĠ Ġthis [ left Idx ] Ġ= Ġthis [ right Idx ] ĊĠĠĠ Ġthis [ right Idx ] Ġ= Ġtemp Ċ } Ċ