parent
3cfb9ed6d2
commit
c10d8daf9f
|
@ -2,8 +2,11 @@
|
||||||
|
|
||||||
#include "tl_static.hh"
|
#include "tl_static.hh"
|
||||||
#include "pascal_triangle.hh"
|
#include "pascal_triangle.hh"
|
||||||
|
#include "tl_exception.hh"
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <limits>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
/* Note that we allow for repeated calls of |init|. This is not normal
|
/* Note that we allow for repeated calls of |init|. This is not normal
|
||||||
and the only purpose of allowing this is the test suite. */
|
and the only purpose of allowing this is the test suite. */
|
||||||
|
@ -29,6 +32,10 @@ namespace TLStatic
|
||||||
void
|
void
|
||||||
init(int dim, int nvar)
|
init(int dim, int nvar)
|
||||||
{
|
{
|
||||||
|
// Check that tensor indices will not overflow (they are stored as signed int, hence on 31 bits)
|
||||||
|
if (std::log2(nvar)*dim > std::numeric_limits<int>::digits)
|
||||||
|
throw TLException(__FILE__, __LINE__, "Problem too large, you should decrease the approximation order");
|
||||||
|
|
||||||
std::lock_guard<std::mutex>{mut};
|
std::lock_guard<std::mutex>{mut};
|
||||||
ebundle.generateUpTo(dim);
|
ebundle.generateUpTo(dim);
|
||||||
pbundle.generateUpTo(dim);
|
pbundle.generateUpTo(dim);
|
||||||
|
|
Loading…
Reference in New Issue