diff options
author | Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> | 2025-04-26 20:21:02 -0400 |
---|---|---|
committer | Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> | 2025-04-26 20:21:02 -0400 |
commit | 41f612789f652654b5f2fa8c3fee4e348e2081b1 (patch) | |
tree | 386658b4231c6c1daa4f2f9769959d0934b2b44e /src/vec.cc | |
parent | 73633535288711de4850b9d9eec6326eb5de06c0 (diff) |
Initial vector extension changes
Diffstat (limited to 'src/vec.cc')
-rw-r--r-- | src/vec.cc | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/src/vec.cc b/src/vec.cc deleted file mode 100644 index e3e0a6c..0000000 --- a/src/vec.cc +++ /dev/null @@ -1,113 +0,0 @@ -#include "vec.h" - -template<typename T> -Vec<T> Vec<T>::operator+(const Vec<T>& other) const { - if (data.size() != other.data.size()) throw std::invalid_argument("Size mismatch"); - Vec<T> result; - for (size_t i = 0; i < data.size(); ++i) - result.data.push_back(data[i] + other.data[i]); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator-(const Vec<T>& other) const { - if (data.size() != other.data.size()) throw std::invalid_argument("Size mismatch"); - Vec<T> result; - for (size_t i = 0; i < data.size(); ++i) - result.data.push_back(data[i] - other.data[i]); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator*(const Vec<T>& other) const { - if (data.size() != other.data.size()) throw std::invalid_argument("Size mismatch"); - Vec<T> result; - for (size_t i = 0; i < data.size(); ++i) - result.data.push_back(data[i] * other.data[i]); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator/(const Vec<T>& other) const { - if (data.size() != other.data.size()) throw std::invalid_argument("Size mismatch"); - Vec<T> result; - for (size_t i = 0; i < data.size(); ++i) - result.data.push_back(other.data[i] == 0 ? 0 : data[i] / other.data[i]); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator%(const Vec<T>& other) const { - if (data.size() != other.data.size()) throw std::invalid_argument("Size mismatch"); - Vec<T> result; - for (size_t i = 0; i < data.size(); ++i) - result.data.push_back(other.data[i] == 0 ? 0 : data[i] % other.data[i]); - return result; -} - -// Scalar versions -template<typename T> -Vec<T> Vec<T>::operator+(T scalar) const { - Vec<T> result; - for (const auto& val : data) result.data.push_back(val + scalar); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator-(T scalar) const { - Vec<T> result; - for (const auto& val : data) result.data.push_back(val - scalar); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator*(T scalar) const { - Vec<T> result; - for (const auto& val : data) result.data.push_back(val * scalar); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator/(T scalar) const { - Vec<T> result; - for (const auto& val : data) result.data.push_back(scalar == 0 ? 0 : val / scalar); - return result; -} - -template<typename T> -Vec<T> Vec<T>::operator%(T scalar) const { - Vec<T> result; - for (const auto& val : data) result.data.push_back(scalar == 0 ? 0 : val % scalar); - return result; -} - -// Scalar - Vector versions -template<typename T> -Vec<T> operator-(T scalar, const Vec<T>& vec) { - Vec<T> result; - for (size_t i = 0; i < vec.size(); ++i) - result = result + (scalar - vec.data[i]); - return result; -} - -template<typename T> -Vec<T> operator/(T scalar, const Vec<T>& vec) { - Vec<T> result; - for (auto val : vec.data) - result = result + (val == 0 ? 0 : scalar / val); - return result; -} - -template<typename T> -Vec<T> operator%(T scalar, const Vec<T>& vec) { - Vec<T> result; - for (auto val : vec.data) - result = result + (val == 0 ? 0 : scalar % val); - return result; -} - -template<typename T> -void Vec<T>::print() const { - for (auto val : data) std::cout << val << " "; - std::cout << std::endl; -} |