Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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();
 }