예제 #1
0
파일: DiyFp.cs 프로젝트: tppApe/UfcppSample
        public static DiyFp Normalize(DiyFp a)
        {
            DiyFp result = a;

            result.Normalize();
            return(result);
        }
예제 #2
0
        public void NormalizedBoundaries(out DiyFp out_m_minus, out DiyFp out_m_plus)
        {
            Debug.Assert(Value > 0.0);
            DiyFp v      = AsDiyFp();
            DiyFp m_plus = DiyFp.Normalize(new DiyFp((v.F << 1) + 1, v.E - 1));
            DiyFp m_minus;

            if (LowerBoundaryIsCloser())
            {
                m_minus = new DiyFp((v.F << 2) - 1, v.E - 2);
            }
            else
            {
                m_minus = new DiyFp((v.F << 1) - 1, v.E - 1);
            }

            m_minus.F = m_minus.F << (m_minus.E - m_plus.E);
            m_minus.E = m_plus.E;

            out_m_plus  = m_plus;
            out_m_minus = m_minus;
        }