NumCpp  2.1.0
A C++ implementation of the Python Numpy library
lstsq.hpp
Go to the documentation of this file.
1 #pragma once
30 
33 #include "NumCpp/NdArray.hpp"
34 
35 namespace nc
36 {
37  namespace linalg
38  {
39  //============================================================================
40  // Method Description:
59  template<typename dtype>
60  NdArray<double> lstsq(const NdArray<dtype>& inA, const NdArray<dtype>& inB, double inTolerance = 1e-12)
61  {
63 
64  SVD svdSolver(inA.template astype<double>());
65  const double threshold = inTolerance * svdSolver.s().front();
66 
67  return svdSolver.solve(inB.template astype<double>(), threshold);
68  }
69  } // namespace linalg
70 } // namespace nc
StaticAsserts.hpp
nc::linalg::lstsq
NdArray< double > lstsq(const NdArray< dtype > &inA, const NdArray< dtype > &inB, double inTolerance=1e-12)
Definition: lstsq.hpp:60
STATIC_ASSERT_ARITHMETIC
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition: StaticAsserts.hpp:38
nc::linalg::SVD::s
const NdArray< double > & s() noexcept
Definition: SVDClass.hpp:102
nc::linalg::SVD
Definition: SVDClass.hpp:48
nc::NdArray< double >
nc::NdArray::front
value_type front() const noexcept
Definition: NdArrayCore.hpp:2789
nc::constants::e
constexpr double e
eulers number
Definition: Constants.hpp:42
NdArray.hpp
nc
Definition: Coordinate.hpp:45
nc::linalg::SVD::solve
NdArray< double > solve(const NdArray< double > &inInput, double inThresh=-1.0)
Definition: SVDClass.hpp:117
SVDClass.hpp