mirror of
https://github.com/triqs/dft_tools
synced 2024-12-25 05:43:40 +01:00
arrays: add conj function for arrays/matrix and tests
- map conj (and extend it for integers).
This commit is contained in:
parent
fa6f991473
commit
9cdc139214
@ -53,6 +53,8 @@ template<typename T> void test( T val=1 ) {
|
||||
auto aa = array<T,2>{ { 1,2}, {3,4}};
|
||||
TEST(make_matrix(exp(aa)));
|
||||
|
||||
TEST(make_matrix(conj(A)));
|
||||
|
||||
// does not compile, since exp is only element wise at the moment
|
||||
// to do : implement it for matrix...
|
||||
//TEST(make_matrix(exp( matrix<double>{{ 1,2}, {3,4}} )));
|
||||
@ -60,7 +62,7 @@ template<typename T> void test( T val=1 ) {
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
|
||||
conj (8);
|
||||
test<int>();
|
||||
test<long>();
|
||||
test<double>();
|
||||
|
@ -42,6 +42,10 @@
|
||||
(make_matrix(exp(aa))) --->
|
||||
[[2.71828,7.38906]
|
||||
[20.0855,54.5982]]
|
||||
(make_matrix(conj(A))) --->
|
||||
[[1,3,5]
|
||||
[2,4,6]
|
||||
[3,5,7]]
|
||||
(A) --->
|
||||
[[1,3,5]
|
||||
[2,4,6]
|
||||
@ -86,6 +90,10 @@
|
||||
(make_matrix(exp(aa))) --->
|
||||
[[2.71828,7.38906]
|
||||
[20.0855,54.5982]]
|
||||
(make_matrix(conj(A))) --->
|
||||
[[1,3,5]
|
||||
[2,4,6]
|
||||
[3,5,7]]
|
||||
(A) --->
|
||||
[[1,3,5]
|
||||
[2,4,6]
|
||||
@ -130,6 +138,10 @@
|
||||
(make_matrix(exp(aa))) --->
|
||||
[[2.71828,7.38906]
|
||||
[20.0855,54.5982]]
|
||||
(make_matrix(conj(A))) --->
|
||||
[[(1,0),(3,0),(5,0)]
|
||||
[(2,0),(4,0),(6,0)]
|
||||
[(3,0),(5,0),(7,0)]]
|
||||
(A) --->
|
||||
[[(1,0),(3,0),(5,0)]
|
||||
[(2,0),(4,0),(6,0)]
|
||||
@ -174,6 +186,10 @@
|
||||
(make_matrix(exp(aa))) --->
|
||||
[[(2.71828,0),(7.38906,0)]
|
||||
[(20.0855,0),(54.5982,0)]]
|
||||
(make_matrix(conj(A))) --->
|
||||
[[(1,0),(3,0),(5,0)]
|
||||
[(2,0),(4,0),(6,0)]
|
||||
[(3,0),(5,0),(7,0)]]
|
||||
(A) --->
|
||||
[[(-2,3),(-6,9),(-10,15)]
|
||||
[(-4,6),(-8,12),(-12,18)]
|
||||
@ -218,3 +234,7 @@
|
||||
(make_matrix(exp(aa))) --->
|
||||
[[(2.71828,0),(7.38906,0)]
|
||||
[(20.0855,0),(54.5982,0)]]
|
||||
(make_matrix(conj(A))) --->
|
||||
[[(-2,-3),(-6,-9),(-10,-15)]
|
||||
[(-4,-6),(-8,-12),(-12,-18)]
|
||||
[(-6,-9),(-10,-15),(-14,-21)]]
|
||||
|
@ -24,6 +24,11 @@
|
||||
#include <boost/preprocessor/seq/for_each.hpp>
|
||||
namespace triqs { namespace arrays {
|
||||
|
||||
// complex conjugation for integers
|
||||
inline int conj(int const& x) { return x; }
|
||||
inline long conj(long const& x) { return x; }
|
||||
inline long long conj(long long const& x) { return x; }
|
||||
|
||||
//C++14 will simply be ...
|
||||
//template <typename A> decltype(auto) abs(A && a) { return map( [](auto const &x) { using std::abs; return abs(a);}, std::forward<A>(a));}
|
||||
|
||||
@ -45,7 +50,7 @@ namespace triqs { namespace arrays {
|
||||
typename boost::lazy_enable_if_c<ImmutableCuboidArray<A>::value,std::result_of<map_impl<__triqs_##FNT##_wrap,1>(A)>>::type\
|
||||
FNT(A && a) { return map(__triqs_##FNT##_wrap{})(std::forward<A>(a)); }
|
||||
|
||||
#define TRIQS_ARRAYS_MATH_FNT (abs)(real)(imag)(floor)
|
||||
#define TRIQS_ARRAYS_MATH_FNT (abs)(real)(imag)(floor)(conj)
|
||||
|
||||
#define AUX(r, data, elem) MAP_IT(elem)
|
||||
BOOST_PP_SEQ_FOR_EACH(AUX , nil , TRIQS_ARRAYS_MATH_FNT);
|
||||
|
Loading…
Reference in New Issue
Block a user