N_Vector N_VClone_Serial(N_Vector w) { N_Vector v; realtype *data; long int length; v = N_VCloneEmpty_Serial(w); if (v == NULL) return(NULL); length = NV_LENGTH_S(w); /* Create data */ if (length > 0) { /* Allocate memory */ #if HAVE_MEMALIGN if (posix_memalign((void**)&data, 64, length*sizeof(realtype)) != 0) { N_VDestroy_Serial(v);return(NULL); } #else data = (realtype *) malloc(length * sizeof(realtype)); #endif if(data == NULL) {N_VDestroy_Serial(v);return(NULL);} /* Attach data */ NV_OWN_DATA_S(v) = TRUE; NV_DATA_S(v) = data; } return(v); }
N_Vector N_VClone_Serial(N_Vector w) { N_Vector v; realtype *data; long int length; v = NULL; v = N_VCloneEmpty_Serial(w); if (v == NULL) return(NULL); length = NV_LENGTH_S(w); /* Create data */ if (length > 0) { /* Allocate memory */ data = NULL; data = (realtype *) malloc(length * sizeof(realtype)); if(data == NULL) { N_VDestroy_Serial(v); return(NULL); } /* Attach data */ NV_OWN_DATA_S(v) = TRUE; NV_DATA_S(v) = data; } return(v); }
void N_VDestroy_Serial(N_Vector v) { if (NV_OWN_DATA_S(v) == TRUE) free(NV_DATA_S(v)); free(v->content); free(v->ops); free(v); }
void N_VDestroy_Serial(N_Vector v) { if (NV_OWN_DATA_S(v) == TRUE) { free(NV_DATA_S(v)); NV_DATA_S(v) = NULL; } free(v->content); v->content = NULL; free(v->ops); v->ops = NULL; free(v); v = NULL; return; }
N_Vector N_VMake_Serial(long int length, realtype *v_data) { N_Vector v; v = N_VNewEmpty_Serial(length); if (v == NULL) return(NULL); if (length > 0) { /* Attach data */ NV_OWN_DATA_S(v) = FALSE; NV_DATA_S(v) = v_data; } return(v); }