1#ifndef _BBM_DRJIT_HORIZONTAL_H_
2#define _BBM_DRJIT_HORIZONTAL_H_
17 inline auto dot(
const T& a,
const T& b)
19 if constexpr (std::is_scalar_v<T>)
return a*b;
20 else return drjit::dot(a, b);
24 inline auto norm(
const T& a)
26 if constexpr (std::is_scalar_v<T>)
return drjit::abs(a);
27 else return drjit::norm(a);
33 if constexpr (std::is_scalar_v<T>)
return a*a;
34 else return drjit::squared_norm(a);
40 if constexpr (std::is_scalar_v<T>)
return T(1);
41 else return drjit::normalize(a);
53 template<
typename T>
inline auto hsum(
const T& t) {
return drjit::sum(t); }
54 template<
typename T>
inline auto hprod(
const T& t) {
return drjit::prod(t); }
55 template<
typename T>
inline auto hmax(
const T& t) {
return drjit::max(t); }
56 template<
typename T>
inline auto hmin(
const T& t) {
return drjit::min(t); }
Random number generator; built on top of Drjit.
Definition: backbone.h:53
auto hprod(const T &t)
Definition: horizontal.h:54
auto hsum(const T &t)
Definition: horizontal.h:53
auto dot(const T &a, const T &b)
Definition: horizontal.h:17
auto norm(const T &a)
Definition: horizontal.h:24
auto squared_norm(const T &a)
Definition: horizontal.h:31
auto hmax(const T &t)
Definition: horizontal.h:55
auto normalize(const T &a)
Definition: horizontal.h:38
auto hmin(const T &t)
Definition: horizontal.h:56