#!/usr/bin/ruby func regress(x, y, degree) { var A = Matrix.build(x.len, degree+1, {|i,j| x[i]**j }) var B = Matrix.column_vector(y...) ~((~A * A)**(-1) * ~A * B) } func poly(x) { 3*x**2 + 2*x + 1 } var coeff = regress( 10.of { _ }, 10.of { poly(_) }, 2 ) assert_eq(coeff, [[1,2,3]]) say "** Test passed!"