package Ġio . kin ference . tf js . operators . math Ċ Ċ import Ġio . kin ference . protobuf . message . Tensor Proto Ċ import Ġio . kin ference . tf js . attributes . Attribute Ċ import Ġio . kin ference . tf js . data . tensors . TF J ST ensor Ċ import Ġio . kin ference . tf js . data . tensors . as Tensor Ċ import Ġio . kin ference . tf js . external s . extensions .* Ċ import Ġio . kin ference . tf js . graph . Context Ċ import Ġio . kin ference . tf js . operators .* Ċ Ċ class ĠMat Mul Integer ( attributes : ĠMap < String , ĠAttribute < Any >>, Ġinputs : ĠList < String >, Ġoutputs : ĠList < String >) Ġ: ĠOperator < TF J ST ensor , ĠTF J ST ensor >( INFO , Ġattributes , Ġinputs , Ġoutputs ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIN _ TYPE _ CONSTRAINT S Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTensor Proto . DataType . UINT 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTensor Proto . DataType . INT 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUT _ TYPE _ CONSTRAINT S Ġ= Ġset Of ( Tensor Proto . DataType . INT 3 2 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINPUT S _ INFO Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 0 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" A ", Ġoptional Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 1 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" B ", Ġoptional Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 2 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" a _ zero _ point ", Ġoptional Ġ= Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 3 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" b _ zero _ point ", Ġoptional Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUTPUT S _ INFO Ġ= ĠlistOf ( IO Info ( 0 , ĠOUT _ TYPE _ CONSTRAINT S , Ġ" Y ", Ġoptional Ġ= Ġfalse )) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO Ġ= ĠOperator Info (" Mat Mul Integer ", Ġempty Map (), ĠINPUT S _ INFO , ĠOUTPUT S _ INFO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( context : ĠContext , Ġinputs : ĠList < TF J ST ensor ?> ): ĠList < TF J ST ensor ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutputs Ġ= Ġtidy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġinputs [ 0 ] !!. data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġinputs [ 1 ] !!. data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft ZP Ġ= Ġinputs . get OrNull ( 2 )?. data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright ZP Ġ= Ġinputs . get OrNull ( 3 )?. data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft With Zp Ġ= Ġif Ġ( left ZP Ġ!= Ġnull ) Ġleft Ġ- Ġleft ZP Ġelse Ġleft ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright With Zp Ġ= Ġif Ġ( right ZP Ġ!= Ġnull ) Ġright Ġ- Ġright ZP Ġelse Ġright ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( left Expanded , Ġright Expanded ) Ġ= ĠMat Mul . expand T ensors ( left With Zp , Ġright With Zp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ tidy ĠarrayOf ( left Expanded . mat Mul ( right Expanded )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( outputs [ 0 ]. as Tensor (" Y ")) ĊĠĠĠ Ġ} Ċ } ĊĊ