|
|
|
@@ -484,16 +484,18 @@ class PConstant : public PBase<PConstant<T> > { |
|
|
|
TypeId tensor_type = tensor_ptr->Dtype()->type_id(); |
|
|
|
if ((tensor_type == TypeId::kNumberTypeFloat32) || (tensor_type == TypeId::kNumberTypeFloat)) { |
|
|
|
float *data2 = reinterpret_cast<float *>(tensor_ptr->data_c()); |
|
|
|
auto threshold = FLT_EPSILON * FLT_EPSILON; |
|
|
|
for (int i = 0; i < tensor_ptr->DataSize(); i++) { |
|
|
|
if (fabs(data2[i] - check_value_) > FLT_EPSILON) { |
|
|
|
if (fabs(data2[i] - check_value_) > threshold) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
return true; |
|
|
|
} else if (tensor_type == TypeId::kNumberTypeFloat64) { |
|
|
|
double *data2 = reinterpret_cast<double *>(tensor_ptr->data_c()); |
|
|
|
auto threshold = DBL_EPSILON * DBL_EPSILON; |
|
|
|
for (int i = 0; i < tensor_ptr->DataSize(); i++) { |
|
|
|
if (fabs(data2[i] - check_value_) > DBL_EPSILON) { |
|
|
|
if (fabs(data2[i] - check_value_) > threshold) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|