\n",
"\n",
" // implementations for class SignMagnitude\n",
"\n",
" def +(that: SignMagnitude): SignMagnitude = {\n",
" // TODO hide me\n",
" val result = Wire(new SignMagnitude())\n",
" val signsTheSame = this.sign === that.sign\n",
" when (signsTheSame) {\n",
" result.sign := this.sign\n",
" result.magnitude := this.magnitude + that.magnitude\n",
" } .otherwise {\n",
" when (this.magnitude > that.magnitude) {\n",
" result.sign := this.sign\n",
" result.magnitude := this.magnitude - that.magnitude\n",
" } .otherwise {\n",
" result.sign := that.sign\n",
" result.magnitude := that.magnitude - this.magnitude\n",
" } \n",
" } \n",
" result\n",
" }\n",
" def *(that: SignMagnitude): SignMagnitude = {\n",
" // TODO hide me\n",
" val result = Wire(new SignMagnitude())\n",
" result.sign := this.sign ^ that.sign\n",
" result.magnitude := this.magnitude * that.magnitude\n",
" result\n",
" }\n",
"\n",
"\n",
"