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_is_finite ()
gboolean
ncm_vector_is_finite (const NcmVector *cv
);
Tests all entries, if one or more are not finite return FALSE. Otherwise returns TRUE;
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.
Property Details
The “values”
property
“values” GVariant *
values.
Flags: Read / Write
Allowed values: GVariant<a*>
Default value: NULL