- there was a confusion in gf imfreq, in the new case
where freq can be <0 (non real gf, or for product gf).
- index: is the matsubara n, as in the struct matsubara_freq
index can be >0 or <0
- linear_index : is the shift from the 0. It is always >0.
Fixed function to compute it.
- Also changed the construction of mesh_point in the generic iterator.
Before, was constructed with a mesh point of index 0
Now, added a new constructor on mesh_point_t, just taking the mesh
which construct the *first* mesh_point.
Fixed linear, discrete, product accordingly.
Added to the documentation of the concepts of gf.
- little details : code cleaning, clang formatting, along
with documentation writing for c++ gf.
- separated the mesh in small class for better doc.
- work on documentation : reorganize specialisation, ...
std::conj returns a complex according to std.
On gcc, we need to define it (bug?) but on clang libc++
it is an error.
-> one test is still failing : to be decided later
DRAFT : to be tested further...
- update gf<imfreq>
- write a specific mesh for matsubara frequencies
- now the cast series is :
mesh_pt --> matsubara_freq --> complex<double>
- matsubara_freq is just the matsubara frequency
- arithmetic of the mesh_pt casted to matsubara_freq
- arithmetic of matsubara_freq is casted to complex, except + and -,
which are kept as matsubara_freq.
- evaluator now accept : int, mesh_pt, and matsubara_freq
for matsubara_freq : for negative omega, use conjugation
for omega outside windows, evaluate the tail on omega.
- as a result : g( om - nu) where om, nu are 2 meshes points,
is the extrapolation outside the grid if necessary.
- updated tests
- added evaluation for tail.
- a(1,ellipsis()) for a an array<T,1> e.g.,
was not compiling.
- also added const_iterator for range to allow simple code :
for (auto i : range {3,6}) ....-> i = 3,4,5 as in python
- clef : fix a little bug in storage when evaluating
(was using the wrong trait to deduce storage type).
- gf : block :
- added reinterpret_scalar_valued_gf_as_matrix_valued
for block function
- cleaned make_block_gf_view_from_vector
- added make_block_gf_view_from_vectormake_block_gf_view_from_vector_of_cython_proxy
and changed the cython accordingly because it requires a slightly different syntax.
- updated tests
- gf : cleaned some template.
- lazy_fourier and co --> fourier
- ex fourier --> make_gf_from_fourier to make a new gf
- = fourier (g) works only iif lhs is a view, like scalar.
- updated python (commented fourier method).
- was a bug workaround. Should be ok, but
reason of previous fix unclear. Suspicious...
- necessary to remove this :
- it is useless normally.
- it prevent the evaluator to work for scalar valued gf