blob: 45de082b4919635a7e19d23ec67bb06946606ad8 [file] [edit]
// SPDX-FileCopyrightText: The Eigen Authors
// SPDX-License-Identifier: MPL-2.0
#ifndef EIGEN_TEST_RANDOM_FOR_ARITHMETIC_H
#define EIGEN_TEST_RANDOM_FOR_ARITHMETIC_H
#include <Eigen/Core>
namespace Eigen {
// Small integer operands leave room for the sums and products in arithmetic tests.
// Floating-point tests retain the usual Random() distribution.
template <typename Scalar>
Scalar random_scalar_for_arithmetic() {
EIGEN_IF_CONSTEXPR (NumTraits<Scalar>::IsInteger) {
return internal::random<Scalar>(Scalar(NumTraits<Scalar>::IsSigned ? -7 : 0), Scalar(7));
}
return internal::random<Scalar>();
}
template <typename MatrixType, typename... Sizes>
MatrixType random_for_arithmetic(Sizes... sizes) {
return MatrixType::NullaryExpr(sizes...,
[]() { return random_scalar_for_arithmetic<typename MatrixType::Scalar>(); });
}
} // namespace Eigen
#endif // EIGEN_TEST_RANDOM_FOR_ARITHMETIC_H