X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fdesign-matrix.c;h=4e6ccf17dc77a21fb39e30f093f5e3a5c8786c25;hb=08a82716eb6aa8eda2a03a66c7c2e98de882dcf5;hp=dff79de11ea7cb142c930571777941d01053efab;hpb=f5c108becd49d78f4898cab11352291f5689d24e;p=pspp-builds.git diff --git a/src/math/design-matrix.c b/src/math/design-matrix.c index dff79de1..4e6ccf17 100644 --- a/src/math/design-matrix.c +++ b/src/math/design-matrix.c @@ -1,21 +1,18 @@ -/* PSPP - Creates design-matrices. +/* PSPP - a program for statistical analysis. Copyright (C) 2005 Free Software Foundation, Inc. - Written by Jason H Stover . - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ + along with this program. If not, see . */ /* Create design matrices for procedures that need them. @@ -29,7 +26,6 @@ #include #include -#include #include #include #include @@ -39,6 +35,8 @@ #include #include +#include "xalloc.h" + #define DM_COLUMN_NOT_FOUND -1 #define DM_INDEX_NOT_FOUND -3 @@ -193,3 +191,24 @@ design_matrix_set_numeric (struct design_matrix *dm, size_t row, assert (col != DM_COLUMN_NOT_FOUND); gsl_matrix_set (dm->m, row, col, val->f); } + +struct design_matrix * +design_matrix_clone (const struct design_matrix *dm) +{ + struct design_matrix *result; + size_t i; + + assert (dm != NULL); + result = xmalloc (sizeof *result); + result->vars = xnmalloc (dm->n_vars, sizeof *dm->vars); + result->n_vars = dm->n_vars; + result->m = gsl_matrix_alloc (dm->m->size1, dm->m->size2); + + gsl_matrix_memcpy (result->m, dm->m); + for (i = 0; i < result->n_vars; i++) + { + result->vars[i] = dm->vars[i]; + } + return result; +} +