Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 800539 | Differences between
and this patch

Collapse All | Expand All

(-)a/modules/core/src/hal_internal.cpp (-18 / +18 lines)
Lines 163-171 Link Here
163
        if(n == 1 && b_step == sizeof(fptype))
163
        if(n == 1 && b_step == sizeof(fptype))
164
        {
164
        {
165
            if(typeid(fptype) == typeid(float))
165
            if(typeid(fptype) == typeid(float))
166
                sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus);
166
                LAPACK_sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus);
167
            else if(typeid(fptype) == typeid(double))
167
            else if(typeid(fptype) == typeid(double))
168
                dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus);
168
                LAPACK_dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus);
169
        }
169
        }
170
        else
170
        else
171
        {
171
        {
Lines 174-182 Link Here
174
            transpose(b, ldb, tmpB, m, m, n);
174
            transpose(b, ldb, tmpB, m, m, n);
175
175
176
            if(typeid(fptype) == typeid(float))
176
            if(typeid(fptype) == typeid(float))
177
                sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus);
177
                LAPACK_sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus);
178
            else if(typeid(fptype) == typeid(double))
178
            else if(typeid(fptype) == typeid(double))
179
                dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus);
179
                LAPACK_dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus);
180
180
181
            transpose(tmpB, m, b, ldb, n, m);
181
            transpose(tmpB, m, b, ldb, n, m);
182
            delete[] tmpB;
182
            delete[] tmpB;
Lines 185-193 Link Here
185
    else
185
    else
186
    {
186
    {
187
        if(typeid(fptype) == typeid(float))
187
        if(typeid(fptype) == typeid(float))
188
            spotrf_(L, &m, (float*)a, &lda, &lapackStatus);
188
            LAPACK_spotrf_(L, &m, (float*)a, &lda, &lapackStatus);
189
        else if(typeid(fptype) == typeid(double))
189
        else if(typeid(fptype) == typeid(double))
190
            dpotrf_(L, &m, (double*)a, &lda, &lapackStatus);
190
            LAPACK_dpotrf_(L, &m, (double*)a, &lda, &lapackStatus);
191
    }
191
    }
192
192
193
    if(lapackStatus == 0) *info = true;
193
    if(lapackStatus == 0) *info = true;
Lines 227-243 Link Here
227
    }
227
    }
228
228
229
    if(typeid(fptype) == typeid(float))
229
    if(typeid(fptype) == typeid(float))
230
        sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info);
230
        LAPACK_sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info);
231
    else if(typeid(fptype) == typeid(double))
231
    else if(typeid(fptype) == typeid(double))
232
        dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info);
232
        LAPACK_dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info);
233
233
234
    lwork = (int)round(work1); //optimal buffer size
234
    lwork = (int)round(work1); //optimal buffer size
235
    fptype* buffer = new fptype[lwork + 1];
235
    fptype* buffer = new fptype[lwork + 1];
236
236
237
    if(typeid(fptype) == typeid(float))
237
    if(typeid(fptype) == typeid(float))
238
        sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info);
238
        LAPACK_sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info);
239
    else if(typeid(fptype) == typeid(double))
239
    else if(typeid(fptype) == typeid(double))
240
        dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info);
240
        LAPACK_dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info);
241
241
242
    if(!(flags & CV_HAL_SVD_NO_UV))
242
    if(!(flags & CV_HAL_SVD_NO_UV))
243
        transpose_square_inplace(vt, ldv, n);
243
        transpose_square_inplace(vt, ldv, n);
Lines 288-305 Link Here
288
        if (k == 1 && b_step == sizeof(fptype))
288
        if (k == 1 && b_step == sizeof(fptype))
289
        {
289
        {
290
            if (typeid(fptype) == typeid(float))
290
            if (typeid(fptype) == typeid(float))
291
                sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info);
291
                LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info);
292
            else if (typeid(fptype) == typeid(double))
292
            else if (typeid(fptype) == typeid(double))
293
                dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info);
293
                LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info);
294
294
295
            lwork = cvRound(work1); //optimal buffer size
295
            lwork = cvRound(work1); //optimal buffer size
296
            std::vector<fptype> workBufMemHolder(lwork + 1);
296
            std::vector<fptype> workBufMemHolder(lwork + 1);
297
            fptype* buffer = &workBufMemHolder.front();
297
            fptype* buffer = &workBufMemHolder.front();
298
298
299
            if (typeid(fptype) == typeid(float))
299
            if (typeid(fptype) == typeid(float))
300
                sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info);
300
                LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info);
301
            else if (typeid(fptype) == typeid(double))
301
            else if (typeid(fptype) == typeid(double))
302
                dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info);
302
                LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info);
303
        }
303
        }
304
        else
304
        else
305
        {
305
        {
Lines 309-326 Link Here
309
            transpose(b, ldb, tmpB, m, m, k);
309
            transpose(b, ldb, tmpB, m, m, k);
310
310
311
            if (typeid(fptype) == typeid(float))
311
            if (typeid(fptype) == typeid(float))
312
                sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info);
312
                LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info);
313
            else if (typeid(fptype) == typeid(double))
313
            else if (typeid(fptype) == typeid(double))
314
                dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info);
314
                LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info);
315
315
316
            lwork = cvRound(work1); //optimal buffer size
316
            lwork = cvRound(work1); //optimal buffer size
317
            std::vector<fptype> workBufMemHolder(lwork + 1);
317
            std::vector<fptype> workBufMemHolder(lwork + 1);
318
            fptype* buffer = &workBufMemHolder.front();
318
            fptype* buffer = &workBufMemHolder.front();
319
319
320
            if (typeid(fptype) == typeid(float))
320
            if (typeid(fptype) == typeid(float))
321
                sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info);
321
                LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info);
322
            else if (typeid(fptype) == typeid(double))
322
            else if (typeid(fptype) == typeid(double))
323
                dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info);
323
                LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info);
324
324
325
            transpose(tmpB, m, b, ldb, k, m);
325
            transpose(tmpB, m, b, ldb, k, m);
326
        }
326
        }
(-)a/cmake/checks/lapack_check.cpp (-3 / +3 lines)
Lines 2-10 Link Here
2
#include "opencv_lapack.h"
2
#include "opencv_lapack.h"
3
3
4
static char* check_fn1 = (char*)sgesv_;
4
static char* check_fn1 = (char*)sgesv_;
5
static char* check_fn2 = (char*)sposv_;
5
static char* check_fn2 = (char*)LAPACK_sposv_;
6
static char* check_fn3 = (char*)spotrf_;
6
static char* check_fn3 = (char*)LAPACK_spotrf_;
7
static char* check_fn4 = (char*)sgesdd_;
7
static char* check_fn4 = (char*)LAPACK_sgesdd_;
8
8
9
int main(int argc, char* argv[])
9
int main(int argc, char* argv[])
10
{
10
{

Return to bug 800539