diff --git a/la_traits.h b/la_traits.h index 5db3801..c804d8b 100644 --- a/la_traits.h +++ b/la_traits.h @@ -264,6 +264,7 @@ static inline bool gencmp(const std::complex *x, const std::complex *y, si static bool bigger(const std::complex &x, const std::complex &y) {laerror("std::complex comparison undefined"); return false;} static bool smaller(const std::complex &x, const std::complex &y) {laerror("std::complex comparison undefined"); return false;} static inline normtype norm (const std::complex &x) {return std::abs(x);} +static inline normtype abs2(const std::complex &x) {return std::abs(x.real())+std::abs(x.imag());} //faster without sqrt static inline void axpy (std::complex &s, const std::complex &x, const std::complex &c) {s+=x*c;} static inline void get(int fd, std::complex &x, bool dimensions=0, bool transp=0) {if(sizeof(std::complex)!=read(fd,&x,sizeof(std::complex))) laerror("read error");} static inline void put(int fd, const std::complex &x, bool dimensions=0, bool transp=0) {if(sizeof(std::complex)!=write(fd,&x,sizeof(std::complex))) laerror("write error");} @@ -320,6 +321,7 @@ static inline bool gencmp(const C *x, const C *y, size_t n) {return memcmp(x,y,n static inline bool bigger(const C &x, const C &y) {return x>y;} static inline bool smaller(const C &x, const C &y) {return x