forked from jvhs0706/zkllm-ccs2024
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpolynomial.cuh
52 lines (40 loc) · 1.49 KB
/
polynomial.cuh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef POLYNOMIAL_CUH
#define POLYNOMIAL_CUH
#include "fr-tensor.cuh"
// This part is for light-weight "CPU" serial computations, which actually piggy-backs on the GPU implementations
Fr_t operator+(const Fr_t& a, const Fr_t& b);
Fr_t operator-(const Fr_t& a, const Fr_t& b);
Fr_t operator-(const Fr_t& a);
Fr_t operator*(const Fr_t& a, const Fr_t& b);
Fr_t operator/(const Fr_t& a, const Fr_t& b);
Fr_t inv(const Fr_t& a);
class Polynomial{
public:
Polynomial();
Polynomial(int degree);
Polynomial(int degree, Fr_t* coefficients);
Polynomial(const Polynomial& other);
Polynomial(const Fr_t& constant);
Polynomial(const vector<Fr_t>& coefficients);
~Polynomial();
Polynomial& operator=(const Polynomial& other);
Polynomial operator+(const Polynomial& other);
Polynomial operator-(const Polynomial& other);
Polynomial operator*(const Polynomial& other);
Polynomial operator-();
Polynomial& operator+=(const Polynomial& other);
Polynomial& operator-=(const Polynomial& other);
Polynomial& operator*=(const Polynomial& other);
Fr_t operator()(const Fr_t& x);
int getDegree() const;
void setCoefficients(int degree, Fr_t* coefficients);
static Polynomial eq(const Fr_t& u);
static Fr_t eq(const Fr_t& u, const Fr_t& v);
friend std::ostream& operator<<(std::ostream& os, const Polynomial& poly);
private:
Fr_t* coefficients_;
int degree_;
};
// Polynomial eq(const Fr_t& u);
// Fr_t eq(const Fr_t& u, const Fr_t& v);
#endif