#!/usr/bin/env ruby require("gsl") include GSL m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58], [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85]) m.transpose! lq, tau = m.PTLQ_decomp p lq.class p tau.class b = Vector[1, 2, 3, 4] lq, tau, p = m.PTLQ_decomp p Linalg::PTLQ.solve_T(lq, tau, p, b) p Linalg::PTLQ.solve_T(m, b) p m.PTLQ_solve_T(b) p lq.PTLQ_solve_T(tau, p, b) p m.PTLQ_solve_T(b) bb = b.clone p Linalg::PTLQ.solve_T(lq, tau, p, bb) bb = b.clone p Linalg::PTLQ.solve_T(m, bb) bb = b.clone p m.PTLQ_solve_T(b) bb = b.clone p lq.PTLQ_solve_T(tau, p, bb) bb = b.clone p m.PTLQ_solve_T(bb) bb = b.clone p lq.class p lq.solve_T(tau, p, bb) q, l, tau, p = m.PTLQ_decomp2 p q.class p l.class p Linalg::PTLQ.LQsolve_T(q, l, p, b) bb = b.clone lq.svx_T(tau, p, bb) p bb bb = b.clone m.PTLQ_svx_T(bb) p bb