gitee.com/quant1x/gox@v1.7.6/num/asm/_cpp/min.cpp (about) 1 #include <cstddef> 2 #include <limits> 3 4 template<typename T> 5 T Min(T* x, size_t n) { 6 T min = std::numeric_limits<T>::max(); 7 for (size_t i = 0; i < n; i++) { 8 if (x[i] < min) { 9 min = x[i]; 10 } 11 } 12 return min; 13 } 14 15 template<typename T> 16 void Minimum(T* __restrict x, T* __restrict y, size_t n) { 17 for (size_t i = 0; i < n; i++) { 18 if (y[i] < x[i]) { 19 x[i] = y[i]; 20 } 21 } 22 } 23 24 template<typename T> 25 void MinimumNumber(T* __restrict x, T a, size_t n) { 26 for (size_t i = 0; i < n; i++) { 27 if (a < x[i]) { 28 x[i] = a; 29 } 30 } 31 } 32 33 double min_F64_D(double* x, size_t n) { 34 return Min(x, n); 35 } 36 37 float min_F32_F(float* x, size_t n) { 38 return Min(x, n); 39 } 40 41 void minimum_F64_V(double* __restrict x, double* __restrict y, size_t n) { 42 Minimum(x, y, n); 43 } 44 45 void minimum_F32_V(float* __restrict x, float* __restrict y, size_t n) { 46 Minimum(x, y, n); 47 } 48 49 void minimumNumber_F64_V(double* __restrict x, double a, size_t n) { 50 MinimumNumber(x, a, n); 51 } 52 53 void minimumNumber_F32_V(float* __restrict x, float a, size_t n) { 54 MinimumNumber(x, a, n); 55 }