cb65174cf4
fixed rowwise/colswise mean/sum and implemented binomial_corssentrhopy. Next up is regression.
106 lines
2.8 KiB
C++
106 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#include "./core/omp_config.h"
|
|
#include "detail/div_serial.h"
|
|
|
|
|
|
namespace numerics{
|
|
|
|
// ---------------- Scalar ----------------
|
|
template <typename T>
|
|
inline void inplace_div(utils::Matrix<T>& A, const T b) {
|
|
detail::inplace_div_scalar_serial(A,b);
|
|
}
|
|
template <typename T>
|
|
inline utils::Matrix<T> div(const utils::Matrix<T>& A, const T b) {
|
|
utils::Matrix<T> out = A;
|
|
inplace_div(out, b);
|
|
return out;
|
|
}
|
|
|
|
template <typename T>
|
|
inline void inplace_div(const T b, utils::Matrix<T>& A) {
|
|
detail::inplace_div_scalar_serial(b, A);
|
|
}
|
|
template <typename T>
|
|
inline utils::Matrix<T> div(const T b, const utils::Matrix<T>& A) {
|
|
utils::Matrix<T> out = A;
|
|
inplace_div(b, out);
|
|
return out;
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
inline void inplace_div(utils::Vector<T>& v, const T b) {
|
|
detail::inplace_div_scalar_serial(v,b);
|
|
}
|
|
template <typename T>
|
|
inline utils::Vector<T> div(const utils::Vector<T>& v, const T b) {
|
|
utils::Vector<T> out = v;
|
|
inplace_div(out, b);
|
|
return out;
|
|
}
|
|
|
|
template <typename T>
|
|
inline void inplace_div(const T b, utils::Vector<T>& v) {
|
|
detail::inplace_div_scalar_serial(b, v);
|
|
}
|
|
template <typename T>
|
|
inline utils::Vector<T> div(const T b, const utils::Vector<T>& v) {
|
|
utils::Vector<T> out = v;
|
|
inplace_div(b, out);
|
|
return out;
|
|
}
|
|
|
|
|
|
// ---------------- Elementwise ----------------
|
|
template <typename T>
|
|
inline void inplace_div(utils::Matrix<T>& A, const utils::Matrix<T>& B) {
|
|
detail::inplace_div_elementwise_serial(A,B);
|
|
}
|
|
|
|
template <typename T>
|
|
inline utils::Matrix<T> div(const utils::Matrix<T>& A, const utils::Matrix<T>& B) {
|
|
utils::Matrix<T> out = A;
|
|
inplace_div(out, B);
|
|
return out;
|
|
}
|
|
|
|
template <typename T>
|
|
inline void inplace_div(utils::Vector<T>& v, const utils::Vector<T>& p) {
|
|
detail::inplace_div_elementwise_serial(v,p);
|
|
}
|
|
|
|
template <typename T>
|
|
inline utils::Vector<T> div(const utils::Vector<T>& v, const utils::Vector<T>& p) {
|
|
utils::Vector<T> out = v;
|
|
inplace_div(out, p);
|
|
return out;
|
|
}
|
|
// ---------------- Rowwise ----------------
|
|
template <typename T>
|
|
inline void inplace_div_rowwise(utils::Matrix<T>& A, const utils::Vector<T>& v) {
|
|
detail::inplace_div_rowwise_serial(A,v);
|
|
}
|
|
|
|
template <typename T>
|
|
inline utils::Matrix<T> div_rowwise(const utils::Matrix<T>& A, const utils::Vector<T>& v) {
|
|
utils::Matrix<T> out = A;
|
|
inplace_div_rowwise(out, v);
|
|
return out;
|
|
}
|
|
|
|
// ---------------- Colwise ----------------
|
|
template <typename T>
|
|
inline void inplace_div_colwise(utils::Matrix<T>& A, const utils::Vector<T>& v) {
|
|
detail::inplace_div_colwise_serial(A,v);
|
|
}
|
|
|
|
template <typename T>
|
|
inline utils::Matrix<T> div_colwise(const utils::Matrix<T>& A, const utils::Vector<T>& v) {
|
|
utils::Matrix<T> out = A;
|
|
inplace_div_colwise(out, v);
|
|
return out;
|
|
}
|
|
|
|
} |