Longfellow ZK
0290cb32
Loading...
Searching...
No Matches
lib
algebra
compare.h
1
// Copyright 2025 Google LLC.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef PRIVACY_PROOFS_ZK_LIB_ALGEBRA_COMPARE_H_
16
#define PRIVACY_PROOFS_ZK_LIB_ALGEBRA_COMPARE_H_
17
18
#include <cstddef>
19
#include <cstdint>
20
21
namespace
proofs {
22
23
// canonical a < b operation, defined as lexicographic comparison of
24
// the Elt's serialization
25
template
<
class
Field>
26
bool
elt_less_than(
const
typename
Field::Elt
& a,
const
typename
Field::Elt
& b,
27
const
Field& F) {
28
uint8_t ua[Field::kBytes], ub[Field::kBytes];
29
F.to_bytes_field(ua, a);
30
F.to_bytes_field(ub, b);
31
for
(
size_t
j = 0; j < Field::kBytes; ++j) {
32
if
(ua[j] < ub[j])
return
true
;
33
if
(ua[j] > ub[j])
return
false
;
34
}
35
return
false
;
// equal
36
}
37
38
}
// namespace proofs
39
40
#endif
// PRIVACY_PROOFS_ZK_LIB_ALGEBRA_COMPARE_H_
proofs::GF2_128::Elt
Definition
gf2_128.h:63
Generated by
1.15.0