import Ġkotlin .* Ċ import Ġkotlin . ranges .* Ċ Ċ @ Compile Time Calculation Ċ class ĠMatrix NN ( val Ġvalues : ĠArray < Array < Double >>) Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġvalues . size ĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠMatrix NN ): ĠMatrix NN Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠArray < Array < Double >>( size ) Ġ{ ĠArray < Double >( size ) Ġ{ Ġ 0 . 0 Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix [ i ][ j ] Ġ+= Ġthis . values [ i ][ k ] Ġ* Ġother . values [ k ][ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMatrix NN ( matrix ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Compile Time Calculation Ċ fun Ġdemo (): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġm 1 Ġ= ĠMatrix NN ( ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 3 . 0 , Ġ 1 . 0 , Ġ 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 . 0 , Ġ 1 . 0 , Ġ 0 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 0 . 0 , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġm 2 Ġ= ĠMatrix NN ( ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 3 . 0 , Ġ 1 . 0 , Ġ 1 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 . 0 , Ġ 1 . 0 , Ġ 1 . 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( 1 . 0 , Ġ 1 . 0 , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġreturn Ġ( m 1 Ġ* Ġm 2 ). values [ 0 ][ 0 ] Ċ } Ċ Ċ const Ġval Ġtemp Ġ= Ġ<! EVAL U ATED : Ġ` 1 0 . 0 ` !> demo () <! > Ċ