首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

方根的C语言实现(三) ——最终程序实现

了解了浮点数的存储以及手算平方根的原理,我们可以考虑程序实现了。   先实现一个64位整数的平方根,根据之前的手算平方根,程序也不是那么难写了。...所以此处要用a或者2*a来开平方根,   回忆一下浮点数的结构,单精度浮点数的精度是23位。   表示的是科学计数法a*2n的a减去1的部分,那么加上整数1可以用二进制24位表示。   ...于是,我们就想,一个二进制48位或47位长的数,平方根是二进制24位。那么,我们就可以用一个48位或47位的二进制整数的平方根计算结果的小数部分。   ...nan/inf/-inf以及负数的平方根都是nan,   0.0的平方根是0.0,   -0.0的平方根是-0.0(可能只是某些库里是这样的),   以上都可以在计算的时候特殊化一下。   ...之前我们用的是47位或者48位数开平方,为了四舍五入,我们需要多一位,于是就用49位或者50位数开平方。   修改一下mysqrtf,增加两位拿去开平方,_sqrt_也动一下。

1K80

基于FPGA的Sobel算子(一)

Sobel算子包括x和y方向的差分运算,求取其平方根作为最终取值,一般情况下,在FPGA处理中,考虑到效率和资源占用问题,也可以用绝对值来代替。...将Sobel算子的表达式再次列出如下: 由数学表达式,计算Sobel算子需要首先计算x方向和y方向的微分值gx(x,y)和gy(x,y),之后对两个微分结果分别求平方根或绝对值相加并进行越界处理。...2.开平方以及反正切计算 在软件中,开方运算和反正切运算均属于浮点运算。...Xilinx和Altera都提供了强大的浮点运算IP核,包括乘法与除法运算、开平方以及正余弦反正切运算等。 Xillinx免费提供Cordic算法核。(使用向量模式将行坐标系转换到极坐标)

1.3K100

方根的C语言实现(二) —— 手算平方根的原理

要说手算平方根,原理其实非常简单,   一是平方根函数是严格单调增函数,   二就是以下这个恒等式满足   (a*N+b)2 ≡ (a*N)2 + 2*a*b*N + b2       ≡ (a*N)2...我们来求5499025的平方根。   ...先将5499025两位两位从低往高排,为   5 49 90 25   2*2<5<3*3   所以最高位为2,   然后我们再来看549的平方根,   我们假设549的平方根的整数部分是2*10+b,...接下去我们要去利用之前的这个算法,改装一下,来进行二进制的开平方。   二进制的每一位不是1就是0,这样在每次往前推一位的时候就相对简单。   ...举个例子,我们来算121的平方根,也就是二进制下1111001的平方根

2.1K90

向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)

向量的1范数 向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1); 1.2 向量的2范数 向量的2范数即:向量的每个元素的平方和再开平方根...列和最大),上述矩阵A的1范数先得到[5,8,9],再取最大的最终结果就是:9,MATLAB代码实现为:norm(A,1); 2.2 矩阵的2范数 矩阵的2范数即:矩阵 ATA A^{T}A的最大特征值开平方根...,它是L0范数的最优凸近似,因此它也可以表示稀疏,上述矩阵A最终结果就是:22,MATLAB代码实现为:sum(sum(abs(A))) 2.7 矩阵的F范数 矩阵的F范数即:矩阵的各个元素平方之和再开平方根

1.2K10
领券