dmlfw (Daniyal Machine Learning Framework)
Modules
Vector Types and Utilities

Core vector data structures and utility functions. More...

Collaboration diagram for Vector Types and Utilities:

Modules

 String Vectors
 Opaque vector data structures and utilities for string values.
 
 Double Precision Vectors
 Opaque vector data structures and utilities for double precision floating-point values.
 
typedef struct __dmlfw_column_vec_double dmlfw_column_vec_double
 Opaque structure representing a column vector of doubles.
 
typedef struct __dmlfw_row_vec_double dmlfw_row_vec_double
 Opaque structure representing a row vector of doubles.
 
void dmlfw_column_vec_double_copy (dmlfw_column_vec_double *target_vector, dmlfw_column_vec_double *source_vector)
 Copies the contents of one column vector to another.
 
dmlfw_row_vec_doubledmlfw_row_vec_double_create_new (dimension_t columns)
 Creates a new row vector of specified size.
 
void dmlfw_row_vec_double_destroy (dmlfw_row_vec_double *vector)
 Destroys a row vector and frees its memory.
 
double dmlfw_row_vec_double_get (dmlfw_row_vec_double *vector, index_t index)
 Retrieves the value of an element in a row vector.
 
void dmlfw_row_vec_double_set (dmlfw_row_vec_double *vector, index_t index, double value)
 Sets the value of an element in a row vector.
 
dmlfw_row_vec_doubledmlfw_row_vec_double_create_new_filled (dimension_t columns, double value, dmlfw_row_vec_double *vector)
 Creates or fills a row vector with a specified value.
 
dmlfw_column_vec_doubledmlfw_row_vec_double_transpose (dmlfw_row_vec_double *vector, dmlfw_column_vec_double *transposed_vector)
 Transposes a row vector into a column vector.
 
dimension_t dmlfw_row_vec_double_get_size (dmlfw_row_vec_double *vector)
 Returns the number of elements in a row vector.
 
double dmlfw_row_vec_double_get_mean (dmlfw_row_vec_double *vector)
 Computes the mean of all elements in a row vector.
 
void dmlfw_row_vec_double_to_csv (dmlfw_row_vec_double *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
 Exports a row vector to a CSV file with a header.
 
dmlfw_row_vec_doubledmlfw_row_vec_double_from_csv (const char *csv_file_name, dmlfw_row_vec_double *vector, dmlfw_row_vec_string **header)
 Loads a row vector from a CSV file.
 
void dmlfw_row_vec_double_copy (dmlfw_row_vec_double *target_vector, dmlfw_row_vec_double *source_vector)
 Copies the contents of one row vector to another.
 
dmlfw_column_vec_doubledmlfw_column_vec_double_create_new (dimension_t rows)
 Creates a new column vector of specified size.
 
void dmlfw_column_vec_double_destroy (dmlfw_column_vec_double *vector)
 Destroys a column vector and frees its memory.
 
double dmlfw_column_vec_double_get (dmlfw_column_vec_double *vector, index_t index)
 Retrieves the value of an element in a column vector.
 
void dmlfw_column_vec_double_set (dmlfw_column_vec_double *vector, index_t index, double value)
 Sets the value of an element in a column vector.
 
dmlfw_column_vec_doubledmlfw_column_vec_double_create_new_filled (dimension_t rows, double value, dmlfw_column_vec_double *vector)
 Creates or fills a column vector with a specified value.
 
dmlfw_row_vec_doubledmlfw_column_vec_double_transpose (dmlfw_column_vec_double *vector, dmlfw_row_vec_double *transposed_vector)
 Transposes a column vector into a row vector.
 
dimension_t dmlfw_column_vec_double_get_size (dmlfw_column_vec_double *vector)
 Returns the number of elements in a column vector.
 
double dmlfw_column_vec_double_get_mean (dmlfw_column_vec_double *vector)
 Computes the mean of all elements in a column vector.
 
void dmlfw_column_vec_double_to_csv (dmlfw_column_vec_double *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
 Exports a column vector to a CSV file with a header.
 
dmlfw_column_vec_doubledmlfw_column_vec_double_from_csv (const char *csv_file_name, dmlfw_column_vec_double *vector, dmlfw_row_vec_string **header)
 Loads a column vector from a one-column CSV file.
 
typedef struct __dmlfw_row_vec_string dmlfw_row_vec_string
 Opaque structure representing a row vector of strings.
 
typedef struct __dmlfw_column_vec_string dmlfw_column_vec_string
 Opaque structure representing a column vector of strings.
 
dmlfw_row_vec_stringdmlfw_row_vec_string_create_new (dimension_t columns)
 Creates a new row vector of strings of specified length.
 
void dmlfw_row_vec_string_destroy (dmlfw_row_vec_string *vector)
 Destroys a row vector of strings and frees its memory.
 
dmlfw_row_vec_stringdmlfw_row_vec_string_from_csv (const char *csv_file_name, dmlfw_row_vec_string *vector, dmlfw_row_vec_string **header)
 Loads a row vector of strings from a CSV file.
 
void dmlfw_row_vec_string_to_csv (dmlfw_row_vec_string *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
 Exports a row vector of strings to a CSV file with a header.
 
void dmlfw_row_vec_string_get (dmlfw_row_vec_string *vector, index_t index, char **string)
 Retrieves a string element from a row vector by index.
 
void dmlfw_row_vec_string_set (dmlfw_row_vec_string *vector, index_t index, char *string)
 Sets a string element in the row vector.
 
dimension_t dmlfw_row_vec_string_get_size (dmlfw_row_vec_string *vector)
 Returns the size (number of elements) in a row vector.
 
dmlfw_column_vec_stringdmlfw_row_vec_string_transpose (dmlfw_row_vec_string *vector, dmlfw_column_vec_string *transposed_vector)
 Transposes a row vector of strings into a column vector.
 
dmlfw_column_vec_stringdmlfw_column_vec_string_create_new (dimension_t rows)
 Creates a new column vector of strings of specified length.
 
void dmlfw_column_vec_string_destroy (dmlfw_column_vec_string *vector)
 Destroys a column vector of strings and frees its memory.
 
dmlfw_column_vec_stringdmlfw_column_vec_string_from_csv (const char *csv_file_name, dmlfw_column_vec_string *vector, dmlfw_row_vec_string **header)
 Loads a column vector of strings from a CSV file.
 
void dmlfw_column_vec_string_to_csv (dmlfw_column_vec_string *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
 Exports a column vector of strings to a CSV file with a header.
 
void dmlfw_column_vec_string_get (dmlfw_column_vec_string *vector, index_t index, char **string)
 Retrieves a string element from a column vector by index.
 
void dmlfw_column_vec_string_set (dmlfw_column_vec_string *vector, index_t index, char *string)
 Sets a string element in the column vector.
 
dimension_t dmlfw_column_vec_string_get_size (dmlfw_column_vec_string *vector)
 Returns the size (number of elements) in a column vector.
 
dmlfw_row_vec_stringdmlfw_column_vec_string_transpose (dmlfw_column_vec_string *vector, dmlfw_row_vec_string *transposed_vector)
 Transposes a column vector of strings into a row vector.
 

Detailed Description

Core vector data structures and utility functions.

Typedef Documentation

◆ dmlfw_column_vec_double

typedef struct __dmlfw_column_vec_double dmlfw_column_vec_double

Opaque structure representing a column vector of doubles.

The internal details are hidden. Use the provided API functions to create, manipulate, and destroy instances.

◆ dmlfw_column_vec_string

typedef struct __dmlfw_column_vec_string dmlfw_column_vec_string

Opaque structure representing a column vector of strings.

The internal details are hidden. Use the provided API functions to create, manipulate, and destroy instances.

◆ dmlfw_row_vec_double

typedef struct __dmlfw_row_vec_double dmlfw_row_vec_double

Opaque structure representing a row vector of doubles.

The internal details are hidden. Use the provided API functions to create, manipulate, and destroy instances.

◆ dmlfw_row_vec_string

typedef struct __dmlfw_row_vec_string dmlfw_row_vec_string

Opaque structure representing a row vector of strings.

The internal details are hidden. Use the provided API functions to create, manipulate, and destroy instances.

Function Documentation

◆ dmlfw_column_vec_double_copy()

void dmlfw_column_vec_double_copy ( dmlfw_column_vec_double target_vector,
dmlfw_column_vec_double source_vector 
)

Copies the contents of one column vector to another.

Assumptions:

  • Both vectors must be non-NULL and have the same size.

Error Cases:

  • NULL target or source vectors.
  • Size mismatch between vectors.
Parameters
target_vector[in,out] Destination column vector (must not be NULL).
source_vector[in] Source column vector (must not be NULL).
Note
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error copying column vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_get_error_string(char *error_string, uint32_t size)
Copies the last error message into the provided character buffer.
uint8_t dmlfw_error(void)
Checks if the last framework call resulted in an error.
void dmlfw_get_debug_string(char *debug_string, uint32_t size)
Copies detailed debug information about the last error into the provided character buffer.
void dmlfw_column_vec_double_copy(dmlfw_column_vec_double *target_vector, dmlfw_column_vec_double *source_vector)
Copies the contents of one column vector to another.

◆ dmlfw_column_vec_double_create_new()

dmlfw_column_vec_double * dmlfw_column_vec_double_create_new ( dimension_t  rows)

Creates a new column vector of specified size.

Parameters
size[in] Number of elements (must be > 0).
Returns
Pointer to new vector, or NULL if an error occurred.
Note
Caller must free with dmlfw_column_vec_double_destroy().
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating column vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
struct __dmlfw_column_vec_double dmlfw_column_vec_double
Opaque structure representing a column vector of doubles.
Definition dmlfw_vec_double.h:83
dmlfw_column_vec_double * dmlfw_column_vec_double_create_new(dimension_t rows)
Creates a new column vector of specified size.
Examples
example_dmlfw_math_operations.c, example_dmlfw_model_accuracy_score.c, example_dmlfw_operations_double.c, and example_dmlfw_vec_double.c.

◆ dmlfw_column_vec_double_create_new_filled()

dmlfw_column_vec_double * dmlfw_column_vec_double_create_new_filled ( dimension_t  rows,
double  value,
dmlfw_column_vec_double vector 
)

Creates or fills a column vector with a specified value.

  • If vector is NULL → allocates new vector of size size and fills with value.
  • If vector exists and matches size → fills with value.
  • If size mismatches → sets error and returns NULL.
Parameters
size[in] Number of elements (must be > 0).
value[in] Value to assign to all elements.
vector[in,out] Optional existing vector to reuse, or NULL.
Returns
Pointer to valid vector on success, or NULL if an error occurred.
Note
Caller must free newly allocated vectors.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating filled vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_column_vec_double * dmlfw_column_vec_double_create_new_filled(dimension_t rows, double value, dmlfw_column_vec_double *vector)
Creates or fills a column vector with a specified value.

◆ dmlfw_column_vec_double_destroy()

void dmlfw_column_vec_double_destroy ( dmlfw_column_vec_double vector)

Destroys a column vector and frees its memory.

Parameters
vector[in] Pointer to the column vector, or NULL (no-op).

Usage example:

void dmlfw_column_vec_double_destroy(dmlfw_column_vec_double *vector)
Destroys a column vector and frees its memory.
Examples
example_dmlfw_linear_regression.c, example_dmlfw_math_operations.c, example_dmlfw_model_accuracy_score.c, example_dmlfw_operations_double.c, and example_dmlfw_vec_double.c.

◆ dmlfw_column_vec_double_from_csv()

dmlfw_column_vec_double * dmlfw_column_vec_double_from_csv ( const char *  csv_file_name,
dmlfw_column_vec_double vector,
dmlfw_row_vec_string **  header 
)

Loads a column vector from a one-column CSV file.

Expects a CSV file where:

  • First row is a single header string.
  • Each subsequent row contains one numeric value.
Parameters
csv_file_name[in] CSV file path (must not be NULL).
vector[in,out] Optional existing vector to reuse, or NULL.
header[out] New single-element row vector containing header string (must not be NULL).
Returns
Pointer to column vector, or NULL if an error occurred.
Note
Caller must destroy both the returned vector and header.
The header is always a row vector, even when representing a column vector's header.
If vector is provided, its size must match the number of data rows.

Error Cases:

  • Invalid parameters, invalid CSV format, or file operation failure → sets error status and returns NULL.
Note
Check errors using the centralized error API after calling this function.
See also
dmlfw_row_vec_string
dmlfw_vec_string.h

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string *header = NULL;
vec = dmlfw_column_vec_double_from_csv("data.csv", NULL, &header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error loading from CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_row_vec_string_destroy(dmlfw_row_vec_string *vector)
Destroys a row vector of strings and frees its memory.
dmlfw_column_vec_double * dmlfw_column_vec_double_from_csv(const char *csv_file_name, dmlfw_column_vec_double *vector, dmlfw_row_vec_string **header)
Loads a column vector from a one-column CSV file.
struct __dmlfw_row_vec_string dmlfw_row_vec_string
Opaque structure representing a row vector of strings.
Definition dmlfw_vec_string.h:82

◆ dmlfw_column_vec_double_get()

double dmlfw_column_vec_double_get ( dmlfw_column_vec_double vector,
index_t  index 
)

Retrieves the value of an element in a column vector.

Parameters
vector[in] Column vector (must not be NULL).
index[in] Zero-based index of the element.
Returns
Element value, or 0.0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
double val = dmlfw_column_vec_double_get(vec, 1);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error getting value: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
double dmlfw_column_vec_double_get(dmlfw_column_vec_double *vector, index_t index)
Retrieves the value of an element in a column vector.
Examples
example_dmlfw_operations_double.c.

◆ dmlfw_column_vec_double_get_mean()

double dmlfw_column_vec_double_get_mean ( dmlfw_column_vec_double vector)

Computes the mean of all elements in a column vector.

Parameters
vector[in] Column vector (must not be NULL).
Returns
Mean value, or 0.0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.
Examples
example_dmlfw_vec_double.c.

◆ dmlfw_column_vec_double_get_size()

dimension_t dmlfw_column_vec_double_get_size ( dmlfw_column_vec_double vector)

Returns the number of elements in a column vector.

Parameters
vector[in] Column vector (must not be NULL).
Returns
Number of elements, or 0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.

◆ dmlfw_column_vec_double_set()

void dmlfw_column_vec_double_set ( dmlfw_column_vec_double vector,
index_t  index,
double  value 
)

Sets the value of an element in a column vector.

Parameters
vector[in,out] Column vector (must not be NULL).
index[in] Zero-based index of the element.
value[in] Value to set.
Note
If index is out of bounds, error status is set.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error setting value: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_column_vec_double_set(dmlfw_column_vec_double *vector, index_t index, double value)
Sets the value of an element in a column vector.
Examples
example_dmlfw_math_operations.c, example_dmlfw_model_accuracy_score.c, example_dmlfw_operations_double.c, and example_dmlfw_vec_double.c.

◆ dmlfw_column_vec_double_to_csv()

void dmlfw_column_vec_double_to_csv ( dmlfw_column_vec_double vector,
const char *  csv_file_name,
dmlfw_row_vec_string header 
)

Exports a column vector to a CSV file with a header.

Parameters
vector[in] Column vector (must not be NULL).
csv_file_name[in] Output CSV file path (must not be NULL).
header[in] Single-element row vector of strings (must not be NULL).

Assumptions:

  • Header must have exactly one string element.
  • File is overwritten if it exists.

Error Cases:

  • Invalid parameters or file operation failure → sets error status, does nothing.
Note
The file will be overwritten if it exists.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.
See also
dmlfw_row_vec_string
dmlfw_vec_string.h

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string_set(header, 0, "values");
dmlfw_column_vec_double_to_csv(vec, "data.csv", header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error exporting to CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_column_vec_double_to_csv(dmlfw_column_vec_double *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
Exports a column vector to a CSV file with a header.
dmlfw_row_vec_string * dmlfw_row_vec_string_create_new(dimension_t columns)
Creates a new row vector of strings of specified length.
void dmlfw_row_vec_string_set(dmlfw_row_vec_string *vector, index_t index, char *string)
Sets a string element in the row vector.

◆ dmlfw_column_vec_double_transpose()

dmlfw_row_vec_double * dmlfw_column_vec_double_transpose ( dmlfw_column_vec_double vector,
dmlfw_row_vec_double transposed_vector 
)

Transposes a column vector into a row vector.

Parameters
vector[in] Column vector (must not be NULL).
transposed_vector[in,out] Optional existing row vector to reuse, or NULL.
Returns
Pointer to row vector, or NULL if an error occurred.
Note
Caller must free newly allocated row vectors.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error transposing to row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
struct __dmlfw_row_vec_double dmlfw_row_vec_double
Opaque structure representing a row vector of doubles.
Definition dmlfw_vec_double.h:92
dmlfw_row_vec_double * dmlfw_column_vec_double_transpose(dmlfw_column_vec_double *vector, dmlfw_row_vec_double *transposed_vector)
Transposes a column vector into a row vector.
See also
dmlfw_row_vec_double_transpose

◆ dmlfw_column_vec_string_create_new()

dmlfw_column_vec_string * dmlfw_column_vec_string_create_new ( dimension_t  rows)

Creates a new column vector of strings of specified length.

Parameters
rows[in] Number of string elements (must be > 0).
Returns
Pointer to a new column vector, or NULL on error.
Note
Caller must free with dmlfw_column_vec_string_destroy().

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating column vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_column_vec_string * dmlfw_column_vec_string_create_new(dimension_t rows)
Creates a new column vector of strings of specified length.
struct __dmlfw_column_vec_string dmlfw_column_vec_string
Opaque structure representing a column vector of strings.
Definition dmlfw_vec_string.h:91

◆ dmlfw_column_vec_string_destroy()

void dmlfw_column_vec_string_destroy ( dmlfw_column_vec_string vector)

Destroys a column vector of strings and frees its memory.

Parameters
vector[in] Pointer to the column vector, or NULL (no-op).

Usage example:

void dmlfw_column_vec_string_destroy(dmlfw_column_vec_string *vector)
Destroys a column vector of strings and frees its memory.

◆ dmlfw_column_vec_string_from_csv()

dmlfw_column_vec_string * dmlfw_column_vec_string_from_csv ( const char *  csv_file_name,
dmlfw_column_vec_string vector,
dmlfw_row_vec_string **  header 
)

Loads a column vector of strings from a CSV file.

Parameters
csv_file_name[in] Path to CSV file (must not be NULL).
vector[in,out] Optional existing vector to reuse, or NULL.
header[out] Output pointer to a newly allocated row vector header.
Returns
Pointer to the loaded column vector, or NULL on error.
Note
Caller must free both the returned vector and the header.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string *header = NULL;
vec = dmlfw_column_vec_string_from_csv("data.csv", NULL, &header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error loading from CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_column_vec_string * dmlfw_column_vec_string_from_csv(const char *csv_file_name, dmlfw_column_vec_string *vector, dmlfw_row_vec_string **header)
Loads a column vector of strings from a CSV file.

◆ dmlfw_column_vec_string_get()

void dmlfw_column_vec_string_get ( dmlfw_column_vec_string vector,
index_t  index,
char **  string 
)

Retrieves a string element from a column vector by index.

Parameters
vector[in] Column vector (must not be NULL).
index[in] Zero-based index.
string[out] Pointer to receive the string element.
Note
The returned string pointer is managed by the vector and must not be freed by the caller.

Usage example:

char *val = NULL;
if (dmlfw_error()) {
char err[512], dbg[512];
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error retrieving value: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
printf("Element at index 0: %s\n", val);
void dmlfw_column_vec_string_get(dmlfw_column_vec_string *vector, index_t index, char **string)
Retrieves a string element from a column vector by index.

◆ dmlfw_column_vec_string_get_size()

dimension_t dmlfw_column_vec_string_get_size ( dmlfw_column_vec_string vector)

Returns the size (number of elements) in a column vector.

Parameters
vector[in] Column vector (must not be NULL).
Returns
Number of elements, or 0 on error.

◆ dmlfw_column_vec_string_set()

void dmlfw_column_vec_string_set ( dmlfw_column_vec_string vector,
index_t  index,
char *  string 
)

Sets a string element in the column vector.

Parameters
vector[in,out] Column vector (must not be NULL).
index[in] Zero-based index.
string[in] Input string to copy into the vector (caller retains ownership).

Usage example:

dmlfw_column_vec_string_set(vec, 1, "example");
void dmlfw_column_vec_string_set(dmlfw_column_vec_string *vector, index_t index, char *string)
Sets a string element in the column vector.

◆ dmlfw_column_vec_string_to_csv()

void dmlfw_column_vec_string_to_csv ( dmlfw_column_vec_string vector,
const char *  csv_file_name,
dmlfw_row_vec_string header 
)

Exports a column vector of strings to a CSV file with a header.

Parameters
vector[in] Column vector (must not be NULL).
csv_file_name[in] Output CSV file path (must not be NULL).
header[in] Row vector of string header (must not be NULL).
Note
The file will be overwritten if it exists.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
dmlfw_column_vec_string_to_csv(vec, "out.csv", header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error writing to CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_column_vec_string_to_csv(dmlfw_column_vec_string *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
Exports a column vector of strings to a CSV file with a header.

◆ dmlfw_column_vec_string_transpose()

dmlfw_row_vec_string * dmlfw_column_vec_string_transpose ( dmlfw_column_vec_string vector,
dmlfw_row_vec_string transposed_vector 
)

Transposes a column vector of strings into a row vector.

Parameters
vector[in] Column vector (must not be NULL).
transposed_vector[in,out] Optional existing row vector to reuse, or NULL.
Returns
Pointer to new or reused row vector, or NULL on error.
Note
Caller must free newly allocated row vectors.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error transposing to row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_row_vec_string * dmlfw_column_vec_string_transpose(dmlfw_column_vec_string *vector, dmlfw_row_vec_string *transposed_vector)
Transposes a column vector of strings into a row vector.

◆ dmlfw_row_vec_double_copy()

void dmlfw_row_vec_double_copy ( dmlfw_row_vec_double target_vector,
dmlfw_row_vec_double source_vector 
)

Copies the contents of one row vector to another.

Assumptions:

  • Both vectors must be non-NULL and have the same size.

Error Cases:

  • NULL target or source vectors.
  • Size mismatch between vectors.
Parameters
target_vector[in,out] Destination row vector (must not be NULL).
source_vector[in] Source row vector (must not be NULL).
Note
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_double_copy(target, source);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error copying row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_row_vec_double_copy(dmlfw_row_vec_double *target_vector, dmlfw_row_vec_double *source_vector)
Copies the contents of one row vector to another.

◆ dmlfw_row_vec_double_create_new()

dmlfw_row_vec_double * dmlfw_row_vec_double_create_new ( dimension_t  columns)

Creates a new row vector of specified size.

Parameters
size[in] Number of elements (must be > 0).
Returns
Pointer to newly allocated row vector, or NULL if an error occurred.
Note
Caller must free with dmlfw_row_vec_double_destroy().
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_row_vec_double * dmlfw_row_vec_double_create_new(dimension_t columns)
Creates a new row vector of specified size.
Examples
example_dmlfw_operations_double.c.

◆ dmlfw_row_vec_double_create_new_filled()

dmlfw_row_vec_double * dmlfw_row_vec_double_create_new_filled ( dimension_t  columns,
double  value,
dmlfw_row_vec_double vector 
)

Creates or fills a row vector with a specified value.

  • If vector is NULL → allocates new vector of size size and fills with value.
  • If vector exists and matches size → fills with value.
  • If size mismatches → sets error and returns NULL.
Parameters
size[in] Number of elements (must be > 0).
value[in] Value to assign to all elements.
vector[in,out] Optional existing vector to reuse, or NULL.
Returns
Pointer to valid vector on success, or NULL if an error occurred.
Note
Caller must free newly allocated vectors.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating filled row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_row_vec_double * dmlfw_row_vec_double_create_new_filled(dimension_t columns, double value, dmlfw_row_vec_double *vector)
Creates or fills a row vector with a specified value.

◆ dmlfw_row_vec_double_destroy()

void dmlfw_row_vec_double_destroy ( dmlfw_row_vec_double vector)

Destroys a row vector and frees its memory.

Parameters
vector[in] Pointer to the row vector, or NULL (no-op).

Usage example:

void dmlfw_row_vec_double_destroy(dmlfw_row_vec_double *vector)
Destroys a row vector and frees its memory.
Examples
example_dmlfw_list_double.c, and example_dmlfw_operations_double.c.

◆ dmlfw_row_vec_double_from_csv()

dmlfw_row_vec_double * dmlfw_row_vec_double_from_csv ( const char *  csv_file_name,
dmlfw_row_vec_double vector,
dmlfw_row_vec_string **  header 
)

Loads a row vector from a CSV file.

Reads a CSV file specified by csv_file_name and populates a row vector. The first line is parsed into a row vector of strings as header.

Assumptions:

  • Number of header strings must match the number of numeric data elements.
  • If vector is NULL, a new row vector is allocated; otherwise, must match data size.

Error Cases:

  • Invalid parameters (NULL csv_file_name or header pointer).
  • File cannot be opened.
  • Header size mismatch.
  • Provided vector size mismatch.
  • Invalid numeric values in CSV.
Parameters
csv_file_name[in] Input CSV file path (must not be NULL).
vector[in,out] Optional existing row vector to reuse, or NULL.
header[out] Output pointer to a newly allocated row vector containing header strings.
Returns
Pointer to the populated row vector, or NULL if an error occurred.
Note
Caller must destroy both the returned vector and header.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.
See also
dmlfw_row_vec_string
dmlfw_vec_string.h

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string *header = NULL;
vec = dmlfw_row_vec_double_from_csv("row_data.csv", NULL, &header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error loading row vector from CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
// use vec and header...
dmlfw_row_vec_double * dmlfw_row_vec_double_from_csv(const char *csv_file_name, dmlfw_row_vec_double *vector, dmlfw_row_vec_string **header)
Loads a row vector from a CSV file.

◆ dmlfw_row_vec_double_get()

double dmlfw_row_vec_double_get ( dmlfw_row_vec_double vector,
index_t  index 
)

Retrieves the value of an element in a row vector.

Parameters
vector[in] Row vector (must not be NULL).
index[in] Zero-based index of the element.
Returns
Element value, or 0.0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
double val = dmlfw_row_vec_double_get(vec, 5);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error getting value: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
double dmlfw_row_vec_double_get(dmlfw_row_vec_double *vector, index_t index)
Retrieves the value of an element in a row vector.
Examples
example_dmlfw_list_double.c.

◆ dmlfw_row_vec_double_get_mean()

double dmlfw_row_vec_double_get_mean ( dmlfw_row_vec_double vector)

Computes the mean of all elements in a row vector.

Parameters
vector[in] Row vector (must not be NULL).
Returns
Mean value, or 0.0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.

◆ dmlfw_row_vec_double_get_size()

dimension_t dmlfw_row_vec_double_get_size ( dmlfw_row_vec_double vector)

Returns the number of elements in a row vector.

Parameters
vector[in] Row vector (must not be NULL).
Returns
Number of elements, or 0 if an error occurred.
Note
Check errors using the centralized error API after calling this function.

◆ dmlfw_row_vec_double_set()

void dmlfw_row_vec_double_set ( dmlfw_row_vec_double vector,
index_t  index,
double  value 
)

Sets the value of an element in a row vector.

Parameters
vector[in,out] Row vector (must not be NULL).
index[in] Zero-based index of the element.
value[in] Value to set.
Note
If index is out of bounds, error status is set.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error setting value: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_row_vec_double_set(dmlfw_row_vec_double *vector, index_t index, double value)
Sets the value of an element in a row vector.
Examples
example_dmlfw_operations_double.c.

◆ dmlfw_row_vec_double_to_csv()

void dmlfw_row_vec_double_to_csv ( dmlfw_row_vec_double vector,
const char *  csv_file_name,
dmlfw_row_vec_string header 
)

Exports a row vector to a CSV file with a header.

Writes the elements of the row vector to a CSV file specified by csv_file_name, with a header row consisting of strings from the header row vector.

Assumptions:

  • Header size must exactly match the row vector size.
  • File is overwritten if it exists.

Error Cases:

  • Invalid parameters (NULL vector, csv_file_name, or header).
  • File creation fails.
Parameters
vector[in] Row vector (must not be NULL).
csv_file_name[in] Output CSV file path (must not be NULL).
header[in] Row vector of strings header (must not be NULL, size must match vector size).
Note
The file will be overwritten if it exists.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.
See also
dmlfw_row_vec_string
dmlfw_vec_string.h

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string_set(header, 0, "x");
dmlfw_row_vec_string_set(header, 1, "y");
dmlfw_row_vec_string_set(header, 2, "z");
dmlfw_row_vec_double_to_csv(vec, "row_data.csv", header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error exporting row vector to CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_row_vec_double_to_csv(dmlfw_row_vec_double *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
Exports a row vector to a CSV file with a header.

◆ dmlfw_row_vec_double_transpose()

dmlfw_column_vec_double * dmlfw_row_vec_double_transpose ( dmlfw_row_vec_double vector,
dmlfw_column_vec_double transposed_vector 
)

Transposes a row vector into a column vector.

Parameters
vector[in] Row vector (must not be NULL).
transposed_vector[in,out] Optional existing column vector to reuse, or NULL.
Returns
Pointer to column vector, or NULL if an error occurred.
Note
Caller must free newly allocated column vectors.
Check errors using the centralized error API after calling this function.
See also
dmlfw_column_vec_double_transpose

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error transposing to column vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_column_vec_double * dmlfw_row_vec_double_transpose(dmlfw_row_vec_double *vector, dmlfw_column_vec_double *transposed_vector)
Transposes a row vector into a column vector.

◆ dmlfw_row_vec_string_create_new()

dmlfw_row_vec_string * dmlfw_row_vec_string_create_new ( dimension_t  columns)

Creates a new row vector of strings of specified length.

Parameters
columns[in] Number of string elements (must be > 0).
Returns
Pointer to a new row vector, or NULL on error.
Note
Caller must free with dmlfw_row_vec_string_destroy().
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error creating row vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
Examples
example_dmlfw_data_encoder.c, example_dmlfw_scale_double.c, and example_dmlfw_vec_string.c.

◆ dmlfw_row_vec_string_destroy()

void dmlfw_row_vec_string_destroy ( dmlfw_row_vec_string vector)

Destroys a row vector of strings and frees its memory.

Parameters
vector[in] Pointer to the row vector, or NULL (no-op).

Usage example:

Examples
example_dmlfw_data_encoder.c, example_dmlfw_scale_double.c, and example_dmlfw_vec_string.c.

◆ dmlfw_row_vec_string_from_csv()

dmlfw_row_vec_string * dmlfw_row_vec_string_from_csv ( const char *  csv_file_name,
dmlfw_row_vec_string vector,
dmlfw_row_vec_string **  header 
)

Loads a row vector of strings from a CSV file.

Parameters
csv_file_name[in] Path to CSV file (must not be NULL).
vector[in,out] Optional existing vector to reuse, or NULL.
header[out] Output pointer to a newly allocated header vector.
Returns
Pointer to the loaded row vector, or NULL on error.
Note
Caller must free both the returned vector and the header.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string *header = NULL;
vec = dmlfw_row_vec_string_from_csv("data.csv", NULL, &header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error loading from CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
// Use vec and header...
dmlfw_row_vec_string * dmlfw_row_vec_string_from_csv(const char *csv_file_name, dmlfw_row_vec_string *vector, dmlfw_row_vec_string **header)
Loads a row vector of strings from a CSV file.

◆ dmlfw_row_vec_string_get()

void dmlfw_row_vec_string_get ( dmlfw_row_vec_string vector,
index_t  index,
char **  string 
)

Retrieves a string element from a row vector by index.

Parameters
vector[in] Row vector (must not be NULL).
index[in] Zero-based index.
string[out] Pointer to receive the string element.
Note
The returned string pointer is managed by the vector and must not be freed by the caller.

Usage example:

char *val = NULL;
if (dmlfw_error()) {
char err[512], dbg[512];
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Failed to retrieve value at index 2: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
printf("Element at index 2: %s\n", val);
void dmlfw_row_vec_string_get(dmlfw_row_vec_string *vector, index_t index, char **string)
Retrieves a string element from a row vector by index.
Examples
example_dmlfw_vec_string.c.

◆ dmlfw_row_vec_string_get_size()

dimension_t dmlfw_row_vec_string_get_size ( dmlfw_row_vec_string vector)

Returns the size (number of elements) in a row vector.

Parameters
vector[in] Row vector (must not be NULL).
Returns
Number of elements, or 0 on error.

◆ dmlfw_row_vec_string_set()

void dmlfw_row_vec_string_set ( dmlfw_row_vec_string vector,
index_t  index,
char *  string 
)

Sets a string element in the row vector.

Parameters
vector[in,out] Row vector (must not be NULL).
index[in] Zero-based index.
string[in] Input string to copy into the vector (caller retains ownership).

Usage example:

dmlfw_row_vec_string_set(vec, 0, "example");
Examples
example_dmlfw_data_encoder.c, example_dmlfw_scale_double.c, and example_dmlfw_vec_string.c.

◆ dmlfw_row_vec_string_to_csv()

void dmlfw_row_vec_string_to_csv ( dmlfw_row_vec_string vector,
const char *  csv_file_name,
dmlfw_row_vec_string header 
)

Exports a row vector of strings to a CSV file with a header.

Parameters
vector[in] Row vector (must not be NULL).
csv_file_name[in] Output CSV file path (must not be NULL).
header[in] Row vector of strings header (must not be NULL).
Note
The file will be overwritten if it exists.
The header is always a row vector, even when representing a column vector's header.
Check errors using the centralized error API after calling this function.

Usage example:

char err[512], dbg[512];
dmlfw_row_vec_string_to_csv(vec, "out.csv", header);
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error writing to CSV: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
void dmlfw_row_vec_string_to_csv(dmlfw_row_vec_string *vector, const char *csv_file_name, dmlfw_row_vec_string *header)
Exports a row vector of strings to a CSV file with a header.

◆ dmlfw_row_vec_string_transpose()

dmlfw_column_vec_string * dmlfw_row_vec_string_transpose ( dmlfw_row_vec_string vector,
dmlfw_column_vec_string transposed_vector 
)

Transposes a row vector of strings into a column vector.

Parameters
vector[in] Row vector (must not be NULL).
transposed_vector[in,out] Optional existing column vector to reuse, or NULL.
Returns
Pointer to new or reused column vector, or NULL on error.
Note
Caller must free newly allocated column vectors.

Usage example:

char err[512], dbg[512];
if (dmlfw_error()) {
dmlfw_get_error_string(err, sizeof(err));
dmlfw_get_debug_string(dbg, sizeof(dbg));
printf("Error transposing to column vector: %s\nDebug info: %s\n", err, dbg);
return EXIT_FAILURE;
}
dmlfw_column_vec_string * dmlfw_row_vec_string_transpose(dmlfw_row_vec_string *vector, dmlfw_column_vec_string *transposed_vector)
Transposes a row vector of strings into a column vector.