Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
standard_affine_point.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <ostream>
5
6namespace bb::avm2 {
7
15template <typename AffinePoint> class StandardAffinePoint {
16 public:
19
20 constexpr StandardAffinePoint() noexcept = default;
21
22 constexpr StandardAffinePoint(AffinePoint val) noexcept
23 : point(val)
24 {}
25
29
30 constexpr StandardAffinePoint operator+(const StandardAffinePoint& other) const noexcept
31 {
32 return StandardAffinePoint(point + other.point);
33 }
34
35 constexpr StandardAffinePoint operator*(const ScalarField& exponent) const noexcept
36 {
37 return StandardAffinePoint(point * exponent);
38 }
39
40 constexpr bool operator==(const StandardAffinePoint& other) const noexcept
41 {
42 return (this == &other || point == other.point);
43 }
44
45 constexpr StandardAffinePoint operator-() const noexcept { return StandardAffinePoint(-point); }
46
47 [[nodiscard]] constexpr bool is_infinity() const noexcept { return point.is_point_at_infinity(); }
48
49 [[nodiscard]] constexpr bool on_curve() const noexcept { return point.on_curve(); }
50
51 constexpr const BaseField& x() const noexcept { return point.is_point_at_infinity() ? zero : point.x; }
52
53 constexpr const BaseField& y() const noexcept { return point.is_point_at_infinity() ? zero : point.y; }
54
56 {
58 return infinity;
59 }
60
61 static const StandardAffinePoint& one()
62 {
64 return one;
65 }
66
67 private:
69 static constexpr const auto zero = BaseField::zero();
70};
71
72template <typename T> std::ostream& operator<<(std::ostream& os, const StandardAffinePoint<T>& point)
73{
74 os << "StandardAffinePoint(" << point.x() << ", " << point.y() << ", " << point.is_infinity() << ")";
75 return os;
76}
77
78} // namespace bb::avm2
static const StandardAffinePoint & infinity()
constexpr StandardAffinePoint operator*(const ScalarField &exponent) const noexcept
constexpr StandardAffinePoint operator-() const noexcept
constexpr bool is_infinity() const noexcept
constexpr StandardAffinePoint operator+(const StandardAffinePoint &other) const noexcept
constexpr StandardAffinePoint(BaseField x, BaseField y, bool is_infinity) noexcept
constexpr StandardAffinePoint() noexcept=default
constexpr const BaseField & x() const noexcept
constexpr const BaseField & y() const noexcept
constexpr bool on_curve() const noexcept
constexpr bool operator==(const StandardAffinePoint &other) const noexcept
static const StandardAffinePoint & one()
static constexpr const auto zero
constexpr bool is_point_at_infinity() const noexcept
constexpr bool on_curve() const noexcept
static constexpr affine_element one() noexcept
std::ostream & operator<<(std::ostream &os, const WireOpCode &op)
Definition opcodes.cpp:8