NumCpp  2.7.0
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:
57  template<typename dtype>
58  NdArray<double> lstsq(const NdArray<dtype>& inA, const NdArray<dtype>& inB, double inTolerance = 1e-12)
59  {
61 
62  SVD svdSolver(inA.template astype<double>());
63  const double threshold = inTolerance * svdSolver.s().front();
64 
65  return svdSolver.solve(inB.template astype<double>(), threshold);
66  }
67  } // namespace linalg
68 } // namespace nc
#define STATIC_ASSERT_ARITHMETIC(dtype)
Definition: StaticAsserts.hpp:37
const_reference front() const noexcept
Definition: NdArrayCore.hpp:2772
Definition: SVDClass.hpp:48
const NdArray< double > & s() noexcept
Definition: SVDClass.hpp:97
NdArray< double > solve(const NdArray< double > &inInput, double inThresh=-1.0)
Definition: SVDClass.hpp:111
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:58
Definition: Coordinate.hpp:45