operator-(const PScalar<T1>& l, const PMatrix<T2,N,C>& r)
operator-(const PMatrix<T1,N,C>& l)
operator-(const PScalar<T1>& l, const PMatrix<T2,N,C>& r){  typename BinaryReturn<PScalar<T1>, PMatrix<T2,N,C>, OpSubtract>::Type_t  d;  for(int i=0; i < N; ++i)    for(int j=0; j < N; ++j)      d.elem(i,j) = (i == j) ? l.elem() - r.elem(i,i) : r.elem(i,j);  return d;}