Automatic Differentiation
 
Loading...
Searching...
No Matches
inv_square.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_FUN_INV_SQUARE_HPP
2#define STAN_MATH_PRIM_FUN_INV_SQUARE_HPP
3
8
9namespace stan {
10namespace math {
11
12template <typename T, require_arithmetic_t<T>* = nullptr>
13inline auto inv_square(T&& x) {
14 return inv(square(x));
15}
16
24template <typename Container,
27 Container>* = nullptr,
29inline auto inv_square(Container&& x) {
30 return make_holder(
31 [](auto&& v) { return inv(square(std::forward<decltype(v)>(v))); },
32 std::forward<Container>(x));
33}
34
43template <typename Container,
45inline auto inv_square(Container&& x) {
47 std::forward<Container>(x),
48 [](auto&& v) { return v.array().square().inverse(); });
49}
50
51} // namespace math
52} // namespace stan
53
54#endif
require_not_t< container_type_check_base< is_container, scalar_type_t, TypeCheck, Check... > > require_not_container_st
Require type does not satisfy is_container.
require_t< container_type_check_base< is_container, scalar_type_t, TypeCheck, Check... > > require_container_st
Require type satisfies is_container.
require_t< is_container< std::decay_t< T > > > require_container_t
Require type satisfies is_container.
require_all_not_t< is_nonscalar_prim_or_rev_kernel_expression< std::decay_t< Types > >... > require_all_not_nonscalar_prim_or_rev_kernel_expression_t
Require none of the types satisfy is_nonscalar_prim_or_rev_kernel_expression.
fvar< T > inv_square(const fvar< T > &x)
auto make_holder(F &&func, Args &&... args)
Calls given function with given arguments.
Definition holder.hpp:437
Eigen::Matrix< value_type_t< EigMat >, EigMat::RowsAtCompileTime, EigMat::ColsAtCompileTime > inverse(const EigMat &m)
Forward mode specialization of calculating the inverse of the matrix.
Definition inverse.hpp:28
fvar< T > inv(const fvar< T > &x)
Definition inv.hpp:13
fvar< T > square(const fvar< T > &x)
Definition square.hpp:12
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...