Tag: 矢量

如何自动矢量化数组比较function

这是这篇文章的后续内容。 免责声明:我做过零分析,甚至没有应用程序,这纯粹是为了让我学习更多关于矢量化的知识。 我的代码如下。 我正在使用g3 4.9.4在配备i3 m370的机器上进行编译。 第一个循环按照我的预期进行矢量化。 然而,检查每个temp元素的第二个循环不是矢量化的AFAICT,带有所有“andb”指令。 我希望它可以像_mm_test_all_ones那样进行矢量化。 该循环如何进行矢量化? 第二个问题,我真的希望这是一个更大的循环的一部分。 如果我取消注释下面的内容,则没有任何内容可以进行矢量化。 我怎样才能得到那个矢量化? #define ARR_LENGTH 4096 #define block_size 4 typedef float afloat __attribute__ ((__aligned__(16))); char all_equal_2(afloat *a, afloat *b){ unsigned int i, j; char r = 1; unsigned int temp[block_size] __attribute__((aligned(16))); //for (i=0; i<ARR_LENGTH; i+=block_size){ for (j = 0; j < block_size; ++j) { temp[j] […]

使用NULL数组将内存分配给2D数组(c)

感谢您花时间阅读本文。 在我的问题中,“向量”被定义为整数的一维数组。 因此,矢量arrays将是2D维arrays,其中每个矢量可以具有不同的长度。 我被要求使用: int ** vectors – 2D数组 int size -an整数,表示**向量中存在多少向量 int * sizes – 一个整数的1D数组,表示向量的长度 例如,对于: vectors = {{4,3,4,3},{11,22,33,44,55,66},NULL,{5},{3,33,333,33,3}}。 大小为5(向量内有5个向量)。 size是{4,6,0,1,5}(4是第一个向量的长度,依此类推)。 用户在main()的开头输入大小,**矢量&*大小用动态分配大小的值。 我被要求写这个函数: int init(int *** vectors,int ** sizes,int size),它将**向量初始化为NULL数组,将* sizes初始化为零数组。 我想出了这段代码: #define _CRT_SECURE_NO_WARNINGS #include #include int init(int*** vectors, int** sizes, int size) { int i, k,j; printf(“check\n”); *vectors = (int**)malloc(size * sizeof(int*)); […]

在预定义的struct上创建动态矢量

我有一个预定义的结构要使用: typedef struct somestruct_s { int s; union { unsigned char *ptr; unsigned char l_ptr[sizeof(char *)]; }; }somestruct_t, *somestruct; 它包含减少内存使用量的联合。 我知道由于m32和m64编译(指针大小),大小可能会有所不同。 我的问题是如何“使用”该结构来进行精确分配。 此结构的目的是实现基本位操作,s变量包含位图的大小(以字节为单位)。 如果位图可以适合指向位图的指针占用的内存,那么我们在那里分配她。 我在上面写了一些位图操作,但我无法真正得到结构或如何操作它。

简化立方贝塞尔曲线?

我正在尝试使用画笔工具实现与Adobe Illustrator相近的function。 它正确地分析和简化了路径,包括其贝塞尔手柄。 我实施了Ramer-Douglas-Peucker_algorithm,然而,它并没有真正成为我所需要的。 它适用于线段,但不考虑贝塞尔手柄。 是否有算法可以像这个算法一样,但考虑到立方贝塞尔句柄? 这个问题是曲线可能是一个角度,但算法只能看到一条直线。 谢谢

错误C2057:预期的常量表达式

if(stat(“seek.pc.db”, &files) ==0 ) sizes=files.st_size; sizes=sizes/sizeof(int); int s[sizes]; 我在Visual Studio 2008中编译它,我收到以下错误:错误C2057:预期的常量表达式错误C2466:无法分配常量大小为0的数组。 我尝试使用矢量[尺寸]但无济于事。 我究竟做错了什么? 谢谢!

给定起点和终点以及距离,计算沿线的点

寻找最快的方法来计算位于距离线的终点给定距离的线上的点: void calculate_line_point(int x1, int y1, int x2, int y2, int distance, int *px, int *py) { //calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2 *px = ??? *py = ??? } 感谢您的回复,不是这不是家庭作业,只是一些黑客攻击我的正常专业领域。 这是下面建议的function。 它并不接近工作。 如果我在圆的右上角90度部分每隔5度计算一个点作为起始点,并调用下面的函数,圆的中心为x2,y2的距离为4,则终点完全错误。 它们位于中心的下方和右侧,长度与中心点一样长。 有人有什么建议吗? void calculate_line_point(int x1, int y1, int x2, int y2, int distance) […]

将二次贝塞尔曲线转换为立方贝塞尔曲线

将二次贝塞尔曲线(3点)转换为立方贝塞尔曲线(4点)的算法是什么?