<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/37e34ec891088c4c1326cd881cbf7fe0711ba8b6">https://github.com/macports/macports-ports/commit/37e34ec891088c4c1326cd881cbf7fe0711ba8b6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 37e34ec891088c4c1326cd881cbf7fe0711ba8b6
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Mon Sep 2 16:31:13 2024 +0800
<span style='display:block; white-space:pre;color:#404040;'> opencv4: add back forgotten 32-bit patch
</span>---
graphics/opencv4/Portfile | 12 ++
graphics/opencv4/files/patch-32bit_accelerate.diff | 165 +++++++++++++++++++++
2 files changed, 177 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/opencv4/Portfile b/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 1b94095433c..8d90f99a278 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -335,6 +335,18 @@ platform darwin {
</span> -DLAPACK_CBLAS_H=Accelerate/Accelerate.h \
-DLAPACK_LAPACKE_H=Accelerate/Accelerate.h
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { ${configure.build_arch} in [list i386 ppc] || (${universal_possible} && [variant_isset universal] &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ("i386" in ${configure.universal_archs} || "ppc" in ${configure.universal_archs}))} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The Accelerate ABI requires 32-bit signed integers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # In clapack.h, __CLPK_integer is a typedef for either
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # int (64-bit) or long int (32-bit).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # opencv only uses ints.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Casting between pointers is never recommended, but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # int and long int should have the same representations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # on 32-bit systems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append patch-32bit_accelerate.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # the AVFoundation backend is failing to build up to 10.8
# it might be possible to work around or repair this on 10.7 and 10.8
# there as a qtkit video implementation prior to the AVFoundation version
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/opencv4/files/patch-32bit_accelerate.diff b/graphics/opencv4/files/patch-32bit_accelerate.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..dd58c47d407
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/opencv4/files/patch-32bit_accelerate.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,165 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- modules/core/src/hal_internal.cpp.orig 2017-10-23 08:41:12.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ modules/core/src/hal_internal.cpp 2017-12-16 09:06:29.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -109,9 +109,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(n == 1 && b_step == sizeof(fptype))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgesv_(&m, &n, (float*)a, &lda, piv, (float*)b, &m, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgesv_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (float*)b, (__CLPK_integer*)&m, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgesv_(&m, &n, (double*)a, &lda, piv, (double*)b, &m, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgesv_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (double*)b, (__CLPK_integer*)&m, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -121,9 +121,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(b, ldb, tmpB, m, m, n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgesv_(&m, &n, (float*)a, &lda, piv, (float*)tmpB, &m, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgesv_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (float*)tmpB, (__CLPK_integer*)&m, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgesv_(&m, &n, (double*)a, &lda, piv, (double*)tmpB, &m, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgesv_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (double*)tmpB, (__CLPK_integer*)&m, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(tmpB, m, b, ldb, n, m);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete[] tmpB;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,9 +132,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgetrf_(&m, &m, (float*)a, &lda, piv, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgetrf_((__CLPK_integer*)&m, (__CLPK_integer*)&m, (float*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgetrf_(&m, &m, (double*)a, &lda, piv, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgetrf_((__CLPK_integer*)&m, (__CLPK_integer*)&m, (double*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)piv, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(*info == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -162,9 +162,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(n == 1 && b_step == sizeof(fptype))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sposv_(L, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (float*)b, (__CLPK_integer*)&m, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dposv_(L, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (double*)b, (__CLPK_integer*)&m, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -173,9 +173,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(b, ldb, tmpB, m, m, n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sposv_(L, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (float*)tmpB, (__CLPK_integer*)&m, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dposv_(L, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (double*)tmpB, (__CLPK_integer*)&m, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(tmpB, m, b, ldb, n, m);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ delete[] tmpB;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -184,9 +184,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- spotrf_(L, &m, (float*)a, &lda, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ spotrf_(L, (__CLPK_integer*)&m, (float*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dpotrf_(L, &m, (double*)a, &lda, &lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dpotrf_(L, (__CLPK_integer*)&m, (double*)a, (__CLPK_integer*)&lda, (__CLPK_integer*)&lapackStatus);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(lapackStatus == 0) *info = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -226,17 +226,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgesdd_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (float*)w, (float*)u, (__CLPK_integer*)&ldu, (float*)vt, (__CLPK_integer*)&ldv, (float*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)iworkBuf, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgesdd_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (double*)w, (double*)u, (__CLPK_integer*)&ldu, (double*)vt, (__CLPK_integer*)&ldv, (double*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)iworkBuf, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwork = (int)round(work1); //optimal buffer size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fptype* buffer = new fptype[lwork + 1];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgesdd_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)a, (__CLPK_integer*)&lda, (float*)w, (float*)u, (__CLPK_integer*)&ldu, (float*)vt, (__CLPK_integer*)&ldv, (float*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)iworkBuf, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if(typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgesdd_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)a, (__CLPK_integer*)&lda, (double*)w, (double*)u, (__CLPK_integer*)&ldu, (double*)vt, (__CLPK_integer*)&ldv, (double*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)iworkBuf, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if(!(flags & CV_HAL_SVD_NO_UV))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose_square_inplace(vt, ldv, n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -287,18 +287,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (k == 1 && b_step == sizeof(fptype))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)b, (__CLPK_integer*)&m, (float*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)b, (__CLPK_integer*)&m, (double*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwork = cvRound(work1); //optimal buffer size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ std::vector<fptype> workBufMemHolder(lwork + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fptype* buffer = &workBufMemHolder.front();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)b, (__CLPK_integer*)&m, (float*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)b, (__CLPK_integer*)&m, (double*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -308,18 +308,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(b, ldb, tmpB, m, m, k);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)tmpB, (__CLPK_integer*)&m, (float*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)tmpB, (__CLPK_integer*)&m, (double*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwork = cvRound(work1); //optimal buffer size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ std::vector<fptype> workBufMemHolder(lwork + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fptype* buffer = &workBufMemHolder.front();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)tmpB, (__CLPK_integer*)&m, (float*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgels_(mode, (__CLPK_integer*)&m, (__CLPK_integer*)&n, (__CLPK_integer*)&k, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)tmpB, (__CLPK_integer*)&m, (double*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ transpose(tmpB, m, b, ldb, k, m);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -327,18 +327,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgeqrf_(&m, &n, (float*)tmpA, &ldtmpA, (float*)dst, (float*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgeqrf_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)dst, (float*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgeqrf_(&m, &n, (double*)tmpA, &ldtmpA, (double*)dst, (double*)&work1, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgeqrf_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)dst, (double*)&work1, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lwork = cvRound(work1); //optimal buffer size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ std::vector<fptype> workBufMemHolder(lwork + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fptype* buffer = &workBufMemHolder.front();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (typeid(fptype) == typeid(float))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- sgeqrf_(&m, &n, (float*)tmpA, &ldtmpA, (float*)dst, (float*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sgeqrf_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (float*)tmpA, (__CLPK_integer*)&ldtmpA, (float*)dst, (float*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else if (typeid(fptype) == typeid(double))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- dgeqrf_(&m, &n, (double*)tmpA, &ldtmpA, (double*)dst, (double*)buffer, &lwork, info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ dgeqrf_((__CLPK_integer*)&m, (__CLPK_integer*)&n, (double*)tmpA, (__CLPK_integer*)&ldtmpA, (double*)dst, (double*)buffer, (__CLPK_integer*)&lwork, (__CLPK_integer*)info);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (m == n)
</span></pre><pre style='margin:0'>
</pre>