⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathutil.h

📁 傅立叶变换和小波变换是图像压缩的重要工具。该代大戏是利用小波变换进行图像压缩。
💻 H
字号:
#ifndef MATHUTIL_H
#define MATHUTIL_H

#include "wave.h"

#ifndef LN2
#define LN2 		(0.69314718f)
#endif

#ifndef LN2inverse
#define LN2inverse	(1.442695f)
#endif

#ifndef log2
#define log2(val) (log(val)*LN2inverse)
#endif

#define MSE2PSNR(mse)	((float)( 48.165 - 10.0*log10(mse)))
#define PSNR2MSE(psnr)	((float)pow(10.0,4.8165 - (psnr)*0.1))

uint INLINE ilog2ceil(uint val)
{
	__asm
	{
		FILD val
		FSTP val
		mov eax,val
		add eax,0x7FFFFF // 1<<23 - 1
		shr eax,23
		sub eax,127
	}
}

uint INLINE ilog2floor(uint val)
{
	__asm
	{
		FILD val
		FSTP val
		mov eax,val
		shr eax,23
		sub eax,127
	}
}

int INLINE ftoi(float f)
{
int i;
	__asm
	{
		FLD f
		FISTP i
	}
return i;
}

int INLINE ftoi256(float f)
{
int i;
	i = ftoi(f);
return minmax(i,0,255);
}

float INLINE itof(int i)
{
float f;
	__asm
	{
		FILD i
		FSTP f
	}
return f;
}

uint INLINE flog2(float xf) // !!! 
{
return ((*(int*)&xf) >> 23) - 127;
}

float INLINE fsqrt(float f)
{
	__asm
	{
		FLD f
		FSQRT
		FSTP f
	}
return f;
}

void float_RoundToZero(void);
void float_SinglePrecision(void);

bool float_DoesRoundToZero(void);

#endif // MATHUTIL_H

⌨️ 快捷键说明

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