updated constructor, added negate() and toString()

the constructor handled negative values unpredictably assigning the
minus sign at times to numerator or at time to denominator so I updated
it to assign negative values to nominator only. This made the
implementation of negate() and toString() easier and more concise