 }
 
 template<typename T>
-Array<T> solve_rect(const Array<T> &a, const Array<T> &b, const af_solve_t options)
+Array<T> leastSquares(const Array<T> &a, const Array<T> &b)
 {
     int M = a.dims()[0];
     int N = a.dims()[1];

Array<T> solve(const Array<T> &a, const Array<T> &b, const af_solve_t options)
{
    if(a.dims()[0] == a.dims()[1]) {
        return solve_square<T>(a, b, options);
    } else {
        return solve_rect<T>(a, b, options);
    }
}


MQR_FUNC(mqr , cdouble, Zunmqr)

template<typename T>
Array<T> generalSolve(const Array<T> &a, const Array<T> &b)
{
    int M = a.dims()[0];
    int N = a.dims()[1];
