Top | ![]() |
![]() |
![]() |
![]() |
Functions
Description
This object defines the functions for allocating and accessing vectors. Also includes several vector operations.
Functions
ncm_vector_new ()
NcmVector *
ncm_vector_new (gsize n
);
This function allocates memory for a new NcmVector of double
with n
components.
ncm_vector_new_full ()
NcmVector * ncm_vector_new_full (gdouble *d
,gsize size
,gsize stride
,gpointer pdata
,GDestroyNotify pfree
);
This function returns a NcmVector of the array d
.
This function saves userdata
internally and frees it using free
when it is no longer necessary.
Parameters
d |
pointer to the first double allocated. |
[array][element-type double] |
size |
number of doubles allocated |
|
stride |
the step-size from one element to the next in physical memory, measured in units of double |
|
pdata |
descending data pointer. |
[allow-none] |
pfree |
free function to be called when destroying the vector. |
[scope notified][allow-none] |
ncm_vector_new_fftw ()
NcmVector *
ncm_vector_new_fftw (guint size
);
This function allocates memory for a new NcmVector of double
with n
components. It uses fftw_alloc_real in order to be used
by fftw* functions.
ncm_vector_new_gsl ()
NcmVector *
ncm_vector_new_gsl (gsl_vector *gv
);
This function saves gv
internally and frees it when it is no longer necessary.
The gv
vector must not be freed.
[skip]
ncm_vector_new_gsl_static ()
NcmVector *
ncm_vector_new_gsl_static (gsl_vector *gv
);
This function saves gv
internally and does not frees.
The gv
vector must be valid during the life of the created NcmVector.
[skip]
ncm_vector_new_array ()
NcmVector *
ncm_vector_new_array (GArray *a
);
This function saves a
internally and frees it when it is no longer necessary.
The a
array must not be freed.
ncm_vector_new_data_slice ()
NcmVector * ncm_vector_new_data_slice (gdouble *d
,const gsize size
,const gsize stride
);
This function returns a NcmVector of the array d
allocated using g_slice function.
This function saves a
internally and frees it when it is no longer necessary.
The a
vector must not be freed.
ncm_vector_new_data_malloc ()
NcmVector * ncm_vector_new_data_malloc (gdouble *d
,const gsize size
,const gsize stride
);
This function returns a NcmVector of the array d
allocated using malloc.
It saves d
internally and frees it when it is no longer necessary.
ncm_vector_new_data_static ()
NcmVector * ncm_vector_new_data_static (gdouble *d
,const gsize size
,const gsize stride
);
This function returns a NcmVector of the array d
.
The memory allocated is kept during all time life of the object and
must not be freed during this period.
ncm_vector_new_data_dup ()
NcmVector * ncm_vector_new_data_dup (gdouble *d
,const gsize size
,const gsize stride
);
This function returns a NcmVector of the array d
.
It allocate a new vector and copy the contents of d
into it.
ncm_vector_new_variant ()
NcmVector *
ncm_vector_new_variant (GVariant *var
);
This function convert a GVariant array to a NcmVector allocating new memory for the vector.
ncm_vector_ref ()
NcmVector *
ncm_vector_ref (NcmVector *cv
);
This function increses the reference count of the vector cv
.
ncm_vector_const_ref ()
const NcmVector *
ncm_vector_const_ref (const NcmVector *cv
);
This function increses the reference count of the constant vector cv
.
ncm_vector_const_new_variant ()
const NcmVector *
ncm_vector_const_new_variant (GVariant *var
);
This function convert a GVariant array to a NcmVector. Since it returns
a constant NcmVector it uses the same memory of var
.
ncm_vector_const_new_data ()
const NcmVector * ncm_vector_const_new_data (const gdouble *d
,const gsize size
,const gsize stride
);
This function returns a constant NcmVector of the array d
.
The memory allocated is kept during all time life of the object and
must not be freed during this period.
ncm_vector_get_subvector ()
NcmVector * ncm_vector_get_subvector (NcmVector *cv
,const gsize k
,const gsize size
);
This function returns a NcmVector which is a subvector of the vector cv
.
The start of the new vector is the component k
from the original vector cv
.
The new vector has size
elements.
ncm_vector_get_subvector_stride ()
NcmVector * ncm_vector_get_subvector_stride (NcmVector *cv
,const gsize k
,const gsize size
,const gsize stride
);
This function returns a NcmVector which is a subvector of the vector cv
.
The start of the new vector is the component k
from the original vector cv
.
The new vector has size
elements.
ncm_vector_get_variant ()
GVariant *
ncm_vector_get_variant (const NcmVector *v
);
Convert v
to a GVariant of the type "ad" without destroying the
original vector v
;
ncm_vector_peek_variant ()
GVariant *
ncm_vector_peek_variant (const NcmVector *v
);
Convert v
to a GVariant of the type "ad" using the same memory space.
The vector v
should not be modified during the variant existance.
If the vector has stride != 1 then ncm_vector_get_variant()
is called.
ncm_vector_log_vals ()
void ncm_vector_log_vals (const NcmVector *v
,const gchar *prestr
,const gchar *format
,gboolean cr
);
Log the vector values using prestr
and format
.
ncm_vector_log_vals_avpb ()
void ncm_vector_log_vals_avpb (const NcmVector *v
,const gchar *prestr
,const gchar *format
,const gdouble a
,const gdouble b
);
Log the vector values ($a\vec{v}+b$) using prestr
and format
.
ncm_vector_log_vals_func ()
void ncm_vector_log_vals_func (const NcmVector *v
,const gchar *prestr
,const gchar *format
,NcmVectorCompFunc f
,gpointer user_data
);
Log the vector values (f(\vec{v}_i)$) using prestr
and format
.
ncm_vector_set_from_variant ()
void ncm_vector_set_from_variant (NcmVector *cv
,GVariant *var
);
Sets the values of cv
using the variant var
. This function fails
if cv
and var
differ in size.
ncm_vector_dnrm2 ()
gdouble
ncm_vector_dnrm2 (const NcmVector *cv
);
Calculates the Euclidean norm of the vector cv
, i.e.,
$\vert\text{cv}\vert_2$.
ncm_vector_axpy ()
void ncm_vector_axpy (NcmVector *cv1
,const gdouble alpha
,const NcmVector *cv2
);
Performs the operation $y = \alpha x + y$.
ncm_vector_cmp ()
void ncm_vector_cmp (NcmVector *cv1
,const NcmVector *cv2
);
Performs a comparison, component-wise, of the two vectors and
puts the weighted difference in cv1
.
ncm_vector_sub_round_off ()
void ncm_vector_sub_round_off (NcmVector *cv1
,const NcmVector *cv2
);
Estimate the round-off error component wise in the
subtraction of cv1
by cv2
.
ncm_vector_reciprocal ()
void
ncm_vector_reciprocal (NcmVector *cv
);
Calculates the reciprocal of cv1
.
ncm_vector_sum_cpts ()
gdouble
ncm_vector_sum_cpts (const NcmVector *cv
);
Calculates the sum of the components.
ncm_vector_const_new_gsl ()
const NcmVector *
ncm_vector_const_new_gsl (const gsl_vector *v
);
This function converts v
into a constant NcmVector.
[skip]
ncm_vector_set ()
void ncm_vector_set (NcmVector *cv
,const guint i
,const gdouble val
);
This function sets the value of the i
-th component of the vector cv
to val
.
ncm_vector_fast_set ()
void ncm_vector_fast_set (NcmVector *cv
,const guint i
,const gdouble val
);
This function sets the value of the i
-th component of the vector cv
to val
assuming stride == 1.
ncm_vector_addto ()
void ncm_vector_addto (NcmVector *cv
,const guint i
,const gdouble val
);
This function adds val
to the value of the i
-th component of cv
.
ncm_vector_fast_addto ()
void ncm_vector_fast_addto (NcmVector *cv
,const guint i
,const gdouble val
);
This function adds val
to the value of the i
-th component of cv
assuming stride == 1.
ncm_vector_subfrom ()
void ncm_vector_subfrom (NcmVector *cv
,const guint i
,const gdouble val
);
This function subtracts val
from the value of the i
-th component of cv
.
ncm_vector_fast_subfrom ()
void ncm_vector_fast_subfrom (NcmVector *cv
,const guint i
,const gdouble val
);
This function subtracts val
from the value of the i
-th component of cv
assuming stride == 1.
ncm_vector_mulby ()
void ncm_vector_mulby (NcmVector *cv
,const guint i
,const gdouble val
);
This function multiplies the i
-th component by val
.
ncm_vector_fast_mulby ()
void ncm_vector_fast_mulby (NcmVector *cv
,const guint i
,const gdouble val
);
This function multiplies the i
-th component by val
assuming stride == 1.
ncm_vector_set_all ()
void ncm_vector_set_all (NcmVector *cv
,const gdouble val
);
This function sets all the components of the vector cv
to the value val
.
ncm_vector_set_data ()
void ncm_vector_set_data (NcmVector *cv
,const gdouble *array
,guint size
);
This function sets all the components of the vector cv
using the data array array
,
size
must match the vector size.
Parameters
cv |
a NcmVector. |
|
array |
a pointer to a double array. |
[array length=size][element-type double] |
size |
data array size |
ncm_vector_set_array ()
void ncm_vector_set_array (NcmVector *cv
,GArray *array
);
This function sets all the components of the vector cv
using the data array array
,
array->len
must match the vector size.
ncm_vector_scale ()
void ncm_vector_scale (NcmVector *cv
,const gdouble val
);
This function multiplies the components of the vector cv
by the constant factor val
.
ncm_vector_add_constant ()
void ncm_vector_add_constant (NcmVector *cv
,const gdouble val
);
This function adds the constant val
to all components.
ncm_vector_mul ()
void ncm_vector_mul (NcmVector *cv1
,const NcmVector *cv2
);
This function multiplies the components of the vector cv1
by the components of the vector cv2
.
The two vectors must have the same length.
ncm_vector_div ()
void ncm_vector_div (NcmVector *cv1
,const NcmVector *cv2
);
This function divides the components of the vector cv1
by the components of the vector cv2
.
The two vectors must have the same length.
ncm_vector_add ()
void ncm_vector_add (NcmVector *cv1
,const NcmVector *cv2
);
This function adds the components of the vector cv2
to the components of the vector cv1
.
The two vectors must have the same length.
ncm_vector_sub ()
void ncm_vector_sub (NcmVector *cv1
,const NcmVector *cv2
);
This function subtracts the components of the vector cv2
to the components of the vector cv1
.
The two vectors must have the same length.
ncm_vector_set_zero ()
void
ncm_vector_set_zero (NcmVector *cv
);
This function sets all the components of the vector cv
to zero.
ncm_vector_memcpy ()
void ncm_vector_memcpy (NcmVector *cv1
,const NcmVector *cv2
);
This function copies the components of the vector cv2
into the vector cv1
.
The two vectors must have the same length.
ncm_vector_memcpy2 ()
void ncm_vector_memcpy2 (NcmVector *cv1
,const NcmVector *cv2
,const guint cv1_start
,const guint cv2_start
,const guint size
);
This function copies size
components of cv2
, counting from cv2_start
,
to the vector cv1
, starting from the cv1_start
component.
It is useful for vectors with different sizes.
ncm_vector_get_max ()
gdouble
ncm_vector_get_max (const NcmVector *cv
);
Gets the maximum value of the vector components.
ncm_vector_get_min ()
gdouble
ncm_vector_get_min (const NcmVector *cv
);
Gets the minimum value of the vector components.
ncm_vector_get_max_index ()
gsize
ncm_vector_get_max_index (const NcmVector *cv
);
Gets the index of the maximal vector component.
ncm_vector_get_min_index ()
gsize
ncm_vector_get_min_index (const NcmVector *cv
);
Gets the index of the minimal vector component.
ncm_vector_get_minmax ()
void ncm_vector_get_minmax (const NcmVector *cv
,gdouble *min
,gdouble *max
);
Gets the minimum/maximum value of the vector components.
ncm_vector_get_absminmax ()
void ncm_vector_get_absminmax (const NcmVector *cv
,gdouble *absmin
,gdouble *absmax
);
Gets the minimum/maximum absolute value of the vector components.
ncm_vector_dup ()
NcmVector *
ncm_vector_dup (const NcmVector *cv
);
This function copies the elements of the constant vector cv
into a new NcmVector.
ncm_vector_substitute ()
void ncm_vector_substitute (NcmVector **cv
,NcmVector *nv
,gboolean check_size
);
This function substitute the vector *cv
by nv
, it will unref *cv
first.
If check_size
is TRUE then the function asserts that both vectors have the
same size.
ncm_vector_free ()
void
ncm_vector_free (NcmVector *cv
);
Atomically decrements the reference count of cv
by one. If the reference count drops to 0,
all memory allocated by cv
is released.
ncm_vector_clear ()
void
ncm_vector_clear (NcmVector **cv
);
Atomically decrements the reference count of cv
by one. If the reference count drops to 0,
all memory allocated by cv
is released. The pointer is set to NULL.
ncm_vector_const_free ()
void
ncm_vector_const_free (const NcmVector *cv
);
Atomically decrements the reference count of cv
by one. If the reference count drops to 0,
all memory allocated by cv
is released.
Property Details
The “values”
property
“values” GVariant *
values.
Flags: Read / Write
Allowed values: GVariant<a*>
Default value: NULL