0.906247654231265,0.0680010921787471,0.397506368579343,
0.836464448831975,0.460515640443191,0.927493635797873,
0.219096470857039,0.300599258393049,0.561568872537464,
0.20270675746724,0.303500573383644,0.967535280855373);
IntPtr ldx = new IntPtr(3);
IntPtr n = new IntPtr(3);
IntPtr p = new IntPtr(4);
DoublePtr tol = new DoublePtr(1e-07);
IntPtr k = new IntPtr(new int[1]);
DoublePtr qraux = new DoublePtr(new double[p.unwrap()]);
IntPtr jpvt = new IntPtr(new int[] { 1, 2, 3, 4 });
DoublePtr work = new DoublePtr(new double[2*p.unwrap()]);
// check some sub-calcs first
double nrmxl = (Double)dnrm2.invoke(null, n, x, new IntPtr(1));
assertThat(nrmxl, closeTo(0.99192755400699972, 1e-5));
dqrdc2.invoke(null, x, ldx, n, p, tol, k, qraux, jpvt, work);