public override TANumber Inverse() { TPNumber numerator = (TPNumber)this.denominator.Copy(); TPNumber denominator = (TPNumber)this.numerator.Copy(); return(new TFractNumber(numerator, denominator)); }
public override TANumber Subtract(TANumber otherNumber) { TPNumber realPart = new TPNumber(this.realPart.ValueNumber - (otherNumber as TCompNumber).realPart.ValueNumber, this.realPart.RadixNumber, this.realPart.ErrorLengthNumber); TPNumber imagePart = new TPNumber(this.imagePart.ValueNumber - (otherNumber as TCompNumber).imagePart.ValueNumber, this.imagePart.RadixNumber, this.imagePart.ErrorLengthNumber); return(new TCompNumber(realPart, imagePart)); }
public override TANumber Square() { TPNumber numerator = new TPNumber(this.numerator.ValueNumber * this.numerator.ValueNumber, this.numerator.RadixNumber, this.numerator.ErrorLengthNumber); TPNumber denominator = new TPNumber(this.denominator.ValueNumber * this.denominator.ValueNumber, this.denominator.RadixNumber, this.denominator.ErrorLengthNumber); return(new TFractNumber(numerator, denominator)); }
public override TANumber Divide(TANumber otherNumber) { TPNumber numerator = new TPNumber(this.numerator.ValueNumber * (otherNumber as TFractNumber).denominator.ValueNumber, this.numerator.RadixNumber, this.numerator.ErrorLengthNumber); TPNumber denominator = new TPNumber(this.denominator.ValueNumber * (otherNumber as TFractNumber).numerator.ValueNumber, this.denominator.RadixNumber, this.denominator.ErrorLengthNumber); return(new TFractNumber(numerator, denominator)); }
public override TANumber Square() { errorLength = 15; TPNumber result = new TPNumber(value, Convert.ToString(radix), Convert.ToString(errorLength)); result.value = Convert.ToString(ConverterFrom10.Convert(Math.Round(Math.Pow(ConverterTo10.Convert(value, radix), 0.5), errorLength), radix, errorLength)); return(result); }
public TFractNumber(TPNumber numerator, TPNumber denominator) { this.numerator = (TPNumber)numerator.Copy(); this.denominator = (TPNumber)denominator.Copy(); int gcd = CalculateGCD(Convert.ToInt32(numerator.ValueNumber), Convert.ToInt32(denominator.ValueNumber)); this.numerator = (TPNumber)numerator.Divide(new TPNumber(gcd, 10, 0)); this.denominator = (TPNumber)denominator.Divide(new TPNumber(gcd, 10, 0)); }
public override TANumber Divide(TANumber otherNumber) { TPNumber realPart = new TPNumber(((this.realPart.ValueNumber * (otherNumber as TCompNumber).realPart.ValueNumber + this.imagePart.ValueNumber * (otherNumber as TCompNumber).imagePart.ValueNumber)) / ((otherNumber as TCompNumber).realPart.ValueNumber * (otherNumber as TCompNumber).realPart.ValueNumber + (otherNumber as TCompNumber).imagePart.ValueNumber * (otherNumber as TCompNumber).imagePart.ValueNumber), this.realPart.RadixNumber, this.realPart.ErrorLengthNumber); TPNumber imagePart = new TPNumber(((this.imagePart.ValueNumber * (otherNumber as TCompNumber).realPart.ValueNumber - this.realPart.ValueNumber * (otherNumber as TCompNumber).imagePart.ValueNumber)) / ((otherNumber as TCompNumber).realPart.ValueNumber * (otherNumber as TCompNumber).realPart.ValueNumber + (otherNumber as TCompNumber).imagePart.ValueNumber * (otherNumber as TCompNumber).imagePart.ValueNumber), this.imagePart.RadixNumber, this.imagePart.ErrorLengthNumber); return(new TCompNumber(realPart, imagePart)); }
public override TANumber Divide(TANumber otherNumber) { TPNumber result = new TPNumber(); result.errorLength = otherNumber.ErrorLengthNumber + errorLength; result.value = Convert.ToString(ConverterFrom10.Convert(ConverterTo10.Convert(ValueString, radix) / ConverterTo10.Convert(otherNumber.ValueString, otherNumber.RadixNumber), otherNumber.RadixNumber, result.errorLength)); result.radix = otherNumber.RadixNumber; return(result); }
public override TANumber Add(TANumber otherNumber) { TPNumber result = new TPNumber(); result.errorLength = otherNumber.ErrorLengthNumber + errorLength; double sum = ConverterTo10.Convert(otherNumber.ValueString, otherNumber.RadixNumber) + ConverterTo10.Convert(ValueString, radix); result.value = Convert.ToString(ConverterFrom10.Convert(sum, otherNumber.RadixNumber, result.errorLength)); result.radix = otherNumber.RadixNumber; result.errorLength = Math.Max(otherNumber.ErrorLengthNumber, errorLength); return(result); }
public TCompNumber(TPNumber realPart, TPNumber imagePart) { this.realPart = (TPNumber)realPart.Copy(); this.imagePart = (TPNumber)imagePart.Copy(); }