42 lines
998 B
C
42 lines
998 B
C
#include "../fixedptc.h"
|
|
#include "./test_utils.h"
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
void test_eq(char *value, double expected) {
|
|
fpt n = atofp(value);
|
|
double actual = fpt_todouble(n);
|
|
dbg("actual: (%li) %.15f, vs expected: %.15f\n", n, actual, expected);
|
|
assert(actual == expected);
|
|
}
|
|
|
|
void super_tiny_micro_minuscule_bench() {
|
|
int iterations = 100000;
|
|
double sum = 0;
|
|
for (int i = 0; i < iterations; i++) {
|
|
struct timespec begin, end;
|
|
clock_gettime(CLOCK_MONOTONIC_RAW, &begin);
|
|
|
|
fpt n = atofp("1826512586328");
|
|
dbg("atofp(\"1826512586328\") = %li\n", n);
|
|
|
|
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
|
|
sum += (double)(end.tv_nsec - begin.tv_nsec);
|
|
}
|
|
|
|
double avg = sum / iterations;
|
|
printf(" Avg run time is %fns\n", avg);
|
|
}
|
|
|
|
int main(void) {
|
|
test_eq("1073741824", 0.25);
|
|
test_eq("536870912", 0.125);
|
|
test_eq("1342177280", 0.3125);
|
|
test_eq("-335007449088", -78);
|
|
|
|
print_success;
|
|
|
|
super_tiny_micro_minuscule_bench();
|
|
}
|