1#ifndef _BBM_MATH_BACKBONE_CONCEPT_H_
2#define _BBM_MATH_BACKBONE_CONCEPT_H_
51 { bbm::fmod(a, a) } -> std::convertible_to<T>;
52 { bbm::lerp(a, a, a) } -> std::convertible_to<T>;
55 { bbm::exp(a) } -> std::convertible_to<T>;
56 { bbm::log(a) } -> std::convertible_to<T>;
57 { bbm::pow(a, a) } -> std::convertible_to<T>;
58 { bbm::sqrt(a) } -> std::convertible_to<T>;
61 { bbm::cossin(a) } -> std::convertible_to<vec2d<T>>;
62 { bbm::cos(a) } -> std::convertible_to<T>;
63 { bbm::acos(a) } -> std::convertible_to<T>;
64 { bbm::sin(a) } -> std::convertible_to<T>;
65 { bbm::asin(a) } -> std::convertible_to<T>;
66 { bbm::tan(a) } -> std::convertible_to<T>;
67 { bbm::atan(a) } -> std::convertible_to<T>;
71 { bbm::cosh(a) } -> std::convertible_to<T>;
72 { bbm::acosh(a) } -> std::convertible_to<T>;
73 { bbm::sinh(a) } -> std::convertible_to<T>;
74 { bbm::asinh(a) } -> std::convertible_to<T>;
75 { bbm::tanh(a) } -> std::convertible_to<T>;
76 { bbm::atanh(a) } -> std::convertible_to<T>;
79 { bbm::abs(a) } -> std::convertible_to<T>;
80 { bbm::copysign(a, a) } -> std::convertible_to<T>;
81 { bbm::sign(a) } -> std::convertible_to<T>;
84 { bbm::max(a,a) } -> std::convertible_to<T>;
85 { bbm::min(a,a) } -> std::convertible_to<T>;
86 { bbm::ceil(a) } -> std::convertible_to<T>;
87 { bbm::floor(a) } -> std::convertible_to<T>;
88 { bbm::round(a) } -> std::convertible_to<T>;
89 { bbm::clamp(a,a,a) } ->std::convertible_to<T>;
92 { bbm::safe_sqrt(a) } -> std::convertible_to<T>;
93 { bbm::safe_asin(a) } -> std::convertible_to<T>;
94 { bbm::safe_acos(a) } -> std::convertible_to<T>;
97 { bbm::eq(a,a) } -> std::convertible_to<mask_t<T>>;
98 { bbm::neq(a,a) } -> std::convertible_to<mask_t<T>>;
100 { bbm::isnan(a) } -> std::convertible_to<mask_t<T>>;
101 { bbm::isinf(a) } -> std::convertible_to<mask_t<T>>;
102 { bbm::isfinite(a) } -> std::convertible_to<mask_t<T>>;
Concept to check if a type has all bbm math functions.
Definition: math.h:46
Random number generator; built on top of Drjit.
Definition: backbone.h:53
Definition: aggregatebsdf.h:29