Sage: pickling ==================================== >>> from sage.all import * # doctest: +SKIP >>> from qitensor import qubit, set_qitensor_printoptions # doctest: +SKIP >>> # use Sage's nice array formatting >>> set_qitensor_printoptions(str_use_sage=True) # doctest: +SKIP >>> ha = qubit('a', dtype=SR) # doctest: +SKIP >>> hb = qubit('b', dtype=SR) # doctest: +SKIP >>> (x, y) = var('x y') # doctest: +SKIP >>> s = ha.array([1, x]) # doctest: +SKIP >>> t = hb.array([1, y]) # doctest: +SKIP >>> Q = s*t # doctest: +SKIP >>> Q # doctest: +SKIP HilbertArray(|a,b>, [ 1] [ y] [---] [ x] [x*y]) >>> R = loads(dumps(Q)) # doctest: +SKIP >>> R # doctest: +SKIP HilbertArray(|a,b>, [ 1] [ y] [---] [ x] [x*y]) >>> Q == R # doctest: +SKIP True >>> Q is R # doctest: +SKIP False >>> Q.space is R.space # doctest: +SKIP True Test of long-term storage: >>> T = loads('x\x9c}R[o\xd30\x14\xb6\x9d\xb6\xdb<6`\xdc\xc7}O\x9d*U\xb4\xa2\x12/\x08u\x15L,\xd0\x89d\xe9D\xa5*r\\\xa7\t\xca\xcdN2%\x88\x07xX\xab\xfdjp\x9a\x8eV\x15"\xb2\x12\xe7\x9c\xef\x96\xe3\xfcD\x94\xbb\t\x0b\xe2P4\x89\x10$\xc7f\x1a\x086N)3/Z\x98\xc3e;\x8e\x08ekmDM\xd3J]/q\x03\xd3\xc4\xb6\x08\xbfK,K0WF\xbcR_\x91NB\x7f\x8dZ\xad\x1b\x90\xc8\xa5\x02\x15Nym\x89\xb5\tMB\x91\xe3c\x11\xa6\xd1i\xd4\xcb\xa9\xe7R\xf3\xba\xca7Tt\xa9\xf1\xcd\x95\\d\xc2,\x123\xdbe\xdex\xcdd\x8b\x16\xddf\x9c\xfbV(U\x9a\xc2\r&8q\x98\xa9/*ZQ\xe0\xf8P\xe3\xdbR\xf5\xc6U?\xd1\xf8\x8eSd\xb3\xe4*\xb3\xed:\x9bN\xd9\xb9\xc9$\xe8\x96\xa3\x8c\xe4\xe3\xf6T\xe3{4H\xfd(o\xd2P\xb0\xa6\x9f\xca1,f(\x18\r\x838\x11)\x95\xb3\xb8S\xa2p0.\xbb\xfc\xae\n.\xa5\xfaL\xe3\xf7\xea*T\x91\x8a\xa6\x0b\xc88\xc9#\x86\xf9}\x03\x9d\xbe)\xcc%\xe4A]U\x0c\xf8\xa3\xdf\xef\x9f\xfc\x96\xd7\xfc\xa6\xbeK\xac\xab\x11\x7fX_\xfb<\x96E\x82\xc5\xb1\x1b\x06\xf8\xfdr\xcb\x1f\x1d\xfe\xe2\xfb*\x18\x19\xceqW\xeb)\xb530\xe9\x9e|\xa3\xed\x0f\xc1P\xef\xe4\xe4\xbc\x13\xd0\xbc\x13Y\x81\xe6\r\xdb\x83\xbc\xe7\xb7\x1c\xd2\x1e\xd8\xb2\xfejx>\xf6\xe8$\xca\xba\x03\xe3\xe8\xf3\xd7\x81N\xbf|L\x81\x0edX&\\\n\xa8G\xe2\x18\x14\x19L\x96\x01X\x05P\x81h\x0f\x1e(3\xcb)L\x1fKS\xfe\xc4\x8091\x1as\xebj\x19uA\xccA@|\xb6\xe4W\x00D\x18\xec\xa3\x05\xfbi\xc1~f\xc0\xec\xdf\xec\xec\xff\xec\xe7\x05\xfb\x85<\xc8L\xfa3#\x9b+\xec\xcaC\xbaN]j-T\xe4\xac\x120\x9f\xcb\xa7\xae\xfe\xfa\xed\xea7\x86\xcc\xb6e\xd4\xf0\x82\t\xe2yf\xf9\xfe\xd7uG\xa9 \x8c\x0e\x14\xa5\x85\x8e6\xf0V\xb1\xdf\xaea\xd0\x00:l \x1dR8\xb3Xb\xc9\x7f\xe5e\xf3\x0fq\xd4\x17m') # doctest: +skip >>> T # doctest: +SKIP HilbertArray(|a,b>, [ 1] [ y] [---] [ x] [x*y]) >>> Q == T # doctest: +SKIP True >>> Q is T # doctest: +SKIP False >>> Q.space is T.space # doctest: +SKIP True