Skip to content

Ultra Uint64 logic operations do not work #1229

@Sarkoxed

Description

@Sarkoxed

When using uint64 from stdlib and calling XOR or AND directly(not using create_logic_constraint):

#include "barretenberg/circuit_checker/circuit_checker.hpp"

#include "barretenberg/stdlib/primitives/field/field.hpp"
#include "barretenberg/stdlib/primitives/uint/uint.hpp"

using namespace bb;

namespace {
auto& engine = numeric::get_debug_randomness();
}

using field_t = stdlib::field_t<UltraCircuitBuilder>;
using witness_t = stdlib::witness_t<UltraCircuitBuilder>;
using pub_witness_t = stdlib::public_witness_t<UltraCircuitBuilder>;
using uint_t = stdlib::uint64<UltraCircuitBuilder>;

int main()
{
    UltraCircuitBuilder builder;

    uint_t a = witness_t(&builder, 0);
    uint_t b = witness_t(&builder, 0);
    uint_t c = a ^ b;
    info(c);
}

It returns the following error:

barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/circuit_builder_base.hpp:107: FF bb::CircuitBuilderBase<bb::field<bb::Bn254FrParams>>::get_variable(const uint32_t) const [FF_ = bb::field<bb::Bn254FrParams>]: Assertion `(variables.size() > index)' failed.
[1]    1378769 IOT instruction (core dumped)  ./bin/xor_debug

Metadata

Metadata

Assignees

Labels

auditThings to do during the next auditbugSomething isn't workingprioSuggested to prioritized

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions