I'm not exactly sure what name is appropriate. The difference between this and eigvalsh is that the `b` argument here is required. In scipy.linalg.eigsh, when `b` isn't supplied, it does a regular eigenvalue problem instead of a generalized one. Is it typical for theano ops to take a variable number of arguments? I'm not sure exactly how that works with the dtype and gradient part.