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

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

?? cxmatmul.cpp

?? 將OpenCV移植到DSP上
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
                                                                    \
    for( ; d_size.height--; _c_data += c_step0,                     \
                            d_buf += d_buf_step,                    \
                            d_data += d_step )                      \
    {                                                               \
        if( _c_data )                                               \
        {                                                           \
            c_data = _c_data;                                       \
            for( j = 0; j <= d_size.width - 4; j += 4, c_data += 4*c_step1 )\
            {                                                       \
                worktype t0 = alpha*d_buf[j];                       \
                worktype t1 = alpha*d_buf[j+1];                     \
                t0 += beta*worktype(c_data[0]);                     \
                t1 += beta*worktype(c_data[c_step1]);               \
                d_data[j] = arrtype(t0);                            \
                d_data[j+1] = arrtype(t1);                          \
                t0 = alpha*d_buf[j+2];                              \
                t1 = alpha*d_buf[j+3];                              \
                t0 += beta*worktype(c_data[c_step1*2]);             \
                t1 += beta*worktype(c_data[c_step1*3]);             \
                d_data[j+2] = arrtype(t0);                          \
                d_data[j+3] = arrtype(t1);                          \
            }                                                       \
            for( ; j < d_size.width; j++, c_data += c_step1 )       \
            {                                                       \
                worktype t0 = alpha*d_buf[j];                       \
                d_data[j] = arrtype(t0 + beta*c_data[0]);           \
            }                                                       \
        }                                                           \
        else                                                        \
        {                                                           \
            for( j = 0; j <= d_size.width - 4; j += 4 )             \
            {                                                       \
                worktype t0 = alpha*d_buf[j];                       \
                worktype t1 = alpha*d_buf[j+1];                     \
                d_data[j] = arrtype(t0);                            \
                d_data[j+1] = arrtype(t1);                          \
                t0 = alpha*d_buf[j+2];                              \
                t1 = alpha*d_buf[j+3];                              \
                d_data[j+2] = arrtype(t0);                          \
                d_data[j+3] = arrtype(t1);                          \
            }                                                       \
            for( ; j < d_size.width; j++ )                          \
                d_data[j] = arrtype(alpha*d_buf[j]);                \
        }                                                           \
    }                                                               \
    return CV_OK;                                                   \
}


ICV_DEF_GEMM_SINGLE_MUL( 32f_C1R, float, double)
ICV_DEF_GEMM_BLOCK_MUL( 32f_C1R, float, double)
ICV_DEF_GEMM_STORE( 32f_C1R, float, double)

ICV_DEF_GEMM_SINGLE_MUL( 64f_C1R, double, double)
ICV_DEF_GEMM_BLOCK_MUL( 64f_C1R, double, double)
ICV_DEF_GEMM_STORE( 64f_C1R, double, double)

ICV_DEF_GEMM_SINGLE_MUL( 32f_C2R, CvComplex32f, CvComplex64f)
ICV_DEF_GEMM_BLOCK_MUL( 32f_C2R, CvComplex32f, CvComplex64f)
ICV_DEF_GEMM_STORE( 32f_C2R, CvComplex32f, CvComplex64f)

ICV_DEF_GEMM_SINGLE_MUL( 64f_C2R, CvComplex64f, CvComplex64f)
ICV_DEF_GEMM_BLOCK_MUL( 64f_C2R, CvComplex64f, CvComplex64f)
ICV_DEF_GEMM_STORE( 64f_C2R, CvComplex64f, CvComplex64f)

typedef CvStatus (CV_STDCALL *CvGEMMSingleMulFunc)( const void* src1, size_t step1,
                   const void* src2, size_t step2, const void* src3, size_t step3,
                   void* dst, size_t dststep, CvSize srcsize, CvSize dstsize,
                   double alpha, double beta, int flags );

typedef CvStatus (CV_STDCALL *CvGEMMBlockMulFunc)( const void* src1, size_t step1,
                   const void* src2, size_t step2, void* dst, size_t dststep,
                   CvSize srcsize, CvSize dstsize, int flags );

typedef CvStatus (CV_STDCALL *CvGEMMStoreFunc)( const void* src1, size_t step1,
                   const void* src2, size_t step2, void* dst, size_t dststep,
                   CvSize dstsize, double alpha, double beta, int flags );


static void icvInitGEMMTable( CvBigFuncTable* single_mul_tab,
                              CvBigFuncTable* block_mul_tab,
                              CvBigFuncTable* store_tab )
{
    single_mul_tab->fn_2d[CV_32FC1] = (void*)icvGEMMSingleMul_32f_C1R;
    single_mul_tab->fn_2d[CV_64FC1] = (void*)icvGEMMSingleMul_64f_C1R;
    single_mul_tab->fn_2d[CV_32FC2] = (void*)icvGEMMSingleMul_32f_C2R;
    single_mul_tab->fn_2d[CV_64FC2] = (void*)icvGEMMSingleMul_64f_C2R;
    block_mul_tab->fn_2d[CV_32FC1] = (void*)icvGEMMBlockMul_32f_C1R;
    block_mul_tab->fn_2d[CV_64FC1] = (void*)icvGEMMBlockMul_64f_C1R;
    block_mul_tab->fn_2d[CV_32FC2] = (void*)icvGEMMBlockMul_32f_C2R;
    block_mul_tab->fn_2d[CV_64FC2] = (void*)icvGEMMBlockMul_64f_C2R;
    store_tab->fn_2d[CV_32FC1] = (void*)icvGEMMStore_32f_C1R;
    store_tab->fn_2d[CV_64FC1] = (void*)icvGEMMStore_64f_C1R;
    store_tab->fn_2d[CV_32FC2] = (void*)icvGEMMStore_32f_C2R;
    store_tab->fn_2d[CV_64FC2] = (void*)icvGEMMStore_64f_C2R;
}


CV_IMPL void
cvGEMM( const CvArr* Aarr, const CvArr* Barr, double alpha,
        const CvArr* Carr, double beta, CvArr* Darr, int flags )
{
    const int block_lin_size = 128;
    const int block_size = block_lin_size * block_lin_size;

    static CvBigFuncTable single_mul_tab, block_mul_tab, store_tab;
    static int inittab = 0;
    static double zero[] = {0,0,0,0};
    static float zerof[] = {0,0,0,0};
    
    uchar* buffer = 0;
    int local_alloc = 0;
    uchar* block_buffer = 0;

    CV_FUNCNAME( "cvGEMM" );

    __BEGIN__;

    CvMat *A = (CvMat*)Aarr;
    CvMat *B = (CvMat*)Barr;
    CvMat *C = (CvMat*)Carr;
    CvMat *D = (CvMat*)Darr;
    int len = 0;
    
    CvMat stub, stub1, stub2, stub3;
    CvSize a_size, d_size;
    int type;

    if( !CV_IS_MAT( A ))
    {
        int coi = 0;
        CV_CALL( A = cvGetMat( A, &stub1, &coi ));

        if( coi != 0 )
            CV_ERROR( CV_BadCOI, "" );
    }

    if( !CV_IS_MAT( B ))
    {
        int coi = 0;
        CV_CALL( B = cvGetMat( B, &stub2, &coi ));

        if( coi != 0 )
            CV_ERROR( CV_BadCOI, "" );
    }

    if( !CV_IS_MAT( D ))
    {
        int coi = 0;
        CV_CALL( D = cvGetMat( D, &stub, &coi ));

        if( coi != 0 )
            CV_ERROR( CV_BadCOI, "" );
    }

    if( beta == 0 )
        C = 0;

    if( C )
    {
        if( !CV_IS_MAT( C ))
        {
            int coi = 0;
            CV_CALL( C = cvGetMat( C, &stub3, &coi ));

            if( coi != 0 )
                CV_ERROR( CV_BadCOI, "" );
        }

        if( !CV_ARE_TYPES_EQ( C, D ))
            CV_ERROR( CV_StsUnmatchedFormats, "" );

        if( (flags&CV_GEMM_C_T) == 0 && (C->cols != D->cols || C->rows != D->rows) ||
            (flags&CV_GEMM_C_T) != 0 && (C->rows != D->cols || C->cols != D->rows))
            CV_ERROR( CV_StsUnmatchedSizes, "" );

        if( (flags & CV_GEMM_C_T) != 0 && C->data.ptr == D->data.ptr )
        {
            cvTranspose( C, D );
            C = D;
            flags &= ~CV_GEMM_C_T;
        }
    }
    else
    {
        C = &stub3;
        C->data.ptr = 0;
        C->step = 0;
        C->type = CV_MAT_CONT_FLAG;
    }

    type = CV_MAT_TYPE(A->type);
    if( !CV_ARE_TYPES_EQ( A, B ) || !CV_ARE_TYPES_EQ( A, D ) )
        CV_ERROR( CV_StsUnmatchedFormats, "" );

    a_size.width = A->cols;
    a_size.height = A->rows;
    d_size.width = D->cols;
    d_size.height = D->rows;

    switch( flags & (CV_GEMM_A_T|CV_GEMM_B_T) )
    {
    case 0:
        len = B->rows;
        if( a_size.width != len ||
            B->cols != d_size.width ||
            a_size.height != d_size.height )
            CV_ERROR( CV_StsUnmatchedSizes, "" );
        break;
    case 1:
        len = B->rows;
        if( a_size.height != len ||
            B->cols != d_size.width ||
            a_size.width != d_size.height )
            CV_ERROR( CV_StsUnmatchedSizes, "" );
        break;
    case 2:
        len = B->cols;
        if( a_size.width != len ||
            B->rows != d_size.width ||
            a_size.height != d_size.height )
            CV_ERROR( CV_StsUnmatchedSizes, "" );
        break;
    case 3:
        len = B->cols;
        if( a_size.height != len ||
            B->rows != d_size.width ||
            a_size.width != d_size.height )
            CV_ERROR( CV_StsUnmatchedSizes, "" );
        break;
    }

    if( flags == 0 && 2 <= len && len <= 4 && (len == d_size.width || len == d_size.height) )
    {
        int i;
        if( type == CV_64F )
        {
            double* d = D->data.db;
            const double *a = A->data.db, *b = B->data.db, *c = C->data.db;
            size_t d_step = D->step/sizeof(d[0]),
                   a_step = A->step/sizeof(a[0]),
                   b_step = B->step/sizeof(b[0]),
                   c_step = C->step/sizeof(c[0]);

            if( !c )
                c = zero;

            switch( len )
            {
            case 2:
                if( len == d_size.width && b != d )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久女警 | 亚洲尤物视频在线| 国产精品综合在线视频| 欧美疯狂做受xxxx富婆| 亚洲乱码国产乱码精品精98午夜| 精品一区二区三区在线播放| 成人黄色软件下载| 久久久777精品电影网影网| 久久精品99国产精品日本| 5月丁香婷婷综合| 精品亚洲aⅴ乱码一区二区三区| 欧美日韩电影一区| 午夜精品久久久久久久| 色狠狠综合天天综合综合| 一区二区三区日韩欧美| 欧美午夜片在线看| 九一九一国产精品| 日本一区二区免费在线| 国产一区啦啦啦在线观看| 精品捆绑美女sm三区| 国产成人精品网址| 中文字幕日韩av资源站| 国产91高潮流白浆在线麻豆| 中文字幕电影一区| 在线一区二区视频| 免费成人性网站| 国产情人综合久久777777| 欧美人与禽zozo性伦| 国产乱码精品一区二区三区av | 色综合天天综合色综合av| 午夜久久电影网| 欧美videos中文字幕| 99久久精品久久久久久清纯| 性久久久久久久| 欧美精品一区二区三区久久久| 一本久久精品一区二区| 国产精品一区免费在线观看| 夜夜嗨av一区二区三区网页| 精品日韩在线观看| 蜜臀精品久久久久久蜜臀| 国产美女视频一区| 一区二区成人在线| 国产欧美一区二区精品性色超碰| 欧美三级日韩三级| 91视频一区二区三区| 黄色日韩三级电影| 经典三级在线一区| 亚洲第一二三四区| 亚洲三级久久久| 国产精品久久久久久亚洲伦| 欧美挠脚心视频网站| 精品视频一区二区不卡| 色综合天天综合色综合av| a4yy欧美一区二区三区| 国产精品亚洲一区二区三区妖精| 日韩专区在线视频| 一区二区三区在线免费播放| 国产欧美精品一区二区三区四区| 欧美电视剧免费全集观看| 91精品一区二区三区久久久久久 | 日韩欧美国产电影| 日韩美女视频一区二区在线观看| 欧美日产国产精品| 欧美成人猛片aaaaaaa| 日本一区二区高清| 国产欧美一区二区精品忘忧草| 中文字幕一区二区三区乱码在线 | 性感美女久久精品| 日产欧产美韩系列久久99| 国产精品夜夜嗨| 欧美色图免费看| 91精品国产色综合久久ai换脸| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品不卡一区| 蜜桃视频在线一区| 欧美美女一区二区| 精品粉嫩aⅴ一区二区三区四区| 欧美精品视频www在线观看 | 91在线视频网址| 欧美一区二区三区视频免费播放| 欧美精品一区二区三区在线| 亚洲国产精品黑人久久久 | 成人午夜视频网站| 91国内精品野花午夜精品| 日韩精品在线一区二区| 亚洲视频中文字幕| 黄色资源网久久资源365| 91精品福利在线| 最新日韩av在线| 久久er精品视频| 欧美精品第1页| 中文字幕在线观看一区| 六月丁香婷婷色狠狠久久| 色综合网色综合| 国产精品网友自拍| 成人动漫一区二区| 国产女主播视频一区二区| 亚洲永久免费视频| av电影一区二区| 国产欧美日韩精品a在线观看| 日本视频在线一区| 欧美日韩在线播放三区| 一区二区在线看| 欧美婷婷六月丁香综合色| 亚洲自拍偷拍综合| 欧美军同video69gay| 日韩在线一区二区三区| 在线观看亚洲精品| 日韩国产欧美在线观看| 欧美二区乱c少妇| 免费人成黄页网站在线一区二区| 91精品国产综合久久香蕉的特点| 亚洲精品成人a在线观看| 91亚洲国产成人精品一区二三| 欧美国产日韩精品免费观看| 日日摸夜夜添夜夜添精品视频| 欧亚一区二区三区| 麻豆91在线看| 国产精品成人免费| 91精品久久久久久久99蜜桃| 久久99精品网久久| 亚洲欧美激情一区二区| 欧美福利视频一区| 国产a区久久久| 亚洲成a人v欧美综合天堂| 日韩你懂的在线观看| www.亚洲在线| 美国毛片一区二区三区| 亚洲人快播电影网| 欧美大片在线观看一区| 色欲综合视频天天天| 美腿丝袜在线亚洲一区| 亚洲激情av在线| 一区二区三区四区视频精品免费| 99在线热播精品免费| 精品国产123| 亚洲国产综合在线| 日韩视频在线永久播放| 日本电影亚洲天堂一区| 日韩电影在线免费看| 一区二区三区高清不卡| 中文字幕第一区二区| 日韩视频在线永久播放| 欧美福利一区二区| 在线播放91灌醉迷j高跟美女| av日韩在线网站| 成人免费视频一区| 国产在线一区观看| 国产精品资源网| 国产一区二区精品久久| 精品在线视频一区| 国产精品自拍三区| 日本成人中文字幕在线视频| 亚洲18女电影在线观看| 伊人夜夜躁av伊人久久| 亚洲视频一区在线| 亚洲视频一二三| 亚洲精品一区二区三区在线观看| 欧美人伦禁忌dvd放荡欲情| 欧美中文字幕一区| 91精品视频网| 2023国产精品视频| 中文字幕一区在线| 夜夜操天天操亚洲| 香蕉影视欧美成人| 国产一区二区三区免费| 床上的激情91.| 欧美日韩美女一区二区| 精品国产精品一区二区夜夜嗨| 欧美国产日韩精品免费观看| 亚洲小说欧美激情另类| 日韩精品高清不卡| 国产成人综合精品三级| 7777精品伊人久久久大香线蕉的| 欧美成人一区二区三区片免费| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品美女一区二区三区| 午夜影视日本亚洲欧洲精品| 另类小说综合欧美亚洲| a级精品国产片在线观看| 26uuu精品一区二区在线观看| 亚洲欧美另类小说| 国产69精品一区二区亚洲孕妇| 欧美一区二区视频在线观看2020| 国产亚洲精品超碰| 欧美96一区二区免费视频| 成人一区二区三区| 欧美精品乱码久久久久久按摩| 成人欧美一区二区三区白人| 国内偷窥港台综合视频在线播放| 欧美在线播放高清精品| 国产精品素人视频| 国产99久久久精品| 欧美mv日韩mv国产网站app| 亚洲成人激情综合网| 欧美性大战久久久久久久蜜臀| 欧美mv日韩mv亚洲| 久久国产尿小便嘘嘘| 欧美大胆人体bbbb| 蜜桃传媒麻豆第一区在线观看|