anchor.diff:  
           let size = 123
   
  -        let kernel = ctx.CompileKernel (scan <@ (+) @> <@ 0.0 @>)
  +        let kernel = ctx.CompileKernel (scan <@ (*) @> <@ 1.0 @>)
           let f a = 1.0f
           let ba = ctx.CreateBuffer(Array.init size f, BufferUsage.Dynamic)
           let bb = ctx.CreateBuffer(Array.zeroCreate<float32> size, BufferUsage.Dynamic)
  
positive.code:             s <- s / 2
              d <- d / 2
              while s >= 1 do
                  if lid % d = 0 && lid + s < 256 then
                      temp.[lid + s] <- (%add) temp.[lid + s] temp.[lid]
  
                  barrier()
  
negative.code: 
              let mutable d = 2
              let mutable s = 1
              while s < elements do
                  if lid % d = 0 && lid >= s then
                      temp.[lid] <- (%add) temp.[lid] temp.[lid - s]
  
  