libvmaf-sys 0.4.4

Library bindings for Netflix's VMAF
Documentation
#include <fenv.h>
#include <stdio.h>

volatile double x = 0x1.ac4bdd6e3f184p-1;
volatile double y = 255.0;

const char *fegetround_str(void)
{
	int mode = fegetround();

	switch (mode) {
	case FE_TONEAREST:
		return "FE_TONEAREST";
	case FE_DOWNWARD:
		return "FE_DOWNARD";
	case FE_UPWARD:
		return "FE_UPWARD";
	case FE_TOWARDZERO:
		return "FE_TOWARDZERO";
	default:
		return "ERROR";
	}
}

int main()
{
	int mode = fegetround();
	printf("default rounding mode: %s\n", fegetround_str());

	printf("result of %a * %a (%.20e * %f)\n", x, y, x, y);

	fesetround(FE_TONEAREST);
	printf("%s:\t%a (%.20e)\n", fegetround_str(), x * y, x * y);

	fesetround(FE_DOWNWARD);
	printf("%s:\t%a (%.20e)\n", fegetround_str(), x * y, x * y);

	fesetround(FE_UPWARD);
	printf("%s:\t%a (%.20e)\n", fegetround_str(), x * y, x * y);

	fesetround(FE_TOWARDZERO);
	printf("%s:\t%a (%.20e)\n", fegetround_str(), x * y, x * y);

	fesetround(mode);
}