public static IntDividerPipelineResult <T> SignFeedOut <T>(IntDividerPipelineGeneratedState <T> i) where T : struct { return(new IntDividerPipelineResult <T>() { Payload = i.Payload, result = i.isResultNegative ? (0 - i.result) : i.result, remainder = i.isRemainderNegative ? (0 - i.numerator) : i.numerator }); }
public static IntDividerPipelineGeneratedState <T> DividerStage <T>(int idx, IntDividerPipelineGeneratedState <T> i) where T : struct { var denominator = new RTLBitArray(i.denominator, new RTLBitArray(0).Unsigned().Resized(31 - idx)); var flag = i.numerator >= denominator; var result = new RTLBitArray(i.result[30, 0], flag); var nextNumerator = flag ? (i.numerator - denominator)[31, 0] : i.numerator; return(new IntDividerPipelineGeneratedState <T>() { Payload = i.Payload, isRemainderNegative = i.isRemainderNegative, isResultNegative = i.isResultNegative, result = result, denominator = i.denominator, numerator = nextNumerator }); }