BTAS
BTAS copied to clipboard
Basic Tensor Algebra Subroutines
The `RangeNd::ordinal(...)` functions are redundant. They can be implemented using a single function. For cases where you want to call `RangeNd::ordinal()`, overload priority will favor the non-template function. The ordinal...
There are two separate implementations for `has_data` and `has_data_v` that do the same thing. This change combines those implementations.
This changes templated variables from static to inline. This avoids instantiating the variable in each translation unit.
`boxtensor_storage_order` and `boxrange_iteration_order` implementations are identical. Combine the definitions to eliminate redundant code.
For type traits that are inferring characteristics of type(s), the default needs some kind of implementation. Otherwise you can get compile errors due to incomplete types.
Integrate omp threaded parallelization for mixed contractions. Should be useful for tensors with a large number of modes.
A very interesting blocked version of the CP decomposition which under the hood uses ALS with fixed block sizes. Very similar to the paneled ALS method however, the difference comes...
There are two tags, 1.0.0-alpha and emergency. What is the state BTAS, seeing it being used by several other projects, shouldn't there be some initial release be tagged that can...
Probably just replaced it with `https://itensor.org`
As pointed out by @wavefunction91, the POSV lapack subroutine can be used in `cholesky_inverse` instead of the GESV subroutine, since the Gramian is a symmetric and positive semi-definite.