package Ġjump aku . unit sof measure Ċ Ċ import Ġkotlin . math . pow Ċ Ċ class ĠUnit Ġprivate Ġconstructor ( val Ġcoefficient : ĠDouble , Ġval Ġsymbol : ĠSymbol , Ġval Ġdimension : ĠDimension ) Ġ{ ĊĊĠĠĠ Ġconstructor ( symbol : ĠSymbol ): Ġthis ( 1 . 0 , Ġsymbol , ĠDimension ()) ĊĊĠĠĠ Ġconstructor ( coefficient : ĠDouble Ġ= Ġ 1 . 0 ): Ġthis ( coefficient , ĠSymbol . empty , ĠDimension . ONE ) ĊĊĠĠĠ Ġfun Ġpow ( i : ĠInt ): ĠUnit Ġ= ĠUnit ( coefficient . pow ( i ), Ġsymbol . pow ( i ), Ġdimension . pow ( i )) ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( u : ĠUnit ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ( coefficient Ġ* Ġu . coefficient , Ġsymbol Ġ* Ġu . symbol , Ġdimension Ġ* Ġu . dimension ) ĊĊĠĠĠ Ġoperator Ġfun Ġdiv ( u : ĠUnit ): ĠUnit Ġ= Ġtimes ( u . pow (- 1 )) ĊĊĠĠĠ Ġinternal Ġclass ĠConvert ( val Ġcoefficient : ĠDouble , Ġval Ġsource : ĠUnit ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġinto ( target Symbol : ĠSymbol ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ( coefficient Ġ* Ġsource . coefficient , Ġtarget Symbol , Ġsource . dimension ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrename ( symbol : ĠSymbol ): ĠUnit Ġ= Ġsymbol . bind ( 1 . 0 , Ġthis ) Ċ } Ċ Ċ fun ĠSymbol . bind ( coefficient : ĠDouble , Ġsource : ĠUnit ): ĠUnit Ġ= ĠUnit . Convert ( coefficient , Ġsource ). into ( this ) Ċ