#include "base.h"
#include "base/consts.h"

namespace tbplas::diag {
void gaussian(const Eigen::VectorXd& x, const double& mu, const double& sigma, Eigen::VectorXd& gau_x)
{
    double part_a = 1.0 / (sigma * sqrt(tbplas::base::TWOPI));
    gau_x = exp(-pow((x.array() - mu), 2) / (2 * pow(sigma, 2))) * part_a;
}

void lorentzian(const Eigen::VectorXd& x, const double& mu, const double& sigma, Eigen::VectorXd& lor_x)
{
    double part_a = 1.0 / (tbplas::base::PI * sigma);
    lor_x = pow(sigma, 2) / (pow((x.array() - mu), 2) + pow(sigma, 2)) * part_a;
}
} // namespace tbplas::diag
