anchor.diff:              if length = 0 then
                   selector.Invoke(init.Invoke())
               else
  -                let partitioner = Partitioner.Create(0, length)
  -                let partitions = partitioner.GetDynamicPartitions().ToArray()
  +                let partitions = ParallelismHelpers.GetPartitions(0, length)
                   let cells = partitions |> Array.map (fun _ -> ref Unchecked.defaultof<'Acc>)
                   let tasks = partitions |> Array.mapi (fun index (s, e) -> 
                                                           Task.Factory.StartNew(fun () -> 
  
positive.code:     type ParallelismHelpers =
          static member TotalWorkers = int (2.0 ** float (int (Math.Log(float Environment.ProcessorCount, 2.0))))
  
          static member ReduceCombine<'T, 'Acc, 'R>( array : 'T[],
                                                      init : Func<'Acc>, 
                                                      reducer : Func<'T[], int, int, 'Acc, 'Acc>,
  
negative.code:             if array.Length = 0 then
                  selector.Invoke(init.Invoke())
              else
                  let partitions = ParallelismHelpers.GetPartitions(0, array.Length)
                  let cells = partitions |> Array.map (fun _ -> ref Unchecked.defaultof<'Acc>)
                  let tasks = partitions |> Array.mapi (fun index (s, e) -> 
                                                          Task.Factory.StartNew(fun () -> 
  