public void Process(IPathBlock block) { var temp = new double[Vector <double> .Count]; for (var s = 0; s < block.NumberOfSteps; s++) { for (var f = 0; f < block.Factors; f++) { var dim = f * block.NumberOfSteps + s; for (var p = 0; p < block.NumberOfPaths; p += Vector <double> .Count) { var path = p + block.GlobalPathIndex + 1; var x = GetValueViaGreyCode(path, dim); temp[0] = ConvertRandToDouble(x, dim); for (var i = 1; i < Vector <double> .Count; i++) { path = i + p + block.GlobalPathIndex + 1; x ^= _v[dim + _seed][BitShifting.FindFirstSet(~(uint)path) - 1]; temp[i] = ConvertRandToDouble(x, dim); } var pathSpan = block.GetStepsForFactor(p, f); pathSpan[s] = new Vector <double>(temp); } } } }
protected override async Task BeforeEach() { _contract = await BitShifting.New(RpcClient); }