#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "array_util.h"
#include "abort_prog.h"
#include "util/rand_util.h"
Data Structures | |
struct | indvalpair_t |
Functions | |
oski_value_t * | array_Duplicate (const oski_value_t *x0, oski_index_t len) |
Returns a pointer to a newly allocated copy of the given array, or NULL on error. | |
void | array_Destroy (oski_value_t *x) |
Release previously allocated array. | |
int | array_CompareElems_NoAbort (const char *test_func, const oski_value_t *x, const oski_value_t *y, oski_index_t len) |
If a 'large' difference is detected, this routine prints a message to the user (using the error handler) and returns ERR_WRONG_ANS. | |
void | array_CompareElems (const char *test_func, const oski_value_t *x, const oski_value_t *y, oski_index_t len) |
If a 'large' difference is detected, this routine prints a message to the user (using the error handler) and aborts the program with an exit code of 1. | |
void | array_FillRandom (oski_value_t *x, oski_index_t n) |
Initialize an array with random values between -1 and 1. | |
oski_value_t * | array_CreateRandom (oski_index_t n) |
Allocate an array of random values between -1 and 1. | |
oski_value_t * | array_Create (oski_index_t n, oski_value_t val) |
Allocate an array with elements initialized to a particular value. | |
static int | compare_indvalpair (const void *pa, const void *pb) |
void | array_SortIndValPairs (oski_index_t *ind, oski_value_t *val, oski_index_t n) |
Sorts an (index, value) pair of arrays. |
This module must be compiled with instantiated default types.
void array_CompareElems | ( | const char * | test_func, | |
const oski_value_t * | x, | |||
const oski_value_t * | y, | |||
oski_index_t | len | |||
) |
If a 'large' difference is detected, this routine prints a message to the user (using the error handler) and aborts the program with an exit code of 1.
Compare elements of two arrays, and exit the program with an error code of 1 if the element-wise difference greater than len*(machine epsilon) is detected.
[in] | test_func | Name of the calling test function. |
[in] | x | Expected results. |
[in] | y | Observed/computed results. |
[in] | len | Length of the x and y arrays. |
int array_CompareElems_NoAbort | ( | const char * | test_func, | |
const oski_value_t * | x, | |||
const oski_value_t * | y, | |||
oski_index_t | len | |||
) |
If a 'large' difference is detected, this routine prints a message to the user (using the error handler) and returns ERR_WRONG_ANS.
Compare elements of two arrays, and exit the program with an error code of 1 if the element-wise difference greater than len*(machine epsilon) detected.
[in] | test_func | Name of the calling test function. |
[in] | x | Expected results. |
[in] | y | Observed/computed results. |
[in] | len | Length of the x and y arrays. |
References _IM, _RE, ERR_WRONG_ANS, OSKI_ERR_WRONG_ANS_ELEM, OSKI_ERR_WRONG_ANS_ELEM_COMPLEX, oski_PrintDebugMessage(), VAL_DEC, and VAL_EPS.
void array_Destroy | ( | oski_value_t * | x | ) |
Release previously allocated array.
[in,out] | x | Array to destroy. |
References oski_Free.
oski_value_t* array_Duplicate | ( | const oski_value_t * | x0, | |
oski_index_t | len | |||
) |
Returns a pointer to a newly allocated copy of the given array, or NULL on error.
[in] | x0 | Array to copy. |
[in] | len | Number of elements to copy from x0. |
References oski_CopyMem, and oski_Malloc.