public static RealNumber operator *(RealNumber a, IQ.RationalNumber b)
            {
                if (a.IsRational)
                {
                    if (a.N == 0 || b.N == 0)
                    {
                        return(New(IQ.GetZeroDivideZeroRational()));
                    }
                    return(New(a.ToRational() * b));
                }

                return(New(value: a.Value.Value *b.ApproximateValue));
            }
            public static IR.RealNumber operator /(IQ.RationalNumber a, IR.RealNumber b)
            {
                if (b.IsRational)
                {
                    if (a.N == 0)
                    {
                        return(IR.New(IQ.GetZeroDivideZeroRational()));
                    }

                    return(IR.New(a / b.ToRational()));
                }

                if (a.N == 0)
                {
                    return(IR.New(value: 0));
                }

                return(IR.New(value: a.ApproximateValue / b.Value.Value));
            }