Skip to content
Snippets Groups Projects
Commit 5c137bff authored by Taddeüs Kroes's avatar Taddeüs Kroes
Browse files

Finished code of question 3.

parent edff8604
No related branches found
No related tags found
No related merge requests found
sum.float
sum.double
sum
speed.*.* speed.*.*
speed speed
fp fp
......
FLAGS=-Wall -Wextra -std=c99 -pedantic -O0 -lm FLAGS=-Wall -Wextra -std=c99 -pedantic -O0 -lm
TYPES=float double LD SPEED_TYPES=float double LD
SUM_TYPES=float double
OPS=ADD DIV MULT SQRT OPS=ADD DIV MULT SQRT
all: fp speed report.pdf float_double all: fp speed report.pdf sum
%.pdf: %.tex %.pdf: %.tex
pdflatex $^ pdflatex $^
pdflatex $^ pdflatex $^
speed: speed.c speed: speed.c
for t in $(TYPES); do \ for t in $(SPEED_TYPES); do \
for o in $(OPS); do \ for o in $(OPS); do \
sed "s#{TYPE}#$$t#" $^ | sed "s#{OP}#$$o#" > speed.$$t.$$o.c; \ sed "s#{TYPE}#$$t#" $^ | sed "s#{OP}#$$o#" > speed.$$t.$$o.c; \
gcc $(FLAGS) -o speed.$$t.$$o speed.$$t.$$o.c; \ gcc $(FLAGS) -o speed.$$t.$$o speed.$$t.$$o.c; \
...@@ -21,8 +22,13 @@ speed: speed.c ...@@ -21,8 +22,13 @@ speed: speed.c
fp: floating_point.o fp: floating_point.o
gcc $(FLAGS) -o $@ $^ gcc $(FLAGS) -o $@ $^
float_double: float_vs_double.o sum: sum.c
gcc $(FLAGS) -o $@ $^ for t in $(SUM_TYPES); do \
sed "s#{TYPE}#$$t#" $^ > sum.$$t.c; \
gcc $(FLAGS) -o sum.$$t sum.$$t.c; \
rm sum.$$t.c; \
done;
touch $@
%.o: %.c %.o: %.c
gcc $(FLAGS) -o $@ -c $^ gcc $(FLAGS) -o $@ -c $^
...@@ -31,4 +37,4 @@ float_double: float_vs_double.o ...@@ -31,4 +37,4 @@ float_double: float_vs_double.o
gcc $(FLAGS) -o $* $^ gcc $(FLAGS) -o $* $^
clean: clean:
rm -vf *.o *.i *.s fp speed speed.*.* floating_point rm -vf *.o *.i *.s fp speed speed.*.* floating_point sum sum.float sum.double
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
int main(void) {
puts("Using type {TYPE}.");
puts("Forward summation:");
printf("N = 1e8: %e\n", sum_forward(1e8));
printf("N = 2e8: %e\n", sum_forward(2e8));
puts("Backward summation:");
printf("N = 1e8: %e\n", sum_backward(1e8));
printf("N = 2e8: %e\n", sum_backward(2e8));
return 0;
}
{TYPE} sum_forward(int N) { {TYPE} sum_forward(int N) {
{TYPE} sum = 0; {TYPE} sum = 0;
...@@ -32,3 +18,17 @@ int main(void) { ...@@ -32,3 +18,17 @@ int main(void) {
return sum; return sum;
} }
int main(void) {
puts("Using type {TYPE}.");
puts("Forward summation:");
printf("N = 1e8: %e\n", sum_forward(1e8));
printf("N = 2e8: %e\n", sum_forward(2e8));
puts("Backward summation:");
printf("N = 1e8: %e\n", sum_backward(1e8));
printf("N = 2e8: %e\n", sum_backward(2e8));
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment