SenK
SenK is a C++ library for high-performance linear solvers.
senk_utils.hpp
Go to the documentation of this file.
1
7#ifndef SENK_UTILS_HPP
8#define SENK_UTILS_HPP
9
10#include <cstdlib>
11
12namespace senk {
16namespace utils {
22template <typename T>
23T *SafeMalloc(int size)
24{
25 T *res = (T*)std::malloc(sizeof(T)*size);
26 if(!res) { printf("Error: SafeMalloc\n"); exit(1); }
27 else { return res; }
28}
34template <typename T>
35T *SafeCalloc(int size)
36{
37 T *res = (T*)std::calloc(size, sizeof(T));
38 if(!res) { printf("Error: SafeCalloc\n"); exit(1); }
39 else { return res; }
40}
47template <typename T>
48T *SafeRealloc(T *old, int size)
49{
50 T *res = (T*)std::realloc(old, sizeof(T)*size);
51 if(!res) { printf("Error: SafeRealloc\n"); exit(1); }
52 else { return res; }
53}
59template <typename T>
60void SafeFree(T **ptr)
61{
62 if(*ptr) {free(*ptr);}
63 *ptr = nullptr;
64}
72template <typename T>
73void Copy(T *in, T *out, int size)
74{
75 #pragma omp parallel for
76 for(int i=0; i<size; i++) {
77 out[i] = in[i];
78 }
79}
87template <typename T>
88void Set(T val, T *out, int size)
89{
90 #pragma omp parallel for
91 for(int i=0; i<size; i++) {
92 out[i] = val;
93 }
94}
103template <typename T1, typename T2>
104void Convert(T1 *in, T2 *out, int size)
105{
106 #pragma omp parallel for
107 for(int i=0; i<size; i++) {
108 out[i] = (T2)in[i];
109 }
110}
111/*
112template <typename T1, typename T2, int bit>
113void Convert(T1 *in, T2 *out, int size)
114{
115 #pragma omp parallel for
116 for(int i=0; i<size; i++) {
117 out[i] = (T2)(in[i] * (1<<bit));
118 }
119}
120*/
121}
122
123}
124
125#endif
void Convert(T1 *in, T2 *out, int size)
Convert type of arrays.
Definition: senk_utils.hpp:104
void Copy(T *in, T *out, int size)
Copy in to out.
Definition: senk_utils.hpp:73
void Set(T val, T *out, int size)
Set values of out to val.
Definition: senk_utils.hpp:88
void SafeFree(T **ptr)
Free allocated memory.
Definition: senk_utils.hpp:60
T * SafeMalloc(int size)
Allocate memory.
Definition: senk_utils.hpp:23
T * SafeCalloc(int size)
Allocate memory and clear it.
Definition: senk_utils.hpp:35
T * SafeRealloc(T *old, int size)
Reallocate memory.
Definition: senk_utils.hpp:48
The top-level namespace of SenK.