36 __mmask8 invalid1 = _mm512_cmp_pd_mask(x, dbl_min, _CMP_LT_OQ);
37 __mmask8 invalid2 = _mm512_cmp_pd_mask(x, dbl_max, _CMP_NLE_UQ);
38 if( ! _mm512_kortestz(invalid1, invalid2) )
40 __mmask8 invalid = invalid1 | invalid2;
41 throw domain_error( DEMsg(
"v1logd", x, invalid) );
43 return v1logd_core(x);
48 __mmask8 invalid1 = _mm512_cmp_pd_mask(x, dbl_min, _CMP_LT_OQ);
49 __mmask8 invalid2 = _mm512_cmp_pd_mask(x, dbl_max, _CMP_NLE_UQ);
50 if( ! _mm512_kortestz(invalid1, invalid2) )
52 __mmask8 invalid = invalid1 | invalid2;
53 throw domain_error( DEMsg(
"v1log10d", x, invalid) );
56 return _mm512_mul_pd(x, log10e);
61 __mmask8 invalid1 = _mm512_cmp_pd_mask(x, mone, _CMP_LE_OQ);
62 __mmask8 invalid2 = _mm512_cmp_pd_mask(x, dbl_max, _CMP_NLE_UQ);
63 if( ! _mm512_kortestz(invalid1, invalid2) )
65 __mmask8 invalid = invalid1 | invalid2;
66 throw domain_error( DEMsg(
"v1log1pd", x, invalid) );
68 return v1log1pd_core(x);
71 inline v16sf
v1logf(v16sf x)
73 __mmask16 invalid1 = _mm512_cmp_ps_mask(x, flt_min, _CMP_LT_OQ);
74 __mmask16 invalid2 = _mm512_cmp_ps_mask(x, flt_max, _CMP_NLE_UQ);
75 if( ! _mm512_kortestz(invalid1, invalid2) )
77 __mmask16 invalid = invalid1 | invalid2;
78 throw domain_error( DEMsg(
"v1logf", x, invalid) );
80 return v1logf_core(x);
85 __mmask16 invalid1 = _mm512_cmp_ps_mask(x, flt_min, _CMP_LT_OQ);
86 __mmask16 invalid2 = _mm512_cmp_ps_mask(x, flt_max, _CMP_NLE_UQ);
87 if( ! _mm512_kortestz(invalid1, invalid2) )
89 __mmask16 invalid = invalid1 | invalid2;
90 throw domain_error( DEMsg(
"v1log10f", x, invalid) );
93 return _mm512_mul_ps(x, log10ef);
98 __mmask16 invalid1 = _mm512_cmp_ps_mask(x, monef, _CMP_LE_OQ);
99 __mmask16 invalid2 = _mm512_cmp_ps_mask(x, flt_max, _CMP_NLE_UQ);
100 if( ! _mm512_kortestz(invalid1, invalid2) )
102 __mmask16 invalid = invalid1 | invalid2;
103 throw domain_error( DEMsg(
"v1log1pf", x, invalid) );
105 return v1log1pf_core(x);
110 inline v4df
v1logd(v4df x)
112 v4df invalid1 = _mm256_cmp_pd(x, dbl_min, _CMP_LT_OQ);
113 v4df invalid2 = _mm256_cmp_pd(x, dbl_max, _CMP_NLE_UQ);
114 v4df invalid = _mm256_or_pd(invalid1, invalid2);
115 if( ! _mm256_testz_pd(invalid, invalid) )
116 throw domain_error( DEMsg(
"v1logd", x, invalid) );
117 return v1logd_core(x);
122 v4df invalid1 = _mm256_cmp_pd(x, dbl_min, _CMP_LT_OQ);
123 v4df invalid2 = _mm256_cmp_pd(x, dbl_max, _CMP_NLE_UQ);
124 v4df invalid = _mm256_or_pd(invalid1, invalid2);
125 if( ! _mm256_testz_pd(invalid, invalid) )
126 throw domain_error( DEMsg(
"v1log10d", x, invalid) );
128 return _mm256_mul_pd(x, log10e);
133 v4df invalid1 = _mm256_cmp_pd(x, mone, _CMP_LE_OQ);
134 v4df invalid2 = _mm256_cmp_pd(x, dbl_max, _CMP_NLE_UQ);
135 v4df invalid = _mm256_or_pd(invalid1, invalid2);
136 if( ! _mm256_testz_pd(invalid, invalid) )
137 throw domain_error( DEMsg(
"v1log1pd", x, invalid) );
138 return v1log1pd_core(x);
141 inline v8sf
v1logf(v8sf x)
143 v8sf invalid1 = _mm256_cmp_ps(x, flt_min, _CMP_LT_OQ);
144 v8sf invalid2 = _mm256_cmp_ps(x, flt_max, _CMP_NLE_UQ);
145 v8sf invalid = _mm256_or_ps(invalid1, invalid2);
146 if( ! _mm256_testz_ps(invalid, invalid) )
147 throw domain_error( DEMsg(
"v1logf", x, invalid) );
148 return v1logf_core(x);
153 v8sf invalid1 = _mm256_cmp_ps(x, flt_min, _CMP_LT_OQ);
154 v8sf invalid2 = _mm256_cmp_ps(x, flt_max, _CMP_NLE_UQ);
155 v8sf invalid = _mm256_or_ps(invalid1, invalid2);
156 if( ! _mm256_testz_ps(invalid, invalid) )
157 throw domain_error( DEMsg(
"v1log10f", x, invalid) );
159 return _mm256_mul_ps(x, log10ef);
164 v8sf invalid1 = _mm256_cmp_ps(x, monef, _CMP_LE_OQ);
165 v8sf invalid2 = _mm256_cmp_ps(x, flt_max, _CMP_NLE_UQ);
166 v8sf invalid = _mm256_or_ps(invalid1, invalid2);
167 if( ! _mm256_testz_ps(invalid, invalid) )
168 throw domain_error( DEMsg(
"v1log1pf", x, invalid) );
169 return v1log1pf_core(x);
172 #endif // __AVX512F__
219 void vlog(
const double x[],
double y[],
long nlo,
long nhi)
226 void vlog10(
const double x[],
double y[],
long nlo,
long nhi)
233 void vlog1p(
const double x[],
double y[],
long nlo,
long nhi)
261 void vlog(
double *y,
double x0,
double x1,
double x2,
double x3)
276 void vlog(
double *y,
double x0,
double x1,
double x2,
double x3,
double x4,
double x5,
double x6,
double x7)
281 void vlog10(
double *y,
double x0,
double x1,
double x2,
double x3,
double x4,
double x5,
double x6,
double x7)
286 void vlog1p(
double *y,
double x0,
double x1,
double x2,
double x3,
double x4,
double x5,
double x6,
double x7)
#define V1FUN_PD_8(FUN, V)
sys_float wr_log1pf(sys_float x)
void vlog10(const double x[], double y[], long nlo, long nhi)
sys_float wr_log10f(sys_float x)
void vlog1p(const double x[], double y[], long nlo, long nhi)
double wr_log10d(double x)
void vlog(const double x[], double y[], long nlo, long nhi)
sys_float wr_logf(sys_float x)
void vecfun(const T x[], T y[], long nlo, long nhi, T(*scalfun1)(T), V(*)(V))
#define V1FUN_PS_4(FUN, V)
#define V1FUN_PD_4(FUN, V)
#define DEBUG_ENTRY(funcname)
double wr_log1pd(double x)
#define V1FUN_PS_8(FUN, V)
#define V1FUN_PS_16(FUN, V)