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

📄 fastfloat16_test.c

📁 ADI BF 16位定点DSP的快速浮点仿真的汇编代码
💻 C
字号:
#include <math.h>   // fabs()
#include <stdlib.h> // rand(), srand()
#include <float.h>  // FLT_MAX
#include "FastFloat.h"

#define VEC_SIZE 64

float vec_a[VEC_SIZE] = {
#include "vec_a.dat"
};

float vec_b[VEC_SIZE] = {
#include "vec_b.dat"
};

fastfloat16 a[VEC_SIZE];
fastfloat16 b[VEC_SIZE];

float add_ans[VEC_SIZE] = {
#include "add.ans"
};
float add_out[VEC_SIZE];
float add_err[VEC_SIZE];

float sub_ans[VEC_SIZE] = {
#include "sub.ans"
};
float sub_out[VEC_SIZE];
float sub_err[VEC_SIZE];

float mult_ans[VEC_SIZE] = {
#include "mult.ans"
};
float mult_out[VEC_SIZE];
float mult_err[VEC_SIZE];

float conv_a_out[VEC_SIZE];
float conv_a_err[VEC_SIZE];

float conv_b_out[VEC_SIZE];
float conv_b_err[VEC_SIZE];

void test_add() {
	int i;
	fastfloat16 result;

	for(i=0; i<VEC_SIZE; i++) {
		result = add_ff16(a[i], b[i]);
		add_out[i] = ff16_to_float(result);
		add_err[i] = fabs((add_out[i]-add_ans[i])/add_ans[i]);
	}
}

void test_sub() {
	int i;
	fastfloat16	result;

	for(i=0; i<VEC_SIZE; i++) {
		result = sub_ff16(a[i], b[i]);
		sub_out[i] = ff16_to_float(result);
		sub_err[i] = fabs((sub_out[i]-sub_ans[i])/sub_ans[i]);
	}
}
	
void test_mult() {
	int i;
	fastfloat16	result;

	for(i=0; i<VEC_SIZE; i++) {
		result = mult_ff16(a[i], b[i]);
		mult_out[i] = ff16_to_float(result);
		mult_err[i] = fabs((mult_out[i]-mult_ans[i])/mult_ans[i]);
	}
}

void test_convert() {
	int i;
	
	for(i=0; i<VEC_SIZE; i++) {
		a[i] = float_to_ff16(vec_a[i]);
		b[i] = float_to_ff16(vec_b[i]);
		
		conv_a_out[i] = ff16_to_float(a[i]);
		conv_a_err[i] = fabs((conv_a_out[i]-vec_a[i])/vec_a[i]);
		
		conv_b_out[i] = ff16_to_float(b[i]);
		conv_b_err[i] = fabs((conv_b_out[i]-vec_b[i])/vec_b[i]);
  }
}

main() {
//  test_convert();
	test_mult();
	test_add();  	
	test_sub();
}

⌨️ 快捷键说明

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