@ file : Generate Primitives ( DataType . NUMBER ) Ċ Ċ package Ġio . kin ference . ndarray . arrays Ċ Ċ import Ġio . kin ference . ndarray . Stride s Ċ import Ġio . kin ference . ndarray . arrays . t iled . Primitive T iled Array Ċ import Ġio . kin ference . ndarray . extensions . apply With Broadcast Ċ import Ġio . kin ference . ndarray . extensions . is Scalar Ċ import Ġio . kin ference . primitives . annotations .* Ċ import Ġio . kin ference . primitives . types .* Ċ Ċ @ Generate Name From Primitives Ċ open Ġclass ĠMutable Primitive ND Array ( array : ĠPrimitive T iled Array , Ġstrides : ĠSt rides Ġ= ĠSt rides . EMPTY ) Ġ: ĠPrimitive ND Array ( array , Ġstrides ), ĠMutable Number ND Array Ġ{ ĊĠĠĠ Ġconstructor ( shape : ĠInt Array ) Ġ: Ġthis ( Primitive T iled Array ( shape ), ĠSt rides ( shape )) ĊĠĠĠ Ġconstructor ( shape : ĠInt Array , Ġinit : Ġ( Int ) Ġ-> ĠPrimitive Type ) Ġ: Ġthis ( Primitive T iled Array ( shape , Ġinit ), ĠSt rides ( shape )) ĊĊĠĠĠ Ġconstructor ( strides : ĠSt rides ) Ġ: Ġthis ( Primitive T iled Array ( strides ), Ġstrides ) ĊĠĠĠ Ġconstructor ( strides : ĠSt rides , Ġinit : Ġ( Int ) Ġ-> ĠPrimitive Type ) Ġ: Ġthis ( Primitive T iled Array ( strides , Ġinit ), Ġstrides ) ĊĊĠĠĠ Ġoverride Ġfun Ġview Mutable ( var arg Ġaxes : ĠInt ): ĠMutable Primitive ND Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġaxes . fold Indexed ( 0 ) Ġ{ Ġindex , Ġacc , Ġi Ġ-> Ġacc Ġ+ Ġi Ġ* Ġstrides . strides [ index ] Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġoffset Blocks Ġ= Ġoffset Ġ/ Ġarray . block Size ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Shape Ġ= Ġshape . copyOf Range ( axes . size , Ġshape . size ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Stride s Ġ= ĠSt rides ( new Shape ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Blocks Ġ= Ġnew Stride s . linear Size Ġ/ Ġarray . block Size ĊĊĠĠĠĠĠĠĠ Ġval Ġcopy Blocks Ġ= Ġarray . blocks . copyOf Range ( offset Blocks , Ġoffset Blocks Ġ+ Ġcount Blocks ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Array Ġ= ĠPrimitive T iled Array ( copy Blocks ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMutable Primitive ND Array ( new Array , Ġnew Stride s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcopy IfNot Mutable (): ĠMutable ND Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMutable Primitive ND Array ( array , Ġstrides ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfill ( value : ĠAny , Ġfrom : ĠInt , Ġto : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue Ġas ĠPrimitive Type ĊĠĠĠĠĠĠĠ Ġarray . fill ( value , Ġfrom , Ġto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfill By Array Value ( array : ĠND Array , Ġindex : ĠInt , Ġfrom : ĠInt , Ġto : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarray Ġas ĠPrimitive ND Array ĊĠĠĠĠĠĠĠ Ġval Ġ( block Index , Ġblock Offset ) Ġ= Ġarray . array . index For ( index ) ĊĠĠĠĠĠĠĠ Ġthis . array . fill ( array . array . blocks [ block Index ][ block Offset ], Ġfrom , Ġto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmap Mutable ( function : ĠPrimitive To Primitive Function ): ĠMutable Number ND Array Ġ{ ĊĠĠĠĠĠĠĠ Ġfunction Ġas ĠPrimitive Map ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġarray . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġblock . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock [ idx ] Ġ= Ġfunction . apply ( block [ idx ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġer f (): ĠMutable Number ND Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . map Mutable ( object Ġ: ĠPrimitive Map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( value : ĠPrimitive Type ): ĠPrimitive Type Ġ= Ġer f For ( value ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġplus Assign ( other : ĠND Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠPrimitive ND Array ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ&& Ġother . is Scalar () Ġ-> Ġthis . array . blocks [ 0 ][ 0 ] Ġ= Ġ( this . array . blocks [ 0 ][ 0 ] Ġ+ Ġother . array . blocks [ 0 ][ 0 ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . is Scalar () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Ġ= Ġother . array . blocks [ 0 ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġthis . array . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġblock . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock [ idx ] Ġ= Ġ( block [ idx ] Ġ+ Ġscalar ). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ-> Ġerror (" Plus Ġassign Ġof Ġa Ġscalar Ġinto Ġa Ġmatrix Ġis Ġpro hibited ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . apply With Broadcast ( other , Ġthis , Ġtrue ) Ġ{ Ġleft , Ġright , Ġdest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġchange Ġto Ġreal Ġplus Assign ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġas ĠPrimitive ND Array ; Ġright Ġas ĠPrimitive ND Array ; Ġdest Ġas ĠMutable Primitive ND Array ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* val Ġleft Array Ġ= Ġleft . array . toArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Array Ġ= Ġright . array . toArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Array Ġ= Ġdest . array . toArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġleft . linear Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Array [ index ] Ġ= Ġ( left Array [ index ] Ġ+ Ġright Array [ index ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest . array Ġ= ĠPrimitive T iled Array ( dest Array , Ġdest . strides ) */ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Num Ġin Ġ 0 Ġuntil Ġleft . array . blocks Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Block Ġ= Ġleft . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Block Ġ= Ġright . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Block Ġ= Ġdest . array . blocks [ block Num ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġleft Block . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Block [ idx ] Ġ= Ġ( left Block [ idx ] Ġ+ Ġright Block [ idx ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġminus Assign ( other : ĠND Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠPrimitive ND Array ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ&& Ġother . is Scalar () Ġ-> Ġthis . array . blocks [ 0 ][ 0 ] Ġ= Ġ( this . array . blocks [ 0 ][ 0 ] Ġ- Ġother . array . blocks [ 0 ][ 0 ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . is Scalar () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Ġ= Ġother . array . blocks [ 0 ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġthis . array . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġblock . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock [ idx ] Ġ= Ġ( block [ idx ] Ġ- Ġscalar ). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ-> Ġerror (" Minus Ġassign Ġof Ġa Ġscalar Ġinto Ġa Ġmatrix Ġis Ġpro hibited ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . apply With Broadcast ( other , Ġthis , Ġtrue ) Ġ{ Ġleft , Ġright , Ġdest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġas ĠPrimitive ND Array ; Ġright Ġas ĠPrimitive ND Array ; Ġdest Ġas ĠMutable Primitive ND Array ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Num Ġin Ġ 0 Ġuntil Ġleft . array . blocks Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Block Ġ= Ġleft . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Block Ġ= Ġright . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Block Ġ= Ġdest . array . blocks [ block Num ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġleft Block . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Block [ idx ] Ġ= Ġ( left Block [ idx ] Ġ- Ġright Block [ idx ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġtimes Assign ( other : ĠND Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠPrimitive ND Array ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ&& Ġother . is Scalar () Ġ-> Ġthis . array . blocks [ 0 ][ 0 ] Ġ= Ġ( this . array . blocks [ 0 ][ 0 ] Ġ* Ġother . array . blocks [ 0 ][ 0 ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . is Scalar () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Ġ= Ġother . array . blocks [ 0 ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġthis . array . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġblock . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock [ idx ] Ġ= Ġ( block [ idx ] Ġ* Ġscalar ). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ-> Ġerror (" Times Ġassign Ġof Ġa Ġscalar Ġinto Ġa Ġmatrix Ġis Ġpro hibited ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . apply With Broadcast ( other , Ġthis , Ġtrue ) Ġ{ Ġleft , Ġright , Ġdest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġas ĠPrimitive ND Array ; Ġright Ġas ĠPrimitive ND Array ; Ġdest Ġas ĠMutable Primitive ND Array ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Num Ġin Ġ 0 Ġuntil Ġleft . array . blocks Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Block Ġ= Ġleft . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Block Ġ= Ġright . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Block Ġ= Ġdest . array . blocks [ block Num ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġleft Block . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Block [ idx ] Ġ= Ġ( left Block [ idx ] Ġ* Ġright Block [ idx ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġdiv Assign ( other : ĠND Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠPrimitive ND Array ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ&& Ġother . is Scalar () Ġ-> Ġthis . array . blocks [ 0 ][ 0 ] Ġ= Ġ( this . array . blocks [ 0 ][ 0 ] Ġ/ Ġother . array . blocks [ 0 ][ 0 ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . is Scalar () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Ġ= Ġother . array . blocks [ 0 ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġthis . array . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġblock . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock [ idx ] Ġ= Ġ( block [ idx ] Ġ/ Ġscalar ). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Scalar () Ġ-> Ġerror (" Div Ġassign Ġof Ġa Ġscalar Ġinto Ġa Ġmatrix Ġis Ġpro hibited ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . apply With Broadcast ( other , Ġthis , Ġtrue ) Ġ{ Ġleft , Ġright , Ġdest Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġas ĠPrimitive ND Array ; Ġright Ġas ĠPrimitive ND Array ; Ġdest Ġas ĠMutable Primitive ND Array ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( block Num Ġin Ġ 0 Ġuntil Ġleft . array . blocks Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Block Ġ= Ġleft . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Block Ġ= Ġright . array . blocks [ block Num ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Block Ġ= Ġdest . array . blocks [ block Num ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( idx Ġin Ġleft Block . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Block [ idx ] Ġ= Ġ( left Block [ idx ] Ġ/ Ġright Block [ idx ]). to Primitive () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcopy From ( offset : ĠInt , Ġother : ĠND Array , Ġstart In Other : ĠInt , Ġend In Other : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġother Ġas ĠPrimitive ND Array ĊĠĠĠĠĠĠĠ Ġother . array . copy Into ( this . array , Ġoffset , Ġstart In Other , Ġend In Other ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclean () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( block Ġin Ġarray . blocks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . fill (( 0 ). to Primitive ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġscalar ( value : ĠPrimitive Type ): ĠPrimitive ND Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMutable Primitive ND Array ( Primitive T iled Array ( 1 , Ġ 1 ) Ġ{ Ġvalue Ġ}, ĠSt rides . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ