package Ġorg . kot rix Ċ Ċ import Ġorg . kot rix . matrix . Double Matrix Ċ import Ġorg . kot rix . matrix . de comp . Cho les ky De composition Ċ import Ġorg . kot rix . utils . by Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . sqrt Ċ Ċ fun ĠList < List < Double >> . transpose (): ĠList < List < Double >> Ġ{ ĊĠĠĠ Ġval Ġret Ġ= ĠMutable List ( this . size ) Ġ{ ĠMutable List ( this . size ) Ġ{ Ġ 0 . 0 Ġ} Ġ} ĊĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret [ i ][ j ] Ġ= Ġthis [ j ][ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġret . toList () Ċ } Ċ Ċ operator Ġfun ĠString . times ( other : ĠInt ): ĠString Ġ= Ġthis . run Ġ{ ĊĠĠĠ Ġvar Ġret Ġ= Ġ"" ĊĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġother ) Ġ{ ĊĠĠĠĠĠĠĠ Ġret Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġret Ċ } Ċ Ċ fun ĠList < List < Double >> . matrix String (): ĠString Ġ{ ĊĠĠĠ Ġval Ġret String Ġ= ĠList ( size Ġ= Ġ 0 ) Ġ{ ĠMutable List ( 0 ) Ġ{ Ġ"" Ġ} Ġ}. to Mutable List () ĊĠĠĠ Ġvar ĠmaxLength Ġ= Ġ 0 ĊĠĠĠ Ġthis . forEach Ġ{ Ġit . forEach Ġ{ Ġi Ġ-> ĠmaxLength Ġ= Ġmax ( maxLength , Ġi . toString (). length ) Ġ} Ġ} ĊĠĠĠ Ġfor Ġ( r Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdummy Ġ= ĠMutable List ( 0 ) Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdummy . add ((" Ġ" Ġ* Ġ( maxLength Ġ- Ġc . toString (). length ) Ġ+ Ġc . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġret String Ġ+= Ġdummy ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġret String . join ToString ( prefix Ġ= Ġ"[", Ġpostfix Ġ= Ġ" ]", Ġseparator Ġ= Ġ", \ n Ġ") Ċ } Ċ Ċ fun ĠList < List < Double >> . LL T De comp (): ĠPair < List < List < Double >>, ĠList < List < Double >>> Ġ{ ĊĠĠĠ Ġval Ġlower Ġ= ĠMutable List ( this . size ) Ġ{ ĠMutable List ( this . size ) Ġ{ Ġ 0 . 0 Ġ} Ġ} ĊĠĠĠ Ġfor Ġ( i Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġthis . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġlower [ j ][ k ] Ġ* Ġlower [ j ][ k ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower [ i ][ j ] Ġ= Ġsqrt ( this [ j ][ j ] Ġ- Ġsum ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġlower [ i ][ k ] Ġ* Ġlower [ j ][ k ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lower [ j ][ j ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlower [ i ][ j ] Ġ= Ġ( this [ i ][ j ] Ġ- Ġsum ) Ġ/ Ġlower [ j ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlower Ġto Ġlower . transpose () Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġl lt _ test Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 4 . 0 , Ġ 1 2 . 0 , Ġ- 1 6 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 2 . 0 , Ġ 3 7 . 0 , Ġ- 4 3 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (- 1 6 . 0 , Ġ- 4 3 . 0 , Ġ 9 8 . 0 ), ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġ( L , ĠL _ T ) Ġ= Ġl lt _ test . LL T De comp () ĊĠĠĠ Ġprintln ("${ L . matrix String () }\ n ${ L _ T . matrix String () }") ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 ) Ġprintln () ĊĊĠĠĠ Ġval Ġmatrix Ġ= ĠDouble Matrix . of ( 3 Ġby Ġ 3 , Ġ 4 , 1 2 ,- 1 6 , 1 2 , 3 7 ,- 4 3 ,- 1 6 ,- 4 3 , 9 8 ) ĊĠĠĠ Ġval Ġ( L 1 , ĠL _ T 1 ) Ġ= ĠCho les ky De composition ( matrix ) ĊĠĠĠ Ġprintln ("$ L 1 \ n $ L _ T 1 ") Ċ } Ċ