-/// \ref fennec::mix(fennec::genBType, fennec::genBType, fennec::genBType) "mix(genBType, genBType, genBType)"
-/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genIType, genIType, genBType)"
-/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genUType, genUType, genBType)"
-/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genFType, genFType, genBType)"
-/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genDType, genDType, genBType)"
+/// \ref fennec::mix(fennec::genBType, fennec::genBType, fennec::genBType) "mix(genBType x, genBType y, genBType a)"
+/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genIType x, genIType y, genBType a)"
+/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genUType x, genUType y, genBType a)"
+/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genFType x, genFType y, genBType a)"
+/// \ref fennec::mix(fennec::genType, fennec::genType, fennec::genBType) "mix(genDType x, genDType y, genBType a)"
/// |
-/// \copydetails fennec::mix(fennec::genType, fennec::genType, fennec::genType)
+/// \copydetails fennec::mix
///
///
///
@@ -332,7 +332,7 @@ template
constexpr vector sign(const vector& x)
{ return vector(fennec::sign(x[i]) ...); }
-// @}
+/// @}
diff --git a/include/fennec/math/exponential.h b/include/fennec/math/exponential.h
index a9d3d13..0e435b8 100644
--- a/include/fennec/math/exponential.h
+++ b/include/fennec/math/exponential.h
@@ -18,7 +18,7 @@
///
/// \file exponential.h
-/// \brief \ref page_fennec_math_exponential
+/// \brief \ref fennec_math_exponential
///
///
/// \details
@@ -37,7 +37,7 @@
///
///
///
-/// \page page_fennec_math_exponential Exponential
+/// \page fennec_math_exponential Exponential
///
/// \brief The Exponential Functions defined in the [OpenGL 4.6 Shading Language Specification](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf).
///
@@ -49,37 +49,37 @@
/// Description
///
/// |
-/// \ref fennec::pow(fennec::genType, fennec::genType) "genFType pow(genFType, genFType)"
+/// \ref fennec::pow(fennec::genType, fennec::genType) "genFType pow(genFType x, genFType y)"
/// |
/// \copydoc fennec::pow(fennec::genType, fennec::genType)
///
/// |
-/// \ref fennec::exp(fennec::genType)"genFType exp(genFType)"
+/// \ref fennec::exp(fennec::genType)"genFType exp(genFType x)"
/// |
/// \copydoc fennec::exp(fennec::genType)
///
/// |
-/// \ref fennec::exp2(fennec::genType) "genFType exp2(genFType)"
+/// \ref fennec::exp2(fennec::genType) "genFType exp2(genFType x)"
/// |
/// \copydoc fennec::exp2(fennec::genType)
///
/// |
-/// \ref fennec::log(fennec::genType) "genFType log(genFType)"
+/// \ref fennec::log(fennec::genType) "genFType log(genFType x)"
/// |
/// \copydoc fennec::log(fennec::genType)
///
/// |
-/// \ref fennec::log2(fennec::genType) "genFType log2(genFType)"
+/// \ref fennec::log2(fennec::genType) "genFType log2(genFType x)"
/// |
/// \copydoc fennec::log2(fennec::genType)
///
/// |
-/// \ref fennec::sqrt(fennec::genType) "genFType sqrt(genFType)"
+/// \ref fennec::sqrt(fennec::genType) "genFType sqrt(genFType x)"
/// |
/// \copydoc fennec::sqrt(fennec::genType)
///
/// |
-/// \ref fennec::inversesqrt(fennec::genType) "genFType inversesqrt(genFType)"
+/// \ref fennec::inversesqrt(fennec::genType) "genFType inversesqrt(genFType x)"
/// |
/// \copydoc fennec::inversesqrt(fennec::genType)
///
diff --git a/include/fennec/math/geometric.h b/include/fennec/math/geometric.h
index 90c0ca6..1f6060c 100644
--- a/include/fennec/math/geometric.h
+++ b/include/fennec/math/geometric.h
@@ -18,7 +18,7 @@
///
/// \file geometric.h
-/// \brief \ref page_fennec_math_geometric
+/// \brief \ref fennec_math_geometric
///
///
/// \details
@@ -39,7 +39,7 @@
///
///
///
-/// \page page_fennec_math_geometric Geometric
+/// \page fennec_math_geometric Geometric
///
/// \brief The Geometric Functions defined in the [OpenGL 4.6 Shading Language Specification](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf).
///
@@ -51,58 +51,58 @@
/// | Description
///
/// |
---|
-/// \ref fennec::dot(const genFType&, const genFType&) "float dot(genFType x, genFType y)"
-/// \ref fennec::dot(const genDType&, const genDType&) "double dot(genDType x, genDType x)"
+/// \ref fennec::dot "float dot(genFType x, genFType y)"
+/// \ref fennec::dot "double dot(genDType x, genDType x)"
/// |
-/// \copydoc fennec::dot(const genFType&, const genFType&)
+/// \copydoc fennec::dot
///
/// |
-/// \ref fennec::length2(const genFType&) "float length2(genFType x)"
-/// \ref fennec::length2(const genDType&) "double length2(genDType x)"
+/// \ref fennec::length2 "float length2(genFType x)"
+/// \ref fennec::length2 "double length2(genDType x)"
/// |
-/// \copydoc fennec::length2(const genFType&)
+/// \copydoc fennec::length2
///
/// |
-/// \ref fennec::length(const genFType&) "float length(genFType x)"
-/// \ref fennec::length(const genDType&) "double length(genDType x)"
+/// \ref fennec::length "float length(genFType x)"
+/// \ref fennec::length "double length(genDType x)"
/// |
-/// \copydoc fennec::length(const genFType&)
+/// \copydoc fennec::length
///
/// |
-/// \ref fennec::distance(const genFType&, const genFType&) "float distance(genFType x, genFType y)"
-/// \ref fennec::distance(const genDType&, const genDType&) "double distance(genDType x, genDType x)"
+/// \ref fennec::distance "float distance(genFType x, genFType y)"
+/// \ref fennec::distance "double distance(genDType x, genDType x)"
/// |
-/// \copydoc fennec::distance(const genFType&, const genFType&)
+/// \copydoc fennec::distance
///
/// |
-/// \ref fennec::normalize(const genFType&) "float normalize(genFType x)"
-/// \ref fennec::normalize(const genDType&) "double normalize(genDType x)"
+/// \ref fennec::normalize "float normalize(genFType x)"
+/// \ref fennec::normalize "double normalize(genDType x)"
/// |
-/// \copydoc fennec::normalize(const genFType&)
+/// \copydoc fennec::normalize
///
/// |
-/// \ref fennec::cross(const fennec::vec3&, const fennec::vec3&) "vec3 cross(vec3 x, vec3 y)"
-/// \ref fennec::cross(const fennec::dvec3&, const fennec::dvec3&) "dvec3 cross(dvec3 x, dvec3 x)"
+/// \ref fennec::cross "vec3 cross(vec3 x, vec3 y)"
+/// \ref fennec::cross "dvec3 cross(dvec3 x, dvec3 x)"
/// |
-/// \copydoc fennec::cross(const fennec::vec3&, const fennec::vec3&)
+/// \copydoc fennec::cross
///
/// |
-/// \ref fennec::faceforward(const genFType&, const genFType&, const genFType&) "genFType faceforward(genFType N, genFType I, genFType Nref)"
-/// \ref fennec::faceforward(const genDType&, const genDType&, const genDType&) "genDType faceforward(genDType N, genDType I, genDType Nref)"
+/// \ref fennec::faceforward "genFType faceforward(genFType N, genFType I, genFType Nref)"
+/// \ref fennec::faceforward "genDType faceforward(genDType N, genDType I, genDType Nref)"
/// |
-/// \copydoc fennec::faceforward(const genFType&, const genFType&, const genFType&)
+/// \copydoc fennec::faceforward
///
/// |
-/// \ref fennec::reflect(const genFType&, const genFType&) "genFType reflect(genFType I, genFType N)"
-/// \ref fennec::reflect(const genDType&, const genDType&) "genDType reflect(genDType I, genDType N)"
+/// \ref fennec::reflect "genFType reflect(genFType I, genFType N)"
+/// \ref fennec::reflect "genDType reflect(genDType I, genDType N)"
/// |
-/// \copydoc fennec::reflect(const genFType&, const genFType&)
+/// \copydoc fennec::reflect
///
/// |
-/// \ref fennec::refract(const genFType&, const genFType&, float) "genFType refract(genFType N, genFType I, float eta)"
-/// \ref fennec::refract(const genDType&, const genDType&, double) "genDType refract(genDType N, genDType I, double eta)"
+/// \ref fennec::refract "genFType refract(genFType N, genFType I, float eta)"
+/// \ref fennec::refract "genDType refract(genDType N, genDType I, double eta)"
/// |
-/// \copydoc fennec::refract(const genFType&, const genFType&, float)
+/// \copydoc fennec::refract
///
///
///
@@ -115,7 +115,6 @@ namespace fennec
// dot -----------------------------------------------------------------------------------------------------------------
-///
///
/// \brief Returns the dot product of \f$x\f$ and \f$y\f$, i.e., \f$x_0 \cdot y_0 + x_0 \cdot y_0 + \ldots\f$
///
@@ -135,7 +134,6 @@ constexpr genType dot(const vector& x, const vector& x)
// length --------------------------------------------------------------------------------------------------------------
-///
///
/// \brief Returns the length of vector \f$x\f$, i.e., \f$\sqrt{x_0^2 + x_1^2 + \ldots}\f$
///
@@ -170,7 +167,6 @@ constexpr genType length(const vector& x) { return fennec::sqrt(f
// distance ------------------------------------------------------------------------------------------------------------
-///
///
/// \brief Returns the length of vector \f$x\f$, i.e., \f$\sqrt{x_0^2 + x_1^2 + \ldots}\f$
///
@@ -190,7 +186,6 @@ constexpr genType distance(const vector& p0, const vector cross(const vector& x, const vect
// normalize -----------------------------------------------------------------------------------------------------------
-///
///
/// \brief Returns a vector in the same direction as \f$x\f$, but with a length of \f$1\f$, i.e.
///
-/// \returns a vector in the same direction as \f$x\f$, but with a length of \f$1\f$, i.e.\f$\frac{x}{||x||}
+/// \returns a vector in the same direction as \f$x\f$, but with a length of \f$1\f$, i.e.\f$\frac{x}{||x||}\f$
/// \details we can represent this in linear algebra as the following,
/// let \f$X=\left[\begin{array}\\ x_0 \\ x_1 \\ \vdots \\ x_N \end{array}\right]\f$
///
@@ -230,7 +224,6 @@ constexpr vector normalize(const vector& x)
// faceforward ---------------------------------------------------------------------------------------------------------
-///
///
/// \brief If \f$\text{dot}(Nref, I)<0\f$ return \f$N\f$, otherwise return \f$-N\f$.
///
@@ -246,7 +239,6 @@ constexpr vector faceforward(const vector& N, cons
// reflect -------------------------------------------------------------------------------------------------------------
-///
///
/// \brief For the incident vector \f$I\f$ and surface orientation \f$N\f$, returns the reflection direction.
///
@@ -263,8 +255,7 @@ constexpr vector reflect(const vector& I, const ve
// refract -------------------------------------------------------------------------------------------------------------
///
-///
-/// \brief or the incident vector \f$I\f$ and surface normal \f$N\f$, and the ratio of indices of refraction \f$eta\f$,
+/// \brief For the incident vector \f$I\f$ and surface normal \f$N\f$, and the ratio of indices of refraction \f$eta\f$,
/// return the refraction vector.
///
/// \returns The refraction vector, given the incident vector \f$I\f$, surface normal \f$N\f$, and ratio \f$eta\f$.
@@ -279,7 +270,8 @@ template
constexpr vector refract(const vector& I, const vector& N, genType eta)
{ genType ndi = fennec::dot(N, I);
genType k = 1.0 - eta * eta * (1.0 - ndi * ndi);
- return (k < 0.0) ? 0.0 : eta * I - N * (eta * ndi + fennec::sqrt(k)); }
+ return fennec::max(0.0, eta * I - N * (eta * ndi + fennec::sqrt(k))); }
+
}
#endif // FENNEC_MATH_GEOMETRIC_H
diff --git a/include/fennec/math/math.h b/include/fennec/math/math.h
index 7634593..c01c592 100644
--- a/include/fennec/math/math.h
+++ b/include/fennec/math/math.h
@@ -21,10 +21,10 @@
/// \brief main math header which includes the main modules
///
///
-/// \details This header includes the following modules of \ref page_fennec_math :
-/// - \ref page_fennec_math_scalar
-/// - \ref page_fennec_math_vector
-/// - \ref page_fennec_math_trigonometric
+/// \details This header includes the following modules of \ref fennec_math :
+/// - \ref fennec_math_scalar
+/// - \ref fennec_math_vector
+/// - \ref fennec_math_trigonometric
///
/// \author Medusa Slockbower
///
@@ -39,27 +39,29 @@
///
///
///
-/// \page page_fennec_math Math Library
+/// \page fennec_math Math Library
///
/// The \ref fennec Math Library is composed of the modules listed in below.
/// The overarching goal of this math library is to implement the math types and functions of the
/// [OpenGL 4.6 Shading Language Specification](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf).
///
-/// \section page_fennec_math_topics Topics
-/// - \subpage page_fennec_math_set_theory
+/// \section fennec_math_topics Topics
+/// - \subpage fennec_math_set_theory
///
-/// \section page_fennec_math_data_types Data Types
+/// \section fennec_math_data_types Data Types
///
-/// - \subpage page_fennec_math_scalar
-/// - \subpage page_fennec_math_vector
-/// - \subpage page_fennec_math_matrix
+/// - \subpage fennec_math_scalar
+/// - \subpage fennec_math_vector
+/// - \subpage fennec_math_matrix
///
-/// \section page_fennec_math_functions Functions
+/// \section fennec_math_functions Functions
+///
+/// - \subpage fennec_math_common
+/// - \subpage fennec_math_exponential
+/// - \subpage fennec_math_geometric
+/// - \subpage fennec_math_relational
+/// - \subpage fennec_math_trigonometric
///
-/// - \subpage page_fennec_math_common
-/// - \subpage page_fennec_math_exponential
-/// - \subpage page_fennec_math_geometric
-/// - \subpage page_fennec_math_trigonometric
///
///
@@ -68,13 +70,13 @@
///
///
///
-/// \page page_fennec_math_set_theory Set Theory
+/// \page fennec_math_set_theory Set Theory
///
/// Binary Mathematics, like most branches of Mathematics, is built, foundationally, upon Set Theory. Set Theory is
/// the branch of Mathematics that studies Sets. Sets contain a collection of elements which may be numbers, or other
/// mathematical values and structures.
///
-/// Set definitions for all mathematical structures in the \ref page_fennec_math "Fennec Math Library" are present in
+/// Set definitions for all mathematical structures in the \ref fennec_math "Fennec Math Library" are present in
/// their respective pages.
///
///
diff --git a/include/fennec/math/matrix.h b/include/fennec/math/matrix.h
index 0040bbd..1cd106a 100644
--- a/include/fennec/math/matrix.h
+++ b/include/fennec/math/matrix.h
@@ -18,7 +18,7 @@
///
/// \file matrix.h
-/// \brief the \ref page_fennec_math_matrix
+/// \brief the \ref fennec_math_matrix
///
///
/// \details
@@ -31,7 +31,7 @@
///
///
///
-/// \page page_fennec_math_matrix Matrices
+/// \page fennec_math_matrix Matrices
///
///
///
@@ -357,7 +357,10 @@ private:
template
constexpr void __construct(HeadT&& head, ArgsT&&...args)
- { matrix::__insert(head); matrix::__construct>(std::forward(args)...); }
+ {
+ matrix::__insert(head);
+ matrix::__construct>(std::forward(args)...);
+ }
template
constexpr void __insert(scalar_t s)
diff --git a/include/fennec/math/relational.h b/include/fennec/math/relational.h
index 3405f0d..e4909ba 100644
--- a/include/fennec/math/relational.h
+++ b/include/fennec/math/relational.h
@@ -18,7 +18,7 @@
///
/// \file relational.h
-/// \brief \ref page_fennec_math_relational
+/// \brief \ref fennec_math_relational
///
///
/// \details
@@ -33,67 +33,181 @@
#include
+///
+/// \page fennec_math_relational Relational
+///
+/// \brief The Relational Functions defined in the [OpenGL 4.6 Shading Language Specification](https://registry.khronos.org/OpenGL/specs/gl/GLSLangSpec.4.60.pdf).
+///
+///
+/// Syntax
+/// | Description
+///
+/// |
---|
+/// \ref fennec::lessThan "bvec lessThan(vec x, vec y)"
+/// \ref fennec::lessThan "bvec lessThan(dvec x, dvec y)"
+/// \ref fennec::lessThan "bvec lessThan(ivec x, ivec y)"
+/// \ref fennec::lessThan "bvec lessThan(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::lessThan
+///
+/// |
+/// \ref fennec::lessThanEqual "bvec lessThanEqual(vec x, vec y)"
+/// \ref fennec::lessThanEqual "bvec lessThanEqual(dvec x, dvec y)"
+/// \ref fennec::lessThanEqual "bvec lessThanEqual(ivec x, ivec y)"
+/// \ref fennec::lessThanEqual "bvec lessThanEqual(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::lessThanEqual
+///
+/// |
+/// \ref fennec::greaterThan "bvec greaterThan(vec x, vec y)"
+/// \ref fennec::greaterThan "bvec greaterThan(dvec x, dvec y)"
+/// \ref fennec::greaterThan "bvec greaterThan(ivec x, ivec y)"
+/// \ref fennec::greaterThan "bvec greaterThan(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::greaterThan
+///
+/// |
+/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(vec x, vec y)"
+/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(dvec x, dvec y)"
+/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(ivec x, ivec y)"
+/// \ref fennec::greaterThanEqual "bvec greaterThanEqual(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::greaterThanEqual
+///
+/// |
+/// \ref fennec::equal "bvec equal(vec x, vec y)"
+/// \ref fennec::equal "bvec equal(dvec x, dvec y)"
+/// \ref fennec::equal "bvec equal(ivec x, ivec y)"
+/// \ref fennec::equal "bvec equal(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::equal
+///
+/// |
+/// \ref fennec::notEqual "bvec notEqual(vec x, vec y)"
+/// \ref fennec::notEqual "bvec notEqual(dvec x, dvec y)"
+/// \ref fennec::notEqual "bvec notEqual(ivec x, ivec y)"
+/// \ref fennec::notEqual "bvec notEqual(uvec x, uvec y)"
+/// |
+/// \copydoc fennec::notEqual
+///
+/// |
+/// \ref fennec::any "bool any(bvec x)"
+/// |
+/// \copydoc fennec::any
+///
+/// |
+/// \ref fennec::all "bool all(bvec x)"
+/// |
+/// \copydoc fennec::all
+///
+/// |
+/// \ref fennec::operator! "bool not(bvec x)"
+/// |
+/// \copydoc fennec::operator!
+/// |
+///
+///
+///
+
// TODO: Document
namespace fennec
{
-template
-constexpr genBType lessThan(genType x, genType y)
- { return x < y; }
-
+///
+/// \brief Returns the component-wise compare of x < y.
+///
+/// \returns the component-wise compare of x < y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector lessThan(const vector& x, const vector& y)
{ return vector(x[i] < y[i]...); }
-template
-constexpr genBType lessThanEqual(genType x, genType y)
- { return x <= y; }
+///
+/// \brief Returns the component-wise compare of x <= y.
+///
+/// \returns the component-wise compare of x <= y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector lessThanEqual(const vector& x, const vector& y)
{ return vector(x[i] <= y[i]...); }
-template
-constexpr genBType greaterThan(genType x, genType y)
- { return x > y; }
+///
+/// \brief Returns the component-wise compare of x > y.
+///
+/// \returns the component-wise compare of x > y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector greaterThan(const vector& x, const vector& y)
{ return vector(x[i] > y[i]...); }
-template
-constexpr genBType greaterThanEqual(genType x, genType y)
- { return x >= y; }
+///
+/// \brief Returns the component-wise compare of x >= y.
+///
+/// \returns the component-wise compare of x >= y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector greaterThanEqual(const vector& x, const vector& y)
{ return vector(x[i] >= y[i]...); }
-template
-constexpr genBType equal(genType x, genType y)
- { return x == y; }
+///
+/// \brief Returns the component-wise compare of x == y.
+///
+/// \returns the component-wise compare of x == y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector equal(const vector& x, const vector& y)
{ return vector(x[i] == y[i]...); }
-template
-constexpr genBType notEqual(genType x, genType y)
- { return x != y; }
+///
+/// \brief Returns the component-wise compare of x != y.
+///
+/// \returns the component-wise compare of x != y.
+/// \param x lhs of the expression
+/// \param y rhs of the expression
template
constexpr vector notEqual(const vector& x, const vector& y)
{ return vector(x[i] != y[i]...); }
+
+///
+/// \brief Returns \f$true\f$ if any component of \f$x\f$ is \f$true\f$
+///
+/// \returns \f$true\f$ if any component of \f$x\f$ is \f$true\f$
+/// \param x the boolean vector to test
template
constexpr genBType any(const vector& x)
{ return (x[i] || ...); }
+///
+/// \brief Returns \f$true\f$ if all components of \f$x\f$ are \f$true\f$
+///
+/// \returns \f$true\f$ if all components of \f$x\f$ are \f$true\f$
+/// \param x the boolean vector to test
template
constexpr genBType all(const vector& x)
{ return (x[i] && ...); }
+///
+/// \brief Returns the component-wise logical complement of \f$x\f$.
+///
+/// \details
+/// \returns the component-wise logical complement of \f$x\f$.
+/// \param x the boolean vector to inverse
+template
+constexpr genBType operator!(const vector& x)
+ { return vector((!x[i]) ...); }
+
}
diff --git a/include/fennec/math/scalar.h b/include/fennec/math/scalar.h
index 373ac10..af36966 100644
--- a/include/fennec/math/scalar.h
+++ b/include/fennec/math/scalar.h
@@ -18,7 +18,7 @@
///
/// \file scalar.h
-/// \brief the \ref page_fennec_math_scalar
+/// \brief the \ref fennec_math_scalar
///
///
/// \details
@@ -36,7 +36,7 @@
///
///
///
-/// \page page_fennec_math_scalar Scalars
+/// \page fennec_math_scalar Scalars
/// \anchor scalar
///
/// The \ref fennec Library considers any type that passes ```is_arithmetic``` to be a \ref scalar "Scalar." Bools are
@@ -44,13 +44,13 @@
///
/// The GLSL Specification, and \ref fennec respectively, defines the following scalar types:
///
-/// | Type | Meaning |
-/// |----------|------------------------------|
-/// |\c bool | \copybrief fennec::bool_t |
-/// |\c int | \copybrief fennec::int_t |
-/// |\c uint | \copybrief fennec::uint_t |
-/// |\c float | \copybrief fennec::float_t |
-/// |\c double | \copybrief fennec::double_t |
+/// | Type | Corresponding Type | Meaning |
+/// |----------|-----------------------|------------------------------|
+/// |\c bool | \ref fennec::bool_t | \copybrief fennec::bool_t |
+/// |\c int | \ref fennec::int_t | \copybrief fennec::int_t |
+/// |\c uint | \ref fennec::uint_t | \copybrief fennec::uint_t |
+/// |\c float | \ref fennec::float_t | \copybrief fennec::float_t |
+/// |\c double | \ref fennec::double_t | \copybrief fennec::double_t |
///
///
///
diff --git a/include/fennec/math/swizzle.h b/include/fennec/math/swizzle.h
index 6b6d0b2..d5dee7f 100644
--- a/include/fennec/math/swizzle.h
+++ b/include/fennec/math/swizzle.h
@@ -18,7 +18,7 @@
///
/// \file swizzle.h
-/// \brief part of the \ref page_fennec_math_vector,
+/// \brief part of the \ref fennec_math_vector,
///
///
/// \details
diff --git a/include/fennec/math/trigonometric.h b/include/fennec/math/trigonometric.h
index eb6f706..350a3d5 100644
--- a/include/fennec/math/trigonometric.h
+++ b/include/fennec/math/trigonometric.h
@@ -18,7 +18,7 @@
///
/// \file trigonometric.h
-/// \brief the \ref page_fennec_math_trigonometric
+/// \brief the \ref fennec_math_trigonometric
///
///
/// \details
@@ -34,7 +34,7 @@
///
///
///
-/// \page page_fennec_math_trigonometric Trigonometry
+/// \page fennec_math_trigonometric Trigonometry
///
/// \brief The fennec Trigonometry Module
///
@@ -47,96 +47,96 @@
/// Description
///
/// |
-/// \ref fennec::degrees(genType) "genFType degrees(genFType)"
+/// \ref fennec::degrees "genFType degrees(genFType x)"
/// |
-/// \copydoc fennec::degrees(fennec::genType)
+/// \copydoc fennec::degrees
///
/// |
-/// \ref fennec::radians(genType) "genFType radians(genFType)"
+/// \ref fennec::radians "genFType radians(genFType x)"
/// |
-/// \copydoc fennec::radians(fennec::genType)
+/// \copydoc fennec::radians
///
///
///
///
///
-/// \section section_fennec_trigonometric_functions Trigonometry
+/// \section section_fennec_trigonometric_functions Trigonometric Functions
///
///
/// Syntax
/// | Description
///
/// |
---|
-/// \ref fennec::sin(genType) "genFType sin(genFType)"
+/// \ref fennec::sin "genFType sin(genFType x)"
/// |
-/// \copydoc fennec::sin(fennec::genType)
+/// \copydoc fennec::sin
///
/// |
-/// \ref fennec::cos(genType) "genFType cos(genFType)"
+/// \ref fennec::cos "genFType cos(genFType x)"
/// |
-/// \copydoc fennec::cos(fennec::genType)
+/// \copydoc fennec::cos
///
/// |
-/// \ref fennec::tan(genType) "genFType tan(genFType)"
+/// \ref fennec::tan "genFType tan(genFType x)"
/// |
-/// \copydoc fennec::tan(fennec::genType)
+/// \copydoc fennec::tan
///
///
/// |
-/// \ref fennec::asin(genType) "genFType asin(genFType)"
+/// \ref fennec::asin "genFType asin(genFType x)"
/// |
-/// \copydoc fennec::asin(fennec::genType)
+/// \copydoc fennec::asin
///
/// |
-/// \ref fennec::acos(genType) "genFType acos(genFType)"
+/// \ref fennec::acos "genFType acos(genFType x)"
/// |
-/// \copydoc fennec::acos(fennec::genType)
+/// \copydoc fennec::acos
///
/// |
-/// \ref fennec::atan(genType) "genFType atan(genFType)"
+/// \ref fennec::atan "genFType atan(genFType x)"
/// |
-/// \copydoc fennec::atan(fennec::genType)
+/// \copydoc fennec::atan
///
/// |
///
///
///
-/// \section section_fennec_hyperbolic_functions Trigonometry
+/// \section section_fennec_hyperbolic_functions Hyperbolic Functions
///
///
/// Syntax
/// | Description
///
/// |
---|
-/// \ref fennec::sinh(genType) "genFType sinh(genFType)"
+/// \ref fennec::sinh "genFType sinh(genFType x)"
/// |
-/// \copydoc fennec::sinh(fennec::genType)
+/// \copydoc fennec::sinh
///
/// |
-/// \ref fennec::cosh(genType) "genFType cosh(genFType)"
+/// \ref fennec::cosh "genFType cosh(genFType x)"
/// |
-/// \copydoc fennec::cosh(fennec::genType)
+/// \copydoc fennec::cosh
///
/// |
-/// \ref fennec::tanh(genType) "genFType tanh(genFType)"
+/// \ref fennec::tanh "genFType tanh(genFType x)"
/// |
-/// \copydoc fennec::tanh(fennec::genType)
+/// \copydoc fennec::tanh
///
///
/// |
-/// \ref fennec::asinh(genFType) "genFType asinh(genFType)"
+/// \ref fennec::asinh "genFType asinh(genFType x)"
/// |
-/// \copydoc fennec::asinh(fennec::genType)
+/// \copydoc fennec::asinh
///
/// |
-/// \ref fennec::acosh(genFType) "genFType acosh(genFType)"
+/// \ref fennec::acosh "genFType acosh(genFType x)"
/// |
-/// \copydoc fennec::acosh(fennec::genType)
+/// \copydoc fennec::acosh
///
/// |
-/// \ref fennec::atanh(genFType) "genFType atanh(genFType)"
+/// \ref fennec::atanh "genFType atanh(genFType x)"
/// |
-/// \copydoc fennec::atanh(fennec::genType)
+/// \copydoc fennec::atanh
///
/// |
///
@@ -198,7 +198,6 @@ constexpr vector degrees(const vector& radians)
/// @{
///
-/// \fn fennec::sin(fennec::genType)
/// \brief The standard trigonometric sine
///
/// \returns the sine of \f$\theta\f$ in the range \f$\left[-1,\,1\right]\f$
@@ -216,7 +215,6 @@ constexpr vector sin(const vector& x)
///
-/// \fn fennec::cos(fennec::genType)
/// \brief The Standard Trigonometric Cosine
///
/// \returns the cosine of \f$\theta\f$ in the range \f$\left[-1,\,1\right]\f$
@@ -234,7 +232,6 @@ constexpr vector cos(const vector& x)
///
-/// \fn fennec::tan(fennec::genType)
/// \brief The Standard Trigonometric Tangent
///
/// \returns The Tangent of \f$\theta\f$ in the Range \f$\left[-\inf,\,\inf\right]\f$
@@ -258,7 +255,6 @@ constexpr vector tan(const vector& x)
/// @{
///
-/// \fn fennec::asin(fennec::genType)
/// \brief Arc Sine. Returns an angle \f$\theta\f$ whose sine is /a x.
///
/// \returns an angle \f$\theta\f$ whose sine is /a x.
@@ -277,7 +273,6 @@ constexpr vector asin(const vector& x)
///
-/// \fn fennec::acos(fennec::genType)
/// \brief Arc Cosine. Returns an angle \f$\theta\f$ whose cosine is /a x.
///
/// \returns an angle \f$\theta\f$ whose cosine is /a x.
@@ -296,7 +291,6 @@ constexpr vector acos(const vector& x)
///
-/// \fn fennec::atan(fennec::genType)
/// \brief Arc Tangent. Returns an angle \f$\theta\f$ whose tangent is /a y_over_x.
///
/// \returns an angle \f$\theta\f$ whose tangent is /a y_over_x.
@@ -315,7 +309,6 @@ constexpr vector atan(const vector& y_over_x)
///
-/// \fn fennec::tan(fennec::genType, fennec::genType)
/// \brief Arc Tangent. Returns an angle whose tangent is \f$\frac{y}{x}\f$.
///
/// \returns an angle whose tangent is \f$\frac{y}{x}\f$.
@@ -342,7 +335,6 @@ constexpr vector atan(const vector& y, const vecto
/// @{
///
-/// \fn fennec::sinh(fennec::genType)
/// \brief Returns the Hyperbolic Sine Function, \f$\frac{{e}^{x}-{e}^{-x}}{2}\f$
///
/// \returns The Hyperbolic Sine of \f$x\f$, \f$\frac{{e}^{x}-{e}^{-x}}{2}\f$
@@ -359,7 +351,6 @@ constexpr vector sinh(const vector& x)
///
-/// \fn fennec::cosh(fennec::genType)
/// \brief Returns the Hyperbolic Cosine Function, \f$\frac{{e}^{x}+{e}^{-x}}{2}\f$
///
/// \returns The Hyperbolic Cosine of \f$x\f$, \f$\frac{{e}^{x}+{e}^{-x}}{2}\f$
@@ -375,7 +366,6 @@ constexpr vector cosh(const vector& x)
///
-/// \fn fennec::tanh(fennec::genType)
/// \brief Returns the Hyperbolic Tangent Function, \f$\frac{\text{sinh}(x)}{\text{cosh}(x)}\f$
///
/// \returns The Hyperbolic Tangent of \f$x\f$, \f$\frac{{e}^{x}+{e}^{-x}}{2}\f$
@@ -396,7 +386,6 @@ constexpr vector tanh(const vector& x)
/// @{
///
-/// \fn fennec::asinh(fennec::genType)
/// \brief The Inverse Hyperbolic Sine Function
///
/// \returns the value \f$y\f$ that fulfills \f$x=\text{sinh}(y)\f$
@@ -413,7 +402,6 @@ constexpr vector asinh(const vector& x)
///
-/// \fn fennec::cosh(fennec::genType)
/// \brief The Inverse Hyperbolic Cosine Function
///
/// \returns the value \f$y\f$ that fulfills \f$x=\text{cosh}(y)\f$
@@ -430,7 +418,6 @@ constexpr vector acosh(const vector& x)
///
-/// \fn fennec::atan(fennec::genType)
/// \brief The Inverse Hyperbolic Tangent Function
///
/// \returns the value \f$y\f$ that fulfills \f$x=\text{atanh}(y)\f$
@@ -444,6 +431,7 @@ constexpr genType atanh(genType x)
template
constexpr vector atanh(const vector& x)
{ return vector(fennec::atanh(x[i]) ...); }
+
/// @}
diff --git a/include/fennec/math/vector.h b/include/fennec/math/vector.h
index e83e6b0..0b8f3fe 100644
--- a/include/fennec/math/vector.h
+++ b/include/fennec/math/vector.h
@@ -18,7 +18,7 @@
///
/// \file vector.h
-/// \brief the \ref page_fennec_math_vector
+/// \brief the \ref fennec_math_vector
///
///
/// \details
@@ -34,7 +34,7 @@
///
///
///
-/// \page page_fennec_math_vector Vectors
+/// \page fennec_math_vector Vectors
///
/// \brief The fennec Vector Math Module
///
@@ -43,27 +43,27 @@
///
///
///
-/// Type | Brief
-/// |
---|
Floats
-/// | ```vec2``` | \copybrief fennec::vec2
-/// | ```vec3``` | \copybrief fennec::vec3
-/// | ```vec4``` | \copybrief fennec::vec4
-/// | Doubles
-/// | ```dvec2``` | \copybrief fennec::dvec2
-/// | ```dvec3``` | \copybrief fennec::dvec3
-/// | ```dvec4``` | \copybrief fennec::dvec4
-/// | Booleans
-/// | ```bvec2``` | \copybrief fennec::bvec2
-/// | ```bvec3``` | \copybrief fennec::bvec3
-/// | ```bvec4``` | \copybrief fennec::bvec4
-/// | Integers
-/// | ```ivec2``` | \copybrief fennec::ivec2
-/// | ```ivec3``` | \copybrief fennec::ivec3
-/// | ```ivec4``` | \copybrief fennec::ivec4
-/// | Unsigned Integers
-/// | ```uvec2``` | \copybrief fennec::uvec2
-/// | ```uvec3``` | \copybrief fennec::uvec3
-/// | ```uvec4``` | \copybrief fennec::uvec4
+/// | Type | Corresponding Type | Brief
+/// |
---|
Floats
+/// |
---|
```vec2``` | \ref fennec::vec2 | \copybrief fennec::vec2
+/// | ```vec3``` | \ref fennec::vec3 | \copybrief fennec::vec3
+/// | ```vec4``` | \ref fennec::vec4 | \copybrief fennec::vec4
+/// | Doubles
+/// |
---|
```dvec2``` | \ref fennec::dvec2 | \copybrief fennec::dvec2
+/// | ```dvec3``` | \ref fennec::dvec3 | \copybrief fennec::dvec3
+/// | ```dvec4``` | \ref fennec::dvec4 | \copybrief fennec::dvec4
+/// | Booleans
+/// |
---|
```bvec2``` | \ref fennec::bvec2 | \copybrief fennec::bvec2
+/// | ```bvec3``` | \ref fennec::bvec3 | \copybrief fennec::bvec3
+/// | ```bvec4``` | \ref fennec::bvec4 | \copybrief fennec::bvec4
+/// | Integers
+/// |
---|
```ivec2``` | \ref fennec::ivec2 | \copybrief fennec::ivec2
+/// | ```ivec3``` | \ref fennec::ivec3 | \copybrief fennec::ivec3
+/// | ```ivec4``` | \ref fennec::ivec4 | \copybrief fennec::ivec4
+/// | Unsigned Integers
+/// |
---|
```uvec2``` | \ref fennec::uvec2 | \copybrief fennec::uvec2
+/// | ```uvec3``` | \ref fennec::uvec3 | \copybrief fennec::uvec3
+/// | ```uvec4``` | \ref fennec::uvec4 | \copybrief fennec::uvec4
/// |
///
///
@@ -89,7 +89,7 @@
///
/// \section vector_swizzling Swizzling
///
-/// The fennec \ref page_fennec_math_vector allows for the "swizzling" of vectors. Each component in the vector can be
+/// The fennec \ref fennec_math_vector allows for the "swizzling" of vectors. Each component in the vector can be
/// used in any combination, with up to 4 components, to create another vector. For example,
///
/// let \f$V = (0, 1, 2)\f$
@@ -113,9 +113,7 @@ namespace fennec
///
-/// \typedef vec
-/// \anchor vec
-/// \brief Main \ref fennec::vector "vector" template
+/// \brief Main \ref fennec_math_vector "vector" template
/// \tparam ScalarT The type of the Components
/// \tparam SizeV The number of Components
template using vec = decltype(detail::__gen_vector(make_index_sequence{}));
@@ -123,122 +121,92 @@ template using vec = decltype(detail::__gen_vect
///
-/// \typedef tvec2
-/// \anchor tvec2
-/// \brief Shorthand for ```vec```
+/// \brief Shorthand for creating a 2-element \ref fennec::vector, ```vec```
+/// \details Shorthand for creating a 2-element \ref fennec::vector, ```vec```
/// \tparam ScalarT The type of the Components
template using tvec2 = vec;
///
-/// \typedef tvec3
-/// \anchor tvec3
-/// \brief Shorthand for ```vec```
+/// \brief Shorthand for creating a 3-element \ref fennec::vector, ```vec```
+/// \details Shorthand for creating a 3-element \ref fennec::vector, ```vec```
/// \tparam ScalarT The type of the Components
template using tvec3 = vec;
///
-/// \typedef tvec4
-/// \anchor tvec4
-/// \brief Shorthand for ```vec```
+/// \brief Shorthand for creating a 4-element \ref fennec::vector, ```vec```
+/// \details Shorthand for creating a 4-element \ref fennec::vector, ```vec```
/// \tparam ScalarT The type of the Components
template using tvec4 = vec;
///
-/// \typedef bvec2
-/// \anchor bvec2
-/// \brief A two-component boolean \ref fennec::vector "vector"
+/// \brief A two-component boolean \ref fennec_math_vector "vector"
using bvec2 = tvec2;
///
-/// \typedef bvec3
-/// \anchor bvec3
-/// \brief A three-component boolean \ref fennec::vector "vector"
+/// \brief A three-component boolean \ref fennec_math_vector "vector"
using bvec3 = tvec3;
///
-/// \typedef bvec4
-/// \anchor bvec4
-/// \brief A four-component boolean \ref fennec::vector "vector"
+/// \brief A four-component boolean \ref fennec_math_vector "vector"
using bvec4 = tvec4;
///
-/// \typedef ivec2
-/// \anchor ivec2
-/// \brief A two-component signed integer \ref fennec::vector "vector"
+/// \brief A two-component signed integer \ref fennec_math_vector "vector"
using ivec2 = tvec2;
-/// \typedef ivec3
-/// \anchor ivec3
-/// \brief A three-component signed integer \ref fennec::vector "vector"
+///
+/// \brief A three-component signed integer \ref fennec_math_vector "vector"
using ivec3 = tvec3;
/// \typedef ivec4
/// \anchor ivec4
-/// \brief A four-component signed integer \ref fennec::vector "vector"
+/// \brief A four-component signed integer \ref fennec_math_vector "vector"
using ivec4 = tvec4;
///
-/// \typedef uvec2
-/// \anchor uvec2
-/// \brief A two-component unsigned integer \ref fennec::vector "vector"
+/// \brief A two-component unsigned integer \ref fennec_math_vector "vector"
using uvec2 = tvec2;
///
-/// \typedef uvec3
-/// \anchor uvec3
-/// \brief A three-component unsigned integer \ref fennec::vector "vector"
+/// \brief A three-component unsigned integer \ref fennec_math_vector "vector"
using uvec3 = tvec3;
///
-/// \typedef uvec4
-/// \anchor uvec4
-/// \brief A four-component unsigned integer \ref fennec::vector "vector"
+/// \brief A four-component unsigned integer \ref fennec_math_vector "vector"
using uvec4 = tvec4;
///
-/// \typedef vec2
-/// \anchor vec2
-/// \brief A two-component single-precision floating-point \ref fennec::vector "vector"
+/// \brief A two-component single-precision floating-point \ref fennec_math_vector "vector"
using vec2 = tvec2;
///
-/// \typedef vec3
-/// \anchor vec3
-/// \brief A three-component single-precision floating-point \ref fennec::vector "vector"
+/// \brief A three-component single-precision floating-point \ref fennec_math_vector "vector"
using vec3 = tvec3;
///
-/// \typedef vec4
-/// \anchor vec4
-/// \brief A four-component single-precision floating-point \ref fennec::vector "vector"
+/// \brief A four-component single-precision floating-point \ref fennec_math_vector "vector"
using vec4 = tvec4;
///
-/// \typedef dvec2
-/// \anchor dvec2
-/// \brief A two-component double-precision floating-point \ref fennec::vector "vector"
+/// \brief A two-component double-precision floating-point \ref fennec_math_vector "vector"
using dvec2 = tvec2;
///
-/// \typedef dvec3
-/// \anchor dvec3
-/// \brief A three-component double-precision floating-point \ref fennec::vector "vector"
+/// \brief A three-component double-precision floating-point \ref fennec_math_vector "vector"
using dvec3 = tvec3;
///
-/// \typedef dvec4
-/// \anchor dvec4
-/// \brief A four-component double-precision floating-point \ref fennec::vector "vector"
+/// \brief A four-component double-precision floating-point \ref fennec_math_vector "vector"
using dvec4 = tvec4;
@@ -288,7 +256,7 @@ struct vector : detail::vector_base_type
static constexpr size_t size = sizeof...(IndicesV); ///< \brief size of the swizzle
static constexpr size_t N = sizeof...(IndicesV); ///< \brief size of the swizzle
- using decay_t = conditional_t; ///< Type that the \ref fennec::vector "vector" should Decay into
+ using decay_t = conditional_t; ///< Type that the \ref fennec_math_vector "vector" should Decay into
/// @}
@@ -355,8 +323,8 @@ struct vector : detail::vector_base_type
/// \brief vector scalar conversion constructor
///
/// \details
- /// \tparam OScalarT scalar Type of the \ref fennec::vector "vector" to Convert
- /// \param v \ref fennec::vector "vector" to Convert
+ /// \tparam OScalarT scalar Type of the \ref fennec_math_vector "vector" to Convert
+ /// \param v \ref fennec_math_vector "vector" to Convert
template
explicit constexpr vector(const vector& v)
{ ((data[IndicesV] = ScalarT(v[IndicesV])), ...); }
@@ -366,7 +334,7 @@ struct vector : detail::vector_base_type
/// \brief vector conversion constructor
///
/// \details
- /// \tparam OScalarT scalar Type of the \ref fennec::vector "vector" to Convert
+ /// \tparam OScalarT scalar Type of the \ref fennec_math_vector "vector" to Convert
/// \tparam MoreIndicesStartV
/// \tparam MoreIndicesV
/// \param v
@@ -410,7 +378,7 @@ struct vector : detail::vector_base_type
/// \brief decay implementation
///
/// \details
- /// \returns scalar if \f$N==1\f$, otherwise, \ref fennec::vector "vector"
+ /// \returns scalar if \f$N==1\f$, otherwise, \ref fennec_math_vector "vector"
decay_t decay()
{ return static_cast(*this); }
@@ -493,54 +461,54 @@ struct vector : detail::vector_base_type
// Scalar-Vector Arithmetic operators ==================================================================================
- /// \name \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" Arithmetic operators
+ /// \name \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" Arithmetic operators
/// @{
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" addition operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" addition operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator+(scalar_t lhs, const vector_t& rhs)
{ return vector_t((lhs[IndicesV] + rhs[IndicesV]) ...); }
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" subtraction operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" subtraction operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator-(scalar_t lhs, const vector_t& rhs)
{ return vector_t((lhs[IndicesV] - rhs[IndicesV]) ...); }
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" multiplication operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" multiplication operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator*(scalar_t lhs, const vector_t& rhs)
{ return vector_t((lhs * rhs[IndicesV]) ...); }
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" division operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" division operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator/(scalar_t lhs, const vector_t& rhs)
{ return vector_t((lhs / rhs[IndicesV]) ...); }
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" integer modulus operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" integer modulus operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator%(scalar_t lhs, const vector_t& rhs) requires(is_integral_v)
@@ -550,56 +518,56 @@ struct vector : detail::vector_base_type
// Vector-Scalar Arithmetic operators ==================================================================================
- /// \name \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" Arithmetic operators
+ /// \name \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" Arithmetic operators
/// @{
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" addition operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" addition operator
///
/// \details
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
/// \param lhs left hand side
/// \param rhs right hand side
constexpr friend vector_t operator+(const vector_t& lhs, scalar_t rhs)
{ return vector_t((lhs[IndicesV] + rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" subtraction operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" subtraction operator
///
/// \details
/// \param lhs left hand side
/// \param rhs right hand side
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
constexpr friend vector_t operator-(const vector_t& lhs, scalar_t rhs)
{ return vector_t((lhs[IndicesV] - rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" multiplication operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" multiplication operator
///
/// \details
/// \param lhs left hand side
/// \param rhs right hand side
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
constexpr friend vector_t operator*(const vector_t& lhs, scalar_t rhs)
{ return vector_t((lhs[IndicesV] * rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" division operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" division operator
///
/// \details
/// \param lhs left hand side
/// \param rhs right hand side
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
constexpr friend vector_t operator/(const vector_t& lhs, scalar_t rhs)
{ return vector((lhs[IndicesV] / rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" integer modulus operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" integer modulus operator
///
/// \details
/// \param lhs left hand side
/// \param rhs right hand side
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
constexpr friend vector_t operator%(const vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return vector((lhs[IndicesV] % rhs) ...); }
@@ -607,56 +575,56 @@ struct vector : detail::vector_base_type
// Vector-Scalar Arithmetic Assignment operators =======================================================================
- /// \name \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" Arithmetic Assignment operators
+ /// \name \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" Arithmetic Assignment operators
/// @{
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" addition operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" addition operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
constexpr friend vector_t& operator+=(vector_t& lhs, scalar_t rhs)
{ return ((lhs[IndicesV] += rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" Subtraction operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" Subtraction operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
constexpr friend vector_t& operator-=(vector_t& lhs, scalar_t rhs)
{ return ((lhs[IndicesV] -= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" multiplication operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" multiplication operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
constexpr friend vector_t& operator*=(vector_t& lhs, scalar_t rhs)
{ return ((lhs[IndicesV] *= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" division operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" division operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
constexpr friend vector_t& operator/=(vector_t& lhs, scalar_t rhs)
{ return ((lhs[IndicesV] /= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" integer modulus operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" integer modulus operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
constexpr friend vector_t& operator%=(vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] %= rhs), ..., lhs); }
@@ -664,55 +632,55 @@ struct vector : detail::vector_base_type
// Vector-Vector Arithmetic operators ==================================================================================
- /// \name \ref fennec::vector "vector" - \ref fennec::vector "vector" Arithmetic operators
+ /// \name \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" Arithmetic operators
/// @{
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" addition operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" addition operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
constexpr friend vector_t operator+(const vector_t& lhs, const vector_t& rhs)
{ return vector((lhs[IndicesV] + rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" subtraction operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" subtraction operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
constexpr friend vector_t operator-(const vector_t& lhs, const vector_t& rhs)
{ return vector((lhs[IndicesV] - rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" multiplication operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" multiplication operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
constexpr friend vector_t operator*(const vector_t& lhs, const vector_t& rhs)
{ return vector((lhs[IndicesV] * rhs[IndicesV]) ...); }
///
/// \fn vector::operator/(const vector_t&, const vector_t&)
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" division operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" division operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
constexpr friend vector_t operator/(const vector_t& lhs, const vector_t& rhs)
{ return vector((lhs[IndicesV] / rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" integer modulus operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" integer modulus operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
constexpr friend vector_t operator%(const vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return vector((lhs[IndicesV] % rhs[IndicesV]) ...); }
@@ -720,56 +688,56 @@ struct vector : detail::vector_base_type
// Vector-Vector Arithmetic Assignment operators =======================================================================
- /// \name \ref fennec::vector "vector" - \ref fennec::vector "vector" Arithmetic Assignment operators
+ /// \name \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" Arithmetic Assignment operators
/// @{
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" addition operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" addition operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i+rhs_i\f$
constexpr friend vector_t& operator+=(vector_t& lhs, const vector_t& rhs)
{ return ((lhs[IndicesV] += rhs[IndicesV]), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" subtraction operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" subtraction operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i-rhs_i\f$
constexpr friend vector_t& operator-=(vector_t& lhs, const vector_t& rhs)
{ return ((lhs[IndicesV] -= rhs[IndicesV]), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" multiplication operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" multiplication operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i={lhs_i}\cdot{rhs_i}\f$
constexpr friend vector_t& operator*=(vector_t& lhs, const vector_t& rhs)
{ return ((lhs[IndicesV] *= rhs[IndicesV]), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" division operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" division operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=\frac{lhs_i}{rhs_i}\f$
constexpr friend vector_t& operator/=(vector_t& lhs, const vector_t& rhs)
{ return ((lhs[IndicesV] /= rhs[IndicesV]), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" integer modulus operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" integer modulus operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\%rhs_i\f$
constexpr friend vector_t& operator%=(vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] %= rhs[IndicesV]), ..., lhs); }
@@ -781,40 +749,40 @@ struct vector : detail::vector_base_type
/// @{
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" logical and operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" logical and operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&\&rhs_i\f$
constexpr friend vector_t operator&&(const vector_t& lhs, scalar_t rhs) requires(is_bool_v)
{ return vector_t((lhs[IndicesV] && rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" logical and operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" logical and operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&\&rhs_i\f$
constexpr friend vector_t operator&&(const vector_t& lhs, const vector_t& rhs) requires(is_bool_v)
{ return vector_t((lhs[IndicesV] && rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" logical or operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" logical or operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\|\|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\|\|rhs_i\f$
constexpr friend vector_t operator||(const vector_t& lhs, scalar_t rhs) requires(is_bool_v)
{ return vector_t((lhs[IndicesV] || rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" logical or operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" logical or operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\|\|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\|\|rhs_i\f$
constexpr friend vector_t operator||(const vector_t& lhs, const vector_t& rhs) requires(is_bool_v)
{ return vector_t((lhs[IndicesV] || rhs[IndicesV]) ...); }
@@ -826,150 +794,150 @@ struct vector : detail::vector_base_type
/// @{
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" bitwise and operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" bitwise and operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
constexpr friend vector_t operator&(scalar_t rhs, const vector_t& lhs) requires(is_integral_v)
{ return vector_t((lhs & rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise and assignment operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise and assignment operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
constexpr friend vector_t operator&=(vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] &= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise and operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise and operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
constexpr friend vector_t operator&(const vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return vector_t((lhs[IndicesV] & rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise and assignment operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise and assignment operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
constexpr friend vector_t operator&=(vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] &= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise and operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise and operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\&rhs_i\f$
constexpr friend vector_t operator&(const vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return vector_t((lhs[IndicesV] & rhs[IndicesV]) ...); }
///
- /// \brief \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" bitwise or operator
+ /// \brief \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" bitwise or operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
constexpr friend vector_t operator|(scalar_t rhs, const vector_t& lhs) requires(is_integral_v)
{ return vector_t((lhs & rhs[IndicesV]) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise or assignment operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise or assignment operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
constexpr friend vector_t operator|=(vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] |= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise or operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise or operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
constexpr friend vector_t operator|(const vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return vector_t((lhs[IndicesV] | rhs) ...); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise or assignment operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise or assignment operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
constexpr friend vector_t operator|=(vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] |= rhs), ..., lhs); }
///
- /// \brief \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise or operator
+ /// \brief \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise or operator
///
/// \details
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i|rhs_i\f$
constexpr friend vector_t operator|(const vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return vector_t((lhs[IndicesV] | rhs[IndicesV]) ...); }
///
- /// \ref page_fennec_math_scalar "scalar" - \ref fennec::vector "vector" bitwise or operator
+ /// \ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" bitwise or operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
constexpr friend vector_t operator^(scalar_t rhs, const vector_t& lhs) requires(is_integral_v)
{ return vector_t((lhs ^ rhs[IndicesV]) ...); }
///
/// \fn vector::operator^=(vector_t&, scalar_t)
- /// \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise or assignment operator
+ /// \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise or assignment operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
constexpr friend vector_t operator^=(vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] ^= rhs), ..., lhs); }
///
/// \fn vector::operator^(const vector_t&, scalar_t)
- /// \ref fennec::vector "vector" - \ref page_fennec_math_scalar "scalar" bitwise or operator
+ /// \ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" bitwise or operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
constexpr friend vector_t operator^(const vector_t& lhs, scalar_t rhs) requires(is_integral_v)
{ return vector_t((lhs[IndicesV] ^ rhs) ...); }
///
/// \fn vector::operator^=(vector_t&, const vector_t&)
- /// \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise or assignment operator
+ /// \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise or assignment operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
constexpr friend vector_t operator^=(vector_t& lhs, const vector_t& rhs) requires(is_integral_v)
{ return ((lhs[IndicesV] ^= rhs), ..., lhs); }
///
/// \fn vector::operator^(const vector_t&, const vector_t&)
- /// \ref fennec::vector "vector" - \ref fennec::vector "vector" bitwise or operator
+ /// \ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" bitwise or operator
/// \param lhs Left Hand Side of the Expression
/// \param rhs Right Hand Side of the Expression
- /// \returns A \ref fennec::vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
+ /// \returns A \ref fennec_math_vector "vector" \a v such that, \f$v_i=lhs_i\^rhs_i\f$
constexpr friend vector_t operator^(const vector_t& lhs, const vector_t& rhs) requires(is_integral_v | | |