This looks like a bug. Can you open an issue for it? I think it should be using isinstance(MatrixBase) instead of isinstance(Matrix).
Aaron Meurer On Tue, Apr 28, 2020 at 12:16 PM Edward Dahl <[email protected]> wrote: > > I'd like to form some tensor products of sparse matrices, but this does not > seem to work: > > from sympy import diag > from sympy.physics.quantum import TensorProduct > from sympy.matrices import SparseMatrix > > spm = SparseMatrix(diag(1,0)) > > tp = TensorProduct(spm,spm) > > > Here's the failure: > > Traceback (most recent call last): > File > "/Users/ddahl/anaconda3/envs/qiskit/lib/python3.8/site-packages/IPython/core/interactiveshell.py", > line 3331, in run_code > exec(code_obj, self.user_global_ns, self.user_ns) > File "<ipython-input-9-88417d1a4157>", line 1, in <module> > tp = TensorProduct(spm,spm) > File > "/Users/ddahl/anaconda3/envs/qiskit/lib/python3.8/site-packages/sympy/physics/quantum/tensorproduct.py", > line 123, in __new__ > c_part, new_args = cls.flatten(sympify(args)) > File > "/Users/ddahl/anaconda3/envs/qiskit/lib/python3.8/site-packages/sympy/physics/quantum/tensorproduct.py", > line 139, in flatten > cp, ncp = arg.args_cnc() > File > "/Users/ddahl/anaconda3/envs/qiskit/lib/python3.8/site-packages/sympy/matrices/matrices.py", > line 2339, in __getattr__ > raise AttributeError( > AttributeError: ImmutableSparseMatrix has no attribute args_cnc. > > > When I look in sympy/physics/quantum/tensorproduct.py it looks to me like > there is an attempted test to determine > whether the first argument to the TensorProduct(...) function is a sparse > SciPy matrix: > > def __new__(cls, *args): > if isinstance(args[0], (Matrix, numpy_ndarray, scipy_sparse_matrix)): > return matrix_tensor_product(*args) > c_part, new_args = cls.flatten(sympify(args)) > c_part = Mul(*c_part) > if len(new_args) == 0: > return c_part > elif len(new_args) == 1: > return c_part * new_args[0] > else: > tp = Expr.__new__(cls, *new_args) > return c_part * tp > > > But according to my debugger, the isinstance(...) call in the above code > block returns false. > Looks to me like that sparse matrix should be of type scipy_sparse_matrix. > > My environment is a freshly built Anaconda from two weeks ago and I'm running > on macOS. > > What am I missing? > > Thanks, > -Denny > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/478ff24e-d488-442d-927a-1865b2565850%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6J940a3%3DepnDqWxo6egKh-Z9kNw9kd66OTtjJ3g3r6opg%40mail.gmail.com.
