Sha256: 17b93117683a81f6d1d91268d8111195ba8fbac6e83fb1c440a0f4d6d5336ab7
Contents?: true
Size: 1.59 KB
Versions: 21
Compression:
Stored size: 1.59 KB
Contents
#include <glm/gtc/ulp.hpp> #include <limits> int test_ulp_float_dist() { int Error = 0; float A = 1.0f; float B = glm::next_float(A); Error += A != B ? 0 : 1; float C = glm::prev_float(B); Error += A == C ? 0 : 1; int D = glm::float_distance(A, B); Error += D == 1 ? 0 : 1; int E = glm::float_distance(A, C); Error += E == 0 ? 0 : 1; return Error; } int test_ulp_float_step() { int Error = 0; float A = 1.0f; for(int i = 10; i < 1000; i *= 10) { float B = glm::next_float(A, i); Error += A != B ? 0 : 1; float C = glm::prev_float(B, i); Error += A == C ? 0 : 1; int D = glm::float_distance(A, B); Error += D == i ? 0 : 1; int E = glm::float_distance(A, C); Error += E == 0 ? 0 : 1; } return Error; } int test_ulp_double_dist() { int Error = 0; double A = 1.0; double B = glm::next_float(A); Error += A != B ? 0 : 1; double C = glm::prev_float(B); Error += A == C ? 0 : 1; int D = glm::float_distance(A, B); Error += D == 1 ? 0 : 1; int E = glm::float_distance(A, C); Error += E == 0 ? 0 : 1; return Error; } int test_ulp_double_step() { int Error = 0; double A = 1.0; for(int i = 10; i < 1000; i *= 10) { double B = glm::next_float(A, i); Error += A != B ? 0 : 1; double C = glm::prev_float(B, i); Error += A == C ? 0 : 1; int D = glm::float_distance(A, B); Error += D == i ? 0 : 1; int E = glm::float_distance(A, C); Error += E == 0 ? 0 : 1; } return Error; } int main() { int Error = 0; Error += test_ulp_float_dist(); Error += test_ulp_float_step(); Error += test_ulp_double_dist(); Error += test_ulp_double_step(); return Error; }
Version data entries
21 entries across 21 versions & 1 rubygems