Beispiel #1
0
        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);
                    }
                }
            }
        }
Beispiel #2
0
 protected override async Task BeforeEach()
 {
     _contract = await BitShifting.New(RpcClient);
 }