Releases: Cytnx-dev/Cytnx
v0.9.7
v0.9.6
v0.9.5
v0.9.4
v0.9.3
v0.9.2
This update includes following major changes:
1.[Important] [Change] Remove all deprecated APIs and old SparseUniTensor data structure
2. [Fix] Bugs when batch_matmul when no MKL
3. [Update] Update examples to match new APIs
4. [New] add labels options when creating UniTensor from Tensor.
5. [New] change MKL to mkl_rt instead of fixed interface ilp64/lp64
v0.9.1
This update includes
- [New] Add additional argument share_mem for Tensor.numpy() python API.
- [Fix] UniTensor.at() python API not properly wrapped.
- [Fix] Bug in testing for BlockUniTensor.
- [Fix] Bug in UniTensor print info (duplicate name, is_diag=true BlockUniTensor dimension display)
- [Change] Svd now using gesdd instead of gesvd.
- [New] Add linalg.Gesvd function, along with Gesvd_truncate.
- [Fix] Strict casting rule cause compiling fail when compile with icpc
- [New] Add additional argument for Network.PutUniTensor to match the label.
- [Fix] Network TOUT string lbl bug
- [Fix] #156 storage python wrapper cause not return.
- [Add] linalg.Gemm/Gemm_()
- [Add] UniTensor.normalize()/normalize_()
v0.7.6
This update includes several optimization.
- [Enhance] Adding alias BD_IN=BD_KET, BD_BRA=BD_OUT, BD_NONE=BD_REG.
- [New] Add Contracts for multiple UniTensors contraction.
- [Fix] cytnx.cpp_lib for some version of cmake and conda install, libpath is lib64 instead of lib.
- [Optimize] SparseUniTensor contiguous (moving elements)
- [Optimize] cytnx_error_* will now evaluate the clause first, and then instance the following strings.
- [Enhance] Add Global bool variable User_debug, which when set to false some checking will be skipped, which increasing the execution speed
- [Enhance] Add Network.getOptimalOrder()
v0.7.4
v0.7.4
- [Enhance] Lanczos_ER Lanczos_Gnd not convergence with maxiter will now gives warning instead of error.
- [Enhance] Arithmetic of UniTensor(&)constant now preserve the label of input UniTensor.
- [New][experiment] Add MPS class with two variant: iMPS, RegularMPS.
- [New][experiment] Add MPO class.
- [Enhance] Add UniTensor.relabel
- [Enhance] Add Network.FromString
- [New][experiment] DMRG API
- [New][experiment] Add MPS Save/Load, and can now have different phys_dim for each site.
- [Fix] SparseUniTensor.permute does not properly update contiguous status when rowrank argument is given.
- [Enhance] get_block()/put_block() by qnums now have a new argument "force" to get blocks from non-braket_form UniTensor.
- [New] Add SparseUniTensor contract
- [New] Add SparseUniTensor linalg::Svd support.
- [Enhance] SparseUniTensor print info, add "contiguous" status.
- [Enhance] Add print_info for Symmetry descriptor
- [Enhance] Add UniTensor.syms()
- [Fix] Tensor.set when one of accessor is Singl will cause error.
- [Enhance] SparseUniTensor diag x diag, diag x dense are finished.
- [Fix] SparseUniTensor when diag permutation issue.
- [Fix] Sort does not return out Tensor.
- [Fix] Tproxy.item() does not get correct element.
- [Fix] Bug for Svd on SparseUniTensor vT is being set by U
- [New][experiment] Svd_truncate for SparseUniTensor
- [New] add Bond.redirect(), Bond.retype()
- [Fix] SparseUniTensor.permute() does not properly update braket_form
- [Fix] SparseUniTensor.set_rowrank should track _inner_rowrank not _rowrank bug.
- [Enhance] Add UniTensor.change_label() <- [Removed!!] use relabel(s)()
- [Fix] Svd_truncate when one of the block has only dim=1 should fill-in the dangling dimension.
- [New][experiment] iTEBD with U1 symmetry example for Heisenberg chain
- [Change] v0.7.4 [26.] replace change_label() with relabel. Now only have set_label(s) and relabel(s) with *_label() have by_label option.
- [Enhance] Add Accessor option Qns, qns()
- [Change] Trace now by default trace axis =0 and axis=1 if no argument specify.
- [Fix] Compare of two Bonds will now also check qnums.
- [New][experiment] SparseUniTensor.Trace() now support rank-2 symmetric UniTensor -> scalar
- [New][experiment] Contract of SparseUniTensor with two SUT with same labels -> scalar is now avaliable
- [Fix] DMRG initialize does not properly normalize the init state.
- [New] Scalar.conj(), Scalar.real(), Scalar.imag(), Scalar.maxval(dtype), Scalar.minval(dtype)
- [Enhance] Lanczos internal now written with single general function.
- [Enhance] Storage.append() now accept Scalar
- [Enhance][Fix] Fix inplace Arithmetic between Tensor +=(-=,*=,/=) Tensor with both non-contiguous leads to inconsistent memory alignment.
- [Enhance] from 39. add iAdd(), iDiv(), iMul(), iSub(), this can be called by user but is not recommended.
- [Enhance] Modify DMRG kernel for generic UniTensor as state.
- [New][experiment] Add Lanczos_Gnd_Ut() which accept Tin as UniTensor
- [New][experiment] LinOp now add an matvec option for UniTensor => UniTensor, which can be used together with Lanczos_Gnd_Ut
- [Change] Remove LinOp with custom function support, inheritance is forced.
- [Enhance] add Tensor.at() without template.
- [Change][Enhance] Remove UniTensor.get_elem/set_elem, unify them with at().
- [Fix] Trace for SparseUniTensor with is_diag=True.
- [New][experiment] MPS.Norm()
- [Fix] Lanczos_Gnd_Ut when input dimension is only 2 now check if the beta=0.
- [New] Add DMRG U1 example.
- [Change] Behavior change for Svd_truncate. SparseUniTensor the keepdim can exceed the current dimension of UniTensor, in such case it is equivalent to Svd.
- [New] Add UniTensor.Norm()
- [New][experiment] add MPS.Init_Msector(), which initialize the state with specify total magnetization.
- [Enhance] Add additional feature Svd_truncate with truncation_err (err) and return_err option for Ten
- [Enhance] Add additional feature Svd_truncate with truncation_err (err) and return_err option for DUTen
- [Enhance] Add python dmrg example for using tn_algo
v0.7.3
v0.7.3
1. [Fix] bug for Get slice does not reduce when dim=1.
2. [Enhance] checking the memory alloc failing for EL.
3. [Change] remove Tensor init assignment op from initializer_list, for conflict with UniTensor init.
4. [Enhance] print information for Symmetric UniTensor.
5. [Enhance] linalg::ExpM/ExpH support for symmetric UniTensor.
6. [Enhance] add UniTensor.get_blocks_qnums() for corresponding qnums for current blocks.
7. [Enhance][Safety] add UniTensor.get_blocks_(silent=false) with "silent" option by default pop-up a warning when UniTensor is non-contiguous.
8. [Enhance] add operator* and operator*= for combineBond.
9. [Enhance] add support for Symmetric UniTensor with is_diag=true.
10. [Fix] remove the dtype & device option for arange(Nelem). Use .astype() .to() instead.
11. [Fix] reshape() without postfix const causing error when reshape with const Tensor.
12. [Enhance][Experiment] add Lstsq for least square calculation. [PR]
13. [Fix][C++] minor issue related to laterial argument passing by variables cannot properly resolved on C++
14. [Enhance] Diag now support rank-1 Tensor as input for constructing a diagonal tensor with input as diagonal elements.
15. [Enhance] Add c++ example for DMRG (Ke)
16. [Fix] Bug fixed in DMRG code and updated to the latest features.
17. [Fix] Bug in UniTensor do svd with rowrank=1 and the first rank has dimension=1.
18. [Enhance] add Scalar: abs, opeartor<, operator>, operator<=, operator>=
19. [Fix] #31 cd, cf internal swiching error for Lanczos_ER.
20. [Enhance] add specialization for Tensor iarithmetic with Sproxy.
21. [Fix] #31 cftcf Mul internal memcpy with wrong unit size.
22. [Fix] #31 type accessing now partially via Scalar, so no conflict will occur when ovld matvec() gives mismatched input and output type.
23. [Fix] Tensor / Storage set element with Sproxy or Scalar is now available.
24. [Fix] Lanczos_Gnd on f type accessing now partially via Scalar, so no conflict will occur when ovld matvec() gives mismatched input and output type.