mirror of
https://github.com/jkriege2/JKQtPlotter.git
synced 2024-12-26 02:21:43 +08:00
fix issue #19: got rid of jkqtpArrayMalloc(), jkqtpArrayCalloc(), jkqtpArrayFree() (which were a remenant of QuickFit 3 and not really portable or useful)
This commit is contained in:
parent
bc1afa7815
commit
307f477626
@ -59,75 +59,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief malloc() for use herein (aligned on some systems!)
|
|
||||||
\ingroup jkqtptools_math_array
|
|
||||||
|
|
||||||
*/
|
|
||||||
inline void* jkqtpArrayMalloc(size_t size) {
|
|
||||||
// std::cout<<"statisticsMalloc("<<size<<")\n";
|
|
||||||
#ifdef STATISTICS_TOOLS_USE_QFTOOLS_H
|
|
||||||
return qfMalloc(size);
|
|
||||||
#else
|
|
||||||
if (size<=0) return nullptr;
|
|
||||||
#ifdef __LINUX__
|
|
||||||
#if !defined(QF_DONT_USE_ALIGNED_MALLOC)
|
|
||||||
return aligned_alloc(JKQTP_ALIGNMENT_BYTES, size);
|
|
||||||
#else
|
|
||||||
return malloc(size);
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if !defined(QF_DONT_USE_ALIGNED_MALLOC)
|
|
||||||
return _aligned_malloc(size, JKQTP_ALIGNMENT_BYTES);
|
|
||||||
#else
|
|
||||||
return malloc(size);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief calloc() for use herein (aligned on some systems!)
|
|
||||||
\ingroup jkqtptools_math_array
|
|
||||||
|
|
||||||
*/
|
|
||||||
inline void* jkqtpArrayCalloc(size_t num, size_t size) {
|
|
||||||
// std::cout<<"statisticsCalloc("<<num<<", "<<size<<")\n";
|
|
||||||
#ifdef STATISTICS_TOOLS_USE_QFTOOLS_H
|
|
||||||
return qfCalloc(num,size);
|
|
||||||
#else
|
|
||||||
if (size*size<=0) return nullptr;
|
|
||||||
void* res=jkqtpArrayMalloc(num*size);
|
|
||||||
memset(res, 0, num*size);
|
|
||||||
return res;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief free() for use herein (aligned on some systems!)
|
|
||||||
\ingroup jkqtptools_math_array
|
|
||||||
|
|
||||||
*/
|
|
||||||
inline void jkqtpArrayFree(void* data) {
|
|
||||||
#ifdef STATISTICS_TOOLS_USE_QFTOOLS_H
|
|
||||||
qfFree(data);
|
|
||||||
#else
|
|
||||||
if (!data) return;
|
|
||||||
#ifdef __LINUX__
|
|
||||||
#if !defined(QF_DONT_USE_ALIGNED_MALLOC)
|
|
||||||
free(data);
|
|
||||||
#else
|
|
||||||
free(data);
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if !defined(QF_DONT_USE_ALIGNED_MALLOC)
|
|
||||||
_aligned_free(data);
|
|
||||||
#else
|
|
||||||
free(data);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief swap two elements \a l and \a r in an array \a a
|
/*! \brief swap two elements \a l and \a r in an array \a a
|
||||||
\ingroup jkqtptools_math_array
|
\ingroup jkqtptools_math_array
|
||||||
|
|
||||||
@ -155,13 +86,13 @@ inline void jkqtpArraySwapV(std::vector<T>& a, long long l, long long r){
|
|||||||
/*! \brief duplicate an array of data
|
/*! \brief duplicate an array of data
|
||||||
\ingroup jkqtptools_math_array
|
\ingroup jkqtptools_math_array
|
||||||
|
|
||||||
\note use jkqtpArrayFree() to free the memory!!!
|
\note use free() to free the memory!!!
|
||||||
*/
|
*/
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T* jkqtpArrayDuplicate(const T* dataIn, long long N) {
|
inline T* jkqtpArrayDuplicate(const T* dataIn, long long N) {
|
||||||
// std::cout<<"statisticsDuplicateArray("<<dataIn<<", "<<N<<")\n";
|
// std::cout<<"statisticsDuplicateArray("<<dataIn<<", "<<N<<")\n";
|
||||||
if (N<=0 || !dataIn) return nullptr;
|
if (N<=0 || !dataIn) return nullptr;
|
||||||
T* out=static_cast<T*>(jkqtpArrayMalloc(N*sizeof(T)));
|
T* out=static_cast<T*>(malloc(N*sizeof(T)));
|
||||||
if (out) memcpy(out, dataIn, N*sizeof(T));
|
if (out) memcpy(out, dataIn, N*sizeof(T));
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
@ -169,7 +100,7 @@ inline T* jkqtpArrayDuplicate(const T* dataIn, long long N) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief this class ensures that the given pointer is jkqtpArrayFreed when the class is destroyed.
|
/*! \brief this class ensures that the given pointer is freed when the class is destroyed.
|
||||||
\ingroup jkqtptools_math_array
|
\ingroup jkqtptools_math_array
|
||||||
|
|
||||||
*/
|
*/
|
||||||
@ -188,7 +119,7 @@ class JKQTPArrayScopedPointer {
|
|||||||
|
|
||||||
|
|
||||||
~JKQTPArrayScopedPointer() {
|
~JKQTPArrayScopedPointer() {
|
||||||
if (pntr) jkqtpArrayFree(pntr);
|
if (pntr) free(pntr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -702,7 +702,7 @@ inline bool jkqtplinalgLinSolve(const T* A, const T* B, long N, long C, T* resul
|
|||||||
// v ... ... ... | .....
|
// v ... ... ... | .....
|
||||||
//
|
//
|
||||||
const long msize=N*(N+C);
|
const long msize=N*(N+C);
|
||||||
JKQTPArrayScopedPointer<T> m(static_cast<T*>(jkqtpArrayMalloc(msize*sizeof(T)))); // use scoped pointer to ensure, that m is free'd, when the function is ending
|
JKQTPArrayScopedPointer<T> m(static_cast<T*>(malloc(msize*sizeof(T)))); // use scoped pointer to ensure, that m is free'd, when the function is ending
|
||||||
for (long l=0; l<N; l++) {
|
for (long l=0; l<N; l++) {
|
||||||
for (long c=0; c<N; c++) { // init left half with matrix A
|
for (long c=0; c<N; c++) { // init left half with matrix A
|
||||||
m[jkqtplinalgMatIndex(l,c,N+C)]=A[jkqtplinalgMatIndex(l,c,N)];
|
m[jkqtplinalgMatIndex(l,c,N+C)]=A[jkqtplinalgMatIndex(l,c,N)];
|
||||||
@ -837,7 +837,7 @@ inline T jkqtplinalgMatrixDeterminant(const T* a, long N) {
|
|||||||
} else {
|
} else {
|
||||||
det = 0;
|
det = 0;
|
||||||
for (j1=0;j1<N;j1++) {
|
for (j1=0;j1<N;j1++) {
|
||||||
JKQTPArrayScopedPointer<T> m(static_cast<T*>(jkqtpArrayCalloc((N-1)*(N-1),sizeof(T *))));
|
JKQTPArrayScopedPointer<T> m(static_cast<T*>(calloc((N-1)*(N-1),sizeof(T *))));
|
||||||
|
|
||||||
for (i=1;i<N;i++) {
|
for (i=1;i<N;i++) {
|
||||||
j2 = 0;
|
j2 = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user