35 #ifndef _BLAZE_MATH_PROXY_PROXY_H_ 36 #define _BLAZE_MATH_PROXY_PROXY_H_ 148 template<
typename PT
149 ,
typename RT =
int >
151 :
public If_t< IsVector_v<RT>
152 , If_t< IsDenseVector_v<RT>
153 , DenseVectorProxy<PT,RT>
154 , SparseVectorProxy<PT,RT> >
155 , If_t< IsMatrix_v<RT>
156 , If_t< IsDenseMatrix_v<RT>
157 , DenseMatrixProxy<PT,RT>
158 , SparseMatrixProxy<PT,RT> >
159 , If_t< IsComplex_v<RT>
160 , ComplexProxy<PT,RT>
161 , DefaultProxy<PT,RT> > > >
177 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
178 decltype(
auto) operator+( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
181 decltype(auto) operator+( const Proxy<PT,RT>& lhs, const T& rhs );
184 decltype(auto) operator+( const T& lhs, const Proxy<PT,RT>& rhs );
186 template< typename PT1, typename RT1, typename PT2, typename RT2 >
187 decltype(auto) operator-( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
190 decltype(auto) operator-( const Proxy<PT,RT>& lhs, const T& rhs );
193 decltype(auto) operator-( const T& lhs, const Proxy<PT,RT>& rhs );
195 template< typename PT1, typename RT1, typename PT2, typename RT2 >
196 decltype(auto) operator*( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
199 decltype(auto) operator*( const Proxy<PT,RT>& lhs, const T& rhs );
202 decltype(auto) operator*( const T& lhs, const Proxy<PT,RT>& rhs );
204 template< typename PT1, typename RT1, typename PT2, typename RT2 >
205 decltype(auto) operator/( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
208 decltype(auto) operator/( const Proxy<PT,RT>& lhs, const T& rhs );
211 decltype(auto) operator/( const T& lhs, const Proxy<PT,RT>& rhs );
213 template< typename PT1, typename RT1, typename PT2, typename RT2 >
214 bool operator==( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
217 bool operator==( const Proxy<PT,RT>& lhs, const T& rhs );
220 bool operator==( const T& lhs, const Proxy<PT,RT>& rhs );
222 template< typename PT1, typename RT1, typename PT2, typename RT2 >
223 bool operator!=( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
226 bool operator!=( const Proxy<PT,RT>& lhs, const T& rhs );
229 bool operator!=( const T& lhs, const Proxy<PT,RT>& rhs );
231 template< typename PT1, typename RT1, typename PT2, typename RT2 >
232 bool operator<( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
235 bool operator<( const Proxy<PT,RT>& lhs, const T& rhs );
238 bool operator<( const T& lhs, const Proxy<PT,RT>& rhs );
240 template< typename PT1, typename RT1, typename PT2, typename RT2 >
241 bool operator>( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
244 bool operator>( const Proxy<PT,RT>& lhs, const T& rhs );
247 bool operator>( const T& lhs, const Proxy<PT,RT>& rhs );
249 template< typename PT1, typename RT1, typename PT2, typename RT2 >
250 bool operator<=( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
253 bool operator<=( const Proxy<PT,RT>& lhs, const T& rhs );
256 bool operator<=( const T& lhs, const Proxy<PT,RT>& rhs );
258 template< typename PT1, typename RT1, typename PT2, typename RT2 >
259 bool operator>=( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
262 bool operator>=( const Proxy<PT,RT>& lhs, const T& rhs );
265 bool operator>=( const T& lhs, const Proxy<PT,RT>& rhs );
267 template< typename PT, typename RT >
268 std::ostream& operator<<(
std::ostream& os, const Proxy<PT,RT>& proxy );
281 template< typename PT1, typename RT1, typename PT2, typename RT2 >
282 inline decltype(auto) operator+( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
284 return (~lhs).get() + (~rhs).
get();
297 template<
typename PT,
typename RT,
typename T,
typename >
298 inline decltype(
auto) operator+( const
Proxy<PT,RT>& lhs, const T& rhs )
300 return (~lhs).get() + rhs;
313 template<
typename T,
typename PT,
typename RT,
typename >
314 inline decltype(
auto) operator+( const T& lhs, const
Proxy<PT,RT>& rhs )
316 return lhs + (~rhs).
get();
329 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
330 inline decltype(
auto) operator-( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
332 return (~lhs).get() - (~rhs).
get();
345 template<
typename PT,
typename RT,
typename T,
typename >
346 inline decltype(
auto) operator-( const
Proxy<PT,RT>& lhs, const T& rhs )
348 return (~lhs).get() - rhs;
361 template<
typename T,
typename PT,
typename RT,
typename >
362 inline decltype(
auto) operator-( const T& lhs, const
Proxy<PT,RT>& rhs )
364 return lhs - (~rhs).
get();
377 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
378 inline decltype(
auto) operator*( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
380 return (~lhs).get() * (~rhs).
get();
393 template<
typename PT,
typename RT,
typename T,
typename >
394 inline decltype(
auto) operator*( const
Proxy<PT,RT>& lhs, const T& rhs )
396 return (~lhs).get() * rhs;
409 template<
typename T,
typename PT,
typename RT,
typename >
410 inline decltype(
auto) operator*( const T& lhs, const
Proxy<PT,RT>& rhs )
412 return lhs * (~rhs).
get();
425 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
426 inline decltype(
auto) operator/( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
428 return (~lhs).get() / (~rhs).
get();
441 template<
typename PT,
typename RT,
typename T,
typename >
442 inline decltype(
auto) operator/( const
Proxy<PT,RT>& lhs, const T& rhs )
444 return (~lhs).get() / rhs;
457 template<
typename T,
typename PT,
typename RT,
typename >
458 inline decltype(
auto) operator/( const T& lhs, const
Proxy<PT,RT>& rhs )
460 return lhs / (~rhs).
get();
473 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
476 return ( (~lhs).
get() == (~rhs).
get() );
489 template<
typename PT,
typename RT,
typename T,
typename >
492 return ( (~lhs).
get() == rhs );
505 template<
typename T,
typename PT,
typename RT,
typename >
508 return ( lhs == (~rhs).
get() );
521 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
524 return ( (~lhs).
get() != (~rhs).
get() );
537 template<
typename PT,
typename RT,
typename T,
typename >
540 return ( (~lhs).
get() != rhs );
553 template<
typename T,
typename PT,
typename RT,
typename >
556 return ( lhs != (~rhs).
get() );
569 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
572 return ( (~lhs).get() < (~rhs).
get() );
585 template<
typename PT,
typename RT,
typename T,
typename >
586 inline bool operator<( const Proxy<PT,RT>& lhs,
const T& rhs )
588 return ( (~lhs).get() < rhs );
601 template<
typename T,
typename PT,
typename RT,
typename >
602 inline bool operator<( const T& lhs, const Proxy<PT,RT>& rhs )
604 return ( lhs < rhs.get() );
617 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
620 return ( (~lhs).
get() > (~rhs).
get() );
633 template<
typename PT,
typename RT,
typename T,
typename >
636 return ( (~lhs).
get() > rhs );
649 template<
typename T,
typename PT,
typename RT,
typename >
652 return ( lhs > (~rhs).
get() );
665 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
668 return ( (~lhs).get() <= (~rhs).
get() );
681 template<
typename PT,
typename RT,
typename T,
typename >
682 inline bool operator<=( const Proxy<PT,RT>& lhs,
const T& rhs )
684 return ( (~lhs).get() <= rhs );
697 template<
typename T,
typename PT,
typename RT,
typename >
698 inline bool operator<=( const T& lhs, const Proxy<PT,RT>& rhs )
700 return ( lhs <= (~rhs).get() );
713 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
716 return ( (~lhs).
get() >= (~rhs).
get() );
729 template<
typename PT,
typename RT,
typename T,
typename >
732 return ( (~lhs).
get() >= rhs );
745 template<
typename T,
typename PT,
typename RT,
typename >
748 return ( lhs >= (~rhs).
get() );
761 template<
typename PT,
typename RT >
762 inline std::ostream& operator<<( std::ostream& os, const Proxy<PT,RT>& proxy )
764 return os << (~proxy).
get();
780 template<
typename PT,
typename RT >
781 decltype(
auto)
abs( const Proxy<PT,RT>& proxy );
783 template< typename PT, typename RT >
784 decltype(auto)
sign( const Proxy<PT,RT>& proxy );
786 template< typename PT, typename RT >
787 decltype(auto)
floor( const Proxy<PT,RT>& proxy );
789 template< typename PT, typename RT >
790 decltype(auto)
ceil( const Proxy<PT,RT>& proxy );
792 template< typename PT, typename RT >
793 decltype(auto)
trunc( const Proxy<PT,RT>& proxy );
795 template< typename PT, typename RT >
796 decltype(auto)
round( const Proxy<PT,RT>& proxy );
798 template< typename PT, typename RT >
799 decltype(auto)
conj( const Proxy<PT,RT>& proxy );
801 template< typename PT, typename RT >
802 decltype(auto)
trans( const Proxy<PT,RT>& proxy );
804 template< typename PT, typename RT >
805 decltype(auto)
ctrans( const Proxy<PT,RT>& proxy );
807 template< typename PT, typename RT >
808 decltype(auto)
real( const Proxy<PT,RT>& proxy );
810 template< typename PT, typename RT >
811 decltype(auto)
imag( const Proxy<PT,RT>& proxy );
813 template< typename PT, typename RT >
814 decltype(auto)
sqrt( const Proxy<PT,RT>& proxy );
816 template< typename PT, typename RT >
817 decltype(auto)
invsqrt( const Proxy<PT,RT>& proxy );
819 template< typename PT, typename RT >
820 decltype(auto)
cbrt( const Proxy<PT,RT>& proxy );
822 template< typename PT, typename RT >
823 decltype(auto)
invcbrt( const Proxy<PT,RT>& proxy );
825 template< typename PT1, typename RT1, typename PT2, typename RT2 >
826 decltype(auto)
hypot( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
829 decltype(auto)
hypot( const Proxy<PT,RT>& lhs, const T& rhs );
832 decltype(auto)
hypot( const T& lhs, const Proxy<PT,RT>& rhs );
834 template< typename PT, typename RT, typename ET >
835 decltype(auto)
pow( const Proxy<PT,RT>& proxy, const ET&
exp );
837 template< typename PT, typename RT >
838 decltype(auto)
pow2( const Proxy<PT,RT>& proxy );
840 template< typename PT, typename RT >
841 decltype(auto)
pow3( const Proxy<PT,RT>& proxy );
843 template< typename PT, typename RT >
844 decltype(auto)
pow4( const Proxy<PT,RT>& proxy );
846 template< typename PT, typename RT >
847 decltype(auto)
exp( const Proxy<PT,RT>& proxy );
849 template< typename PT, typename RT >
850 decltype(auto)
exp2( const Proxy<PT,RT>& proxy );
852 template< typename PT, typename RT >
853 decltype(auto)
exp10( const Proxy<PT,RT>& proxy );
855 template< typename PT, typename RT >
856 decltype(auto)
log( const Proxy<PT,RT>& proxy );
858 template< typename PT, typename RT >
859 decltype(auto)
log2( const Proxy<PT,RT>& proxy );
861 template< typename PT, typename RT >
862 decltype(auto)
log10( const Proxy<PT,RT>& proxy );
864 template< typename PT, typename RT >
865 decltype(auto)
sin( const Proxy<PT,RT>& proxy );
867 template< typename PT, typename RT >
868 decltype(auto)
asin( const Proxy<PT,RT>& proxy );
870 template< typename PT, typename RT >
871 decltype(auto)
sinh( const Proxy<PT,RT>& proxy );
873 template< typename PT, typename RT >
874 decltype(auto)
asinh( const Proxy<PT,RT>& proxy );
876 template< typename PT, typename RT >
877 decltype(auto)
cos( const Proxy<PT,RT>& proxy );
879 template< typename PT, typename RT >
880 decltype(auto)
acos( const Proxy<PT,RT>& proxy );
882 template< typename PT, typename RT >
883 decltype(auto)
cosh( const Proxy<PT,RT>& proxy );
885 template< typename PT, typename RT >
886 decltype(auto)
acosh( const Proxy<PT,RT>& proxy );
888 template< typename PT, typename RT >
889 decltype(auto)
tan( const Proxy<PT,RT>& proxy );
891 template< typename PT, typename RT >
892 decltype(auto)
atan( const Proxy<PT,RT>& proxy );
894 template< typename PT, typename RT >
895 decltype(auto)
tanh( const Proxy<PT,RT>& proxy );
897 template< typename PT, typename RT >
898 decltype(auto)
atanh( const Proxy<PT,RT>& proxy );
900 template< typename PT1, typename RT1, typename PT2, typename RT2 >
901 decltype(auto)
atan2( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
904 decltype(auto)
atan2( const Proxy<PT,RT>& lhs, const T& rhs );
907 decltype(auto)
atan2( const T& lhs, const Proxy<PT,RT>& rhs );
909 template< typename PT, typename RT >
910 decltype(auto)
erf( const Proxy<PT,RT>& proxy );
912 template< typename PT, typename RT >
913 decltype(auto)
erfc( const Proxy<PT,RT>& proxy );
915 template< typename PT1, typename RT1, typename PT2, typename RT2 >
916 decltype(auto)
min( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
919 decltype(auto)
min( const Proxy<PT,RT>& lhs, const T& rhs );
922 decltype(auto)
min( const T& lhs, const Proxy<PT,RT>& rhs );
924 template< typename PT1, typename RT1, typename PT2, typename RT2 >
925 decltype(auto)
max( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
928 decltype(auto)
max( const Proxy<PT,RT>& lhs, const T& rhs );
931 decltype(auto)
max( const T& lhs, const Proxy<PT,RT>& rhs );
933 template< typename PT, typename RT >
934 void transpose( const Proxy<PT,RT>& proxy );
936 template< typename PT, typename RT >
939 template< typename PT, typename RT >
940 void invert( const Proxy<PT,RT>& proxy );
943 void invert( const Proxy<PT,RT>& proxy );
945 template<
bool RF, typename PT, typename RT >
946 bool isReal( const Proxy<PT,RT>& proxy );
948 template<
bool RF, typename PT, typename RT >
949 bool isZero( const Proxy<PT,RT>& proxy );
951 template<
bool RF, typename PT, typename RT >
952 bool isOne( const Proxy<PT,RT>& proxy );
954 template< typename PT, typename RT >
955 bool isnan( const Proxy<PT,RT>& proxy );
957 template<
bool RF, typename PT1, typename RT1, typename PT2, typename RT2 >
958 bool equal( const Proxy<PT1,RT1>& lhs, const Proxy<PT2,RT2>& rhs );
960 template<
bool RF, typename PT, typename RT, typename T, typename =
DisableIf_t<
IsProxy_v<T> > >
961 bool equal( const Proxy<PT,RT>& lhs, const T& rhs );
963 template<
bool RF, typename T, typename PT, typename RT, typename =
DisableIf_t<
IsProxy_v<T> > >
964 bool equal( const T& lhs, const Proxy<PT,RT>& rhs );
980 template< typename PT, typename RT >
981 inline decltype(auto)
abs( const
Proxy<PT,RT>& proxy )
985 return abs( (~proxy).
get() );
1001 template<
typename PT,
typename RT >
1006 return sign( (~proxy).
get() );
1022 template<
typename PT,
typename RT >
1027 return floor( (~proxy).
get() );
1043 template<
typename PT,
typename RT >
1048 return ceil( (~proxy).
get() );
1064 template<
typename PT,
typename RT >
1069 return trunc( (~proxy).
get() );
1085 template<
typename PT,
typename RT >
1090 return round( (~proxy).
get() );
1106 template<
typename PT,
typename RT >
1111 return conj( (~proxy).
get() );
1126 template<
typename PT,
typename RT >
1131 return trans( (~proxy).
get() );
1146 template<
typename PT,
typename RT >
1151 return ctrans( (~proxy).
get() );
1167 template<
typename PT,
typename RT >
1172 return real( (~proxy).
get() );
1188 template<
typename PT,
typename RT >
1193 return imag( (~proxy).
get() );
1209 template<
typename PT,
typename RT >
1214 return sqrt( (~proxy).
get() );
1230 template<
typename PT,
typename RT >
1235 return invsqrt( (~proxy).
get() );
1251 template<
typename PT,
typename RT >
1256 return cbrt( (~proxy).
get() );
1272 template<
typename PT,
typename RT >
1277 return invcbrt( (~proxy).
get() );
1294 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
1299 return hypot( (~lhs).
get(), (~rhs).
get() );
1317 template<
typename PT,
typename RT,
typename T,
typename >
1318 inline decltype(
auto)
hypot( const
Proxy<PT,RT>& lhs, const T& rhs )
1322 return hypot( (~lhs).
get(), rhs );
1340 template<
typename T,
typename PT,
typename RT,
typename >
1341 inline decltype(
auto)
hypot( const T& lhs, const
Proxy<PT,RT>& rhs )
1345 return hypot( lhs, (~rhs).
get() );
1362 template<
typename PT,
typename RT,
typename ET >
1367 return pow( (~proxy).
get(),
exp );
1383 template<
typename PT,
typename RT,
typename ET >
1388 return pow2( (~proxy).
get() );
1404 template<
typename PT,
typename RT,
typename ET >
1409 return pow3( (~proxy).
get() );
1425 template<
typename PT,
typename RT,
typename ET >
1430 return pow4( (~proxy).
get() );
1446 template<
typename PT,
typename RT >
1451 return exp( (~proxy).
get() );
1467 template<
typename PT,
typename RT >
1472 return exp2( (~proxy).
get() );
1488 template<
typename PT,
typename RT >
1493 return exp10( (~proxy).
get() );
1509 template<
typename PT,
typename RT >
1514 return log( (~proxy).
get() );
1530 template<
typename PT,
typename RT >
1535 return log2( (~proxy).
get() );
1551 template<
typename PT,
typename RT >
1556 return log10( (~proxy).
get() );
1572 template<
typename PT,
typename RT >
1577 return sin( (~proxy).
get() );
1593 template<
typename PT,
typename RT >
1598 return asin( (~proxy).
get() );
1614 template<
typename PT,
typename RT >
1619 return sinh( (~proxy).
get() );
1635 template<
typename PT,
typename RT >
1640 return asinh( (~proxy).
get() );
1656 template<
typename PT,
typename RT >
1661 return cos( (~proxy).
get() );
1677 template<
typename PT,
typename RT >
1682 return acos( (~proxy).
get() );
1698 template<
typename PT,
typename RT >
1703 return cosh( (~proxy).
get() );
1719 template<
typename PT,
typename RT >
1724 return acosh( (~proxy).
get() );
1740 template<
typename PT,
typename RT >
1745 return tan( (~proxy).
get() );
1761 template<
typename PT,
typename RT >
1766 return atan( (~proxy).
get() );
1782 template<
typename PT,
typename RT >
1787 return tanh( (~proxy).
get() );
1803 template<
typename PT,
typename RT >
1808 return atanh( (~proxy).
get() );
1826 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
1829 return atan2( (~lhs).
get(), (~rhs).
get() );
1847 template<
typename PT,
typename RT,
typename T,
typename >
1848 inline decltype(
auto)
atan2( const
Proxy<PT,RT>& lhs, const T& rhs )
1850 return atan2( (~lhs).
get(), rhs );
1868 template<
typename T,
typename PT,
typename RT,
typename >
1869 inline decltype(
auto)
atan2( const T& lhs, const
Proxy<PT,RT>& rhs )
1871 return atan2( lhs, (~rhs).
get() );
1887 template<
typename PT,
typename RT >
1892 return erf( (~proxy).
get() );
1909 template<
typename PT,
typename RT >
1914 return erfc( (~proxy).
get() );
1927 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
1928 inline decltype(
auto)
min( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
1932 return min( (~lhs).
get(), (~rhs).
get() );
1945 template<
typename PT,
typename RT,
typename T,
typename >
1946 inline decltype(
auto)
min( const
Proxy<PT,RT>& lhs, const T& rhs )
1950 return min( (~lhs).
get(), rhs );
1963 template<
typename T,
typename PT,
typename RT,
typename >
1964 inline decltype(
auto)
min( const T& lhs, const
Proxy<PT,RT>& rhs )
1968 return min( lhs, (~rhs).
get() );
1981 template<
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
1982 inline decltype(
auto)
max( const
Proxy<PT1,RT1>& lhs, const
Proxy<PT2,RT2>& rhs )
1986 return max( (~lhs).
get(), (~rhs).
get() );
1999 template<
typename PT,
typename RT,
typename T,
typename >
2000 inline decltype(
auto)
max( const
Proxy<PT,RT>& lhs, const T& rhs )
2004 return max( (~lhs).
get(), rhs );
2017 template<
typename T,
typename PT,
typename RT,
typename >
2018 inline decltype(
auto)
max( const T& lhs, const
Proxy<PT,RT>& rhs )
2022 return max( lhs, (~rhs).
get() );
2044 template<
typename PT,
typename RT >
2047 if( (~proxy).isRestricted() ) {
2073 template<
typename PT,
typename RT >
2076 if( (~proxy).isRestricted() ) {
2113 template<
typename PT,
typename RT >
2116 if( (~proxy).isRestricted() ) {
2120 invert( (~proxy).
get() );
2162 template< InversionFlag IF,
typename PT,
typename RT >
2165 if( (~proxy).isRestricted() ) {
2169 invert<IF>( (~proxy).
get() );
2186 template<
bool RF,
typename PT,
typename RT >
2191 return isReal<RF>( (~proxy).
get() );
2206 template<
bool RF,
typename PT,
typename RT >
2211 return isZero<RF>( (~proxy).
get() );
2226 template<
bool RF,
typename PT,
typename RT >
2231 return isOne<RF>( (~proxy).
get() );
2246 template<
typename PT,
typename RT >
2251 return isnan( (~proxy).
get() );
2264 template<
bool RF,
typename PT1,
typename RT1,
typename PT2,
typename RT2 >
2267 return equal<RF>( (~lhs).
get(), (~rhs).
get() );
2280 template<
bool RF,
typename PT,
typename RT,
typename T,
typename >
2283 return equal<RF>( (~lhs).
get(), rhs );
2296 template<
bool RF,
typename T,
typename PT,
typename RT,
typename >
2299 return equal<RF>( lhs, (~rhs).
get() );
bool isReal(const DiagonalProxy< MT > &proxy)
Returns whether the matrix element represents a real number.
Definition: DiagonalProxy.h:653
Header file for the isnan shim.
Header file for the sign shim.
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.This macro encapsulates the default way o...
Definition: Exception.h:235
decltype(auto) acosh(const DenseMatrix< MT, SO > &dm)
Computes the inverse hyperbolic cosine for each single element of the dense matrix dm...
Definition: DMatMapExpr.h:2038
Header file for auxiliary alias declarations.
Headerfile for the generic min algorithm.
decltype(auto) exp10(const DenseMatrix< MT, SO > &dm)
Computes for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1701
Header file for the acos shim.
Header file for the asin shim.
Header file for the cosh shim.
Header file for the SparseVectorProxy class.
decltype(auto) hypot(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise hypotenous for the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1211
typename If< Condition, T1, T2 >::Type If_t
Auxiliary alias declaration for the If class template.The If_t alias declaration provides a convenien...
Definition: If.h:109
Header file for the imaginary shim.
Proxy base class.The Proxy class is a base class for all proxy classes within the Blaze library that ...
Definition: Forward.h:51
decltype(auto) real(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the real part of each single element of dm.
Definition: DMatMapExpr.h:1392
Header file for the isZero shim.
Header file for the tan shim.
Header file for the dense matrix inversion flags.
Header file for the DefaultProxy class.
decltype(auto) ceil(const DenseMatrix< MT, SO > &dm)
Applies the ceil() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1239
decltype(auto) pow(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise exponential value for the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1243
Header file for the DenseMatrixProxy class.
void ctranspose(Matrix< MT, SO > &matrix)
In-place conjugate transpose of the given matrix.
Definition: Matrix.h:851
Header file for the abs shim.
Header file for the pow shim.
Header file for the invert shim.
decltype(auto) sign(const DenseMatrix< MT, SO > &dm)
Applies the sign() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1181
decltype(auto) pow4(const Proxy< PT, RT > &proxy)
Computing the quadruple value of the represented element.
Definition: Proxy.h:1426
Header file for the exp2 shim.
decltype(auto) acos(const DenseMatrix< MT, SO > &dm)
Computes the inverse cosine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1977
Header file for the DenseVectorProxy class.
decltype(auto) erf(const DenseMatrix< MT, SO > &dm)
Computes the error function for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:2189
Header file for the IsMatrix type trait.
Header file for the log10 shim.
bool isZero(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is 0.
Definition: DiagonalProxy.h:673
void invert(const HermitianProxy< MT > &proxy)
In-place inversion of the represented element.
Definition: HermitianProxy.h:775
Header file for the sqrt shim.
Headerfile for the generic max algorithm.
Header file for the DisableIf class template.
Header file for the floor shim.
decltype(auto) cos(const DenseMatrix< MT, SO > &dm)
Computes the cosine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1945
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
decltype(auto) ctrans(const DenseMatrix< MT, SO > &dm)
Returns the conjugate transpose matrix of dm.
Definition: DMatMapExpr.h:1364
Header file for the cos shim.
Header file for the If class template.
Header file for the log2 shim.
decltype(auto) exp2(const DenseMatrix< MT, SO > &dm)
Computes for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1672
Header file for the ComplexProxy class.
decltype(auto) sinh(const DenseMatrix< MT, SO > &dm)
Computes the hyperbolic sine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1887
decltype(auto) asin(const DenseMatrix< MT, SO > &dm)
Computes the inverse sine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1858
decltype(auto) cosh(const DenseMatrix< MT, SO > &dm)
Computes the hyperbolic cosine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:2006
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1147
decltype(auto) cbrt(const DenseMatrix< MT, SO > &dm)
Computes the cubic root of each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1517
Header file for the erf shim.
constexpr bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:370
constexpr bool operator>=(const NegativeAccuracy< A > &, const T &rhs)
Greater-or-equal-than comparison between a NegativeAccuracy object and a floating point value...
Definition: Accuracy.h:446
decltype(auto) trunc(const DenseMatrix< MT, SO > &dm)
Applies the trunc() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1268
constexpr bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value. ...
Definition: Accuracy.h:253
Header file for the trunc shim.
decltype(auto) atan(const DenseMatrix< MT, SO > &dm)
Computes the inverse tangent for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:2096
Header file for the pow2 shim.
Header file for the sin shim.
decltype(auto) asinh(const DenseMatrix< MT, SO > &dm)
Computes the inverse hyperbolic sine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1916
Header file for the invsqrt shim.
bool isnan(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is not a number.
Definition: DiagonalProxy.h:713
Header file for the SparseMatrixProxy class.
Header file for the exception macros of the math module.
decltype(auto) max(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise maximum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1179
decltype(auto) atan2(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the multi-valued inverse tangent of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1275
constexpr bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:293
Header file for the erfc shim.
Header file for the IsVector type trait.
Header file for the IsDenseMatrix type trait.
decltype(auto) exp(const DenseMatrix< MT, SO > &dm)
Computes for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1643
Header file for the pow3 shim.
decltype(auto) abs(const DenseMatrix< MT, SO > &dm)
Applies the abs() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1152
decltype(auto) pow3(const Proxy< PT, RT > &proxy)
Computing the cube value of the represented element.
Definition: Proxy.h:1405
Header file for the isOne shim.
decltype(auto) log(const DenseMatrix< MT, SO > &dm)
Computes the natural logarithm for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1733
constexpr bool IsProxy_v
Auxiliary variable template for the IsProxy type trait.The IsProxy_v variable template provides a con...
Definition: IsProxy.h:144
Header file for the conjugate shim.
Header file for the log shim.
decltype(auto) floor(const DenseMatrix< MT, SO > &dm)
Applies the floor() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1210
decltype(auto) round(const DenseMatrix< MT, SO > &dm)
Applies the round() function to each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1297
decltype(auto) tanh(const DenseMatrix< MT, SO > &dm)
Computes the hyperbolic tangent for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:2128
Header file for the pow4 shim.
Header file for the acosh shim.
Header file for the cbrt shim.
decltype(auto) invcbrt(const DenseMatrix< MT, SO > &dm)
Computes the inverse cubic root of each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1549
Header file for the atanh shim.
decltype(auto) atanh(const DenseMatrix< MT, SO > &dm)
Computes the inverse hyperbolic tangent for each single element of the dense matrix dm...
Definition: DMatMapExpr.h:2160
decltype(auto) pow2(const Proxy< PT, RT > &proxy)
Computing the square value of the represented element.
Definition: Proxy.h:1384
Header file for the round shim.
Header file for the invcbrt shim.
Header file for the IsProxy type trait.
bool isOne(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is 1.
Definition: DiagonalProxy.h:693
Header file for the exp10 shim.
Header file for the asinh shim.
Header file for the tanh shim.
Header file for the IsDenseVector type trait.
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:765
decltype(auto) sin(const DenseMatrix< MT, SO > &dm)
Computes the sine for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1826
decltype(auto) erfc(const DenseMatrix< MT, SO > &dm)
Computes the complementary error function for each single element of the dense matrix dm...
Definition: DMatMapExpr.h:2218
decltype(auto) sqrt(const DenseMatrix< MT, SO > &dm)
Computes the square root of each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1453
decltype(auto) tan(const DenseMatrix< MT, SO > &dm)
Computes the tangent for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:2067
Header file for the IsComplex type trait.
decltype(auto) log10(const DenseMatrix< MT, SO > &dm)
Computes the common logarithm for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1797
Header file for the atan2 shim.
decltype(auto) imag(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the imaginary part of each single element of dm.
Definition: DMatMapExpr.h:1421
typename DisableIf< Condition, T >::Type DisableIf_t
Auxiliary type for the DisableIf class template.The DisableIf_t alias declaration provides a convenie...
Definition: DisableIf.h:138
Header file for the exp shim.
Header file for the real shim.
decltype(auto) conj(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the complex conjugate of each single element of dm.
Definition: DMatMapExpr.h:1326
Header file for the sinh shim.
decltype(auto) log2(const DenseMatrix< MT, SO > &dm)
Computes the binary logarithm for each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1765
decltype(auto) invsqrt(const DenseMatrix< MT, SO > &dm)
Computes the inverse square root of each single element of the dense matrix dm.
Definition: DMatMapExpr.h:1485
Header file for the isReal shim.
InversionFlag
Inversion flag.The InversionFlag type enumeration represents the different types of matrix inversion ...
Definition: InversionFlag.h:101
Header file for the atan shim.
bool equal(const SharedValue< T1 > &lhs, const SharedValue< T2 > &rhs)
Equality check for a two shared values.
Definition: SharedValue.h:342
Header file for the ceil shim.
void transpose(Matrix< MT, SO > &matrix)
In-place transpose of the given matrix.
Definition: Matrix.h:825