Skip to content

Commit

Permalink
Rename quantity to make way for an actual quantity concept
Browse files Browse the repository at this point in the history
  • Loading branch information
eggrobin committed Mar 23, 2024
1 parent f6d08c6 commit 894ef4f
Show file tree
Hide file tree
Showing 15 changed files with 87 additions and 86 deletions.
22 changes: 11 additions & 11 deletions geometry/grassmann.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,69 +253,69 @@ Multivector<Scalar, Frame, rank> operator-(
Multivector<Scalar, Frame, rank> const& right);

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> operator*(
LScalar const& left,
Multivector<RScalar, Frame, rank> const& right);

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> operator*(
Multivector<LScalar, Frame, rank> const& left,
RScalar const& right);

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Quotient<LScalar, RScalar>, Frame, rank> operator/(
Multivector<LScalar, Frame, rank> const& left,
RScalar const& right);

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
FusedNegatedMultiplySubtract(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Multivector<Product<LScalar, RScalar>, Frame, rank> const& c);
template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
FusedNegatedMultiplySubtract(
LScalar const& a,
Expand Down
22 changes: 11 additions & 11 deletions geometry/grassmann_body.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ Multivector<Scalar, Frame, rank> operator-(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
operator*(LScalar const& left,
Multivector<RScalar, Frame, rank> const& right) {
Expand All @@ -435,7 +435,7 @@ operator*(LScalar const& left,
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
operator*(Multivector<LScalar, Frame, rank> const& left,
RScalar const& right) {
Expand All @@ -444,7 +444,7 @@ operator*(Multivector<LScalar, Frame, rank> const& left,
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Quotient<LScalar, RScalar>, Frame, rank>
operator/(Multivector<LScalar, Frame, rank> const& left,
RScalar const& right) {
Expand All @@ -453,7 +453,7 @@ operator/(Multivector<LScalar, Frame, rank> const& left,
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Expand All @@ -465,7 +465,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Expand All @@ -477,7 +477,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
Multivector<LScalar, Frame, rank> const& a,
RScalar const& b,
Expand All @@ -489,7 +489,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
FusedNegatedMultiplySubtract(
Multivector<LScalar, Frame, rank> const& a,
Expand All @@ -502,7 +502,7 @@ FusedNegatedMultiplySubtract(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Expand All @@ -514,7 +514,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplyAdd(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Expand All @@ -526,7 +526,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedMultiplySubtract(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
LScalar const& a,
Multivector<RScalar, Frame, rank> const& b,
Expand All @@ -538,7 +538,7 @@ Multivector<Product<LScalar, RScalar>, Frame, rank> FusedNegatedMultiplyAdd(
}

template<typename LScalar, typename RScalar, typename Frame, int rank>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
Multivector<Product<LScalar, RScalar>, Frame, rank>
FusedNegatedMultiplySubtract(
LScalar const& a,
Expand Down
4 changes: 2 additions & 2 deletions geometry/hilbert.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ template<typename T1, typename T2 = T1>
struct Hilbert;

template<typename T1, typename T2>
requires quantity<T1> && quantity<T2>
requires convertible_to_quantity<T1> && convertible_to_quantity<T2>
struct Hilbert<T1, T2> : not_constructible {
static constexpr int dimension = 1;

Expand All @@ -36,7 +36,7 @@ struct Hilbert<T1, T2> : not_constructible {
};

template<typename T>
requires quantity<T>
requires convertible_to_quantity<T>
struct Hilbert<T, T> : not_constructible {
static constexpr int dimension = 1;

Expand Down
8 changes: 4 additions & 4 deletions geometry/hilbert_body.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,26 @@ namespace internal {
using namespace principia::quantities::_elementary_functions;

template<typename T1, typename T2>
requires quantity<T1> && quantity<T2>
requires convertible_to_quantity<T1> && convertible_to_quantity<T2>
auto Hilbert<T1, T2>::InnerProduct(T1 const& t1, T2 const& t2)
-> InnerProductType {
return t1 * t2;
}

template<typename T>
requires quantity<T>
requires convertible_to_quantity<T>
auto Hilbert<T, T>::InnerProduct(T const& t1, T const& t2) -> InnerProductType {
return t1 * t2;
}

template<typename T>
requires quantity<T>
requires convertible_to_quantity<T>
auto Hilbert<T, T>::Norm²(T const& t) -> Norm²Type {
return t * t;
}

template<typename T>
requires quantity<T>
requires convertible_to_quantity<T>
auto Hilbert<T, T>::Norm(T const& t) -> NormType {
return Abs(t);
}
Expand Down
10 changes: 5 additions & 5 deletions geometry/point.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class Point final {
constexpr friend bool operator!=(Point const& left,
Point const& right) = default;
constexpr friend auto operator<=>(Point const& left, Point const& right)
requires quantity<Vector> = default;
requires convertible_to_quantity<Vector> = default;

constexpr Vector operator-(Point const& from) const;

Expand Down Expand Up @@ -79,10 +79,10 @@ class Point final {
L const& a, R const& b, Point<Product<L, R>> const& c);

template<typename V>
requires quantity<V>
requires convertible_to_quantity<V>
friend constexpr Point<V> NextUp(Point<V> x);
template<typename V>
requires quantity<V>
requires convertible_to_quantity<V>
friend constexpr Point<V> NextDown(Point<V> x);

template<typename V>
Expand All @@ -106,10 +106,10 @@ Point<Product<L, R>> FusedNegatedMultiplyAdd(L const& a,
Point<Product<L, R>> const& c);

template<typename Vector>
requires quantity<Vector>
requires convertible_to_quantity<Vector>
constexpr Point<Vector> NextUp(Point<Vector> x);
template<typename Vector>
requires quantity<Vector>
requires convertible_to_quantity<Vector>
constexpr Point<Vector> NextDown(Point<Vector> x);

template<typename Vector>
Expand Down
4 changes: 2 additions & 2 deletions geometry/point_body.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,14 @@ Point<Product<L, R>> FusedNegatedMultiplyAdd(L const& a, R const& b,
}

template<typename Vector>
requires quantity<Vector>
requires convertible_to_quantity<Vector>
constexpr Point<Vector> NextUp(Point<Vector> const x) {
using quantities::_elementary_functions::NextUp;
return Point<Vector>(NextUp(x.coordinates_));
}

template<typename Vector>
requires quantity<Vector>
requires convertible_to_quantity<Vector>
constexpr Point<Vector> NextDown(Point<Vector> const x) {
using quantities::_elementary_functions::NextDown;
return Point<Vector>(NextDown(x.coordinates_));
Expand Down
22 changes: 11 additions & 11 deletions geometry/r3_element.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,67 +115,67 @@ R3Element<Scalar> operator-(R3Element<Scalar> const& left,
// product LScalar ⊗ Scalar³. Since LScalar ⊗ Scalar³ ≅ (LScalar ⊗ Scalar)³,
// the result is an R3Element<Product<LScalar, RScalar>>.
template<typename LScalar, typename RScalar>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
R3Element<Product<LScalar, RScalar>> operator*(LScalar const& left,
R3Element<RScalar> const& right);

template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Product<LScalar, RScalar>> operator*(R3Element<LScalar> const& left,
RScalar const& right);

template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Quotient<LScalar, RScalar>> operator/(R3Element<LScalar> const& left,
RScalar const& right);

// FMA for ±vector * scalar ± vector.
template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Product<LScalar, RScalar>> FusedMultiplyAdd(
R3Element<LScalar> const& a,
RScalar const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Product<LScalar, RScalar>> FusedMultiplySubtract(
R3Element<LScalar> const& a,
RScalar const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Product<LScalar, RScalar>> FusedNegatedMultiplyAdd(
R3Element<LScalar> const& a,
RScalar const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<RScalar>
requires convertible_to_quantity<RScalar>
R3Element<Product<LScalar, RScalar>> FusedNegatedMultiplySubtract(
R3Element<LScalar> const& a,
RScalar const& b,
R3Element<Product<LScalar, RScalar>> const& c);

// FMA for ±scalar * vector ± vector.
template<typename LScalar, typename RScalar>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
R3Element<Product<LScalar, RScalar>> FusedMultiplyAdd(
LScalar const& a,
R3Element<RScalar> const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
R3Element<Product<LScalar, RScalar>> FusedMultiplySubtract(
LScalar const& a,
R3Element<RScalar> const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
R3Element<Product<LScalar, RScalar>> FusedNegatedMultiplyAdd(
LScalar const& a,
R3Element<RScalar> const& b,
R3Element<Product<LScalar, RScalar>> const& c);
template<typename LScalar, typename RScalar>
requires quantity<LScalar>
requires convertible_to_quantity<LScalar>
R3Element<Product<LScalar, RScalar>> FusedNegatedMultiplySubtract(
LScalar const& a,
R3Element<RScalar> const& b,
Expand Down
Loading

0 comments on commit 894ef4f

Please sign in to comment.