NumCpp  2.5.1
A Templatized Header Only C++ Implementation of the Python NumPy Library
lstsq.hpp
Go to the documentation of this file.
1 #pragma once
29 
32 #include "NumCpp/NdArray.hpp"
33 
34 namespace nc
35 {
36  namespace linalg
37  {
38  //============================================================================
39  // Method Description:
58  template<typename dtype>
59  NdArray<double> lstsq(const NdArray<dtype>& inA, const NdArray<dtype>& inB, double inTolerance = 1e-12)
60  {
62 
63  SVD svdSolver(inA.template astype<double>());
64  const double threshold = inTolerance * svdSolver.s().front();
65 
66  return svdSolver.solve(inB.template astype<double>(), threshold);
67  }
68  } // namespace linalg
69 } // namespace nc
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition: StaticAsserts.hpp:37
const_reference front() const noexcept
Definition: NdArrayCore.hpp:2933
Definition: SVDClass.hpp:48
const NdArray< double > & s() noexcept
Definition: SVDClass.hpp:101
NdArray< double > solve(const NdArray< double > &inInput, double inThresh=-1.0)
Definition: SVDClass.hpp:116
constexpr double e
eulers number
Definition: Constants.hpp:41
NdArray< double > lstsq(const NdArray< dtype > &inA, const NdArray< dtype > &inB, double inTolerance=1e-12)
Definition: lstsq.hpp:59
Definition: Coordinate.hpp:45