Skip to content
Snippets Groups Projects
Commit e1992060 authored by joon2974's avatar joon2974
Browse files

make Makefile

parent 233106f1
No related branches found
No related tags found
No related merge requests found
Makefile 0 → 100644
SRCS := test.c fx_s1516_double.c
OBJS = $(SRCS:.c=.o)
CC = gcc
CFLAGS = -c -Wall -g
# CFLAGS = -c -Wall -O2
fx_x1516_double: $(OBJS)
$(CC) -o $@ $^
.c.o:
$(CC) ${CFLAGS} $<
clean:
-rm $(OBJS)
rm fx_x1516_double
dep:
$(CC) -M $(SRCS)
\ No newline at end of file
// fx_s1516_double.c file
#include "fx_s1516_double.h"
double double_to_fx(double a) {
return ((a) * P2_16);
}
double fx_to_double(fx_s1516 a) {
return ((double)(a) / P2_16);
}
double fx_s1516_add(double a, double b){
return double_to_fx((a) + (b));
}
double fx_s1516_sub(double a, double b){
return double_to_fx((a) - (b));
}
double fx_s1516_mul(double a, double b) {
return double_to_fx((a) * (b) * P2_16);
}
double fx_s1516_div(double a, double b) {
return double_to_fx((a) / (b) / P2_16);
}
double degree_to_radian(fx_s1516 a) {
return ((a) * M_PI / 180);
}
double fx_s1516_sin(double a) {
return double_to_fx(sin(a * P2_16) / (P2_16));
}
double fx_s1516_sqrt(double a) {
return double_to_fx(sqrt(a) / sqrt(P2_16));
}
double fx_s1516_pow(double a, double b) {
return double_to_fx(pow(a, (double)b) * pow(P2_16, (double)b - 1));
}
double fx_s1516_log(double a, double b) {
return double_to_fx(baselog(a * P2_16, b) / (P2_16));
}
double baselog(double a, double base)
{
return log(a) / log(base);
}
\ No newline at end of file
#pragma once
#define __FX_S1516_DOUBLE_H
typedef int fx_s1516;
#include <stdio.h>
#define _USE_MATH_DEFINES
#include <math.h>
#define P2_16 65536.0f
#define e M_E
#define fx_s1516_PI M_PI
#define fx_s1516_INVERSE_PI 1/M_PI
extern double double_to_fx(double a);
extern double baselog(double a, double base);
extern double fx_s1516_add(double a, double b);
extern double fx_s1516_sub(double a, double b);
extern double fx_s1516_mul(double a, double b);
extern double fx_s1516_div(double a, double b);
extern double fx_s1516_sqrt(double a);
extern double fx_s1516_pow(double a, double b);
extern double fx_s1516_log(double a, double b);
extern double degree_to_radian(fx_s1516 a);
extern double fx_to_double(fx_s1516 a);
extern double fx_s1516_sin(double a);
\ No newline at end of file
test.c 0 → 100644
#include "fx_s1516_double.h"
#define fx_mul(a, b) ((a)*(b))
/*
Make first prototype fx_sXXYY_double.c with double and math.h
define macro fx_sXXYY_double.h program test.c
*/
int main()
{
fx_s1516 a = 131072;
fx_s1516 b = 65536;
double fa = fx_to_double(a);
double fb = fx_to_double(b);
printf("a : %d b : %d fa : %lf fb : %lf\noriginal a : %lf original b : %lf\n\n", a, b, fa, fb, double_to_fx(fa), double_to_fx(fb));
printf("Add : %-15d %lf\n", a + b, fx_s1516_add(fa, fb));
printf("Sub : %-15d %lf\n", a - b, fx_s1516_sub(fa, fb));
printf("Mul : %-15lld %lf\n", (long long)a * b, fx_s1516_mul(fa, fb));
printf("Div : %-15lf %lf\n\n", (double)a / b, fx_s1516_div(fa, fb));
printf("Sin : %-15lf %lf\n", sin(degree_to_radian(a)), fx_s1516_sin(degree_to_radian(fa)));
printf("Sqrt : %-15lf %lf\n", sqrt(a), fx_s1516_sqrt(fa));
printf("Sqrt : %-15lf %lf\n", sqrt(b), fx_s1516_sqrt(fb));
printf("Pow : %-15lld %lf\n", (long long)pow(a, 2), fx_s1516_pow(fa, 2));
printf("Log : %-15lf %lf\n\n", baselog(a, e), fx_s1516_log(fa, e));
printf("PI : %f\n", fx_s1516_PI);
printf("INVERSE PI : %f\n", fx_s1516_INVERSE_PI);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment