module math; import std.math; byte sign(T)(T v) { if(v<0) return -1; else if(v > 0) return 1; else return 0; } T saturate(T, T min, T max)(T v) { if(v < min) v = min; if(v > max) v = max; return v; } real norm(V,U)(V[] v, U[] u) { real sum = 0; for(size_t i=0; i<v.length; ++i) { auto t = v[i] - u[i]; sum += t*t; } return sqrt(sum) / v.length; } real norm(V)(V[] v) { real sum = 0; for(size_t i=0; i<v.length; ++i) { sum += v[i] * v[i]; } return sum; }