anchor.diff:      let leastSquares A (b: vector) =
   
           // Q.transpose * b for sparse Q
  -        let MultiplyVectorWithTransposeGivensMatrix (q:SparseMatrix<float>, x:vector) =
  -            let outVec = vector x
  +        let MultiplyVectorWithTransposeGivensMatrix (q:SparseMatrix<float>, b:vector) =
  +            let outVec = vector b
               let m = q.NumRows
               for i = 0 to m-1 do
                   for j = q.SparseRowOffsets.[i] to (q.SparseRowOffsets.[i+1] - 1) do
  
positive.code:                 else
                     value * -1.0
  
          let encode(c:float, s:float) = 
              if(abs(s) < c) then
                  s
              else
                  Copysign(1.0/c, s)
  
          // Apply the givens rotation on 2 Sparsevectors
          let applyGivens( x : ResizeArray<(int*float)>, y : ResizeArray<(int*float)>) = 
              let a = snd x.Front
              let b = snd y.Front
      
  
negative.code:                     c <- 1.0 / sqrt(1.0 + tau * tau)
                      s <- c * tau
  
              // Rotate the start of each list
              x.Front <- (fst x.Front, c * a - s * b)
              y.PopFront |> ignore
      
  