示例#1
0
size_t DualWordArray::size() const {
    GADGETLIB_ASSERT(multipackedContents_.size() == numElements_,
                    "Dual Variable multipacked contents size mismatch");
    GADGETLIB_ASSERT(unpackedContents_.size() == numElements_,
                    "Dual Variable packed contents size mismatch");
    return numElements_;
}
示例#2
0
DualWordArray::DualWordArray(const MultiPackedWordArray& multipackedContents, // TODO delete, for dev
                             const UnpackedWordArray& unpackedContents)
        : multipackedContents_(multipackedContents), unpackedContents_(unpackedContents),
            numElements_(multipackedContents_.size()) {
    GADGETLIB_ASSERT(multipackedContents_.size() == numElements_,
                    "Dual Variable multipacked contents size mismatch");
    GADGETLIB_ASSERT(unpackedContents_.size() == numElements_,
                    "Dual Variable packed contents size mismatch");
}
示例#3
0
PackedWordArray DualWordArray::packed() const {
    GADGETLIB_ASSERT(numElements_ == multipackedContents_.size(), "multipacked contents size mismatch")
    PackedWordArray retval(numElements_);
    for(size_t i = 0; i < numElements_; ++i) {
        const auto element = multipackedContents_[i];
        GADGETLIB_ASSERT(element.size() == 1, "Cannot convert from multipacked to packed");
        retval[i] = element[0];
    }
    return retval;
}
示例#4
0
void FElem::promoteToFieldType(FieldType type) {
    if (!fieldMustBePromotedForArithmetic(this->fieldType(), type)) {
        return;
    }
    if(type == R1P) {
        const FConst* fConst = dynamic_cast<FConst*>(elem_.get());
        GADGETLIB_ASSERT(fConst != NULL, "Cannot convert between specialized field types.");
        elem_.reset(new R1P_Elem(fConst->asLong()));
    } else {
        GADGETLIB_FATAL("Attempted to promote to unknown field type");
    }
}
示例#5
0
Variable::Variable(const string& name) : index_(nextFreeIndex_++) {
    libff::UNUSED(name);
    GADGETLIB_ASSERT(nextFreeIndex_ > 0, GADGETLIB2_FMT("Variable index overflow has occured, maximum number of "
                                         "Variables is %lu", ULONG_MAX));
}
示例#6
0
long R1P_Elem::asLong() const {
    GADGETLIB_ASSERT(elem_.as_ulong() <= LONG_MAX, "long overflow occured.");
    return long(elem_.as_ulong());
}