亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cxmatmul.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*M///////////////////////////////////////////////////////////////////////////////////////
//
//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
//  By downloading, copying, installing or using the software you agree to this license.
//  If you do not agree to this license, do not download, install,
//  copy or use the software.
//
//
//                        Intel License Agreement
//                For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
//   * Redistribution's of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//
//   * Redistribution's in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//
//   * The name of Intel Corporation may not be used to endorse or promote products
//     derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//M*/

#include "_cxcore.h"

/****************************************************************************************\
*                                         cvGEMM                                         *
\****************************************************************************************/

icvBLAS_GEMM_32f_t icvBLAS_GEMM_32f_p = 0;
icvBLAS_GEMM_64f_t icvBLAS_GEMM_64f_p = 0;
icvBLAS_GEMM_32fc_t icvBLAS_GEMM_32fc_p = 0;
icvBLAS_GEMM_64fc_t icvBLAS_GEMM_64fc_p = 0;

static void
icvGEMM_CopyBlock( const uchar* src, int src_step,
                   uchar* dst, int dst_step,
                   CvSize size, int pix_size )
{
    int j;
    size.width = size.width * (pix_size / sizeof(int));

    for( ; size.height--; src += src_step, dst += dst_step )
    {
        for( j = 0; j <= size.width - 4; j += 4 )
        {
            int t0 = ((const int*)src)[j];
            int t1 = ((const int*)src)[j+1];
            ((int*)dst)[j] = t0;
            ((int*)dst)[j+1] = t1;
            t0 = ((const int*)src)[j+2];
            t1 = ((const int*)src)[j+3];
            ((int*)dst)[j+2] = t0;
            ((int*)dst)[j+3] = t1;
        }

        for( ; j < size.width; j++ )
            ((int*)dst)[j] = ((const int*)src)[j];
    }
}


static void
icvGEMM_TransposeBlock( const uchar* src, int src_step,
                        uchar* dst, int dst_step,
                        CvSize size, int pix_size )
{
    int i, j;
    for( i = 0; i < size.width; i++, dst += dst_step, src += pix_size )
    {
        const uchar* _src = src;
        switch( pix_size )
        {
        case sizeof(int):
            for( j = 0; j < size.height; j++, _src += src_step )
                ((int*)dst)[j] = ((int*)_src)[0];
            break;
        case sizeof(int)*2:
            for( j = 0; j < size.height*2; j += 2, _src += src_step )
            {
                int t0 = ((int*)_src)[0];
                int t1 = ((int*)_src)[1];
                ((int*)dst)[j] = t0;
                ((int*)dst)[j+1] = t1;
            }
            break;
        case sizeof(int)*4:
            for( j = 0; j < size.height*4; j += 4, _src += src_step )
            {
                int t0 = ((int*)_src)[0];
                int t1 = ((int*)_src)[1];
                ((int*)dst)[j] = t0;
                ((int*)dst)[j+1] = t1;
                t0 = ((int*)_src)[2];
                t1 = ((int*)_src)[3];
                ((int*)dst)[j+2] = t0;
                ((int*)dst)[j+3] = t1;
            }
            break;
        default:
            assert(0);
            return;
        }
    }
}

#define ICV_DEF_GEMM_SINGLE_MUL( flavor, arrtype, worktype )                \
static CvStatus CV_STDCALL                                                  \
icvGEMMSingleMul_##flavor( const arrtype* a_data, size_t a_step,            \
                         const arrtype* b_data, size_t b_step,              \
                         const arrtype* c_data, size_t c_step,              \
                         arrtype* d_data, size_t d_step,                    \
                         CvSize a_size, CvSize d_size,                      \
                         double alpha, double beta, int flags )             \
{                                                                           \
    int i, j, k, n = a_size.width, m = d_size.width, drows = d_size.height; \
    const arrtype *_a_data = a_data, *_b_data = b_data, *_c_data = c_data;  \
    arrtype* a_buf = 0;                                                     \
    size_t a_step0, a_step1, c_step0, c_step1, t_step;                      \
                                                                            \
    a_step /= sizeof(a_data[0]);                                            \
    b_step /= sizeof(b_data[0]);                                            \
    c_step /= sizeof(c_data[0]);                                            \
    d_step /= sizeof(d_data[0]);                                            \
    a_step0 = a_step;                                                       \
    a_step1 = 1;                                                            \
                                                                            \
    if( !c_data )                                                           \
        c_step0 = c_step1 = 0;                                              \
    else if( !(flags & CV_GEMM_C_T) )                                       \
        c_step0 = c_step, c_step1 = 1;                                      \
    else                                                                    \
        c_step0 = 1, c_step1 = c_step;                                      \
                                                                            \
    if( flags & CV_GEMM_A_T )                                               \
    {                                                                       \
        CV_SWAP( a_step0, a_step1, t_step );                                \
        n = a_size.height;                                                  \
        if( a_step > 1 && n > 1 )                                           \
            a_buf = (arrtype*)cvAlloc(n*sizeof(a_data[0]));            \
    }                                                                       \
                                                                            \
    if( n == 1 ) /* external product */                                     \
    {                                                                       \
        arrtype* b_buf = 0;                                                 \
                                                                            \
        if( a_step > 1 )                                                    \
        {                                                                   \
            a_buf = (arrtype*)cvAlloc(drows*sizeof(a_data[0]));        \
            for( k = 0; k < drows; k++ )                                    \
                a_buf[k] = a_data[a_step*k];                                \
            a_data = a_buf;                                                 \
        }                                                                   \
                                                                            \
        if( b_step > 1 )                                                    \
        {                                                                   \
            b_buf = (arrtype*)cvAlloc(d_size.width*sizeof(b_buf[0]) ); \
            for( j = 0; j < d_size.width; j++ )                             \
                b_buf[j] = b_data[j*b_step];                                \
            b_data = b_buf;                                                 \
        }                                                                   \
                                                                            \
        for( i = 0; i < drows; i++, _c_data += c_step0,                     \
                                    d_data += d_step )                      \
        {                                                                   \
            worktype al = worktype(a_data[i])*alpha;                        \
            c_data = _c_data;                                               \
            for( j = 0; j <= d_size.width - 2; j += 2, c_data += 2*c_step1 )\
            {                                                               \
                worktype s0 = al*b_data[j];                                 \
                worktype s1 = al*b_data[j+1];                               \
                if( !c_data )                                               \
                {                                                           \
                    d_data[j] = arrtype(s0);                                \
                    d_data[j+1] = arrtype(s1);                              \
                }                                                           \
                else                                                        \
                {                                                           \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
                    d_data[j+1] = arrtype(s1 + c_data[c_step1]*beta);       \
                }                                                           \
            }                                                               \
                                                                            \
            for( ; j < d_size.width; j++, c_data += c_step1 )               \
            {                                                               \
                worktype s0 = al*b_data[j];                                 \
                if( !c_data )                                               \
                    d_data[j] = arrtype(s0);                                \
                else                                                        \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
            }                                                               \
        }                                                                   \
    }                                                                       \
    else if( flags & CV_GEMM_B_T ) /* A * Bt */                             \
    {                                                                       \
        for( i = 0; i < drows; i++, _a_data += a_step0,                     \
                                    _c_data += c_step0,                     \
                                    d_data += d_step )                      \
        {                                                                   \
            a_data = _a_data;                                               \
            b_data = _b_data;                                               \
            c_data = _c_data;                                               \
                                                                            \
            if( a_buf )                                                     \
            {                                                               \
                for( k = 0; k < n; k++ )                                    \
                    a_buf[k] = a_data[a_step1*k];                           \
                a_data = a_buf;                                             \
            }                                                               \
                                                                            \
            for( j = 0; j < d_size.width; j++, b_data += b_step,            \
                                               c_data += c_step1 )          \
            {                                                               \
                worktype s0(0), s1(0), s2(0), s3(0);                        \
                                                                            \
                for( k = 0; k <= n - 4; k += 4 )                            \
                {                                                           \
                    s0 += worktype(a_data[k])*b_data[k];                    \
                    s1 += worktype(a_data[k+1])*b_data[k+1];                \
                    s2 += worktype(a_data[k+2])*b_data[k+2];                \
                    s3 += worktype(a_data[k+3])*b_data[k+3];                \
                }                                                           \
                                                                            \
                for( ; k < n; k++ )                                         \
                    s0 += worktype(a_data[k])*b_data[k];                    \
                s0 = (s0+s1+s2+s3)*alpha;                                   \
                                                                            \
                if( !c_data )                                               \
                    d_data[j] = arrtype(s0);                                \
                else                                                        \
                    d_data[j] = arrtype(s0 + c_data[0]*beta);               \
            }                                                               \
        }                                                                   \
    }                                                                       \

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久久| 一区二区三区在线免费播放 | 国内成人自拍视频| 久久久久国色av免费看影院| 成人国产免费视频| 亚洲猫色日本管| 欧美另类久久久品| 韩国视频一区二区| 中文字幕一区三区| 欧美性视频一区二区三区| 免费在线看成人av| 国产精品三级av| 欧美性猛片xxxx免费看久爱| 麻豆精品一区二区| 国产精品情趣视频| 欧美色电影在线| 精品一区二区国语对白| 亚洲欧美在线aaa| 欧美日韩久久一区二区| 久久激情综合网| 国产精品久久综合| 欧美欧美午夜aⅴ在线观看| 国产伦精品一区二区三区在线观看 | 在线视频亚洲一区| 免费三级欧美电影| 中文字幕制服丝袜成人av| 欧美日韩精品二区第二页| 国产麻豆精品在线观看| 一区二区视频在线看| 日韩免费看网站| 99精品国产91久久久久久 | 午夜欧美一区二区三区在线播放| 精品国产在天天线2019| 一本久久综合亚洲鲁鲁五月天| 日韩精品三区四区| 国产精品久久久久久久久免费相片| 欧美日韩精品三区| 成人听书哪个软件好| 日韩成人免费电影| 成人欧美一区二区三区小说 | 26uuu亚洲综合色欧美| 一本久久精品一区二区| 精品一区二区三区在线观看国产| 亚洲人成伊人成综合网小说| 欧美电视剧免费观看| 91免费国产在线观看| 久久se精品一区二区| 亚洲综合丁香婷婷六月香| 久久久亚洲综合| 欧美日韩综合在线免费观看| 国产成人亚洲综合a∨婷婷图片| 亚洲午夜久久久久中文字幕久| 久久久精品中文字幕麻豆发布| 欧美日韩一区二区在线观看视频 | 色婷婷综合五月| 国产主播一区二区| 水蜜桃久久夜色精品一区的特点| 国产精品美女久久久久久久久久久| 日韩一区二区三区视频在线| 色狠狠一区二区三区香蕉| 国产福利电影一区二区三区| 天堂久久一区二区三区| 日韩理论片在线| 国产日本欧洲亚洲| 欧美va亚洲va国产综合| 欧美日韩在线精品一区二区三区激情| 国产91精品一区二区麻豆亚洲| 免费不卡在线观看| 午夜伊人狠狠久久| 亚洲另类春色国产| 国产精品成人在线观看| 久久久久亚洲蜜桃| 日韩久久精品一区| 欧美日韩mp4| 在线日韩av片| 91视频国产资源| 成人的网站免费观看| 国产一区二区成人久久免费影院 | 手机精品视频在线观看| 一区二区三区四区在线| 中文字幕一区二区三区蜜月| 久久久夜色精品亚洲| 精品少妇一区二区三区免费观看| 欧美日韩1234| 精品视频在线看| 欧美性受极品xxxx喷水| 色94色欧美sute亚洲线路一久| 成人h精品动漫一区二区三区| 国产精品一区二区不卡| 精品一区二区免费| 久久精品久久久精品美女| 日韩国产在线观看一区| 亚洲成a人v欧美综合天堂下载| 夜夜嗨av一区二区三区网页| 自拍av一区二区三区| 中文字幕日本乱码精品影院| 国产精品网友自拍| 国产精品嫩草99a| 国产精品天干天干在线综合| 国产精品视频第一区| 欧美国产欧美综合| 国产清纯美女被跳蛋高潮一区二区久久w| 精品国产91乱码一区二区三区 | 亚洲精品老司机| 亚洲精品久久久久久国产精华液| 亚洲图片你懂的| 依依成人精品视频| 亚洲图片欧美一区| 亚洲第一搞黄网站| 日韩在线卡一卡二| 青青草原综合久久大伊人精品优势| 日韩成人一级片| 久草中文综合在线| 国产高清精品网站| 成人激情文学综合网| 色综合中文综合网| 亚洲综合色噜噜狠狠| 综合欧美亚洲日本| 国产精品福利影院| 综合激情成人伊人| 久久精品亚洲精品国产欧美 | 777亚洲妇女| 日韩欧美一区二区久久婷婷| 日韩一区二区影院| 久久日一线二线三线suv| 久久精品视频在线看| 亚洲国产精品精华液2区45| 18涩涩午夜精品.www| 亚洲激情av在线| 日本中文一区二区三区| 激情六月婷婷综合| 成人免费视频播放| 91黄色免费网站| 7777精品伊人久久久大香线蕉完整版 | 国产精品天干天干在观线| 又紧又大又爽精品一区二区| 婷婷综合另类小说色区| 国精产品一区一区三区mba视频| 国产成人av一区| 色婷婷亚洲一区二区三区| 在线成人av网站| 国产区在线观看成人精品| 亚洲精品一二三| 另类综合日韩欧美亚洲| 粉嫩欧美一区二区三区高清影视 | 亚洲美女视频在线观看| 三级在线观看一区二区| 国产最新精品免费| 91免费精品国自产拍在线不卡| 欧美群妇大交群中文字幕| 欧美精品一区二区在线观看| 亚洲视频一区二区在线| 五月激情综合网| 国产成人精品1024| 精品视频1区2区3区| 精品成人佐山爱一区二区| 亚洲特级片在线| 日本午夜精品视频在线观看 | 久久精品国产久精国产| 成人免费高清在线| 欧美日韩电影一区| 国产日韩综合av| 五月天中文字幕一区二区| 国产成人综合视频| 欧美色图一区二区三区| 久久精品夜色噜噜亚洲a∨| 亚洲五码中文字幕| 国产精品一区二区在线播放| 欧美伊人精品成人久久综合97| 26uuu国产一区二区三区| 亚洲精品写真福利| 国产一区二区三区久久久| 91成人免费电影| 久久嫩草精品久久久久| 亚洲福利视频一区二区| 国产福利一区二区三区视频在线| 欧美伊人久久大香线蕉综合69 | 国产精品久久久久久久浪潮网站| 丝袜美腿亚洲色图| 99国产麻豆精品| 精品国产欧美一区二区| 亚洲国产日产av| 国产 日韩 欧美大片| 欧美一区二区三区的| 亚洲蜜臀av乱码久久精品蜜桃| 国产一区二区三区香蕉| 欧美日韩电影在线| 亚洲天堂久久久久久久| 国产资源精品在线观看| 在线电影院国产精品| 亚洲精品五月天| 成人黄色在线视频| 日韩欧美激情在线| 亚洲成人av一区二区| 91视频在线看| 国产精品网站在线观看| 国产最新精品免费| 欧美一区二区三区视频在线| 亚洲精品中文字幕在线观看| 成人精品在线视频观看|