SCM sqmatrix2scm(sqmatrix m) { SCM obj; sqmatrix *mp; CHK_MALLOC(mp, sqmatrix, 1); *mp = create_sqmatrix(m.p); sqmatrix_copy(*mp, m); NEWCELL_SMOB(obj, sqmatrix, mp); return obj; }
/* return a Scheme object *copy* of m */ SCM evectmatrix2scm(evectmatrix m) { SCM obj; evectmatrix *mp; CHK_MALLOC(mp, evectmatrix, 1); *mp = create_evectmatrix(m.N, m.c, m.p, m.localN, m.Nstart, m.allocN); evectmatrix_copy(*mp, m); NEWCELL_SMOB(obj, evectmatrix, mp); return obj; }
/* return a Scheme object *copy* of the given columns of m */ SCM evectmatrix_slice2scm(evectmatrix m, int p_start, int p) { SCM obj; evectmatrix *mp; CHECK(p_start >= 0 && p_start + p <= m.p && p >= 0, "invalid arguments in evectmatrix_slice2scm"); CHK_MALLOC(mp, evectmatrix, 1); *mp = create_evectmatrix(m.N, m.c, p, m.localN, m.Nstart, m.allocN); evectmatrix_copy_slice(*mp, m, 0, p_start, p); NEWCELL_SMOB(obj, evectmatrix, mp); return obj; }
SCM field2scm(field_smob *pf) { SCM obj; NEWCELL_SMOB(obj, field_smob, pf); return obj; }