package Ġto mas vol ker . num er iko . core . interfaces . array 1 d . double Ċ Ċ import Ġto mas vol ker . num er iko . core . index . Index Ċ import Ġto mas vol ker . num er iko . core . index . Index Progress ion Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 0 d . double . Double Array 0 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . double . view . Default Double Array 1 D High er Rank View Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . double . view . Default Double Res hap ed View Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . double . view . default Double Array 0 D View Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . double . view . default Double Array 1 D View Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . generic . forEach Index Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . generic . isNotEmpty Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . generic . view . Default Array 1 D High er Rank View Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . integer . IntArray 1 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 1 d . numeric . Numeric Array 1 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 2 d . double . Double Array 2 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 2 d . generic . Array 2 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array 2 d . generic . Mutable Array 2 D Ċ import Ġto mas vol ker . num er iko . core . interfaces . array nd . double . Double Array ND Ċ import Ġto mas vol ker . num er iko . core . interfaces . array nd . double . Mutable Double Array ND Ċ import Ġto mas vol ker . num er iko . core . interfaces . factory .* Ċ import Ġto mas vol ker . num er iko . core . pre conditions . require Same Size Ċ import Ġto mas vol ker . num er iko . core . primitives . modulo Ċ import Ġto mas vol ker . num er iko . core . primitives . sum Double Ċ import Ġto mas vol ker . num er iko . core . view . Element Order Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . sqrt Ċ Ċ interface ĠDouble Array 1 D : ĠNumeric Array 1 D < Double >, ĠDouble Array ND Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( var arg Ġindices : ĠInt Progress ion ): ĠDouble Array 1 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Valid Indices ( indices ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget View ( indices [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( var arg Ġindices : ĠInt ): ĠDouble Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Double (* indices ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Double ( var arg Ġindices : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Valid Indices ( indices ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Double ( indices [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( i 0 : ĠInt ): ĠDouble Ġ= Ġget Double ( i 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Float ( var arg Ġindices : ĠInt ): ĠFloat Ġ= Ġget Double (* indices ). toFloat () ĊĠĠĠ Ġoverride Ġfun Ġget Long Ġ( var arg Ġindices : ĠInt ): ĠLong Ġ Ġ= Ġget Double (* indices ). to Long () ĊĠĠĠ Ġoverride Ġfun Ġget Int Ġ Ġ( var arg Ġindices : ĠInt ): ĠInt ĠĠ Ġ= Ġget Double (* indices ). toInt () ĊĠĠĠ Ġoverride Ġfun Ġget Short ( var arg Ġindices : ĠInt ): ĠShort Ġ= Ġget Double (* indices ). to Short () ĊĊĠĠĠ Ġoverride Ġfun Ġget Double ( i 0 : ĠInt ): ĠDouble ĊĠĠĠ Ġoverride Ġfun Ġget Float ( i 0 : ĠInt ): ĠFloat Ġ= Ġget Double ( i 0 ). toFloat () ĊĠĠĠ Ġoverride Ġfun Ġget Long Ġ( i 0 : ĠInt ): ĠLong Ġ Ġ= Ġget Double ( i 0 ). to Long () ĊĠĠĠ Ġoverride Ġfun Ġget Int Ġ Ġ( i 0 : ĠInt ): ĠInt ĠĠ Ġ= Ġget Double ( i 0 ). toInt () ĊĠĠĠ Ġoverride Ġfun Ġget Short ( i 0 : ĠInt ): ĠShort Ġ= Ġget Double ( i 0 ). to Short () ĊĊĠĠĠ Ġfun Ġget Double ( i 0 : ĠIndex ): ĠDouble Ġ= Ġget Double ( i 0 . compute ()) ĊĊĠĠĠ Ġoverride Ġfun Ġwith Shape ( shape 0 : ĠInt , Ġshape 1 : ĠInt , Ġorder : ĠElement Order ): ĠDouble Array 2 D Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Shape ( int Array 1 D Of ( shape 0 , Ġshape 1 ), Ġorder ). as 2 D () ĊĊĠĠĠ Ġoverride Ġfun Ġwith Shape ( shape : ĠInt Array 1 D , Ġorder : ĠElement Order ): ĠMutable Double Array ND Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Double Res hap ed View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= Ġshape . copy (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray Ġ= Ġthis . as Mutable (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġlower Rank ( axis : ĠInt ): ĠDouble Array 0 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Valid Axis ( axis ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdefault Double Array 0 D View ( this . as Mutable (), Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhigher Rank ( axis : ĠInt ): ĠDouble Array 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( axis Ġin Ġ 0 .. 1 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠDefault Double Array 1 D High er Rank View ( this . as Mutable (), Ġaxis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( i 0 : ĠInt Ġ Ġ): ĠDouble Array 0 D Ġ= Ġdefault Double Array 0 D View ( this . as Mutable (), Ġi 0 ) ĊĠĠĠ Ġoverride Ġfun Ġget View ( i 0 : ĠIndex ): ĠDouble Array 0 D Ġ= Ġget View ( i 0 . compute ()) ĊĊĠĠĠ Ġoverride Ġfun Ġget View ( i 0 : ĠInt Progress ion ): ĠDouble Array 1 D Ġ= Ġdefault Double Array 1 D View ( this . as Mutable (), Ġi 0 ) ĊĠĠĠ Ġoverride Ġfun Ġget View ( i 0 : ĠIndex Progress ion ): ĠDouble Array 1 D Ġ= Ġget View ( i 0 . compute ()) ĊĊĠĠĠ Ġoperator Ġfun Ġget ( i 0 : ĠInt ): ĠDouble Ġ= Ġget Double ( i 0 ) ĊĠĠĠ Ġoperator Ġfun Ġget ( i 0 : ĠIndex ): ĠDouble Ġ= Ġget Double ( i 0 ) ĊĊĠĠĠ Ġoperator Ġfun Ġget ( i 0 : ĠInt Progress ion ): ĠDouble Array 1 D Ġ= Ġget View ( i 0 ) ĊĠĠĠ Ġoperator Ġfun Ġget ( i 0 : ĠIndex Progress ion ): ĠDouble Array 1 D Ġ= Ġget View ( i 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġarray Al ong Axis ( axis : ĠInt , Ġindex : ĠInt ): ĠDouble Array 0 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Valid Axis ( axis ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget View ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcopy (): ĠDouble Array 1 D Ġ= Ġcopy ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġas Mutable (): ĠMutable Double Array 1 D Ġ= Ġthis Ġas ĠMutable Double Array 1 D ĊĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠDouble Iterator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Double Array 1 DI ter ator ( this ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthis Ġarray Ġun alter ed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġunary Plus (): ĠDouble Array 1 D Ġ= Ġthis ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġcopy Ġof Ġthis Ġarray Ġwith Ġelement Ġwise Ġneg ation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġunary Minus (): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġ- it Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġthis Ġand Ġ[ other ] Ġdon 't Ġhave Ġthe Ġsame Ġ[ size ] ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġcontaining Ġthe Ġelement Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ= Ġelement Wise ( this , Ġother ) Ġ{ Ġt , Ġo Ġ-> Ġt Ġ+ Ġo Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġsub traction Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġthis Ġand Ġ[ other ] Ġdon 't Ġhave Ġthe Ġsame Ġ[ size ] ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġcontaining Ġthe Ġsub traction Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ= Ġelement Wise ( this , Ġother ) Ġ{ Ġt , Ġo Ġ-> Ġt Ġ- Ġo Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġmultiplication Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġmatrix Ġmultiplication Ġsee Ġ[ mat Mul ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġthis Ġand Ġ[ other ] Ġdon 't Ġhave Ġthe Ġsame Ġ[ size ] ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġcontaining Ġthe Ġsub traction Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ= Ġelement Wise ( this , Ġother ) Ġ{ Ġt , Ġo Ġ-> Ġt Ġ* Ġo Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġthis Ġand Ġ[ other ] Ġdon 't Ġhave Ġthe Ġsame Ġ[ size ] ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġcontaining Ġthe Ġdivision Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġdiv ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ= Ġelement Wise ( this , Ġother ) Ġ{ Ġt , Ġo Ġ-> Ġt Ġ/ Ġo Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġreversed Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreversed Ġdivision Ġis Ġ[ other ] Ġ/ Ġthis . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġthis Ġand Ġ[ other ] Ġdon 't Ġhave Ġthe Ġsame Ġ[ size ] ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġarray Ġcontaining Ġthe Ġreversed Ġdivision Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠĠ Ġfun Ġr div ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ= Ġelement Wise ( this , Ġother ) Ġ{ Ġt , Ġo Ġ-> Ġo Ġ/ Ġt Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠDouble ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġit Ġ+ Ġother Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġsub traction Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠDouble ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġit Ġ- Ġother Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġmultiplication Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠDouble ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġit Ġ* Ġother Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠDouble ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġit Ġ/ Ġother Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġr div ( other : ĠDouble ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġother Ġ/ Ġit Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġaddition Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus ( other : ĠInt ): ĠDouble Array 1 D Ġ= Ġplus ( other . toDouble ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġsub traction Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus ( other : ĠInt ): ĠDouble Array 1 D Ġ= Ġminus ( other . toDouble ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġmultiplication Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes ( other : ĠInt ): ĠDouble Array 1 D Ġ= Ġtimes ( other . toDouble ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv ( other : ĠInt ): ĠDouble Array 1 D Ġ= Ġdiv ( other . toDouble ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġarray Ġwith Ġthe Ġelement Ġwise Ġdivision Ġwith Ġ[ other ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġr div ( other : ĠInt ): ĠDouble Array 1 D Ġ= Ġelement Wise Ġ{ Ġother Ġ/ Ġit Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġsum Ġof Ġall Ġits Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsum (): ĠDouble Ġ= Ġsum By Ġ{ Ġit Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġaverage Ġof Ġall Ġits Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠDouble Array 1 D . average (): ĠDouble Ġ= Ġsum () Ġ/ Ġsize ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġnorm Ġone . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġconsists Ġof Ġadding Ġthe Ġabsolute Ġvalues . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnorm 1 (): ĠDouble Ġ= Ġsum By Ġ{ Ġabs ( it ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġe uclidean Ġnorm . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġconsists Ġof Ġadding Ġthe Ġsquares Ġof Ġthe Ġvalues Ġand Ġapply Ġthe Ġsquare Ġroot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnorm 2 (): ĠDouble Ġ= Ġsqrt ( sum By Ġ{ Ġit Ġ* Ġit Ġ}) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġmax Ġnorm , Ġa . k . a . Ġinfinity Ġnorm . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġmax Ġnorm Ġis Ġthe Ġmaximum Ġabsolute Ġvalue Ġof Ġthe Ġarray . ĠIt Ġis Ġalso Ġknown Ġas Ġthe ĊĠĠĠĠ Ġ* Ġinfinity Ġnorm Ġas Ġit Ġis Ġequivalent Ġto Ġ[ norm ( p )] Ġwhen Ġp Ġt ends Ġto Ġinfinity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmax Norm (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ ĠforEach Index Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Ġ= Ġabs ( this [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ< Ġnew ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġnew ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġa Ġnormalized Ġvector Ġon Ġnorm Ġ 2 . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġconsists Ġof Ġdiv iding Ġthis Ġvector Ġby Ġits Ġnorm Ġ 2 . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnormalized (): ĠDouble Array 1 D Ġ= Ġthis Ġ/ Ġthis . norm 2 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġinner Ġproduct . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġinner ( other : ĠDouble Array 1 D ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Same Size ( this , Ġother ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsum Double ( indices ) Ġ{ Ġi Ġ-> Ġthis [ i ] Ġ* Ġother [ i ] Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġouter Ġproduct . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġouter ( other : ĠDouble Array 1 D ): ĠDouble Array 2 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Same Size ( this , Ġother ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdouble Array 2 D ( this . size , Ġother . size ) Ġ{ Ġi 0 , Ġi 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ i 0 ] Ġ* Ġother [ i 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġmatrix Ġmultiplication Ġbetween Ġthis Ġand Ġ[ other ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġequivalent Ġto Ġ` this ^ T Ġ* Ġother ` Ġin Ġmatrix Ġnotation Ġwith Ġ[ other ] Ġas Ġa Ġcolumn Ġvector ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġ Ġarray Ġto Ġcompute Ġthe Ġmatrix Ġmultiplication Ġwith ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresult Ġof Ġthe Ġmatrix Ġmultiplication ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġ Ġif Ġ` this . size Ġ!= Ġother . shape 1 ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġmat Mul ( other : ĠDouble Array 2 D ): ĠDouble Array 1 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( this . size Ġ== Ġother . shape 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sizes Ġdont Ġmatch " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcontr action Size Ġ= Ġthis . size ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdouble Array 1 D ( other . shape 1 ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Double ( 0 Ġuntil Ġcontr action Size ) Ġ{ Ġk Ġ-> Ġthis [ k ] Ġ* Ġother [ k , Ġi ] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġcumulative Ġsum . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠEach Ġvalue Ġof Ġthe Ġresult Ġis Ġequal Ġto Ġthe Ġsum Ġof Ġthose Ġwith Ġlower Ġor Ġequal Ġindex . ĊĠĠĠĠ Ġ* ĠIt Ġis Ġdefined Ġin Ġsuch Ġa Ġway Ġthat Ġ` this . cumulative Sum (). differ ences ()` Ġis Ġ( numeric ally ) Ġequal Ġto Ġ` this `. ĊĠĠĠĠ Ġ* ĠThe Ġarray Ġreturned Ġhas Ġthe Ġsame Ġsize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcumulative Sum (): ĠDouble Array 1 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdouble Z eros ( this . size ). as Mutable () ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ 0 ] Ġ= Ġthis [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ i ] Ġ= Ġthis [ i ] Ġ+ Ġresult [ i Ġ- 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġdifferences Ġbetween Ġsubsequent Ġsamples Ġ( this ( i ) Ġ- Ġthis ( i - 1 )). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġarray Ġreturned Ġhas Ġthe Ġsame Ġsize , Ġsetting Ġthe Ġfirst Ġelement Ġthis Ġvalues Ġfirst Ġelement Ġ( result ( 0 ) Ġ= Ġthis ( 0 )) ĊĠĠĠĠ Ġ* ĠIt Ġis Ġdefined Ġin Ġsuch Ġa Ġway Ġthat Ġ` this . cumulative Sum (). differ ences ()` Ġis Ġ( numeric ally ) Ġequal Ġto Ġ` this `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdifferences (): ĠDouble Array 1 D Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdouble Z eros ( this . size ). as Mutable () ĊĠĠĠĠĠĠĠ Ġif Ġ( this . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ 0 ] Ġ= Ġthis [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ i ] Ġ= Ġthis [ i ] Ġ- Ġthis [ i Ġ- 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġcircular Ġconvolution Ġof Ġthe Ġarrays . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġarrays Ġmust Ġbe Ġof Ġthe Ġsame Ġsize . ĠThe Ġdefinition Ġused Ġmir rors Ġ[ other ] Ġto Ġcomp ly Ġwith Ġthe ĊĠĠĠĠ Ġ* Ġmathematical Ġdefinition . ĠTo Ġavoid Ġthe Ġmirror ing Ġuse Ġ[ filter ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegal AccessException Ġ Ġif Ġ[ other ] Ġis Ġnot Ġthe Ġsame Ġsize Ġas Ġ[ this ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġconv olve ( other : ĠDouble Array 1 D ): ĠDouble Array 1 D Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Same Size ( this , Ġother ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdouble Array 1 D ( this . size ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Double ( other . indices ) Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [( i Ġ- Ġj ) Ġmodulo Ġsize ] Ġ* Ġother [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFilters Ġthis Ġarray Ġcon vol ving Ġwith Ġthe Ġgiven Ġfilter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġimplementation Ġdoes Ġnot Ġmirror Ġthe Ġfilter Ġand Ġuses Ġthe Ġ[ padding ] Ġvalue Ġto Ġextend Ġthe Ġarray ĊĠĠĠĠ Ġ* Ġand Ġoutput Ġan Ġarray Ġof Ġthe Ġsame Ġsize . ĊĠĠĠĠ Ġ* ĠFor Ġcircular Ġconvolution Ġsee Ġ[ conv olve ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġ Ġthe Ġfilter Ġto Ġuse Ġto Ġconv olve Ġwith Ġthis Ġarray , Ġit Ġwill Ġnot Ġbe Ġmir rored ĊĠĠĠĠ Ġ* Ġ@ param Ġpadding Ġ Ġthe Ġvalue Ġto Ġuse Ġon Ġthe Ġborders Ġon Ġthe Ġarray , Ġ 0 . 0 Ġby Ġdefault ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġfiltered Ġarray ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfilter 1 D ( filter : ĠDouble Array 1 D , Ġpadding : ĠDouble Ġ= Ġ 0 . 0 ): ĠDouble Array 1 D Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Center Ġ= Ġfilter . size Ġ/ Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Size Ġ= Ġthis . size ĊĠĠĠĠĠĠĠ Ġval Ġfilter Size Ġ= Ġfilter . size ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdouble Array 1 D ( result Size ) Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Double ( 0 Ġuntil Ġfilter Size ) Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Ġ= Ġi Ġ+ Ġj Ġ- Ġfilter Center ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Ġin Ġ 0 Ġuntil Ġresult Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ k ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ* Ġfilter [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ