54 template<
typename dtype>
77 template<
typename dtype>
82 if (lhs.shape() != rhs.
shape())
87 const auto function = [](std::complex<dtype>& val1, dtype val2) -> std::complex<dtype> {
return val1 + val2; };
102 template<
typename dtype>
107 const auto function = [rhs](dtype& value) -> dtype {
return value += rhs; };
122 template<
typename dtype>
127 const auto function = [rhs](std::complex<dtype>& value) -> std::complex<dtype> {
return value += rhs; };
142 template<
typename dtype>
167 template<
typename dtype>
172 if (lhs.
shape() != rhs.shape())
177 const auto function = [](dtype val1,
const std::complex<dtype>& val2) -> std::complex<dtype>
178 {
return val1 + val2; };
195 template<
typename dtype>
209 template<
typename dtype>
214 const auto function = [rhs](dtype value) -> dtype {
return value + rhs; };
231 template<
typename dtype>
245 template<
typename dtype>
250 const auto function = [rhs](dtype value) -> std::complex<dtype> {
return value + rhs; };
267 template<
typename dtype>
281 template<
typename dtype>
286 const auto function = [rhs](std::complex<dtype> value) -> std::complex<dtype> {
return value + rhs; };
303 template<
typename dtype>
317 template<
typename dtype>
340 template<
typename dtype>
345 if (lhs.shape() != rhs.
shape())
350 const auto function = [](std::complex<dtype>& val1, dtype val2) -> std::complex<dtype> {
return val1 - val2; };
365 template<
typename dtype>
370 const auto function = [rhs](dtype& value) -> dtype {
return value -= rhs; };
385 template<
typename dtype>
390 const auto function = [rhs](std::complex<dtype>& value) -> std::complex<dtype> {
return value -= rhs; };
405 template<
typename dtype>
430 template<
typename dtype>
435 if (lhs.
shape() != rhs.shape())
440 const auto function = [](dtype val1,
const std::complex<dtype>& val2) -> std::complex<dtype>
441 {
return val1 - val2; };
458 template<
typename dtype>
463 if (lhs.shape() != rhs.
shape())
468 const auto function = [](
const std::complex<dtype>& val1, dtype val2) -> std::complex<dtype>
469 {
return val1 - val2; };
486 template<
typename dtype>
491 const auto function = [rhs](dtype value) -> dtype {
return value - rhs; };
508 template<
typename dtype>
513 const auto function = [lhs](dtype value) -> dtype {
return lhs - value; };
530 template<
typename dtype>
535 const auto function = [rhs](dtype value) -> std::complex<dtype> {
return value - rhs; };
552 template<
typename dtype>
557 const auto function = [lhs](dtype value) -> std::complex<dtype> {
return lhs - value; };
574 template<
typename dtype>
579 const auto function = [rhs](std::complex<dtype> value) -> std::complex<dtype> {
return value - rhs; };
596 template<
typename dtype>
601 const auto function = [lhs](std::complex<dtype> value) -> std::complex<dtype> {
return lhs - value; };
616 template<
typename dtype>
619 const auto function = [](dtype value) -> dtype {
return -value; };
634 template<
typename dtype>
657 template<
typename dtype>
662 if (lhs.shape() != rhs.
shape())
667 const auto function = [](std::complex<dtype>& val1, dtype val2) -> std::complex<dtype> {
return val1 * val2; };
682 template<
typename dtype>
687 const auto function = [rhs](dtype& value) -> dtype {
return value *= rhs; };
702 template<
typename dtype>
707 const auto function = [rhs](std::complex<dtype>& value) -> std::complex<dtype> {
return value *= rhs; };
722 template<
typename dtype>
738 std::multiplies<dtype>());
751 template<
typename dtype>
756 if (lhs.
shape() != rhs.shape())
761 const auto function = [](dtype val1,
const std::complex<dtype>& val2) -> std::complex<dtype>
762 {
return val1 * val2; };
779 template<
typename dtype>
793 template<
typename dtype>
798 const auto function = [rhs](dtype value) -> dtype {
return value * rhs; };
815 template<
typename dtype>
829 template<
typename dtype>
834 const auto function = [rhs](dtype value) -> std::complex<dtype> {
return value * rhs; };
851 template<
typename dtype>
865 template<
typename dtype>
870 const auto function = [rhs](std::complex<dtype> value) -> std::complex<dtype> {
return value * rhs; };
887 template<
typename dtype>
901 template<
typename dtype>
924 template<
typename dtype>
929 if (lhs.shape() != rhs.
shape())
934 const auto function = [](std::complex<dtype>& val1, dtype val2) -> std::complex<dtype> {
return val1 / val2; };
949 template<
typename dtype>
954 const auto function = [rhs](dtype& value) -> dtype {
return value /= rhs; };
969 template<
typename dtype>
974 const auto function = [rhs](std::complex<dtype>& value) -> std::complex<dtype> {
return value /= rhs; };
989 template<
typename dtype>
1014 template<
typename dtype>
1019 if (lhs.
shape() != rhs.shape())
1026 const auto function = [](dtype val1,
const std::complex<dtype>& val2) -> std::complex<dtype>
1027 {
return val1 / val2; };
1042 template<
typename dtype>
1047 if (lhs.shape() != rhs.
shape())
1052 const auto function = [](
const std::complex<dtype>& val1, dtype val2) -> std::complex<dtype>
1053 {
return val1 / val2; };
1070 template<
typename dtype>
1075 const auto function = [rhs](dtype value) -> dtype {
return value / rhs; };
1092 template<
typename dtype>
1097 const auto function = [lhs](dtype value) -> dtype {
return lhs / value; };
1114 template<
typename dtype>
1119 const auto function = [rhs](dtype value) -> std::complex<dtype> {
return value / rhs; };
1136 template<
typename dtype>
1141 const auto function = [lhs](dtype value) -> std::complex<dtype> {
return lhs / value; };
1158 template<
typename dtype>
1163 const auto function = [rhs](std::complex<dtype> value) -> std::complex<dtype> {
return value / rhs; };
1180 template<
typename dtype>
1185 const auto function = [lhs](std::complex<dtype> value) -> std::complex<dtype> {
return lhs / value; };
1202 template<typename dtype, enable_if_t<std::is_integral<dtype>::value,
int> = 0>
1223 template<typename dtype, enable_if_t<std::is_floating_point<dtype>::value,
int> = 0>
1224 NdArray<dtype>&
operator%=(NdArray<dtype>& lhs,
const NdArray<dtype>& rhs)
1226 if (lhs.shape() != rhs.shape())
1231 const auto function = [](
const dtype value1,
const dtype value2) -> dtype {
return std::fmod(value1, value2); };
1246 template<typename dtype, enable_if_t<std::is_integral<dtype>::value,
int> = 0>
1249 const auto function = [rhs](dtype& value) -> dtype {
return value %= rhs; };
1264 template<typename dtype, enable_if_t<std::is_floating_point<dtype>::value,
int> = 0>
1265 NdArray<dtype>&
operator%=(NdArray<dtype>& lhs, dtype rhs)
1267 const auto function = [rhs](dtype& value) ->
void { value =
std::fmod(value, rhs); };
1282 template<
typename dtype>
1298 template<
typename dtype>
1314 template<typename dtype, enable_if_t<std::is_integral<dtype>::value,
int> = 0>
1320 returnArray.
begin(),
1321 [lhs](dtype value) -> dtype { return lhs % value; });
1334 template<typename dtype, enable_if_t<std::is_floating_point<dtype>::value,
int> = 0>
1335 NdArray<dtype>
operator%(dtype lhs,
const NdArray<dtype>& rhs)
1337 NdArray<dtype> returnArray(rhs.shape());
1340 returnArray.begin(),
1341 [lhs](dtype value) -> dtype { return std::fmod(lhs, value); });
1354 template<
typename dtype>
1377 template<
typename dtype>
1382 const auto function = [rhs](dtype& value) -> dtype {
return value |= rhs; };
1397 template<
typename dtype>
1413 template<
typename dtype>
1429 template<
typename dtype>
1443 template<
typename dtype>
1466 template<
typename dtype>
1471 const auto function = [rhs](dtype& value) -> dtype {
return value &= rhs; };
1486 template<
typename dtype>
1502 template<
typename dtype>
1518 template<
typename dtype>
1532 template<
typename dtype>
1555 template<
typename dtype>
1560 const auto function = [rhs](dtype& value) -> dtype {
return value ^= rhs; };
1575 template<
typename dtype>
1591 template<
typename dtype>
1607 template<
typename dtype>
1620 template<
typename dtype>
1625 const auto function = [](dtype value) -> dtype {
return ~value; };
1642 template<
typename dtype>
1652 const auto function = [](dtype value1, dtype value2) ->
bool {
return value1 && value2; };
1668 template<
typename dtype>
1675 const auto function = [rhs](dtype value) ->
bool {
return value && rhs; };
1690 template<
typename dtype>
1704 template<
typename dtype>
1714 const auto function = [](dtype value1, dtype value2) ->
bool {
return value1 || value2; };
1730 template<
typename dtype>
1737 const auto function = [rhs](dtype value) ->
bool {
return value || rhs; };
1752 template<
typename dtype>
1765 template<
typename dtype>
1772 const auto function = [](dtype value) -> dtype {
return !value; };
1788 template<
typename dtype>
1814 template<
typename dtype>
1819 const auto equalTo = [inValue](dtype value) noexcept ->
bool
1836 template<
typename dtype>
1839 return inArray == inValue;
1851 template<
typename dtype>
1859 const auto notEqualTo = [](dtype lhs, dtype rhs) noexcept ->
bool
1878 template<
typename dtype>
1883 const auto notEqualTo = [inValue](dtype value) noexcept ->
bool
1900 template<
typename dtype>
1903 return inArray != inValue;
1915 template<
typename dtype>
1916 NdArray<bool>
operator<(
const NdArray<dtype>& lhs,
const NdArray<dtype>& rhs)
1920 if (lhs.shape() != rhs.shape())
1925 NdArray<bool> returnArray(lhs.shape());
1927 const auto function = [](dtype lhs, dtype rhs) noexcept ->
bool {
return lhs < rhs; };
1943 template<
typename dtype>
1944 NdArray<bool>
operator<(
const NdArray<dtype>& lhs, dtype inValue)
1948 NdArray<bool> returnArray(lhs.shape());
1950 const auto function = [inValue](dtype value) noexcept ->
bool {
return value < inValue; };
1966 template<
typename dtype>
1967 NdArray<bool>
operator<(dtype inValue,
const NdArray<dtype>& inArray)
1971 NdArray<bool> returnArray(inArray.shape());
1973 const auto function = [inValue](dtype value) noexcept ->
bool {
return inValue < value; };
1989 template<
typename dtype>
2001 const auto function = [](dtype lhs, dtype rhs) noexcept ->
bool {
return lhs > rhs; };
2019 template<
typename dtype>
2026 const auto function = [inValue](dtype value) noexcept ->
bool {
return value > inValue; };
2042 template<
typename dtype>
2049 const auto function = [inValue](dtype value) noexcept ->
bool {
return inValue > value; };
2065 template<
typename dtype>
2066 NdArray<bool>
operator<=(
const NdArray<dtype>& lhs,
const NdArray<dtype>& rhs)
2070 if (lhs.shape() != rhs.shape())
2075 NdArray<bool> returnArray(lhs.shape());
2077 const auto function = [](dtype lhs, dtype rhs) noexcept ->
bool {
return lhs <= rhs; };
2093 template<
typename dtype>
2094 NdArray<bool>
operator<=(
const NdArray<dtype>& lhs, dtype inValue)
2098 NdArray<bool> returnArray(lhs.shape());
2100 const auto function = [inValue](dtype value) noexcept ->
bool {
return value <= inValue; };
2116 template<
typename dtype>
2117 NdArray<bool>
operator<=(dtype inValue,
const NdArray<dtype>& inArray)
2121 NdArray<bool> returnArray(inArray.shape());
2123 const auto function = [inValue](dtype value) noexcept ->
bool {
return inValue <= value; };
2139 template<
typename dtype>
2151 const auto function = [](dtype lhs, dtype rhs) noexcept ->
bool {
return lhs >= rhs; };
2167 template<
typename dtype>
2174 const auto function = [inValue](dtype value) noexcept ->
bool {
return value >= inValue; };
2190 template<
typename dtype>
2197 const auto function = [inValue](dtype value) noexcept ->
bool {
return inValue >= value; };
2212 template<
typename dtype>
2217 const auto function = [inNumBits](dtype& value) ->
void { value <<= inNumBits; };
2232 template<
typename dtype>
2237 NdArray<dtype> returnArray(lhs);
2238 returnArray <<= inNumBits;
2250 template<
typename dtype>
2255 const auto function = [inNumBits](dtype& value) ->
void { value >>= inNumBits; };
2270 template<
typename dtype>
2276 returnArray >>= inNumBits;
2286 template<
typename dtype>
2291 const auto function = [](dtype& value) ->
void { ++value; };
2305 template<
typename dtype>
2319 template<
typename dtype>
2324 const auto function = [](dtype& value) ->
void { --value; };
2338 template<
typename dtype>
2354 template<
typename dtype>
2359 inOStream << inArray.
str();
#define THROW_INVALID_ARGUMENT_ERROR(msg)
Definition: Error.hpp:36
#define STATIC_ASSERT_ARITHMETIC_OR_COMPLEX(dtype)
Definition: StaticAsserts.hpp:49
#define STATIC_ASSERT_INTEGER(dtype)
Definition: StaticAsserts.hpp:40
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition: StaticAsserts.hpp:37
Holds 1D and 2D arrays, the main work horse of the NumCpp library.
Definition: NdArrayCore.hpp:72
const_iterator cbegin() const noexcept
Definition: NdArrayCore.hpp:1221
iterator end() noexcept
Definition: NdArrayCore.hpp:1479
Shape shape() const noexcept
Definition: NdArrayCore.hpp:4092
const_iterator cend() const noexcept
Definition: NdArrayCore.hpp:1529
std::string str() const
Definition: NdArrayCore.hpp:4162
iterator begin() noexcept
Definition: NdArrayCore.hpp:1171
OutputIt transform(InputIt first, InputIt last, OutputIt destination, UnaryOperation unaryFunction)
Definition: StlAlgorithms.hpp:784
void for_each(InputIt first, InputIt last, UnaryFunction f)
Definition: StlAlgorithms.hpp:227
bool essentiallyEqual(dtype inValue1, dtype inValue2) noexcept
Definition: essentiallyEqual.hpp:51
Definition: Coordinate.hpp:45
NdArray< dtype > operator&(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1487
bool operator==(const DateTime &lhs, const DateTime &rhs) noexcept
Equality operator for DateTime.
Definition: DateTime/DateTime.hpp:473
NdArray< dtype > & operator%=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1203
bool operator>=(const std::complex< T > &lhs, const std::complex< T > &rhs) noexcept
Definition: StdComplexOperators.hpp:97
Duration operator-(const DateTime &lhs, const DateTime &rhs) noexcept
Subtraction operator.
Definition: DateTime/DateTime.hpp:551
bool operator>(const std::complex< T > &lhs, const std::complex< T > &rhs) noexcept
Definition: StdComplexOperators.hpp:83
NdArray< bool > operator||(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1705
NdArray< dtype > operator|(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1398
NdArray< dtype > & operator+=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:55
NdArray< dtype > operator%(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1283
NdArrayConstIterator< dtype, PointerType, DifferenceType > operator+(typename NdArrayConstIterator< dtype, PointerType, DifferenceType >::difference_type offset, NdArrayConstIterator< dtype, PointerType, DifferenceType > next) noexcept
Definition: NdArrayIterators.hpp:307
NdArray< bool > operator!(const NdArray< dtype > &inArray)
Definition: NdArrayOperators.hpp:1766
bool operator!=(const DateTime &lhs, const DateTime &rhs) noexcept
Non Equality operator for DateTime.
Definition: DateTime/DateTime.hpp:486
dtype fmod(dtype inValue1, dtype inValue2) noexcept
Definition: fmod.hpp:52
bool operator<(const std::complex< T > &lhs, const std::complex< T > &rhs) noexcept
Definition: StdComplexOperators.hpp:45
NdArray< dtype > & operator>>=(NdArray< dtype > &lhs, uint8 inNumBits)
Definition: NdArrayOperators.hpp:2251
NdArray< dtype > operator>>(const NdArray< dtype > &lhs, uint8 inNumBits)
Definition: NdArrayOperators.hpp:2271
NdArray< dtype > & operator-=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:318
NdArray< dtype > & operator^=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1533
NdArray< dtype > operator*(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:723
NdArray< dtype > & operator|=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1355
std::uint8_t uint8
Definition: Types.hpp:42
NdArray< dtype > copy(const NdArray< dtype > &inArray)
Definition: copy.hpp:44
NdArray< dtype > & operator<<=(NdArray< dtype > &lhs, uint8 inNumBits)
Definition: NdArrayOperators.hpp:2213
bool operator<=(const std::complex< T > &lhs, const std::complex< T > &rhs) noexcept
Definition: StdComplexOperators.hpp:64
NdArray< dtype > & operator--(NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:2320
NdArray< bool > operator&&(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1643
NdArray< dtype > & operator++(NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:2287
std::ostream & operator<<(std::ostream &os, Duration duration)
Output stream operator for the Duration type.
Definition: Clock.hpp:30
NdArray< dtype > operator/(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:990
NdArray< dtype > & operator/=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:902
NdArray< dtype > operator^(const NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1576
NdArray< dtype > operator~(const NdArray< dtype > &inArray)
Definition: NdArrayOperators.hpp:1621
NdArray< dtype > & operator&=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:1444
NdArray< dtype > & operator*=(NdArray< dtype > &lhs, const NdArray< dtype > &rhs)
Definition: NdArrayOperators.hpp:635