package Ġx . scratch Ċ Ċ data Ġclass ĠComplex ( val Ġa : ĠInt , Ġval Ġb : ĠInt ) Ġ: ĠRing < Complex > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcompanion Ġ= ĠComplex Companion ĊĠĠĠ Ġoverride Ġfun Ġunary Minus (): ĠComplex Ġ= ĠComplex (- a , Ġ- b ) ĊĠĠĠ Ġoverride Ġfun Ġplus ( add end : ĠComplex ): ĠComplex Ġ= ĊĠĠĠĠĠĠĠ ĠComplex ( a Ġ+ Ġadd end . a , Ġb Ġ+ Ġadd end . b ) ĊĊĠĠĠ Ġoverride Ġfun Ġtimes ( multip lic and : ĠComplex ): ĠComplex Ġ= ĠComplex ( ĊĠĠĠĠĠĠĠ Ġa Ġ* Ġmultip lic and . a Ġ- Ġb Ġ* Ġmultip lic and . b , ĊĠĠĠĠĠĠĠ Ġa Ġ* Ġmultip lic and . b Ġ+ Ġb Ġ* Ġmultip lic and . a ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġconj ug ate : ĠComplex Ġget () Ġ= ĠComplex ( a , Ġ- b ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ== Ġb Ġ-> Ġ"$ a " ĊĠĠĠĠĠĠĠĠ 0 Ġ== Ġa Ġ-> Ġwhen Ġ( b ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ"- i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"${ b } i " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ== Ġb Ġ-> Ġ"$ a + i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ== Ġb Ġ-> Ġ"$ a - i " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ> Ġb Ġ-> Ġ"$ a -${ b } i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"$ a + ${ b } i " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠComplex Companion Ġ: ĠRing Companion < Complex > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval ĠZERO Ġ= ĠComplex ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġoverride Ġval ĠONE Ġ= ĠComplex ( 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠI Ġ= ĠComplex ( 0 , Ġ 1 ) ĊĠĠĠ Ġ} Ċ } Ċ