public static bool IsPrimeNumber(this PrimeCalculator primeCalculator, uint number) { var memory = new SimpleMemory(1); memory.WriteUInt32(PrimeCalculator.IsPrimeNumber_InputUInt32Index, number); primeCalculator.IsPrimeNumber(memory); return(memory.ReadBoolean(PrimeCalculator.IsPrimeNumber_OutputBooleanIndex)); }
private static async Task <bool> RunIsPrimeNumber(uint number, Func <SimpleMemory, Task> methodRunner) { // One memory cell is enough for data exchange. var memory = new SimpleMemory(1); memory.WriteUInt32(PrimeCalculator.IsPrimeNumber_InputUInt32Index, number); await methodRunner(memory); return(memory.ReadBoolean(PrimeCalculator.IsPrimeNumber_OutputBooleanIndex)); }
public static bool[] ArePrimeNumbers(this PrimeCalculator primeCalculator, uint[] numbers) { var memory = new SimpleMemory(numbers.Length + 1); memory.WriteUInt32(PrimeCalculator.ArePrimeNumbers_InputUInt32CountIndex, (uint)numbers.Length); for (int i = 0; i < numbers.Length; i++) { memory.WriteUInt32(PrimeCalculator.ArePrimeNumbers_InputUInt32sStartIndex + i, numbers[i]); } primeCalculator.ArePrimeNumbers(memory); var output = new bool[numbers.Length]; for (int i = 0; i < numbers.Length; i++) { output[i] = memory.ReadBoolean(PrimeCalculator.ArePrimeNumbers_OutputUInt32sStartIndex + i); } return(output); }
private static bool[] RunArePrimeNumbersMethod(uint[] numbers, Action <SimpleMemory> methodRunner) { // We need to allocate more memory cells, enough for all the inputs and outputs. var memory = new SimpleMemory(numbers.Length + 1); memory.WriteUInt32(PrimeCalculator.ArePrimeNumbers_InputUInt32CountIndex, (uint)numbers.Length); for (int i = 0; i < numbers.Length; i++) { memory.WriteUInt32(PrimeCalculator.ArePrimeNumbers_InputUInt32sStartIndex + i, numbers[i]); } methodRunner(memory); var output = new bool[numbers.Length]; for (int i = 0; i < numbers.Length; i++) { output[i] = memory.ReadBoolean(PrimeCalculator.ArePrimeNumbers_OutputBooleansStartIndex + i); } return(output); }