示例#1
0
ssize_t
ptrFromStr(const char *src, size_t *len, ptr **dst, bool external)
{
	size_t base = 0;
	const char *p = src;

	atommem(sizeof(ptr));

	**dst = ptr_nil;
	if (GDK_STRNIL(src))
		return 1;

	while (GDKisspace(*p))
		p++;
	if (external && strncmp(p, "nil", 3) == 0) {
		p += 3;
	} else {
		if (p[0] == '0' && (p[1] == 'x' || p[1] == 'X')) {
			p += 2;
		}
		if (!num16(*p)) {
			GDKerror("not a number\n");
			return -1;
		}
		while (num16(*p)) {
			if (base >= ((size_t) 1 << (8 * sizeof(size_t) - 4))) {
				GDKerror("overflow\n");
				return -1;
			}
			base = mult16(base) + base16(*p);
			p++;
		}
		**dst = (ptr) base;
	}
	while (GDKisspace(*p))
		p++;
	return (ssize_t) (p - src);
}
示例#2
0
文件: mcm.c 项目: NYU-Poly-HLS/cdfg
void MCM(short X0, short X1, short X2, short X3,
         short X4, short X5, short X6, short X7,
         short* Y0, short* Y1, short* Y2, short* Y3,
         short* Y4, short* Y5, short* Y6, short* Y7)

{
    short
        MX0_1,
        MX1_1, MX1_2, MX1_3, MX1_4, MX1_5, MX1_6, ImX1_7, ImX1_8, ImX1_9,
        MX2_1, MX2_2,
        MX3_1, MX3_2, MX3_3, MX3_4, MX3_5, MX3_6, ImX3_7, ImX3_8, ImX3_9,
        MX4_1, 
        MX5_1, MX5_2, MX5_3, MX5_4, MX5_5, MX5_6, ImX5_7, ImX5_8, ImX5_9,
        MX6_1, MX6_2,
        MX7_1, MX7_2, MX7_3, MX7_4, MX7_5, MX7_6, ImX7_7, ImX7_8, ImX7_9,
        Sum43, Sum44, Sum45, Sum46;
    
    MX0_1 = num16(Const_X0_1 * X0);


    MX1_1 = num16(Const_X1_1 * X1);
    MX1_2 = num16(Const_X1_2 * X1);
    MX1_3 = num16(Const_X1_3 * X1);
    MX1_4 = num16(Const_X1_4 * X1);
    MX1_5 = num16(Const_X1_5 * X1);
    MX1_6 = num16(Const_X1_6 * X1);
    ImX1_7 = MX1_2 + MX1_4 ;
    ImX1_8 =  MX1_6 + MX1_1 - MX1_4 ;
    ImX1_9 =  MX1_6 - MX1_1 - MX1_3;


    MX2_1 = num16(Const_X2_1 * X2);
    MX2_2 = num16(Const_X2_2 * X2);


    MX3_1 = num16(Const_X3_1 * X3);
    MX3_2 = num16(Const_X3_2 * X3);
    MX3_3 = num16(Const_X3_3 * X3);
    MX3_4 = num16(Const_X3_4 * X3);
    MX3_5 = num16(Const_X3_5 * X3);
    MX3_6 = num16(Const_X3_6 * X3);
    ImX3_7 = MX3_2 + MX3_4 ;
    ImX3_8 =  MX3_6 + MX3_1 - MX3_4;
    ImX3_9 =  MX3_6 - MX3_1 - MX3_3;


    MX4_1 = num16(Const_X4_1 * X4);


    MX5_1 = num16(Const_X5_1 * X5);
    MX5_2 = num16(Const_X5_2 * X5);
    MX5_3 = num16(Const_X5_3 * X5);
    MX5_4 = num16(Const_X5_4 * X5);
    MX5_5 = num16(Const_X5_5 * X5);
    MX5_6 = num16(Const_X5_6 * X5);
    ImX5_7 = MX5_2 + MX5_4 ;
    ImX5_8 = MX5_6 -MX5_4 + MX5_1 ;
    ImX5_9 = MX5_6 - MX5_3 - MX5_1 ;


    MX6_1 = num16(Const_X6_1 * X6);
    MX6_2 = num16(Const_X6_2 * X6);


    MX7_1 = num16(Const_X7_1 * X7);
    MX7_2 = num16(Const_X7_2 * X7);
    MX7_3 = num16(Const_X7_3 * X7);
    MX7_4 = num16(Const_X7_4 * X7);
    MX7_5 = num16(Const_X7_5 * X7);
    MX7_6 = num16(Const_X7_6 * X7);
    ImX7_7 = MX7_2 + MX7_4 ;
    ImX7_8 = MX7_6 -MX7_4 + MX7_1 ;
    ImX7_9 = MX7_6 -MX7_3 - MX7_1 ;


    Sum46 = MX0_1 - MX2_2 - MX6_1 + MX4_1 ;
    Sum45 = MX6_2 - MX2_1 - MX4_1 + MX0_1 ;
    Sum44 = MX2_1 - MX4_1 - MX6_2 + MX0_1 ;
    Sum43 = MX0_1 + MX2_2 + MX4_1 + MX6_1 ;


    *Y0 = ImX1_9 + ImX3_8 + MX5_5 + ImX7_7 + Sum43 ;
    *Y1 = ImX1_8 - ImX3_7 - ImX5_9 - MX7_5 + Sum44 ;
    *Y2 = MX1_5 - ImX3_9 + ImX5_7 + ImX7_8 + Sum45 ;
    *Y3 = ImX1_7 - MX3_5 + ImX5_8 - ImX7_9 + Sum46 ;
    *Y4 = Sum46 - ImX1_7 + MX3_5 - ImX5_8 + ImX7_9 ;
    *Y5 = Sum45 - MX1_5 + ImX3_9 - ImX5_7 - ImX7_8 ;
    *Y6 = Sum44 - ImX1_8 + ImX3_7 + ImX5_9 + MX7_5 ;
    *Y7 = Sum43 - ImX1_9 - ImX3_8 - MX5_5 - ImX7_7 ;

}