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

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

?? bignum.c

?? arm9 Linux下基于攝像頭的物體移動檢測程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* *  Multi-precision integer library * *  Copyright (C) 2006-2007  Christophe Devine * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License along *  with this program; if not, write to the Free Software Foundation, Inc., *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *//* *  This MPI implementation is based on: * *  http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf *  http://www.stillhq.com/extracted/gnupg-api/mpi/ *  http://math.libtomcrypt.com/files/tommath.pdf */#include "config.h"#if defined(XYSSL_BIGNUM_C)#include "bignum.h"#include "bn_mul.h"#include <string.h>#include <stdlib.h>#include <stdarg.h>#define ciL    ((int) sizeof(t_int))    /* chars in limb  */#define biL    (ciL << 3)               /* bits  in limb  */#define biH    (ciL << 2)               /* half limb size *//* * Convert between bits/chars and number of limbs */#define BITS_TO_LIMBS(i)  (((i) + biL - 1) / biL)#define CHARS_TO_LIMBS(i) (((i) + ciL - 1) / ciL)/* * Initialize one or more mpi */void mpi_init( mpi *X, ... ){    va_list args;    va_start( args, X );    while( X != NULL )    {        X->s = 1;        X->n = 0;        X->p = NULL;        X = va_arg( args, mpi* );    }    va_end( args );}/* * Unallocate one or more mpi */void mpi_free( mpi *X, ... ){    va_list args;    va_start( args, X );    while( X != NULL )    {        if( X->p != NULL )        {            memset( X->p, 0, X->n * ciL );            free( X->p );        }        X->s = 1;        X->n = 0;        X->p = NULL;        X = va_arg( args, mpi* );    }    va_end( args );}/* * Enlarge to the specified number of limbs */int mpi_grow( mpi *X, int nblimbs ){    t_int *p;    if( X->n < nblimbs )    {        if( ( p = (t_int *) malloc( nblimbs * ciL ) ) == NULL )            return( 1 );        memset( p, 0, nblimbs * ciL );        if( X->p != NULL )        {            memcpy( p, X->p, X->n * ciL );            memset( X->p, 0, X->n * ciL );            free( X->p );        }        X->n = nblimbs;        X->p = p;    }    return( 0 );}/* * Copy the contents of Y into X */int mpi_copy( mpi *X, mpi *Y ){    int ret, i;    if( X == Y )        return( 0 );    for( i = Y->n - 1; i > 0; i-- )        if( Y->p[i] != 0 )            break;    i++;    X->s = Y->s;    MPI_CHK( mpi_grow( X, i ) );    memset( X->p, 0, X->n * ciL );    memcpy( X->p, Y->p, i * ciL );cleanup:    return( ret );}/* * Swap the contents of X and Y */void mpi_swap( mpi *X, mpi *Y ){    mpi T;    memcpy( &T,  X, sizeof( mpi ) );    memcpy(  X,  Y, sizeof( mpi ) );    memcpy(  Y, &T, sizeof( mpi ) );}/* * Set value from integer */int mpi_lset( mpi *X, int z ){    int ret;    MPI_CHK( mpi_grow( X, 1 ) );    memset( X->p, 0, X->n * ciL );    X->p[0] = ( z < 0 ) ? -z : z;    X->s    = ( z < 0 ) ? -1 : 1;cleanup:    return( ret );}/* * Return the number of least significant bits */int mpi_lsb( mpi *X ){    int i, j, count = 0;    for( i = 0; i < X->n; i++ )        for( j = 0; j < (int) biL; j++, count++ )            if( ( ( X->p[i] >> j ) & 1 ) != 0 )                return( count );    return( 0 );}/* * Return the number of most significant bits */int mpi_msb( mpi *X ){    int i, j;    for( i = X->n - 1; i > 0; i-- )        if( X->p[i] != 0 )            break;    for( j = biL - 1; j >= 0; j-- )        if( ( ( X->p[i] >> j ) & 1 ) != 0 )            break;    return( ( i * biL ) + j + 1 );}/* * Return the total size in bytes */int mpi_size( mpi *X ){    return( ( mpi_msb( X ) + 7 ) >> 3 );}/* * Convert an ASCII character to digit value */static int mpi_get_digit( t_int *d, int radix, char c ){    *d = 255;    if( c >= 0x30 && c <= 0x39 ) *d = c - 0x30;    if( c >= 0x41 && c <= 0x46 ) *d = c - 0x37;    if( c >= 0x61 && c <= 0x66 ) *d = c - 0x57;    if( *d >= (t_int) radix )        return( XYSSL_ERR_MPI_INVALID_CHARACTER );    return( 0 );}/* * Import from an ASCII string */int mpi_read_string( mpi *X, int radix, char *s ){    int ret, i, j, n;    t_int d;    mpi T;    if( radix < 2 || radix > 16 )        return( XYSSL_ERR_MPI_BAD_INPUT_DATA );    mpi_init( &T, NULL );    if( radix == 16 )    {        n = BITS_TO_LIMBS( strlen( s ) << 2 );        MPI_CHK( mpi_grow( X, n ) );        MPI_CHK( mpi_lset( X, 0 ) );        for( i = strlen( s ) - 1, j = 0; i >= 0; i--, j++ )        {            if( i == 0 && s[i] == '-' )            {                X->s = -1;                break;            }            MPI_CHK( mpi_get_digit( &d, radix, s[i] ) );            X->p[j / (2 * ciL)] |= d << ( (j % (2 * ciL)) << 2 );        }    }    else    {        MPI_CHK( mpi_lset( X, 0 ) );        for( i = 0; i < (int) strlen( s ); i++ )        {            if( i == 0 && s[i] == '-' )            {                X->s = -1;                continue;            }            MPI_CHK( mpi_get_digit( &d, radix, s[i] ) );            MPI_CHK( mpi_mul_int( &T, X, radix ) );            MPI_CHK( mpi_add_int( X, &T, d ) );        }    }cleanup:    mpi_free( &T, NULL );    return( ret );}/* * Helper to write the digits high-order first */static int mpi_write_hlp( mpi *X, int radix, char **p ){    int ret;    t_int r;    if( radix < 2 || radix > 16 )        return( XYSSL_ERR_MPI_BAD_INPUT_DATA );    MPI_CHK( mpi_mod_int( &r, X, radix ) );    MPI_CHK( mpi_div_int( X, NULL, X, radix ) );    if( mpi_cmp_int( X, 0 ) != 0 )        MPI_CHK( mpi_write_hlp( X, radix, p ) );    if( r < 10 )        *(*p)++ = (char)( r + 0x30 );    else        *(*p)++ = (char)( r + 0x37 );cleanup:    return( ret );}/* * Export into an ASCII string */int mpi_write_string( mpi *X, int radix, char *s, int *slen ){    int ret = 0, n;    char *p;    mpi T;    if( radix < 2 || radix > 16 )        return( XYSSL_ERR_MPI_BAD_INPUT_DATA );    n = mpi_msb( X );    if( radix >=  4 ) n >>= 1;    if( radix >= 16 ) n >>= 1;    n += 3;    if( *slen < n )    {        *slen = n;        return( XYSSL_ERR_MPI_BUFFER_TOO_SMALL );    }    p = s;    mpi_init( &T, NULL );    if( X->s == -1 )        *p++ = '-';    if( radix == 16 )    {        int c, i, j, k;        for( i = X->n - 1, k = 0; i >= 0; i-- )        {            for( j = ciL - 1; j >= 0; j-- )            {                c = ( X->p[i] >> (j << 3) ) & 0xFF;                if( c == 0 && k == 0 && (i + j) != 0 )                    continue;                p += sprintf( p, "%02X", c );                k = 1;            }        }    }    else    {        MPI_CHK( mpi_copy( &T, X ) );        MPI_CHK( mpi_write_hlp( &T, radix, &p ) );    }    *p++ = '\0';    *slen = p - s;cleanup:    mpi_free( &T, NULL );    return( ret );}/* * Read X from an opened file */int mpi_read_file( mpi *X, int radix, FILE *fin ){    t_int d;    int slen;    char *p;    char s[1024];    memset( s, 0, sizeof( s ) );    if( fgets( s, sizeof( s ) - 1, fin ) == NULL )        return( XYSSL_ERR_MPI_FILE_IO_ERROR );    slen = strlen( s );    if( s[slen - 1] == '\n' ) { slen--; s[slen] = '\0'; }    if( s[slen - 1] == '\r' ) { slen--; s[slen] = '\0'; }    p = s + slen;    while( --p >= s )        if( mpi_get_digit( &d, radix, *p ) != 0 )            break;    return( mpi_read_string( X, radix, p + 1 ) );}/* * Write X into an opened file (or stdout if fout == NULL) */int mpi_write_file( char *p, mpi *X, int radix, FILE *fout ){    int n, ret;    size_t slen;    size_t plen;    char s[1024];    n = sizeof( s );    memset( s, 0, n );    n -= 2;    MPI_CHK( mpi_write_string( X, radix, s, (int *) &n ) );    if( p == NULL ) p = "";    plen = strlen( p );    slen = strlen( s );    s[slen++] = '\r';    s[slen++] = '\n';    if( fout != NULL )    {        if( fwrite( p, 1, plen, fout ) != plen ||            fwrite( s, 1, slen, fout ) != slen )            return( XYSSL_ERR_MPI_FILE_IO_ERROR );    }    else        printf( "%s%s", p, s );cleanup:    return( ret );}/* * Import X from unsigned binary data, big endian */int mpi_read_binary( mpi *X, unsigned char *buf, int buflen ){    int ret, i, j, n;    for( n = 0; n < buflen; n++ )        if( buf[n] != 0 )            break;    MPI_CHK( mpi_grow( X, CHARS_TO_LIMBS( buflen - n ) ) );    MPI_CHK( mpi_lset( X, 0 ) );    for( i = buflen - 1, j = 0; i >= n; i--, j++ )        X->p[j / ciL] |= ((t_int) buf[i]) << ((j % ciL) << 3);cleanup:    return( ret );}/* * Export X into unsigned binary data, big endian */int mpi_write_binary( mpi *X, unsigned char *buf, int buflen ){    int i, j, n;    n = mpi_size( X );    if( buflen < n )        return( XYSSL_ERR_MPI_BUFFER_TOO_SMALL );    memset( buf, 0, buflen );    for( i = buflen - 1, j = 0; n > 0; i--, j++, n-- )        buf[i] = (unsigned char)( X->p[j / ciL] >> ((j % ciL) << 3) );    return( 0 );}/* * Left-shift: X <<= count */int mpi_shift_l( mpi *X, int count ){    int ret, i, v0, t1;    t_int r0 = 0, r1;    v0 = count / (biL    );    t1 = count & (biL - 1);    i = mpi_msb( X ) + count;    if( X->n * (int) biL < i )        MPI_CHK( mpi_grow( X, BITS_TO_LIMBS( i ) ) );    ret = 0;    /*     * shift by count / limb_size     */    if( v0 > 0 )    {        for( i = X->n - 1; i >= v0; i-- )            X->p[i] = X->p[i - v0];        for( ; i >= 0; i-- )            X->p[i] = 0;    }    /*     * shift by count % limb_size     */    if( t1 > 0 )    {        for( i = v0; i < X->n; i++ )        {            r1 = X->p[i] >> (biL - t1);            X->p[i] <<= t1;            X->p[i] |= r0;            r0 = r1;        }    }cleanup:    return( ret );}/* * Right-shift: X >>= count */int mpi_shift_r( mpi *X, int count ){    int i, v0, v1;    t_int r0 = 0, r1;    v0 = count /  biL;    v1 = count & (biL - 1);    /*     * shift by count / limb_size     */    if( v0 > 0 )    {        for( i = 0; i < X->n - v0; i++ )            X->p[i] = X->p[i + v0];        for( ; i < X->n; i++ )            X->p[i] = 0;    }    /*     * shift by count % limb_size     */    if( v1 > 0 )    {        for( i = X->n - 1; i >= 0; i-- )        {            r1 = X->p[i] << (biL - v1);            X->p[i] >>= v1;            X->p[i] |= r0;            r0 = r1;        }    }    return( 0 );}/* * Compare unsigned values */int mpi_cmp_abs( mpi *X, mpi *Y ){    int i, j;    for( i = X->n - 1; i >= 0; i-- )        if( X->p[i] != 0 )            break;    for( j = Y->n - 1; j >= 0; j-- )        if( Y->p[j] != 0 )            break;    if( i < 0 && j < 0 )        return( 0 );    if( i > j ) return(  1 );    if( j > i ) return( -1 );    for( ; i >= 0; i-- )    {        if( X->p[i] > Y->p[i] ) return(  1 );        if( X->p[i] < Y->p[i] ) return( -1 );    }    return( 0 );}/* * Compare signed values */int mpi_cmp_mpi( mpi *X, mpi *Y ){    int i, j;    for( i = X->n - 1; i >= 0; i-- )        if( X->p[i] != 0 )            break;    for( j = Y->n - 1; j >= 0; j-- )        if( Y->p[j] != 0 )            break;    if( i < 0 && j < 0 )        return( 0 );    if( i > j ) return(  X->s );    if( j > i ) return( -X->s );    if( X->s > 0 && Y->s < 0 ) return(  1 );    if( Y->s > 0 && X->s < 0 ) return( -1 );    for( ; i >= 0; i-- )    {        if( X->p[i] > Y->p[i] ) return(  X->s );        if( X->p[i] < Y->p[i] ) return( -X->s );    }    return( 0 );}/* * Compare signed values */int mpi_cmp_int( mpi *X, int z ){    mpi Y;    t_int p[1];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av亚洲产国偷v产偷v自拍| 久久久91精品国产一区二区精品| 欧美国产精品v| 风间由美中文字幕在线看视频国产欧美| 日韩欧美aaaaaa| 国产麻豆成人精品| 国产精品你懂的在线欣赏| jlzzjlzz亚洲日本少妇| 亚洲欧洲精品成人久久奇米网 | 亚洲高清在线视频| 欧美日韩精品免费| 国产一区久久久| 国产精品久久久久久久久图文区 | 日本成人在线不卡视频| 日韩欧美亚洲国产精品字幕久久久| 麻豆成人综合网| 久久精品一区蜜桃臀影院| 9l国产精品久久久久麻豆| 亚洲一区国产视频| 日韩免费观看高清完整版| 国产一区在线视频| 亚洲色图第一区| 555www色欧美视频| 国产999精品久久久久久绿帽| 国产精品第四页| 欧美日韩国产美| 国产一区二区不卡在线| 亚洲手机成人高清视频| 欧美一级高清大全免费观看| 国产一区二区视频在线播放| 一区二区三区日韩精品视频| 日韩精品一区二| 色综合中文字幕国产 | 亚洲国产精品一区二区www在线| 欧美一级日韩免费不卡| www.欧美色图| 久久国产乱子精品免费女| 亚洲欧美日韩国产手机在线 | 韩国成人在线视频| 亚洲精品视频在线观看网站| 精品国产乱码久久久久久老虎| 99国产精品一区| 九九热在线视频观看这里只有精品| 亚洲视频 欧洲视频| 精品久久国产老人久久综合| 色欧美88888久久久久久影院| 韩国欧美国产一区| 三级在线观看一区二区| 国产精品久久网站| 精品国产不卡一区二区三区| 色婷婷亚洲综合| 国产99一区视频免费| 日韩精品乱码免费| 亚洲综合色丁香婷婷六月图片| 国产性做久久久久久| 欧美一区二区三区在线观看视频 | 日本高清不卡视频| 国产成人亚洲综合a∨婷婷| 日日噜噜夜夜狠狠视频欧美人| ●精品国产综合乱码久久久久| 久久久.com| 久久亚洲综合色| 日韩你懂的电影在线观看| 欧美顶级少妇做爰| 欧美亚洲一区二区在线| 一本色道久久综合亚洲精品按摩| 国产91精品欧美| 国产一区欧美二区| 韩日av一区二区| 国产综合久久久久久鬼色| 秋霞成人午夜伦在线观看| 亚洲成av人片一区二区| 一个色妞综合视频在线观看| 亚洲婷婷综合久久一本伊一区| 日本一区二区成人在线| 国产蜜臀97一区二区三区| 久久久精品一品道一区| 久久久一区二区三区捆绑**| 精品国产乱码久久| 久久综合九色综合欧美98| 欧美刺激脚交jootjob| 欧美一二三四在线| 日韩欧美一区二区视频| 精品国产露脸精彩对白| 久久久久久亚洲综合| 国产日韩av一区| 国产日韩精品一区二区三区在线| 精品欧美黑人一区二区三区| 久久综合久久99| 国产欧美精品一区二区三区四区| 国产欧美精品国产国产专区| 国产目拍亚洲精品99久久精品 | 中文字幕一区日韩精品欧美| 国产精品久久二区二区| 亚洲女人****多毛耸耸8| 伊人色综合久久天天| 亚洲成人免费影院| 美女一区二区久久| 国产盗摄女厕一区二区三区| 国产成人综合在线播放| 白白色 亚洲乱淫| 在线免费精品视频| 在线观看91av| 久久久亚洲午夜电影| 成人欧美一区二区三区在线播放| 亚洲欧美日韩国产手机在线| 亚洲成a人片在线观看中文| 美腿丝袜亚洲三区| 国产不卡一区视频| 欧美无砖专区一中文字| 在线电影一区二区三区| 久久精品综合网| 亚洲狠狠爱一区二区三区| 久久精品免费看| 99久久国产综合精品色伊| 欧美精品九九99久久| 欧美国产国产综合| 午夜精品福利一区二区蜜股av | 久久久av毛片精品| 一区二区在线观看不卡| 喷水一区二区三区| 91麻豆精东视频| 精品福利一区二区三区| 玉米视频成人免费看| 精品在线播放午夜| 91行情网站电视在线观看高清版| 日韩久久久久久| 亚洲桃色在线一区| 国产麻豆午夜三级精品| 欧美怡红院视频| 国产午夜精品理论片a级大结局| 亚洲一区影音先锋| 成人精品小蝌蚪| 日韩欧美一二三| 亚洲综合色噜噜狠狠| 高清日韩电视剧大全免费| 69堂成人精品免费视频| 最新日韩在线视频| 国产精品一区二区在线观看不卡| 欧美午夜精品理论片a级按摩| 欧美国产1区2区| 国产精品中文字幕一区二区三区| 欧美亚洲国产bt| 中文字幕在线观看不卡| 日本vs亚洲vs韩国一区三区二区| 色综合天天综合色综合av| 国产婷婷色一区二区三区 | 蜜桃av一区二区在线观看| 91网站黄www| 国产精品欧美一级免费| 狠狠色综合播放一区二区| 欧美日韩高清不卡| 日韩欧美综合在线| 国产网站一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲图片小说| 亚洲夂夂婷婷色拍ww47| 99在线精品免费| 欧美国产在线观看| 国产激情一区二区三区四区| 日韩免费高清av| 蜜桃视频免费观看一区| 制服丝袜一区二区三区| 亚洲第一狼人社区| 欧美色偷偷大香| 亚洲一区自拍偷拍| 精品视频全国免费看| 亚洲成人你懂的| 欧美女孩性生活视频| 天天综合日日夜夜精品| 91精品免费在线观看| 日本在线不卡视频| 欧美一区二区久久久| 日本三级亚洲精品| 精品国产乱码久久久久久影片| 国产一区二区三区免费在线观看| 精品久久国产字幕高潮| 国产一区不卡视频| 亚洲国产精品成人综合 | 日韩精品亚洲一区二区三区免费| 在线视频欧美精品| 图片区小说区区亚洲影院| 欧美人狂配大交3d怪物一区| 日韩专区在线视频| 久久只精品国产| 国产成人免费av在线| 国产精品剧情在线亚洲| 色久综合一二码| 日韩主播视频在线| 精品久久久久久久久久久院品网| 国产精品99久久久久久宅男| 国产精品乱子久久久久| 欧美在线三级电影| 日本怡春院一区二区| 久久久久久一级片| 91一区一区三区| 午夜一区二区三区视频| 日韩欧美一级二级| 99这里只有久久精品视频| 亚洲狠狠爱一区二区三区|