public BooleanFunctionAnalytic(int inputNumberOfDigits, int outputNumberOfDigits, string [] boolFunctions) : base(inputNumberOfDigits, outputNumberOfDigits) { if (boolFunctions.Length != outputNumberOfDigits) { throw new Exception("Error! Number of boolean fuctions != number output digits"); } _boolFunction = new AnalyticFunctionBuilder(boolFunctions); }
// return f(i-th operand) public override BitArray GetResultByLineIndex(ulong index) { BitArray operand = new BitArray(_inputNumberOfDigits); BitArray bitIndex = new BitArray(BitConverter.GetBytes(index)); // maybe bitIndex size != inputNumberOfDigits, so we copy bits in // array with correct size for (int i = 0; i < operand.Length; i++) { operand[i] = bitIndex[i]; } var result = new BitArray(OutputNumberOfDigits, false); for (int i = 0; i < result.Length; i++) { result[i] = _boolFunction[i](operand); } return(result); }