package Ġ Ġglm _. mat 4 x 4 . operators Ċ Ċ import Ġglm _. mat 2 x 4 . Mat 2 x 4 Ċ import Ġglm _. mat 3 x 4 . Mat 3 x 4 Ċ import Ġglm _. mat 4 x 4 . Mat 4 Ċ import Ġglm _. mat 4 x 4 . Mat 4 . Companion . div Ċ import Ġglm _. mat 4 x 4 . Mat 4 . Companion . minus Ċ import Ġglm _. mat 4 x 4 . Mat 4 . Companion . plus Ċ import Ġglm _. mat 4 x 4 . Mat 4 . Companion . times Ċ import Ġglm _. vec 4 . Vec 4 Ċ import Ġglm _. vec 4 . Vec 4 . Companion . div Ċ import Ġglm _. vec 4 . Vec 4 . Companion . minus Ċ import Ġglm _. vec 4 . Vec 4 . Companion . plus Ċ import Ġglm _. vec 4 . Vec 4 . Companion . times Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG Bar b ier i Ġon Ġ 1 0 . 1 1 . 2 0 1 6 . Ċ Ġ*/ Ċ interface Ġmat 4 x 4 _ operators Ġ{ ĊĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ+ Ġscalar Ġ*/ ĊĠĠĠ Ġfun Ġplus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġplus ( res [ 0 ], Ġa [ 0 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 1 ], Ġa [ 1 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 2 ], Ġa [ 2 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 3 ], Ġa [ 3 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- Ġscalar Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġminus ( res [ 0 ], Ġa [ 0 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 1 ], Ġa [ 1 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 2 ], Ġa [ 2 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 3 ], Ġa [ 3 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= Ġscalar Ġ- ĠMat 4 ĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa : ĠFloat , Ġb : ĠMat 4 ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġminus ( res [ 0 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 0 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 1 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 1 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 2 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 2 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 3 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 3 ]) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ* Ġscalar Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġtimes ( res [ 0 ], Ġa [ 0 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġtimes ( res [ 1 ], Ġa [ 1 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġtimes ( res [ 2 ], Ġa [ 2 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġtimes ( res [ 3 ], Ġa [ 3 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ/ Ġscalar Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 0 ], Ġa [ 0 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 1 ], Ġa [ 1 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 2 ], Ġa [ 2 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 3 ], Ġa [ 3 ], Ġb , Ġb , Ġb , Ġb ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= Ġscalar Ġ/ ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠMat 4 , Ġa : ĠFloat , Ġb : ĠMat 4 ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 0 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 0 ]) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 1 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 1 ]) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 2 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 2 ]) ĊĠĠĠĠĠĠĠ Ġdiv ( res [ 3 ], Ġa , Ġa , Ġa , Ġa , Ġb [ 3 ]) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ+ ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġplus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠMat 4 ) Ġ= Ġplus ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 0 , Ġ 0 ], Ġb [ 0 , Ġ 1 ], Ġb [ 0 , Ġ 2 ], Ġb [ 0 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 1 , Ġ 0 ], Ġb [ 1 , Ġ 1 ], Ġb [ 1 , Ġ 2 ], Ġb [ 1 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 2 , Ġ 0 ], Ġb [ 2 , Ġ 1 ], Ġb [ 2 , Ġ 2 ], Ġb [ 2 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 3 , Ġ 0 ], Ġb [ 3 , Ġ 1 ], Ġb [ 3 , Ġ 2 ], Ġb [ 3 , Ġ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ+ ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġplus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 , Ġb 2 : ĠVec 4 , Ġb 3 : ĠVec 4 ) Ġ= Ġplus ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 [ 0 ], Ġb 0 [ 1 ], Ġb 0 [ 2 ], Ġb 0 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 [ 0 ], Ġb 1 [ 1 ], Ġb 1 [ 2 ], Ġb 1 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 [ 0 ], Ġb 2 [ 1 ], Ġb 2 [ 2 ], Ġb 2 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 [ 0 ], Ġb 3 [ 1 ], Ġb 3 [ 2 ], Ġb 3 [ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ+ ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġplus ( res : ĠMat 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 0 : ĠFloat , Ġb 2 1 : ĠFloat , Ġb 2 2 : ĠFloat , Ġb 2 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 0 : ĠFloat , Ġb 3 1 : ĠFloat , Ġb 3 2 : ĠFloat , Ġb 3 3 : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġplus ( res [ 0 ], Ġa [ 0 ], Ġb 0 0 , Ġb 0 1 , Ġb 0 2 , Ġb 0 3 ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 1 ], Ġa [ 1 ], Ġb 1 0 , Ġb 1 1 , Ġb 1 2 , Ġb 1 3 ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 2 ], Ġa [ 2 ], Ġb 2 0 , Ġb 2 1 , Ġb 2 2 , Ġb 2 3 ) ĊĠĠĠĠĠĠĠ Ġplus ( res [ 3 ], Ġa [ 3 ], Ġb 3 0 , Ġb 3 1 , Ġb 3 2 , Ġb 3 3 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠMat 4 ) Ġ= Ġminus ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 0 , Ġ 0 ], Ġb [ 0 , Ġ 1 ], Ġb [ 0 , Ġ 2 ], Ġb [ 0 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 1 , Ġ 0 ], Ġb [ 1 , Ġ 1 ], Ġb [ 1 , Ġ 2 ], Ġb [ 1 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 2 , Ġ 0 ], Ġb [ 2 , Ġ 1 ], Ġb [ 2 , Ġ 2 ], Ġb [ 2 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 3 , Ġ 0 ], Ġb [ 3 , Ġ 1 ], Ġb [ 3 , Ġ 2 ], Ġb [ 3 , Ġ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 , Ġb 2 : ĠVec 4 , Ġb 3 : ĠVec 4 ) Ġ= Ġminus ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 [ 0 ], Ġb 0 [ 1 ], Ġb 0 [ 2 ], Ġb 0 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 [ 0 ], Ġb 1 [ 1 ], Ġb 1 [ 2 ], Ġb 1 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 [ 0 ], Ġb 2 [ 1 ], Ġb 2 [ 2 ], Ġb 2 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 [ 0 ], Ġb 3 [ 1 ], Ġb 3 [ 2 ], Ġb 3 [ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 0 : ĠFloat , Ġb 2 1 : ĠFloat , Ġb 2 2 : ĠFloat , Ġb 2 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 0 : ĠFloat , Ġb 3 1 : ĠFloat , Ġb 3 2 : ĠFloat , Ġb 3 3 : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġminus ( res [ 0 ], Ġa [ 0 ], Ġb 0 0 , Ġb 0 1 , Ġb 0 2 , Ġb 0 3 ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 1 ], Ġa [ 1 ], Ġb 1 0 , Ġb 1 1 , Ġb 1 2 , Ġb 1 3 ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 2 ], Ġa [ 2 ], Ġb 2 0 , Ġb 2 1 , Ġb 2 2 , Ġb 2 3 ) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 3 ], Ġa [ 3 ], Ġb 3 0 , Ġb 3 1 , Ġb 3 2 , Ġb 3 3 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , Ġa 0 : ĠVec 4 , Ġa 1 : ĠVec 4 , Ġa 2 : ĠVec 4 , Ġa 3 : ĠVec 4 , Ġb : ĠMat 4 ) Ġ= Ġminus ( res , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 [ 0 ], Ġa 0 [ 1 ], Ġa 0 [ 2 ], Ġa 0 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 [ 0 ], Ġa 1 [ 1 ], Ġa 1 [ 2 ], Ġa 1 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 2 [ 0 ], Ġa 2 [ 1 ], Ġa 2 [ 2 ], Ġa 2 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa 3 [ 0 ], Ġa 3 [ 1 ], Ġa 3 [ 2 ], Ġa 3 [ 3 ], Ġb ) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ- ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġminus ( res : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 : ĠFloat , Ġa 0 1 : ĠFloat , Ġa 0 2 : ĠFloat , Ġa 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 : ĠFloat , Ġa 1 1 : ĠFloat , Ġa 1 2 : ĠFloat , Ġa 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 2 0 : ĠFloat , Ġa 2 1 : ĠFloat , Ġa 2 2 : ĠFloat , Ġa 2 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 3 0 : ĠFloat , Ġa 3 1 : ĠFloat , Ġa 3 2 : ĠFloat , Ġa 3 3 : ĠFloat , Ġb : ĠMat 4 ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġminus ( res [ 0 ], Ġa 0 0 , Ġa 0 1 , Ġa 0 2 , Ġa 0 3 , Ġb [ 0 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 1 ], Ġa 1 0 , Ġa 1 1 , Ġa 1 2 , Ġa 1 3 , Ġb [ 1 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 2 ], Ġa 2 0 , Ġa 2 1 , Ġa 2 2 , Ġa 2 3 , Ġb [ 2 ]) ĊĠĠĠĠĠĠĠ Ġminus ( res [ 3 ], Ġa 3 0 , Ġa 3 1 , Ġa 3 2 , Ġa 3 3 , Ġb [ 3 ]) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠVec 4 Ġcol Ġ= ĠMat 4 Ġ* ĠVec 4 Ġrow Ġ Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠVec 4 , Ġa : ĠMat 4 , Ġb : ĠVec 4 ) Ġ= Ġtimes ( res , Ġa , Ġb . x , Ġb . y , Ġb . z , Ġb . w ) ĊĊĠĠĠ Ġ/** ĠVec 4 Ġcol Ġ= ĠMat 4 Ġ* ĠVec 4 Ġrow Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠVec 4 , Ġa : ĠMat 4 , Ġb 0 : ĠFloat , Ġb 1 : ĠFloat , Ġb 2 : ĠFloat , Ġb 3 : ĠFloat ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġres [ 0 ] Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 1 ] Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 2 ] Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 3 ] Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠVec 4 Ġrow Ġ= ĠVec 4 Ġcol Ġ* ĠMat 4 Ġ Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠVec 4 , Ġa : ĠVec 4 , Ġb : ĠMat 4 ) Ġ= Ġtimes ( res , Ġa . x , Ġa . y , Ġa . z , Ġa . w , Ġb ) ĊĊĠĠĠ Ġ/** ĠVec 4 Ġrow Ġ= ĠVec 4 Ġcol Ġ* ĠMat 4 Ġ Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠVec 4 , Ġa 0 : ĠFloat , Ġa 1 : ĠFloat , Ġa 2 : ĠFloat , Ġa 3 : ĠFloat , Ġb : ĠMat 4 ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġres [ 0 ] Ġ= Ġa 0 Ġ* Ġb [ 0 , Ġ 0 ] Ġ+ Ġa 1 Ġ* Ġb [ 0 , Ġ 1 ] Ġ+ Ġa 2 Ġ* Ġb [ 0 , Ġ 2 ] Ġ+ Ġa 3 Ġ* Ġb [ 0 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġres [ 1 ] Ġ= Ġa 0 Ġ* Ġb [ 1 , Ġ 0 ] Ġ+ Ġa 1 Ġ* Ġb [ 1 , Ġ 1 ] Ġ+ Ġa 2 Ġ* Ġb [ 1 , Ġ 2 ] Ġ+ Ġa 3 Ġ* Ġb [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġres [ 2 ] Ġ= Ġa 0 Ġ* Ġb [ 2 , Ġ 0 ] Ġ+ Ġa 1 Ġ* Ġb [ 2 , Ġ 1 ] Ġ+ Ġa 2 Ġ* Ġb [ 2 , Ġ 2 ] Ġ+ Ġa 3 Ġ* Ġb [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġres [ 3 ] Ġ= Ġa 0 Ġ* Ġb [ 3 , Ġ 0 ] Ġ+ Ġa 1 Ġ* Ġb [ 3 , Ġ 1 ] Ġ+ Ġa 2 Ġ* Ġb [ 3 , Ġ 2 ] Ġ+ Ġa 3 Ġ* Ġb [ 3 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠMat 4 ): ĠMat 4 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġvar 3 Ġ= Ġb . array [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 4 Ġ= Ġb . array [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 5 Ġ= Ġb . array [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 6 Ġ= Ġb . array [ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 7 Ġ= Ġb . array [ 4 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 8 Ġ= Ġb . array [ 5 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 9 Ġ= Ġb . array [ 6 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 0 Ġ= Ġb . array [ 7 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 1 Ġ= Ġb . array [ 8 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 2 Ġ= Ġb . array [ 9 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 3 Ġ= Ġb . array [ 1 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 4 Ġ= Ġb . array [ 1 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 5 Ġ= Ġb . array [ 1 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 6 Ġ= Ġb . array [ 1 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 7 Ġ= Ġb . array [ 1 4 ] ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 8 Ġ= Ġb . array [ 1 5 ] ĊĠĠĠĠĠĠĠ Ġvar Ġvar 1 9 Ġ= Ġa . array [ 0 ] ĊĠĠĠĠĠĠĠ Ġvar Ġvar 2 0 Ġ= Ġa . array [ 4 ] ĊĠĠĠĠĠĠĠ Ġvar Ġvar 2 1 Ġ= Ġa . array [ 8 ] ĊĠĠĠĠĠĠĠ Ġvar Ġvar 2 2 Ġ= Ġa . array [ 1 2 ] ĊĠĠĠĠĠĠĠ Ġres . array [ 0 ] Ġ= Ġvar 1 9 Ġ* Ġvar 3 Ġ+ Ġvar 2 0 Ġ* Ġvar 4 Ġ+ Ġvar 2 1 Ġ* Ġvar 5 Ġ+ Ġvar 2 2 Ġ* Ġvar 6 ĊĠĠĠĠĠĠĠ Ġres . array [ 4 ] Ġ= Ġvar 1 9 Ġ* Ġvar 7 Ġ+ Ġvar 2 0 Ġ* Ġvar 8 Ġ+ Ġvar 2 1 Ġ* Ġvar 9 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 0 ĊĠĠĠĠĠĠĠ Ġres . array [ 8 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 1 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 2 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 3 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 4 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 2 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 5 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 6 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 7 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 8 ĊĠĠĠĠĠĠĠ Ġvar 1 9 Ġ= Ġa . array [ 1 ] ĊĠĠĠĠĠĠĠ Ġvar 2 0 Ġ= Ġa . array [ 5 ] ĊĠĠĠĠĠĠĠ Ġvar 2 1 Ġ= Ġa . array [ 9 ] ĊĠĠĠĠĠĠĠ Ġvar 2 2 Ġ= Ġa . array [ 1 3 ] ĊĠĠĠĠĠĠĠ Ġres . array [ 1 ] Ġ= Ġvar 1 9 Ġ* Ġvar 3 Ġ+ Ġvar 2 0 Ġ* Ġvar 4 Ġ+ Ġvar 2 1 Ġ* Ġvar 5 Ġ+ Ġvar 2 2 Ġ* Ġvar 6 ĊĠĠĠĠĠĠĠ Ġres . array [ 5 ] Ġ= Ġvar 1 9 Ġ* Ġvar 7 Ġ+ Ġvar 2 0 Ġ* Ġvar 8 Ġ+ Ġvar 2 1 Ġ* Ġvar 9 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 0 ĊĠĠĠĠĠĠĠ Ġres . array [ 9 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 1 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 2 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 3 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 4 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 3 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 5 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 6 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 7 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 8 ĊĠĠĠĠĠĠĠ Ġvar 1 9 Ġ= Ġa . array [ 2 ] ĊĠĠĠĠĠĠĠ Ġvar 2 0 Ġ= Ġa . array [ 6 ] ĊĠĠĠĠĠĠĠ Ġvar 2 1 Ġ= Ġa . array [ 1 0 ] ĊĠĠĠĠĠĠĠ Ġvar 2 2 Ġ= Ġa . array [ 1 4 ] ĊĠĠĠĠĠĠĠ Ġres . array [ 2 ] Ġ= Ġvar 1 9 Ġ* Ġvar 3 Ġ+ Ġvar 2 0 Ġ* Ġvar 4 Ġ+ Ġvar 2 1 Ġ* Ġvar 5 Ġ+ Ġvar 2 2 Ġ* Ġvar 6 ĊĠĠĠĠĠĠĠ Ġres . array [ 6 ] Ġ= Ġvar 1 9 Ġ* Ġvar 7 Ġ+ Ġvar 2 0 Ġ* Ġvar 8 Ġ+ Ġvar 2 1 Ġ* Ġvar 9 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 0 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 0 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 1 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 2 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 3 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 4 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 4 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 5 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 6 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 7 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 8 ĊĠĠĠĠĠĠĠ Ġvar 1 9 Ġ= Ġa . array [ 3 ] ĊĠĠĠĠĠĠĠ Ġvar 2 0 Ġ= Ġa . array [ 7 ] ĊĠĠĠĠĠĠĠ Ġvar 2 1 Ġ= Ġa . array [ 1 1 ] ĊĠĠĠĠĠĠĠ Ġvar 2 2 Ġ= Ġa . array [ 1 5 ] ĊĠĠĠĠĠĠĠ Ġres . array [ 3 ] Ġ= Ġvar 1 9 Ġ* Ġvar 3 Ġ+ Ġvar 2 0 Ġ* Ġvar 4 Ġ+ Ġvar 2 1 Ġ* Ġvar 5 Ġ+ Ġvar 2 2 Ġ* Ġvar 6 ĊĠĠĠĠĠĠĠ Ġres . array [ 7 ] Ġ= Ġvar 1 9 Ġ* Ġvar 7 Ġ+ Ġvar 2 0 Ġ* Ġvar 8 Ġ+ Ġvar 2 1 Ġ* Ġvar 9 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 0 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 1 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 1 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 2 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 3 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 4 ĊĠĠĠĠĠĠĠ Ġres . array [ 1 5 ] Ġ= Ġvar 1 9 Ġ* Ġvar 1 5 Ġ+ Ġvar 2 0 Ġ* Ġvar 1 6 Ġ+ Ġvar 2 1 Ġ* Ġvar 1 7 Ġ+ Ġvar 2 2 Ġ* Ġvar 1 8 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 , Ġb 2 : ĠVec 4 , Ġb 3 : ĠVec 4 ) Ġ= Ġtimes ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 [ 0 ], Ġb 0 [ 1 ], Ġb 0 [ 2 ], Ġb 0 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 [ 0 ], Ġb 1 [ 1 ], Ġb 1 [ 2 ], Ġb 1 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 [ 0 ], Ġb 2 [ 1 ], Ġb 2 [ 2 ], Ġb 2 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 [ 0 ], Ġb 3 [ 1 ], Ġb 3 [ 2 ], Ġb 3 [ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 0 : ĠFloat , Ġb 2 1 : ĠFloat , Ġb 2 2 : ĠFloat , Ġb 2 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 0 : ĠFloat , Ġb 3 1 : ĠFloat , Ġb 3 2 : ĠFloat , Ġb 3 3 : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 0 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 3 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 3 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 3 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 3 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 3 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 3 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 3 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 3 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 3 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 3 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 3 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 3 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 3 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 3 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 3 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 3 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 3 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 3 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 3 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 3 3 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 0 ] Ġ= Ġv 0 0 ; Ġres [ 1 , Ġ 0 ] Ġ= Ġv 1 0 ; Ġres [ 2 , Ġ 0 ] Ġ= Ġv 2 0 ; Ġres [ 3 , Ġ 0 ] Ġ= Ġv 3 0 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 1 ] Ġ= Ġv 0 1 ; Ġres [ 1 , Ġ 1 ] Ġ= Ġv 1 1 ; Ġres [ 2 , Ġ 1 ] Ġ= Ġv 2 1 ; Ġres [ 3 , Ġ 1 ] Ġ= Ġv 3 1 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 2 ] Ġ= Ġv 0 2 ; Ġres [ 1 , Ġ 2 ] Ġ= Ġv 1 2 ; Ġres [ 2 , Ġ 2 ] Ġ= Ġv 2 2 ; Ġres [ 3 , Ġ 2 ] Ġ= Ġv 3 2 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 3 ] Ġ= Ġv 0 3 ; Ġres [ 1 , Ġ 3 ] Ġ= Ġv 1 3 ; Ġres [ 2 , Ġ 3 ] Ġ= Ġv 2 3 ; Ġres [ 3 , Ġ 3 ] Ġ= Ġv 3 3 ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠMat 2 4 Ġ= ĠMat 4 Ġ* ĠMat 2 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 2 x 4 , Ġa : ĠMat 4 , Ġb : ĠMat 2 x 4 ) Ġ= Ġtimes ( res , Ġa , Ġb [ 0 ], Ġb [ 1 ]) ĊĊĠĠĠ Ġ/** ĠMat 2 4 Ġ= ĠMat 4 Ġ* ĠMat 2 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 2 x 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 ) Ġ= Ġtimes ( res , Ġa , Ġb 0 . x , Ġb 0 . y , Ġb 0 . z , Ġb 0 . w , Ġb 1 . x , Ġb 1 . y , Ġb 1 . z , Ġb 1 . w ) ĊĊĠĠĠ Ġ/** ĠMat 2 4 Ġ= ĠMat 4 Ġ* ĠMat 2 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 2 x 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat ): ĠMat 2 x 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 0 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 0 ] Ġ= Ġv 0 0 ; Ġres [ 1 , Ġ 0 ] Ġ= Ġv 1 0 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 1 ] Ġ= Ġv 0 1 ; Ġres [ 1 , Ġ 1 ] Ġ= Ġv 1 1 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 2 ] Ġ= Ġv 0 2 ; Ġres [ 1 , Ġ 2 ] Ġ= Ġv 1 2 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 3 ] Ġ= Ġv 0 3 ; Ġres [ 1 , Ġ 3 ] Ġ= Ġv 1 3 ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠMat 3 4 Ġ= ĠMat 4 Ġ* ĠMat 3 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 3 x 4 , Ġa : ĠMat 4 , Ġb : ĠMat 3 x 4 ) Ġ= Ġtimes ( res , Ġa , Ġb [ 0 ], Ġb [ 1 ], Ġb [ 2 ], Ġb [ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 3 4 Ġ= ĠMat 4 Ġ* ĠMat 3 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 3 x 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 , Ġb 2 : ĠVec 4 , Ġb 3 : ĠVec 4 ) Ġ= Ġtimes ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 . x , Ġb 0 . y , Ġb 0 . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 . x , Ġb 1 . y , Ġb 1 . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 . x , Ġb 2 . y , Ġb 2 . z , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 . x , Ġb 3 . y , Ġb 3 . z ) ĊĊĠĠĠ Ġ/** ĠMat 3 4 Ġ= ĠMat 4 Ġ* ĠMat 3 4 Ġ*/ ĊĠĠĠ Ġfun Ġtimes ( res : ĠMat 3 x 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 0 : ĠFloat , Ġb 2 1 : ĠFloat , Ġb 2 2 : ĠFloat , Ġb 2 3 : ĠFloat ): ĠMat 3 x 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv 0 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 0 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 0 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 0 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 0 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 0 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 1 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 1 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 1 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 1 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 1 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 0 Ġ= Ġa [ 0 , Ġ 0 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 0 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 0 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 0 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 1 Ġ= Ġa [ 0 , Ġ 1 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 1 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 1 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 1 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 2 Ġ= Ġa [ 0 , Ġ 2 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 2 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 2 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġval Ġv 2 3 Ġ= Ġa [ 0 , Ġ 3 ] Ġ* Ġb 2 0 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġb 2 1 Ġ+ Ġa [ 2 , Ġ 3 ] Ġ* Ġb 2 2 Ġ+ Ġa [ 3 , Ġ 3 ] Ġ* Ġb 2 3 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 0 ] Ġ= Ġv 0 0 ; Ġres [ 1 , Ġ 0 ] Ġ= Ġv 1 0 ; Ġres [ 2 , Ġ 0 ] Ġ= Ġv 2 0 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 1 ] Ġ= Ġv 0 1 ; Ġres [ 1 , Ġ 1 ] Ġ= Ġv 1 1 ; Ġres [ 2 , Ġ 1 ] Ġ= Ġv 2 1 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 2 ] Ġ= Ġv 0 2 ; Ġres [ 1 , Ġ 2 ] Ġ= Ġv 1 2 ; Ġres [ 2 , Ġ 2 ] Ġ= Ġv 2 2 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 3 ] Ġ= Ġv 0 3 ; Ġres [ 1 , Ġ 3 ] Ġ= Ġv 1 3 ; Ġres [ 2 , Ġ 3 ] Ġ= Ġv 2 3 ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ/ ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 ^ - 1 Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb : ĠMat 4 ) Ġ= Ġdiv ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 0 , Ġ 0 ], Ġb [ 0 , Ġ 1 ], Ġb [ 0 , Ġ 2 ], Ġb [ 0 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 1 , Ġ 0 ], Ġb [ 1 , Ġ 1 ], Ġb [ 1 , Ġ 2 ], Ġb [ 1 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 2 , Ġ 0 ], Ġb [ 2 , Ġ 1 ], Ġb [ 2 , Ġ 2 ], Ġb [ 2 , Ġ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb [ 3 , Ġ 0 ], Ġb [ 3 , Ġ 1 ], Ġb [ 3 , Ġ 2 ], Ġb [ 3 , Ġ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ/ ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 ^ - 1 Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠMat 4 , Ġa : ĠMat 4 , Ġb 0 : ĠVec 4 , Ġb 1 : ĠVec 4 , Ġb 2 : ĠVec 4 , Ġb 3 : ĠVec 4 ) Ġ= Ġdiv ( res , Ġa , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 [ 0 ], Ġb 0 [ 1 ], Ġb 0 [ 2 ], Ġb 0 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 [ 0 ], Ġb 1 [ 1 ], Ġb 1 [ 2 ], Ġb 1 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 [ 0 ], Ġb 2 [ 1 ], Ġb 2 [ 2 ], Ġb 2 [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 [ 0 ], Ġb 3 [ 1 ], Ġb 3 [ 2 ], Ġb 3 [ 3 ]) ĊĊĠĠĠ Ġ/** ĠMat 4 Ġ= ĠMat 4 Ġ/ ĠMat 4 Ġ= ĠMat 4 Ġ* ĠMat 4 ^ - 1 Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠMat 4 , Ġa : ĠMat 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 0 0 : ĠFloat , Ġb 0 1 : ĠFloat , Ġb 0 2 : ĠFloat , Ġb 0 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 0 : ĠFloat , Ġb 1 1 : ĠFloat , Ġb 1 2 : ĠFloat , Ġb 1 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 0 : ĠFloat , Ġb 2 1 : ĠFloat , Ġb 2 2 : ĠFloat , Ġb 2 3 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 0 : ĠFloat , Ġb 3 1 : ĠFloat , Ġb 3 2 : ĠFloat , Ġb 3 3 : ĠFloat ): ĠMat 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 0 ] Ġ= Ġb 0 0 ; Ġres [ 1 , Ġ 0 ] Ġ= Ġb 1 0 ; Ġres [ 2 , Ġ 0 ] Ġ= Ġb 2 0 ; Ġres [ 3 , Ġ 0 ] Ġ= Ġb 3 0 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 1 ] Ġ= Ġb 0 1 ; Ġres [ 1 , Ġ 1 ] Ġ= Ġb 1 1 ; Ġres [ 2 , Ġ 1 ] Ġ= Ġb 2 1 ; Ġres [ 3 , Ġ 1 ] Ġ= Ġb 3 1 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 2 ] Ġ= Ġb 0 2 ; Ġres [ 1 , Ġ 2 ] Ġ= Ġb 1 2 ; Ġres [ 2 , Ġ 2 ] Ġ= Ġb 2 2 ; Ġres [ 3 , Ġ 2 ] Ġ= Ġb 3 2 ĊĠĠĠĠĠĠĠ Ġres [ 0 , Ġ 3 ] Ġ= Ġb 0 3 ; Ġres [ 1 , Ġ 3 ] Ġ= Ġb 1 3 ; Ġres [ 2 , Ġ 3 ] Ġ= Ġb 2 3 ; Ġres [ 3 , Ġ 3 ] Ġ= Ġb 3 3 ĊĠĠĠĠĠĠĠ Ġres . inverse Assign () ĊĠĠĠĠĠĠĠ Ġa . times ( res , Ġres ) ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĠVec 4 Ġcol Ġ= ĠMat 4 Ġ* ĠVec 4 Ġrow Ġ Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 4 , Ġa : ĠMat 4 , Ġb : ĠVec 4 ) Ġ= Ġdiv ( res , Ġa , Ġb . x , Ġb . y , Ġb . z , Ġb . w ) ĊĊĠĠĠ Ġ/** ĠVec 4 Ġcol Ġ= ĠMat 4 Ġ* ĠVec 4 Ġrow Ġ Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 4 , Ġa : ĠMat 4 , Ġb 0 : ĠFloat , Ġb 1 : ĠFloat , Ġb 2 : ĠFloat , Ġb 3 : ĠFloat ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinvert Ġa ĊĠĠĠĠĠĠĠ Ġval Ġc 0 0 Ġ= Ġa [ 2 , Ġ 2 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 2 ] Ġ* Ġa [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 2 Ġ= Ġa [ 1 , Ġ 2 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 2 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 3 Ġ= Ġa [ 1 , Ġ 2 ] Ġ* Ġa [ 2 , Ġ 3 ] Ġ- Ġa [ 2 , Ġ 2 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 0 4 Ġ= Ġa [ 2 , Ġ 1 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 1 ] Ġ* Ġa [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 6 Ġ= Ġa [ 1 , Ġ 1 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 1 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 7 Ġ= Ġa [ 1 , Ġ 1 ] Ġ* Ġa [ 2 , Ġ 3 ] Ġ- Ġa [ 2 , Ġ 1 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 0 8 Ġ= Ġa [ 2 , Ġ 1 ] Ġ* Ġa [ 3 , Ġ 2 ] Ġ- Ġa [ 3 , Ġ 1 ] Ġ* Ġa [ 2 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 0 Ġ= Ġa [ 1 , Ġ 1 ] Ġ* Ġa [ 3 , Ġ 2 ] Ġ- Ġa [ 3 , Ġ 1 ] Ġ* Ġa [ 1 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 1 Ġ= Ġa [ 1 , Ġ 1 ] Ġ* Ġa [ 2 , Ġ 2 ] Ġ- Ġa [ 2 , Ġ 1 ] Ġ* Ġa [ 1 , Ġ 2 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 1 2 Ġ= Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 4 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 3 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 5 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 3 ] Ġ- Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 1 6 Ġ= Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 2 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 8 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 2 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 9 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 2 ] Ġ- Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 2 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 2 0 Ġ= Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 1 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 2 2 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 3 , Ġ 1 ] Ġ- Ġa [ 3 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 2 3 Ġ= Ġa [ 1 , Ġ 0 ] Ġ* Ġa [ 2 , Ġ 1 ] Ġ- Ġa [ 2 , Ġ 0 ] Ġ* Ġa [ 1 , Ġ 1 ] ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 0 0 Ġ= Ġ+ ( a [ 1 , Ġ 1 ] Ġ* Ġc 0 0 Ġ- Ġa [ 1 , Ġ 2 ] Ġ* Ġc 0 4 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġc 0 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 1 Ġ= Ġ-( a [ 0 , Ġ 1 ] Ġ* Ġc 0 0 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 0 4 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 0 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 2 Ġ= Ġ+ ( a [ 0 , Ġ 1 ] Ġ* Ġc 0 2 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 0 6 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 3 Ġ= Ġ-( a [ 0 , Ġ 1 ] Ġ* Ġc 0 3 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 0 7 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 1 1 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 1 0 Ġ= Ġ-( a [ 1 , Ġ 0 ] Ġ* Ġc 0 0 Ġ- Ġa [ 1 , Ġ 2 ] Ġ* Ġc 1 2 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġc 1 6 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 1 Ġ= Ġ+ ( a [ 0 , Ġ 0 ] Ġ* Ġc 0 0 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 1 2 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 1 6 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 2 Ġ= Ġ-( a [ 0 , Ġ 0 ] Ġ* Ġc 0 2 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 1 4 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 1 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 3 Ġ= Ġ+ ( a [ 0 , Ġ 0 ] Ġ* Ġc 0 3 Ġ- Ġa [ 0 , Ġ 2 ] Ġ* Ġc 1 5 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 1 9 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 2 0 Ġ= Ġ+ ( a [ 1 , Ġ 0 ] Ġ* Ġc 0 4 Ġ- Ġa [ 1 , Ġ 1 ] Ġ* Ġc 1 2 Ġ+ Ġa [ 1 , Ġ 3 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 1 Ġ= Ġ-( a [ 0 , Ġ 0 ] Ġ* Ġc 0 4 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 2 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 2 Ġ= Ġ+ ( a [ 0 , Ġ 0 ] Ġ* Ġc 0 6 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 4 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 2 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 3 Ġ= Ġ-( a [ 0 , Ġ 0 ] Ġ* Ġc 0 7 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 5 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġc 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 3 0 Ġ= Ġ-( a [ 1 , Ġ 0 ] Ġ* Ġc 0 8 Ġ- Ġa [ 1 , Ġ 1 ] Ġ* Ġc 1 6 Ġ+ Ġa [ 1 , Ġ 2 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 1 Ġ= Ġ+ ( a [ 0 , Ġ 0 ] Ġ* Ġc 0 8 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 6 Ġ+ Ġa [ 0 , Ġ 2 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 2 Ġ= Ġ-( a [ 0 , Ġ 0 ] Ġ* Ġc 1 0 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 8 Ġ+ Ġa [ 0 , Ġ 2 ] Ġ* Ġc 2 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 3 Ġ= Ġ+ ( a [ 0 , Ġ 0 ] Ġ* Ġc 1 1 Ġ- Ġa [ 0 , Ġ 1 ] Ġ* Ġc 1 9 Ġ+ Ġa [ 0 , Ġ 2 ] Ġ* Ġc 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġone Over Det Ġ= Ġ 1 Ġ/ Ġ( a [ 0 , Ġ 0 ] Ġ* Ġi 0 0 Ġ+ Ġa [ 0 , Ġ 1 ] Ġ* Ġi 1 0 Ġ+ Ġa [ 0 , Ġ 2 ] Ġ* Ġi 2 0 Ġ+ Ġa [ 0 , Ġ 3 ] Ġ* Ġi 3 0 ) ĊĊĠĠĠĠĠĠĠ Ġi 0 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 1 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 2 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 3 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġ// Ġa Ġ* Ġmain . getB ĊĠĠĠĠĠĠĠ Ġres [ 0 ] Ġ= Ġi 0 0 Ġ* Ġb 0 Ġ+ Ġi 1 0 Ġ* Ġb 1 Ġ+ Ġi 2 0 Ġ* Ġb 2 Ġ+ Ġi 3 0 Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 1 ] Ġ= Ġi 0 1 Ġ* Ġb 0 Ġ+ Ġi 1 1 Ġ* Ġb 1 Ġ+ Ġi 2 1 Ġ* Ġb 2 Ġ+ Ġi 3 1 Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 2 ] Ġ= Ġi 0 2 Ġ* Ġb 0 Ġ+ Ġi 1 2 Ġ* Ġb 1 Ġ+ Ġi 2 2 Ġ* Ġb 2 Ġ+ Ġi 3 2 Ġ* Ġb 3 ĊĠĠĠĠĠĠĠ Ġres [ 3 ] Ġ= Ġi 0 3 Ġ* Ġb 0 Ġ+ Ġi 1 3 Ġ* Ġb 1 Ġ+ Ġi 2 3 Ġ* Ġb 2 Ġ+ Ġi 3 3 Ġ* Ġb 3 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠVec 4 Ġrow Ġ= ĠVec 4 Ġcol Ġ* ĠMat 4 Ġ Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 4 , Ġa : ĠVec 4 , Ġb : ĠMat 4 ) Ġ= Ġdiv ( res , Ġa . x , Ġa . y , Ġa . z , Ġa . w , Ġb ) ĊĊĠĠĠ Ġ/** ĠVec 4 Ġrow Ġ= ĠVec 4 Ġcol Ġ* ĠMat 4 Ġ Ġ*/ ĊĠĠĠ Ġfun Ġdiv ( res : ĠVec 4 , Ġa 0 : ĠFloat , Ġa 1 : ĠFloat , Ġa 2 : ĠFloat , Ġa 3 : ĠFloat , Ġb : ĠMat 4 ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinvert Ġmain . getB ĊĠĠĠĠĠĠĠ Ġval Ġc 0 0 Ġ= Ġb [ 2 , Ġ 2 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 2 ] Ġ* Ġb [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 2 Ġ= Ġb [ 1 , Ġ 2 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 2 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 3 Ġ= Ġb [ 1 , Ġ 2 ] Ġ* Ġb [ 2 , Ġ 3 ] Ġ- Ġb [ 2 , Ġ 2 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 0 4 Ġ= Ġb [ 2 , Ġ 1 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 1 ] Ġ* Ġb [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 6 Ġ= Ġb [ 1 , Ġ 1 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 1 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 0 7 Ġ= Ġb [ 1 , Ġ 1 ] Ġ* Ġb [ 2 , Ġ 3 ] Ġ- Ġb [ 2 , Ġ 1 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 0 8 Ġ= Ġb [ 2 , Ġ 1 ] Ġ* Ġb [ 3 , Ġ 2 ] Ġ- Ġb [ 3 , Ġ 1 ] Ġ* Ġb [ 2 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 0 Ġ= Ġb [ 1 , Ġ 1 ] Ġ* Ġb [ 3 , Ġ 2 ] Ġ- Ġb [ 3 , Ġ 1 ] Ġ* Ġb [ 1 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 1 Ġ= Ġb [ 1 , Ġ 1 ] Ġ* Ġb [ 2 , Ġ 2 ] Ġ- Ġb [ 2 , Ġ 1 ] Ġ* Ġb [ 1 , Ġ 2 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 1 2 Ġ= Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 4 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 3 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 5 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 3 ] Ġ- Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 3 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 1 6 Ġ= Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 2 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 8 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 2 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 1 9 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 2 ] Ġ- Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 2 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġc 2 0 Ġ= Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 1 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 2 2 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 3 , Ġ 1 ] Ġ- Ġb [ 3 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġc 2 3 Ġ= Ġb [ 1 , Ġ 0 ] Ġ* Ġb [ 2 , Ġ 1 ] Ġ- Ġb [ 2 , Ġ 0 ] Ġ* Ġb [ 1 , Ġ 1 ] ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 0 0 Ġ= Ġ+ ( b [ 1 , Ġ 1 ] Ġ* Ġc 0 0 Ġ- Ġb [ 1 , Ġ 2 ] Ġ* Ġc 0 4 Ġ+ Ġb [ 1 , Ġ 3 ] Ġ* Ġc 0 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 1 Ġ= Ġ-( b [ 0 , Ġ 1 ] Ġ* Ġc 0 0 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 0 4 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 0 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 2 Ġ= Ġ+ ( b [ 0 , Ġ 1 ] Ġ* Ġc 0 2 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 0 6 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 0 3 Ġ= Ġ-( b [ 0 , Ġ 1 ] Ġ* Ġc 0 3 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 0 7 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 1 1 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 1 0 Ġ= Ġ-( b [ 1 , Ġ 0 ] Ġ* Ġc 0 0 Ġ- Ġb [ 1 , Ġ 2 ] Ġ* Ġc 1 2 Ġ+ Ġb [ 1 , Ġ 3 ] Ġ* Ġc 1 6 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 1 Ġ= Ġ+ ( b [ 0 , Ġ 0 ] Ġ* Ġc 0 0 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 1 2 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 1 6 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 2 Ġ= Ġ-( b [ 0 , Ġ 0 ] Ġ* Ġc 0 2 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 1 4 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 1 8 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 1 3 Ġ= Ġ+ ( b [ 0 , Ġ 0 ] Ġ* Ġc 0 3 Ġ- Ġb [ 0 , Ġ 2 ] Ġ* Ġc 1 5 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 1 9 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 2 0 Ġ= Ġ+ ( b [ 1 , Ġ 0 ] Ġ* Ġc 0 4 Ġ- Ġb [ 1 , Ġ 1 ] Ġ* Ġc 1 2 Ġ+ Ġb [ 1 , Ġ 3 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 1 Ġ= Ġ-( b [ 0 , Ġ 0 ] Ġ* Ġc 0 4 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 2 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 2 Ġ= Ġ+ ( b [ 0 , Ġ 0 ] Ġ* Ġc 0 6 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 4 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 2 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 2 3 Ġ= Ġ-( b [ 0 , Ġ 0 ] Ġ* Ġc 0 7 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 5 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġc 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġi 3 0 Ġ= Ġ-( b [ 1 , Ġ 0 ] Ġ* Ġc 0 8 Ġ- Ġb [ 1 , Ġ 1 ] Ġ* Ġc 1 6 Ġ+ Ġb [ 1 , Ġ 2 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 1 Ġ= Ġ+ ( b [ 0 , Ġ 0 ] Ġ* Ġc 0 8 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 6 Ġ+ Ġb [ 0 , Ġ 2 ] Ġ* Ġc 2 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 2 Ġ= Ġ-( b [ 0 , Ġ 0 ] Ġ* Ġc 1 0 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 8 Ġ+ Ġb [ 0 , Ġ 2 ] Ġ* Ġc 2 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi 3 3 Ġ= Ġ+ ( b [ 0 , Ġ 0 ] Ġ* Ġc 1 1 Ġ- Ġb [ 0 , Ġ 1 ] Ġ* Ġc 1 9 Ġ+ Ġb [ 0 , Ġ 2 ] Ġ* Ġc 2 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġone Over Det Ġ= Ġ 1 Ġ/ Ġ( b [ 0 , Ġ 0 ] Ġ* Ġi 0 0 Ġ+ Ġb [ 0 , Ġ 1 ] Ġ* Ġi 1 0 Ġ+ Ġb [ 0 , Ġ 2 ] Ġ* Ġi 2 0 Ġ+ Ġb [ 0 , Ġ 3 ] Ġ* Ġi 3 0 ) ĊĊĠĠĠĠĠĠĠ Ġi 0 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 0 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 1 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 1 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 2 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 2 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġi 3 0 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 1 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 2 Ġ*= Ġone Over Det ĊĠĠĠĠĠĠĠ Ġi 3 3 Ġ*= Ġone Over Det ĊĊĠĠĠĠĠĠĠ Ġ// Ġa Ġ* Ġmain . getB ĊĠĠĠĠĠĠĠ Ġres [ 0 ] Ġ= Ġa 0 Ġ* Ġi 0 0 Ġ+ Ġa 1 Ġ* Ġi 0 1 Ġ+ Ġa 2 Ġ* Ġi 0 2 Ġ+ Ġa 3 Ġ* Ġi 0 3 ĊĠĠĠĠĠĠĠ Ġres [ 1 ] Ġ= Ġa 0 Ġ* Ġi 1 0 Ġ+ Ġa 1 Ġ* Ġi 1 1 Ġ+ Ġa 2 Ġ* Ġi 1 2 Ġ+ Ġa 3 Ġ* Ġi 1 3 ĊĠĠĠĠĠĠĠ Ġres [ 2 ] Ġ= Ġa 0 Ġ* Ġi 2 0 Ġ+ Ġa 1 Ġ* Ġi 2 1 Ġ+ Ġa 2 Ġ* Ġi 2 2 Ġ+ Ġa 3 Ġ* Ġi 2 3 ĊĠĠĠĠĠĠĠ Ġres [ 3 ] Ġ= Ġa 0 Ġ* Ġi 3 0 Ġ+ Ġa 1 Ġ* Ġi 3 1 Ġ+ Ġa 2 Ġ* Ġi 3 2 Ġ+ Ġa 3 Ġ* Ġi 3 3 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ // Ġ-- ĠSpecific Ġbinary Ġarithmetic Ġoperators Ġ-- Ċ Ċ operator Ġfun ĠFloat . plus ( b : ĠMat 4 ) Ġ= Ġplus ( Mat 4 (), Ġb , Ġthis ) Ċ fun ĠFloat . plus ( b : ĠMat 4 , Ġres : ĠMat 4 Ġ= ĠMat 4 ()) Ġ= Ġplus ( res , Ġb , Ġthis ) Ċ infix Ġfun ĠFloat . plus _( b : ĠMat 4 ) Ġ= Ġplus ( b , Ġb , Ġthis ) Ċ Ċ operator Ġfun ĠFloat . minus ( b : ĠMat 4 ) Ġ= Ġminus ( Mat 4 (), Ġthis , Ġb ) Ċ fun ĠFloat . minus ( b : ĠMat 4 , Ġres : ĠMat 4 Ġ= ĠMat 4 ()) Ġ= Ġminus ( res , Ġthis , Ġb ) Ċ infix Ġfun ĠFloat . minus _( b : ĠMat 4 ) Ġ= Ġminus ( b , Ġthis , Ġb ) Ċ Ċ operator Ġfun ĠFloat . times ( b : ĠMat 4 ) Ġ= Ġtimes ( Mat 4 (), Ġb , Ġthis ) Ċ fun ĠFloat . times ( b : ĠMat 4 , Ġres : ĠMat 4 Ġ= ĠMat 4 ()) Ġ= Ġtimes ( res , Ġb , Ġthis ) Ċ infix Ġfun ĠFloat . times _( b : ĠMat 4 ) Ġ= Ġtimes ( b , Ġb , Ġthis ) Ċ Ċ operator Ġfun ĠVec 4 . times ( b : ĠMat 4 ) Ġ= Ġtimes ( Vec 4 (), Ġthis , Ġb ) Ċ fun ĠVec 4 . times ( b : ĠMat 4 , Ġres : ĠVec 4 Ġ= ĠVec 4 ()) Ġ= Ġtimes ( res , Ġthis , Ġb ) Ċ infix Ġfun ĠVec 4 . times _( b : ĠMat 4 ) Ġ= Ġtimes ( this , Ġthis , Ġb ) Ċ Ċ operator Ġfun ĠFloat . div ( b : ĠMat 4 ) Ġ= Ġdiv ( Mat 4 (), Ġthis , Ġb ) Ċ fun ĠFloat . div ( b : ĠMat 4 , Ġres : ĠMat 4 Ġ= ĠMat 4 ()) Ġ= Ġdiv ( res , Ġthis , Ġb ) Ċ infix Ġfun ĠFloat . div _( b : ĠMat 4 ) Ġ= Ġdiv ( b , Ġthis , Ġb )