| // 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 |