소스 검색

math: try to refactor rand() to bypass an X360 compiler bug.

legacy
Sam Hocevar sam 12 년 전
부모
커밋
18fd5c9081
1개의 변경된 파일23개의 추가작업 그리고 8개의 파일을 삭제
  1. +23
    -8
      src/lol/math/rand.h

+ 23
- 8
src/lol/math/rand.h 파일 보기

@@ -33,14 +33,29 @@ template<typename T> static inline T rand(T a)
return rand<T>() % a;
}

template<>
inline half rand<half>(half a) { return a * std::rand() / RAND_MAX; }
template<>
inline float rand<float>(float a) { return a * std::rand() / RAND_MAX; }
template<>
inline double rand<double>(double a) { return a * std::rand() / RAND_MAX; }
template<>
inline ldouble rand<ldouble>(ldouble a) { return a * std::rand() / RAND_MAX; }
template<> inline half rand<half>(half a)
{
float f = (float)std::rand() / (float)RAND_MAX;
return (half)(a * f);
}

template<> inline float rand<float>(float a)
{
float f = (float)std::rand() / (float)RAND_MAX;
return a * f;
}

template<> inline double rand<double>(double a)
{
double f = (double)std::rand() / (double)RAND_MAX;
return a * f;
}

template<> inline ldouble rand<ldouble>(ldouble a)
{
ldouble f = (ldouble)std::rand() / (ldouble)RAND_MAX;
return a * f;
}

/* Two-value random number generator -- no need for specialisation */
template<typename T> static inline T rand(T a, T b)


불러오는 중...
취소
저장