📄 fastfloat16_test.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 + -