package Ġspace . k science . k math . real Ċ Ċ import Ġspace . k science . k math . linear . Buffer Matrix Ċ import Ġspace . k science . k math . structures . Buffer Ċ import Ġspace . k science . k math . structures . Real Buffer ĊĊ Ċ /** Ċ Ġ* ĠOptim ized Ġdot Ġproduct Ġfor Ġreal Ġmatrices Ċ Ġ*/ Ċ public Ġin fix Ġfun ĠBuffer Matrix < Double >. dot ( other : ĠBuffer Matrix < Double >): ĠBuffer Matrix < Double > Ġ{ ĊĠĠĠ Ġrequire ( col Num Ġ== Ġother . row Num ) Ġ{ Ġ" Matrix Ġdot Ġoperation Ġdimension Ġmismatch : Ġ($ row Num , Ġ$ col Num ) Ġx Ġ(${ other . row Num }, Ġ${ other . col Num })" Ġ} ĊĠĠĠ Ġval Ġresult Array Ġ= ĠDouble Array ( this . row Num Ġ* Ġother . col Num ) ĊĊĠĠĠ Ġ// convert Ġto Ġarray Ġto Ġin sure Ġthere Ġis Ġno Ġmemory Ġind irection ĊĠĠĠ Ġfun ĠBuffer < Double >. unsafe Array () Ġ= Ġif Ġ( this Ġis ĠReal Buffer ) ĊĠĠĠĠĠĠĠ Ġthis . array ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ ĠDouble Array ( size ) Ġ{ Ġget ( it ) Ġ} ĊĊĠĠĠ Ġval Ġa Ġ= Ġthis . buffer . unsafe Array () ĊĠĠĠ Ġval Ġb Ġ= Ġother . buffer . unsafe Array () ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ( 0 Ġuntil Ġrow Num )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ( 0 Ġuntil Ġother . col Num )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ( 0 Ġuntil Ġcol Num )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Array [ i Ġ* Ġother . col Num Ġ+ Ġj ] Ġ+= Ġa [ i Ġ* Ġcol Num Ġ+ Ġk ] Ġ* Ġb [ k Ġ* Ġother . col Num Ġ+ Ġj ] ĊĊĠĠĠ Ġval Ġbuffer Ġ= ĠReal Buffer ( result Array ) ĊĠĠĠ Ġreturn ĠBuffer Matrix ( row Num , Ġother . col Num , Ġbuffer ) Ċ }