xerus issueshttps://git.hemio.de/xerus/xerus/-/issues2017-03-28T21:55:56+02:00https://git.hemio.de/xerus/xerus/-/issues/185improve creation of random orthogonal matrices / tensors2017-03-28T21:55:56+02:00Fuchsi*improve creation of random orthogonal matrices / tensorsusing a QR on a i.i.d. gaussian random matrix will only create orthogonal matrices distributed according to the haar measure if the diagonal entries of the upper-triangular matrix are normalized (eg. all positive). for the lapack call dg...using a QR on a i.i.d. gaussian random matrix will only create orthogonal matrices distributed according to the haar measure if the diagonal entries of the upper-triangular matrix are normalized (eg. all positive). for the lapack call dgeqrf that we use so far this is not the case.Version 3.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/184pyton wrapper broken by changes in measurement sets2017-03-28T21:55:56+02:00Fuchsi*pyton wrapper broken by changes in measurement setsVersion 3.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/178timestamp of log msg is from before the execution of whatever is printed2017-03-28T21:55:56+02:00Fuchsi*timestamp of log msg is from before the execution of whatever is printedVersion 3.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/177error.log is always created2017-03-28T21:55:56+02:00Fuchsi*error.log is always createdmaybe we should remove the feature of streaming the log to a file altogether. same thing can be achieved by calling the application with "./foo 2>error.log"maybe we should remove the feature of streaming the log to a file altogether. same thing can be achieved by calling the application with "./foo 2>error.log"Version 3.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/176Exception in test cases with -D_GLIBCXX_DEBUG active2017-03-28T21:55:56+02:00Sebastian WolfException in test cases with -D_GLIBCXX_DEBUG active```
| resize_dimension starting: /usr/include/c++/5.3.1/bits/random.h:1683: std::uniform_int_distribution<_IntType>::param_type::param_type(_IntType, _IntType) [with _IntType = long unsigned int]: Assertion '_M_a <= _M_b' failed.
``````
| resize_dimension starting: /usr/include/c++/5.3.1/bits/random.h:1683: std::uniform_int_distribution<_IntType>::param_type::param_type(_IntType, _IntType) [with _IntType = long unsigned int]: Assertion '_M_a <= _M_b' failed.
```Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/169replace allocator may use one past the end index2017-03-28T21:55:56+02:00Fuchsi*replace allocator may use one past the end indexin line 78 of allocator.cpp
````
if (xm::astore.buckets[numBucket].empty()) {
````in line 78 of allocator.cpp
````
if (xm::astore.buckets[numBucket].empty()) {
````Version 2.3Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/168LOG_ABSOLUTE_TIME not compatible to GCC 4.92017-03-28T21:55:56+02:00Fuchsi*LOG_ABSOLUTE_TIME not compatible to GCC 4.9std::put_time was only added in GCC 5.0 -> we need to find another solution (likely some ugly c functions - dig in git to check what we used before put_time?)std::put_time was only added in GCC 5.0 -> we need to find another solution (likely some ugly c functions - dig in git to check what we used before put_time?)Version 2.3Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/167Pipe operator of xerus::misc::generic_error destroys type information.2017-03-28T21:55:56+02:00Sebastian WolfPipe operator of xerus::misc::generic_error destroys type information.The pipe operator returns an object of type generic_error&, apparently this disallows a catch statement to determine any specialized objects.The pipe operator returns an object of type generic_error&, apparently this disallows a catch statement to determine any specialized objects.Version 2.3https://git.hemio.de/xerus/xerus/-/issues/201calling ALS(A, x, x) results in strange behaviour2019-03-24T04:13:23+01:00Fuchsi*calling ALS(A, x, x) results in strange behaviourshould either print an error or better yet: create a local copy of x as rhs.should either print an error or better yet: create a local copy of x as rhs.Version 4.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/197premature deallocation of temporary tensors in python2017-05-23T00:53:41+02:00Fuchsi*premature deallocation of temporary tensors in pythonindexing a temporary tensor leads to invalid memory access. the lifetime of the tensor likely has to be bound to the lifetime of the resulting indexed tensor somehow...
eg.
~~~ python
xe.frob_norm(xe.Tensor.identity({10,10})(i&0))
~~~indexing a temporary tensor leads to invalid memory access. the lifetime of the tensor likely has to be bound to the lifetime of the resulting indexed tensor somehow...
eg.
~~~ python
xe.frob_norm(xe.Tensor.identity({10,10})(i&0))
~~~Version 3.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/198libxerus_misc.a is falsy build with -lcholmod etc.2017-05-22T16:15:43+02:00Fuchsi*libxerus_misc.a is falsy build with -lcholmod etc.Version 3.0https://git.hemio.de/xerus/xerus/-/issues/165missing move semantincs for stringstream in GCC 4.8 and 4.92017-05-29T23:27:28+02:00Fuchsi*missing move semantincs for stringstream in GCC 4.8 and 4.9````
src/xerus/misc/namedLogger.cpp: In function ‘void xerus::misc::internal::buffer::checkSwitch()’:
src/xerus/misc/namedLogger.cpp:53:12: error: use of deleted function ‘std::basic_stringstream<char>& std::basic_stringstream<char>::o...````
src/xerus/misc/namedLogger.cpp: In function ‘void xerus::misc::internal::buffer::checkSwitch()’:
src/xerus/misc/namedLogger.cpp:53:12: error: use of deleted function ‘std::basic_stringstream<char>& std::basic_stringstream<char>::operator=(const std::basic_stringstream<char>&)’
old = std::move(current);
^
In file included from include/xerus/misc/namedLogger.h:30:0,
from src/xerus/misc/namedLogger.cpp:31:
/net/site-local.linux64/gcc/4.9.3/include/c++/4.9.3/sstream:502:11: note: ‘std::basic_stringstream<char>& std::basic_stringstream<char>::operator=(const std::basic_stringstream<char>&)’ is implicitly deleted because the default definition would be ill-formed:
class basic_stringstream : public basic_iostream<_CharT, _Traits>
^
/net/site-local.linux64/gcc/4.9.3/include/c++/4.9.3/sstream:502:11: error: use of deleted function ‘std::basic_iostream<char>& std::basic_iostream<char>::operator=(const std::basic_iostream<char>&)’
In file included from /net/site-local.linux64/gcc/4.9.3/include/c++/4.9.3/sstream:38:0,
from include/xerus/misc/namedLogger.h:30,
from src/xerus/misc/namedLogger.cpp:31:
/net/site-local.linux64/gcc/4.9.3/include/c++/4.9.3/istream:795:11: note: ‘std::basic_iostream<char>& std::basic_iostream<char>::operator=(const std::basic_iostream<char>&)’ is implicitly deleted because the default definition would be ill-formed:
class basic_iostream
^
/net/site-local.linux64/gcc/4.9.3/include/c++/4.9.3/istream:795:11: error: use of deleted function ‘std::basic_istream<char>& std::basic_istream<char>::operator=(const std::basic_istream<char>&)’
compilation terminated due to -fmax-errors=3.
````Version 2.3Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/164operator+ in namespace std causing errors2017-05-29T23:27:28+02:00Fuchsi*operator+ in namespace std causing errors````
In file included from src/xerus/performanceData.cpp:27:
In file included from include/xerus/ttNetwork.h:28:
include/xerus/misc/containerSupport.h:226:15: error: overloaded 'operator+' must have at least one parameter of class or ...````
In file included from src/xerus/performanceData.cpp:27:
In file included from include/xerus/ttNetwork.h:28:
include/xerus/misc/containerSupport.h:226:15: error: overloaded 'operator+' must have at least one parameter of class or enumeration type
IteratorType operator+(const IteratorType& _iterator, const size_t _add) {
^
include/xerus/misc/containerSupport.h:226:15: note: in instantiation of function template specialization 'std::operator+<const char *, true>' requested here
IteratorType operator+(const IteratorType& _iterator, const size_t _add) {
^
````
Version 2.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/159Automatic Doxygen generation does not work2017-05-29T23:27:28+02:00Sebastian WolfAutomatic Doxygen generation does not workVersion 2.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/157TTNetworks, in particular TTStacks::contract_stack, does not work with degree...2017-05-29T23:27:28+02:00Sebastian WolfTTNetworks, in particular TTStacks::contract_stack, does not work with degree zero Tensors.See test TT:fix_slate
See test TT:fix_slate
Version 2.1https://git.hemio.de/xerus/xerus/-/issues/155reshuffeling indices in v2.0 results in wrong index order2017-05-29T23:27:28+02:00Fuchsi*reshuffeling indices in v2.0 results in wrong index orderVersion 2.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/146test coverage ends in double free when used with openmp2017-05-29T23:27:29+02:00Fuchsi*test coverage ends in double free when used with openmpVersion 2.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/145product of ttoperators not recognized as ttoperator in v2.02017-05-29T23:27:29+02:00Fuchsi*product of ttoperators not recognized as ttoperator in v2.0````
| product starting: +00:02:25,248 ttNetwork.cpp :1608 : warning: _other.tensorObjectReadOnly->nodes.size() <= 1 failed msg: Assigning a general tensor network to TTOperator not yet implemented. casting to fullTensor first
...````
| product starting: +00:02:25,248 ttNetwork.cpp :1608 : warning: _other.tensorObjectReadOnly->nodes.size() <= 1 failed msg: Assigning a general tensor network to TTOperator not yet implemented. casting to fullTensor first
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓
| product: passed! (47.851 ms)
````
should pass without warningVersion 2.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/144v2.0-dev does not compile with clang++2017-05-29T23:27:29+02:00Fuchsi*v2.0-dev does not compile with clang++````
In file included from src/xerus/performanceData.cpp:27:
include/xerus/ttNetwork.h:356:10: error: variable has incomplete type 'xerus::Index'
Index i,r,l,j;
^
include/xerus/i...````
In file included from src/xerus/performanceData.cpp:27:
include/xerus/ttNetwork.h:356:10: error: variable has incomplete type 'xerus::Index'
Index i,r,l,j;
^
include/xerus/indexedTensorReadOnly.h:32:8: note: forward declaration of 'xerus::Index'
class Index;
^
In file included from src/xerus/performanceData.cpp:27:
include/xerus/ttNetwork.h:356:12: error: variable has incomplete type 'xerus::Index'
Index i,r,l,j;
^
include/xerus/indexedTensorReadOnly.h:32:8: note: forward declaration of 'xerus::Index'
class Index;
^
In file included from src/xerus/performanceData.cpp:27:
include/xerus/ttNetwork.h:356:14: error: variable has incomplete type 'xerus::Index'
Index i,r,l,j;
^
include/xerus/indexedTensorReadOnly.h:32:8: note: forward declaration of 'xerus::Index'
class Index;
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
````Version 2.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/142Xerus fails to compile using C++142017-05-29T23:27:29+02:00Sebastian WolfXerus fails to compile using C++14Version 2.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/140TensorNetwork fix_slate also callable by TTNetworks, without returning a vali...2017-05-29T23:27:29+02:00Sebastian WolfTensorNetwork fix_slate also callable by TTNetworks, without returning a valid TTNetwork.The TensorNetwork implementation of fix_slate does not preserve the TTNetwork format.The TensorNetwork implementation of fix_slate does not preserve the TTNetwork format.Version 1.5https://git.hemio.de/xerus/xerus/-/issues/139Move operations and definition of "Valid state" for Tensor/FullTensor/SparseT...2017-05-29T23:27:29+02:00Sebastian WolfMove operations and definition of "Valid state" for Tensor/FullTensor/SparseTensorAs of now our definition of a valid state of a FullTensor is that it is that all variables are consistent. I.e. size is the product of dimensions, the data pointer points to an array of size `size` and the factor is a valid value (not in...As of now our definition of a valid state of a FullTensor is that it is that all variables are consistent. I.e. size is the product of dimensions, the data pointer points to an array of size `size` and the factor is a valid value (not inf,...).
Following the design of the C++ std lib move operations should leave the object in question in such a valid state. Currently this is NOT fulfilled by our move-operations. In particular the FullTensor move constructors use the Tensor move constructors which do not preserve the consistency between size and dimensions and also do not leave the data pointer in a consistent state.
Therefore I would suggest to either:
- Weaken the definition of valid state for FullTensor/Tensor/SparseTensor to allow such inconsistencies and require a call to reset before the object can be used again.
- Or remove the move-operations for FullTensor/Tensor/SparseTensor altogether as a rigorous implementation of the current definition does not allow any gains compared to the non-move operations.Version 1.5https://git.hemio.de/xerus/xerus/-/issues/137Correct and beautify QC Lapacke wrapper and xerus QC factorisation.2017-05-29T23:27:29+02:00Sebastian WolfCorrect and beautify QC Lapacke wrapper and xerus QC factorisation.Version 2.1https://git.hemio.de/xerus/xerus/-/issues/136ADF returns wrong dimensions2017-05-29T23:27:30+02:00Fuchsi*ADF returns wrong dimensions````
| adf_completion starting: +00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
✗
| Test has thrown an uncaught xerus::ge...````
| adf_completion starting: +00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
✗
| Test has thrown an uncaught xerus::generic_error():
+00:00:16,525 fullTensor.cpp : 582 : fatal: resultDims == _result.dimensions failed msg: The given results has wrong dimensions { 6 } should be { 5 }
callstack:
[0x00000000008b3ecf .text] /homes/numerik/huber/store/code/xerus/src/xerus/fullTensor.cpp:562 (inside xerus::contract(xerus::FullTensor&, xerus::FullTensor const&, bool, xerus::FullTensor const&, bool, unsigned long))
[0x0000000000a79a5e .text] /homes/numerik/huber/store/code/xerus/src/xerus/algorithms/adf.cpp:213 (inside xerus::ADFVariant::solve(xerus::TTNetwork<false>&, std::vector<xerus::SinglePointMeasurment, std::allocator<xerus::SinglePointMeasurment> > const&) const)
[0x0000000000862cf5 .text] /homes/numerik/huber/store/code/xerus/src/unitTests/ttCompletion.cxx:29 (inside $_0::operator()() const)
[0x0000000000a70f61 .text] /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../include/c++/4.8/functional:2468 (inside std::function<bool ()>::operator()() const)
[0x0000000000a72a5d .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:221 (inside main)
[0x00002b62f6a9bbe5 .text] ??:? (inside __libc_start_main +0x245)
[0x0000000000423a61 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
exception thrown in function: contract (src/xerus/fullTensor.cpp : 582)
````Version 1.5Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/134frob_norm(TTOperator*TTOperator) not working2017-05-29T23:27:30+02:00Fuchsi*frob_norm(TTOperator*TTOperator) not working````
terminate called after throwing an instance of 'xerus::misc::generic_error'
what(): +00:00:00,016 ttNetwork.cpp :1453 : fatal: movOther failed msg: not moveable TTStack encountered...
callstack:
[0x00000000004d8319...````
terminate called after throwing an instance of 'xerus::misc::generic_error'
what(): +00:00:00,016 ttNetwork.cpp :1453 : fatal: movOther failed msg: not moveable TTStack encountered...
callstack:
[0x00000000004d8319 .text] /usr/include/c++/4.8/sstream:584 (inside std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::str() const)
[0x00000000004cb1b4 .text] /homes/numerik/huber/store/code/xerus/include/xerus/indexedTensor.h:36 (inside ~IndexedTensor)
[0x000000000040a356 .text] /homes/numerik/huber/store/code/playground/../xerus/include/xerus/tensorNetwork.h:500 (inside frob_norm)
[0x00002ad9e034bbe5 .text] ??:? (inside __libc_start_main +0x245)
[0x000000000040bdf1 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
exception thrown in function: specialized_evaluation (src/xerus/ttNetwork.cpp : 1453)
````Version 2.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/129accidental sparsetensor in tttensor fails silently2017-05-29T23:27:30+02:00Fuchsi*accidental sparsetensor in tttensor fails silentlye.g.
```
b.set_component(n, (Tensor::dirac(b.component(n).dimensions, i)));
```
e.g.
```
b.set_component(n, (Tensor::dirac(b.component(n).dimensions, i)));
```
version 1.4https://git.hemio.de/xerus/xerus/-/issues/128signed / unsigned conversions in ADF2017-05-29T23:27:30+02:00Fuchsi*signed / unsigned conversions in ADFwon't compile with clang
```
src/xerus/algorithms/adf.cpp:111:34: error: implicit conversion changes signedness: 'unsigned long' to 'int64_t' (aka 'long') [-Werror,-Wsign-conversion]
int64_t corePosit...won't compile with clang
```
src/xerus/algorithms/adf.cpp:111:34: error: implicit conversion changes signedness: 'unsigned long' to 'int64_t' (aka 'long') [-Werror,-Wsign-conversion]
int64_t corePosition = degree-1;
~~~~~~~~~~~~ ~~~~~~^~
src/xerus/algorithms/adf.cpp:112:63: error: implicit conversion changes signedness: 'int64_t' (aka 'long') to 'size_type' (aka 'unsigned long') [-Werror,-Wsign-conversion]
for( ; corePosition > 0 && _measurments[realId].positions[corePosition] == _measurments[realPreviousId].positions[corePosition]; --corePosition) {
~~~~~~~~~~~~ ^~~~~~~~~~~~
src/xerus/algorithms/adf.cpp:112:119: error: implicit conversion changes signedness: 'int64_t' (aka 'long') to 'size_type' (aka 'unsigned long') [-Werror,-Wsign-conversion]
for( ; corePosition > 0 && _measurments[realId].positions[corePosition] == _measurments[realPreviousId].positions[corePosition]; --corePosition) {
~~~~~~~~~~~~ ^~~~~~~~~~~~
```version 1.4Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/202failing tests in gitlab pipeline2019-04-03T18:51:52+02:00Fuchsi*failing tests in gitlab pipelinesome of them are very strange. e.g. the following one should never fail
```
| Product_1000x1000 starting: ✗ +00:01:39,286 fullTensor_product.cxx: 409 : warning : memcmp(res.get_dense_data(), C.get_dense_data(), sizeof(value_t)*1000*...some of them are very strange. e.g. the following one should never fail
```
| Product_1000x1000 starting: ✗ +00:01:39,286 fullTensor_product.cxx: 409 : warning : memcmp(res.get_dense_data(), C.get_dense_data(), sizeof(value_t)*1000*1000)==0 failed
✓ ✓
| Product_1000x1000: FAILED! (535.353 ms, seed = baadf00d)
```
(see https://git.hemio.de/xerus/xerus/-/jobs/2291 )https://git.hemio.de/xerus/xerus/-/issues/204Binary operations on Tensors use update operators2017-11-21T13:33:42+01:00Philipp TrunschkeBinary operations on Tensors use update operatorsFor example: xerus::Tensor::operator/ calls xerus::Tensor::operator/=
This causes unexpected behaviour.For example: xerus::Tensor::operator/ calls xerus::Tensor::operator/=
This causes unexpected behaviour.https://git.hemio.de/xerus/xerus/-/issues/124TN draw not thread safe2018-04-23T03:03:36+02:00Sebastian WolfTN draw not thread safetempnam is not thread safe so neither is TN::draw.tempnam is not thread safe so neither is TN::draw.version 1.4Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/123TN::draw() does not remove the tmp file2018-04-23T03:03:36+02:00Fuchsi*TN::draw() does not remove the tmp fileit has to be ensured, that the file is deleted - even if the call to dot failed.it has to be ensured, that the file is deleted - even if the call to dot failed.version 1.4Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/117source and destination overlap in memcpy (lapack wrapper)2018-04-23T03:03:37+02:00Fuchsi*source and destination overlap in memcpy (lapack wrapper)```
==7990== Source and destination overlap in memcpy(0x7c70a60, 0x7c70a60, 16)
==7990== at 0x4C2BDF3: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7990== by 0x7C26DA: xerus::misc::array_copy(d...```
==7990== Source and destination overlap in memcpy(0x7c70a60, 0x7c70a60, 16)
==7990== at 0x4C2BDF3: memcpy@@GLIBC_2.14 (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==7990== by 0x7C26DA: xerus::misc::array_copy(double*, double const*, unsigned long) (selectedFunctions.cpp:73)
==7990== by 0x7BBBC7: xerus::blasWrapper::qr_destructive(double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:358)
==7990== by 0x7B83B2: xerus::blasWrapper::inplace_qr(double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:315)
==7990== by 0x6BED55: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:308)
==7990== by 0x6E4FDE: xerus::TTNetwork<false>::round(double) (ttNetwork.cpp:828)
==7990== by 0x79BA91: xerus::examples::peaking_diagonals(unsigned long, unsigned long, double) (specificLowRankTensors.cpp:43)
==7990== by 0x466961: {lambda()#2}::operator()() const (in /store/botanix/datastore/huber/code/xerus/XerusTest)
==7990== by 0x469290: _ZNSt17_Function_handlerIFbvEUlvE0_E9_M_invokeERKSt9_Any_data (functional:2057)
==7990== by 0x7C62BF: std::function<bool ()>::operator()() const (functional:2468)
==7990== by 0x7C413C: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:102)
==7990== by 0x7C54EE: main (test.cpp:238)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/116dyadic_product of degree-0 TTTensors fails2018-04-23T03:03:37+02:00Fuchsi*dyadic_product of degree-0 TTTensors fails```
+00:00:00,009 ttNetwork.cpp : 522 : fatal: !node.tensorObject->has_factor() failed msg: n=0
callstack:
[0x000000000072650a .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:522 (inside xerus::TTNetwor...```
+00:00:00,009 ttNetwork.cpp : 522 : fatal: !node.tensorObject->has_factor() failed msg: n=0
callstack:
[0x000000000072650a .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:522 (inside xerus::TTNetwork<false>::is_valid_tt() const)
[0x000000000073dda4 .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:945 (inside xerus::TTNetwork<false>::move_core(unsigned long, bool))
[0x000000000072dd41 .text] /homes/numerik/huber/store/code/xerus/src/xerus/ttNetwork.cpp:672 (inside xerus::TTNetwork<false>::dyadic_product(xerus::TTNetwork<false> const&, xerus::TTNetwork<false> const&))
[0x0000000000810503 .text] /homes/numerik/huber/store/code/xerus/src/xerus/examples/specificLowRankTensors.cpp:43 (inside xerus::examples::peaking_diagonals(unsigned long, unsigned long, double))
[0x000000000046fa8d .text] /homes/numerik/huber/store/code/xerus/src/unitTests/largestEntry.cxx:106 (inside operator())
[0x0000000000470d66 .text] /usr/include/c++/4.8/functional:2058 (inside _M_invoke)
[0x0000000000843456 .text] /usr/include/c++/4.8/functional:2469 (inside std::function<bool ()>::operator()() const)
[0x0000000000840ccd .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:102 (inside xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&))
[0x00000000008423e0 .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:238 (inside main)
[0x00002b34da646be5 .text] ??:? (inside __libc_start_main +0x245)
[0x0000000000409379 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/115TTOperator * TTOperator / value_t not working2018-04-23T03:03:37+02:00Fuchsi*TTOperator * TTOperator / value_t not workingthe operator / likely tries to evaluate the left part, which is forbidden for TTStacks
```
ttNetwork.h : 463 : fatal: Forbidden
callstack:
[0x0000000000757617 .text] /usr/include/c++/4.8/sstream:584 (inside std::basic_...the operator / likely tries to evaluate the left part, which is forbidden for TTStacks
```
ttNetwork.h : 463 : fatal: Forbidden
callstack:
[0x0000000000757617 .text] /usr/include/c++/4.8/sstream:584 (inside std::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::str() const)
[0x00000000007b7c96 .text] /homes/numerik/huber/store/code/xerus/src/xerus/indexedTensorMoveable.cpp:47 (inside xerus::IndexedTensorMoveable<xerus::TensorNetwork>::IndexedTensorMoveable(xerus::IndexedTensorReadOnly<xerus::TensorNetwork> const&))
[0x000000000076fd34 .text] /homes/numerik/huber/store/code/xerus/src/xerus/indexedTensorReadOnly.cpp:72 (inside xerus::IndexedTensorReadOnly<xerus::TensorNetwork>::operator/(double) const)
[0x000000000048dce3 .text] /homes/numerik/huber/store/code/xerus/src/unitTests/steepestDescent.cxx:28 (inside operator())
[0x0000000000805bc7 .text] /usr/include/c++/4.8/functional:2468 (inside std::function<bool ()>::operator()() const)
[0x0000000000418819 .text] /homes/numerik/huber/store/code/xerus/src/xerus/misc/test.cpp:238 (inside main)
[0x00002b5fb2b6cbe5 .text] ??:? (inside __libc_start_main +0x245)
[0x00000000004198f1 .text] /home/abuild/rpmbuild/BUILD/glibc-2.18/csu/../sysdeps/x86_64/start.S:125 (inside _start)
```Version 1.3Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/108restore thread safety2018-04-23T03:03:37+02:00Fuchsi*restore thread safetycontraction heuristics are not threadsafe at the moment...contraction heuristics are not threadsafe at the moment...Version 1.3Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/103ALS has to take care of the global factor2018-04-23T03:03:37+02:00Sebastian WolfALS has to take care of the global factorVersion 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/99Invalid memory access in projection ALS2018-04-23T03:03:37+02:00Sebastian WolfInvalid memory access in projection ALS```
| projectionALS starting: ==10187== Invalid read of size 16
==10187== at 0x7B9815: dswap_k (in /home/baum/code/xerus/XerusTest)
==10187== by 0x781F76: dswap_ (swap.c:90)
==10187== by 0x794D37: dbdsqr_.constprop.238 (dbds...```
| projectionALS starting: ==10187== Invalid read of size 16
==10187== at 0x7B9815: dswap_k (in /home/baum/code/xerus/XerusTest)
==10187== by 0x781F76: dswap_ (swap.c:90)
==10187== by 0x794D37: dbdsqr_.constprop.238 (dbdsqr.f:830)
==10187== by 0x79FB2A: dlasdq_.constprop.237 (dlasdq.f:377)
==10187== by 0x7A07C9: dbdsdc_.constprop.233 (dbdsdc.f:363)
==10187== by 0x6C0250: dgesdd_ (dgesdd.f:937)
==10187== by 0x7A2A8F: LAPACKE_dgesdd_work.constprop.229 (lapacke_dgesdd_work.c:115)
==10187== by 0x6FCE6D: LAPACKE_dgesdd (lapacke_dgesdd.c:77)
==10187== by 0x6FCE6D: xerus::blasWrapper::svd_destructive(double*, double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:184)
==10187== by 0x5F6B16: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:303)
==10187== by 0x75EF53: xerus::TTNetwork<false>::round(unsigned long) (ttNetwork.cpp:756)
==10187== by 0x5DEC9F: {lambda()#2}::operator()() const [clone .isra.189] [clone .lto_priv.1270] (als.cxx:72)
==10187== by 0x6EDAD6: operator() (functional:2439)
==10187== by 0x6EDAD6: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:97)
==10187== Address 0x6aac950 is 384 bytes inside a block of size 392 alloc'd
==10187== at 0x4C29BCF: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==10187== by 0x7A2941: LAPACKE_dgesdd_work.constprop.229 (lapacke_dgesdd_work.c:96)
==10187== by 0x6FCE6D: LAPACKE_dgesdd (lapacke_dgesdd.c:77)
==10187== by 0x6FCE6D: xerus::blasWrapper::svd_destructive(double*, double*, double*, double*, unsigned long, unsigned long) (blasLapackWrapper.cpp:184)
==10187== by 0x5F6B16: xerus::TTNetwork<false>::round_train(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (ttNetwork.cpp:303)
==10187== by 0x75EF53: xerus::TTNetwork<false>::round(unsigned long) (ttNetwork.cpp:756)
==10187== by 0x5DEC9F: {lambda()#2}::operator()() const [clone .isra.189] [clone .lto_priv.1270] (als.cxx:72)
==10187== by 0x6EDAD6: operator() (functional:2439)
==10187== by 0x6EDAD6: xerus::misc::internal::test(std::pair<std::string, std::function<bool ()> > const&) (test.cpp:97)
==10187== by 0x410CE5: main (test.cpp:212)
==10187==
```Version 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/87Find portable solution for lapacke.h2018-04-23T03:03:37+02:00Sebastian WolfFind portable solution for lapacke.hIn commit d18723aaee268c242cb3af5ac21a61301931610b the include <lapacke/lapacke.h> was changed to <lapacke.h>. This does not compile on a standard Fedora 21 system (or at least not on the two I use). I.e. our "stable" branch does not com...In commit d18723aaee268c242cb3af5ac21a61301931610b the include <lapacke/lapacke.h> was changed to <lapacke.h>. This does not compile on a standard Fedora 21 system (or at least not on the two I use). I.e. our "stable" branch does not compile on my systems!version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/84Building and using the static library with LTO and clang++ fails2019-04-03T18:52:42+02:00Sebastian WolfBuilding and using the static library with LTO and clang++ failsThe gcc wrapper used to create LTO enabled static libraries don't seem to work with clang++.The gcc wrapper used to create LTO enabled static libraries don't seem to work with clang++.https://git.hemio.de/xerus/xerus/-/issues/83useless-casts in TensorNetwork?2018-04-23T03:03:38+02:00Fuchsi*useless-casts in TensorNetwork?g++ 5.1.1 shows following warnings (errors in default configuration)
~~~
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::FullTensor() const’:
src/xerus/tensorNetwork.cpp:134:100: warning: useless...g++ 5.1.1 shows following warnings (errors in default configuration)
~~~
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::FullTensor() const’:
src/xerus/tensorNetwork.cpp:134:100: warning: useless cast to type ‘xerus::FullTensor’ [-Wuseless-cast]
return FullTensor(std::move(*static_cast<FullTensor*>(fully_contracted_tensor().get())));
^
src/xerus/tensorNetwork.cpp: In member function ‘xerus::TensorNetwork::operator xerus::SparseTensor() const’:
src/xerus/tensorNetwork.cpp:142:104: warning: useless cast to type ‘xerus::SparseTensor’ [-Wuseless-cast]
return SparseTensor(std::move(*static_cast<SparseTensor*>(fully_contracted_tensor().get())));
^
```version 1.1https://git.hemio.de/xerus/xerus/-/issues/77Doxygen doesn't parse xerus/algorithms/*2018-04-23T03:03:38+02:00Sebastian WolfDoxygen doesn't parse xerus/algorithms/*E.g. http://libxerus.org/xerus_8h.html includes a link to all includes files but xerus/algorithms/als.h".E.g. http://libxerus.org/xerus_8h.html includes a link to all includes files but xerus/algorithms/als.h".version 1.1Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/75TTTensors canonicalize (and probably also other functions) apparently writes ...2018-04-23T03:03:38+02:00Sebastian WolfTTTensors canonicalize (and probably also other functions) apparently writes to shared data (tensorsObjects of its nodes).version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/73Ensure that xerus works at least with tensors of size 2^64-1 (size_t).2018-04-23T03:03:38+02:00Sebastian WolfEnsure that xerus works at least with tensors of size 2^64-1 (size_t).Tensors (e.g. TTTensors) with order 10 and dimensions 10 do not fit in an unit32, causing serious malfunction somewhere in xerus.Tensors (e.g. TTTensors) with order 10 and dimensions 10 do not fit in an unit32, causing serious malfunction somewhere in xerus.Version 1.0https://git.hemio.de/xerus/xerus/-/issues/70TTTensor Chop not working as intended2018-04-23T03:03:38+02:00Fuchsi*TTTensor Chop not working as intended- Number of external indices of left and right side is wrong in the operator case.
- same functionality can be obtained by simply contracting the component tensors as `nodes[i].tensorObject(i&1,j) * nodes[i+1].tensorObject(j,k&1)`, so w...- Number of external indices of left and right side is wrong in the operator case.
- same functionality can be obtained by simply contracting the component tensors as `nodes[i].tensorObject(i&1,j) * nodes[i+1].tensorObject(j,k&1)`, so why the hassle of manually counting dimensions?
- one could argue that this function is rather specific to one purpose and thus rather a part of the ALS it is being written for, than an important part of tttensor :P (alternatively this function should be less specific. eg. by allowing to remove several nodes inbetween to allow dmrg implementations to use it)version 1.1Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/65fix clang support2018-04-23T03:03:38+02:00Fuchsi*fix clang supportat the moment we cannot compile with the clangat the moment we cannot compile with the clanghttps://git.hemio.de/xerus/xerus/-/issues/61Makefile does not cover changes in .hxx files correctly2018-04-23T03:03:38+02:00Fuchsi*Makefile does not cover changes in .hxx files correctlychanges in .hxx files cause recompilation of the binary - but apparently not the text object fileschanges in .hxx files cause recompilation of the binary - but apparently not the text object filesVersion 1.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/54Compiling xerus without runtime checks causes the test cases to end with and ...2018-04-23T03:03:39+02:00Sebastian WolfCompiling xerus without runtime checks causes the test cases to end with and segmentation fault.Version 1.0https://git.hemio.de/xerus/xerus/-/issues/44REQUIRE_TEST macro file name identification (in cases of ../ in the path)2018-04-23T03:03:39+02:00Fuchsi*REQUIRE_TEST macro file name identification (in cases of ../ in the path)Version 1.0Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/33problems with the MISC_NAMESPACE macro2018-04-23T03:03:39+02:00Fuchsi*problems with the MISC_NAMESPACE macro1. not defining it before including any individual misc/*.h file will result in a warning about undefined macros / variables
2. setting it via `#define MISC_NAMESPACE` results in `#define MISC` which interestingly results in the followi...1. not defining it before including any individual misc/*.h file will result in a warning about undefined macros / variables
2. setting it via `#define MISC_NAMESPACE` results in `#define MISC` which interestingly results in the following error message:
```
bla.cpp:(.text+0xa58): undefined reference to `(anonymous namespace)::get_call_stack()'
```
This might be the only way to reference an anonymous namespace...???version 1.1https://git.hemio.de/xerus/xerus/-/issues/23Code coverage detection not working properly2018-04-23T03:03:39+02:00Sebastian WolfCode coverage detection not working properlyCode coverage says:
file index.hpp : 2 of 4 tests performed
However there are only two REQUIREs in index.hpp, which are most certainly called. Probably the problem is that the corresponding functions also appear inlined?Code coverage says:
file index.hpp : 2 of 4 tests performed
However there are only two REQUIREs in index.hpp, which are most certainly called. Probably the problem is that the corresponding functions also appear inlined?Version 1.2Fuchsi*Fuchsi*https://git.hemio.de/xerus/xerus/-/issues/210offset_add is not behaving as expected2018-08-14T16:01:17+02:00RoteKekseoffset_add is not behaving as expected```cpp
#include <xerus.h>
using namespace xerus;
int main() {
auto test1 = xerus::Tensor::dirac({1,1,1},0);
auto test2 = xerus::Tensor::dirac({2,2,1},0);
test2[3] = 4;
test2[1] = 2;
test2[2] = 3;
XERUS_LOG(info, "test1 = \n" <<...```cpp
#include <xerus.h>
using namespace xerus;
int main() {
auto test1 = xerus::Tensor::dirac({1,1,1},0);
auto test2 = xerus::Tensor::dirac({2,2,1},0);
test2[3] = 4;
test2[1] = 2;
test2[2] = 3;
XERUS_LOG(info, "test1 = \n" << test1 );
XERUS_LOG(info, "test2 = \n" << test2 );
std::unique_ptr<Tensor> comb(new Tensor({3,3,2}));
comb->offset_add(test1, std::vector<size_t>({0,0,0}));
comb->offset_add(test2, std::vector<size_t>({1,1,1}));
XERUS_LOG(info, "comb = \n" << *comb );
}
```
The above code returns:
```
+00:00:00,000 testAddition.cpp : 10 : info : test1 =
1.000000
+00:00:00,000 testAddition.cpp : 11 : info : test2 =
1.000000 0.000000
0.000000 1.000000
+00:00:00,002 testAddition.cpp : 28 : info : comb =
1.000000 / 0.000000 0.000000 / 0.000000 0.000000 / 0.000000
0.000000 / 0.000000 0.000000 / 1.000000 0.000000 / 2.000000
0.000000 / 3.000000 0.000000 / 4.000000 0.000000 / 0.000000
```
I expected
```
+00:00:00,000 testAddition.cpp : 10 : info : test1 =
1.000000
+00:00:00,000 testAddition.cpp : 11 : info : test2 =
1.000000 0.000000
0.000000 1.000000
+00:00:00,002 testAddition.cpp : 28 : info : comb =
1.000000 / 0.000000 0.000000 / 0.000000 0.000000 / 0.000000
0.000000 / 0.000000 0.000000 / 1.000000 0.000000 / 2.000000
0.000000 / 0.000000 0.000000 / 3.000000 0.000000 / 4.000000
```
Is this a bug?
Cheers MichaSebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/211Creation of big TT Train crashes2018-10-09T09:16:28+02:00RoteKekseCreation of big TT Train crashesHey ho,
the following code crushes.
```cpp
#include <xerus.h>
using namespace xerus;
int main() {
auto bigTT = TTTensor::random(std::vector<size_t>(784, 4), std::vector<size_t>(783,2));
}
```
It crushes in the QR decomposition i...Hey ho,
the following code crushes.
```cpp
#include <xerus.h>
using namespace xerus;
int main() {
auto bigTT = TTTensor::random(std::vector<size_t>(784, 4), std::vector<size_t>(783,2));
}
```
It crushes in the QR decomposition in ```blasLapackWrapper.cpp line 361``` (on development branch). It is able to perform 700 QR decomposition before it crushes. And indeed for smaller size it compiles:
```cpp
#include <xerus.h>
using namespace xerus;
int main() {
auto bigTT = TTTensor::random(std::vector<size_t>(700, 4), std::vector<size_t>(699,2));
}
```
Any ideas? The matrizes for the qQRare small, memory and cpu is plenty left. Maybe it is only on my machine?
Best regards MichaSebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/225HT::round uses wrong index to access desired rank2019-03-20T11:29:56+01:00Fuchsi*HT::round uses wrong index to access desired rankfrom valgrind:
```
==19016== Invalid read of size 8
==19016== at 0x698428: xerus::HTNetwork<true>::round(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (htNetwork.cpp:727)
==19016== by 0x698946: xerus::H...from valgrind:
```
==19016== Invalid read of size 8
==19016== at 0x698428: xerus::HTNetwork<true>::round(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (htNetwork.cpp:727)
==19016== by 0x698946: xerus::HTNetwork<true>::round(unsigned long) (htNetwork.cpp:740)
==19016== by 0x6989C4: xerus::HTNetwork<true>::round(int) (htNetwork.cpp:747)
==19016== by 0x4F038C: {lambda()#11}::operator()() const [clone .isra.201] (htArithmetic.cxx:393)
==19016== by 0x67E80F: operator() (std_function.h:687)
==19016== by 0x67E80F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==19016== by 0x47D70B: main (test.cpp:231)
==19016== Address 0xaafe060 is 0 bytes after a block of size 16 alloc'd
==19016== at 0x4838E86: operator new(unsigned long) (vg_replace_malloc.c:344)
==19016== by 0x6988AF: allocate (new_allocator.h:111)
==19016== by 0x6988AF: allocate (alloc_traits.h:436)
==19016== by 0x6988AF: _M_allocate (stl_vector.h:296)
==19016== by 0x6988AF: _M_create_storage (stl_vector.h:311)
==19016== by 0x6988AF: _Vector_base (stl_vector.h:260)
==19016== by 0x6988AF: vector (stl_vector.h:429)
==19016== by 0x6988AF: xerus::HTNetwork<true>::round(unsigned long) (htNetwork.cpp:740)
==19016== by 0x6989C4: xerus::HTNetwork<true>::round(int) (htNetwork.cpp:747)
==19016== by 0x4F038C: {lambda()#11}::operator()() const [clone .isra.201] (htArithmetic.cxx:393)
==19016== by 0x67E80F: operator() (std_function.h:687)
==19016== by 0x67E80F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==19016== by 0x47D70B: main (test.cpp:231)
==19016==
==19016== Invalid read of size 8
==19016== at 0x698428: xerus::HTNetwork<true>::round(std::vector<unsigned long, std::allocator<unsigned long> > const&, double) (htNetwork.cpp:727)
==19016== by 0x698946: xerus::HTNetwork<true>::round(unsigned long) (htNetwork.cpp:740)
==19016== by 0x6989C4: xerus::HTNetwork<true>::round(int) (htNetwork.cpp:747)
==19016== by 0x4F053E: {lambda()#11}::operator()() const [clone .isra.201] (htArithmetic.cxx:395)
==19016== by 0x67E80F: operator() (std_function.h:687)
==19016== by 0x67E80F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==19016== by 0x47D70B: main (test.cpp:231)
==19016== Address 0xa4d6770 is 0 bytes after a block of size 16 alloc'd
==19016== at 0x4838E86: operator new(unsigned long) (vg_replace_malloc.c:344)
==19016== by 0x6988AF: allocate (new_allocator.h:111)
==19016== by 0x6988AF: allocate (alloc_traits.h:436)
==19016== by 0x6988AF: _M_allocate (stl_vector.h:296)
==19016== by 0x6988AF: _M_create_storage (stl_vector.h:311)
==19016== by 0x6988AF: _Vector_base (stl_vector.h:260)
==19016== by 0x6988AF: vector (stl_vector.h:429)
==19016== by 0x6988AF: xerus::HTNetwork<true>::round(unsigned long) (htNetwork.cpp:740)
==19016== by 0x6989C4: xerus::HTNetwork<true>::round(int) (htNetwork.cpp:747)
==19016== by 0x4F053E: {lambda()#11}::operator()() const [clone .isra.201] (htArithmetic.cxx:395)
==19016== by 0x67E80F: operator() (std_function.h:687)
==19016== by 0x67E80F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==19016== by 0x47D70B: main (test.cpp:231)
```
(HT::round should also be changed to divide provided _eps by the square-root of rounding operations performed to have error guarantees)Version 4.0RoteKekseRoteKeksehttps://git.hemio.de/xerus/xerus/-/issues/230Memory Leak in Python Interface2019-06-13T01:30:25+02:00Philipp TrunschkeMemory Leak in Python InterfaceThere is a memory leak in the python interface to `xerus`.
Minimal working example:
```
import xerus as xe
i, = xe.indices(1)
d = xe.Tensor.random([100]*3)
while True:
d_tmp = xe.Tensor()
d_tmp(i&0) << d(i&0)
```There is a memory leak in the python interface to `xerus`.
Minimal working example:
```
import xerus as xe
i, = xe.indices(1)
d = xe.Tensor.random([100]*3)
while True:
d_tmp = xe.Tensor()
d_tmp(i&0) << d(i&0)
```Version 4.0Philipp TrunschkePhilipp Trunschkehttps://git.hemio.de/xerus/xerus/-/issues/240invalid read of size 8 in TRASD unittest2019-03-23T15:19:36+01:00Fuchsi*invalid read of size 8 in TRASD unittest```
| Fixed_Rank_Recovery starting: ==9814== Invalid read of size 8
==9814== at 0x4EC23A: tt_dofs(std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&) (c...```
| Fixed_Rank_Recovery starting: ==9814== Invalid read of size 8
==9814== at 0x4EC23A: tt_dofs(std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&) (common.hxx:38)
==9814== by 0x4F14AD: random_low_tt_ranks (common.hxx:83)
==9814== by 0x4F14AD: {lambda()#1}::operator()() const [clone .isra.151] (asd.cxx:39)
==9814== by 0x68571F: operator() (std_function.h:687)
==9814== by 0x68571F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==9814== by 0x481A4B: main (test.cpp:231)
==9814== Address 0xcabaae8 is 0 bytes after a block of size 8 alloc'd
==9814== at 0x4838E86: operator new(unsigned long) (vg_replace_malloc.c:344)
==9814== by 0x4F13B6: allocate (new_allocator.h:111)
==9814== by 0x4F13B6: allocate (alloc_traits.h:436)
==9814== by 0x4F13B6: _M_allocate (stl_vector.h:296)
==9814== by 0x4F13B6: _M_create_storage (stl_vector.h:311)
==9814== by 0x4F13B6: _Vector_base (stl_vector.h:260)
==9814== by 0x4F13B6: vector (stl_vector.h:460)
==9814== by 0x4F13B6: random_low_tt_ranks (common.hxx:80)
==9814== by 0x4F13B6: {lambda()#1}::operator()() const [clone .isra.151] (asd.cxx:39)
==9814== by 0x68571F: operator() (std_function.h:687)
==9814== by 0x68571F: xerus::misc::internal::test(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<void ()> > const&, unsigned long) [clone .constprop.118] (test.cpp:112)
==9814== by 0x481A4B: main (test.cpp:231)
```Version 4.0Sebastian WolfSebastian Wolfhttps://git.hemio.de/xerus/xerus/-/issues/248uq_ra_adf may diverge with non-uniform weights2019-04-05T12:54:54+02:00Philipp Trunschkeuq_ra_adf may diverge with non-uniform weightsVersion 4.0Philipp TrunschkePhilipp Trunschkehttps://git.hemio.de/xerus/xerus/-/issues/253make recompiles xerus even without changes2019-06-12T22:00:18+02:00RoteKeksemake recompiles xerus even without changesVersion 4.0https://git.hemio.de/xerus/xerus/-/issues/256REQUIREs in `uq_ra_adf_iv` are too restrictive2019-06-13T12:51:20+02:00Manuel MarschallREQUIREs in `uq_ra_adf_iv` are too restrictiveThe function `xerus::uq::uq_ra_adf_iv` in `src/xerus/applications/uqADF.cpp` requires
```
_x.order() <= _measurements.parameterVectors[i].size()
```
This is too restrictive in the UQ setting.
It requires the order of the tensor to be l...The function `xerus::uq::uq_ra_adf_iv` in `src/xerus/applications/uqADF.cpp` requires
```
_x.order() <= _measurements.parameterVectors[i].size()
```
This is too restrictive in the UQ setting.
It requires the order of the tensor to be less than the order of the rank-one measurement.
This does not take into account the fact that the first mode is reserved for the physical domain.
I propose to change the `REQUIRE` condition to
```
_x.order() <= _measurements.parameterVectors[i].size()+1
```Version 4.0Philipp TrunschkePhilipp Trunschke