Skip to content
Snippets Groups Projects
Commit 1a577d42 authored by 이소현's avatar 이소현
Browse files

lec12

parent eb4f080f
No related branches found
No related tags found
No related merge requests found
#include "fx_head.h"
#include <math.h>
#define FX_POINT FX_S15_16
#define FX_Q_NUM (FX_POINT & 0xFF) // 16
// If you want calculate with high precision set 64
#define FX_SYSTEM_INTEGER 32 // or 32 or 16 or 8
#define FX_SYSTEM_FLOAT 32 // or 32
#define FX_DATA_TYPE signed int
typedef int fx_s15_16;
typedef fx_s15_16 fixed;
#define fromDouble(d) ((fixed)((d)*DOUBLE_Q_VALUE))
#define toDouble(d) ((double)(d)*DOUBLE_1_Q_VALUE)
#define fromFloat(d) ((fixed)((d)*FLOAT_Q_VALUE))
#define toFloat(d) ((float)(d)*FLOAT_1_Q_VALUE)
// CONSTANTS
#define FLOAT_Q_VALUE (float)(1<<FX_Q_NUM)
#define DOUBLE_Q_VALUE (double)(1<<FX_Q_NUM)
#define FLOAT_1_Q_VALUE (float)(1.0f/FLOAT_Q_VALUE)
#define DOUBLE_1_Q_VALUE (double)(1.0f/DOUBLE_Q_VALUE)
#define FX_PI fromDOUBLE(M_PI)
// One of FX_OP_FLOAT, FX_OP_PRECISION, FX_OP_FAIR, FX_OP_PERFORMANCE
#define FX_OP_PREFERENCE FX_OP_FLOAT
extern fixed fxAdd_float(), fxAdd_precision(), fxAdd_fair(), fxAdd_performance();
extern fixed fxSub_float(), fxSub_precision(), fxSub_fair(), fxSub_performance();
extern fixed fxMul_float(), fxMul_precision(), fxMul_fair(), fxMul_performance();
extern fixed fxDiv_float(), fxDiv_precision(), fxDiv_fair(), fxDiv_performance();
File added
#include "fx_head.h"
#include "fx_s15_16.h"
#include <stdio.h>
int main()
{
printf("%f : %d\n",1.0, fromDouble(1.0));
printf("%f : %f\n",1.3*0.3, toFloat(fxMul_float(fromDouble(1.3),fromDouble(0.3)))) ;
}
#include <stdio.h>
// #### #### #### #### . #### #### #### ####
// S 15 . 16
#define FX_Q_NUM 16
#define FX_2_MINUS_16 1.52587890625e-05F
#define FX_2_PLUS_16 (1<<16)
#define FX_S_15_16 11516
#define FX_SYSTEM FX_S_15_16
typedef int fixed32;
fixed32 fromFloat(float fa)
{
return (fixed32) (fa * FX_2_PLUS_16) ;
}
float toFloat(fixed32 xa)
{
return ((float) (xa)) * FX_2_MINUS_16 ;
}
fixed32 fxAdd(fixed32 a, fixed32 b)
{
return fromFloat((toFloat(a) + toFloat(b)));
}
fixed32 fxAdd2(fixed32 a, fixed32 b)
{
return a+b;
}
int main()
{
long long i=0;
int ia, ib, ic, ic2;
float fa;
// fscanf(stdin, "%d %d", &ia, &ib);
for ( i = 0; i < (long long) 256*256*256*256; i+=(256*256))
{
ic = fxAdd(i, i);
ic2 = fxAdd2(i, i);
fprintf(stdout, "%f + %f : %f , %f diff = %d\n", toFloat(i), toFloat(i), toFloat(ic), toFloat(ic2), ic-ic2);
}
//fprintf(stdout, "%d + %d : %d\n", ia, ib , ic) ;
//fprintf(stdout, "%f + %f : %f\n", toFloat(ia), toFloat(ib), toFloat(ic));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment