cvmul32.cpp

来自「这是我本人编写的一个32位定点小数运算的函数库。对于没有浮点运算器的场合」· C++ 代码 · 共 33 行

CPP
33
字号
//
//
//

#include "stdafx.h"

extern "C" {

////////////////////////////////////////////////////////////

long VectorMul32_C(const long v1[],const long v2[],long n)
{
	long z=0,z0=0;
	for (int i=0;i<n;i++) {
		short x1=*((short*)(&v1[i])+1),y1=*((short*)(&v2[i])+1);
		unsigned short x0=*((unsigned short*)(&v1[i])),y0=*((unsigned short*)(&v2[i]));

		long z1=(long)x1*(long)y1;
		long z21=(long)x1*(long)y0;
		long z22=(long)x0*y1;
		long z3=(long)x0*(long)y0;

		z+=z1+*((short*)(&z21)+1)+*((short*)(&z22)+1);
		z0+=*((unsigned short*)(&z3)+1)+*(unsigned short*)(&z21)+*(unsigned short*)(&z22);
	}

	return (z<<1)+(z0>>15)+((z0&(1<<14))?1:0);
}

////////////////////////////////////////////////////////////

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?