From 1b801147ff8b7dd74336810525241ec29500cf44 Mon Sep 17 00:00:00 2001 From: Gregor Date: Wed, 27 Mar 2024 21:53:14 +0100 Subject: [PATCH] use full boolean comparisons --- src/lib/provable/field.ts | 19 ++++--------------- tests/vk-regression/vk-regression.json | 4 ++-- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/lib/provable/field.ts b/src/lib/provable/field.ts index fff1bc6e58..4afb787563 100644 --- a/src/lib/provable/field.ts +++ b/src/lib/provable/field.ts @@ -26,9 +26,8 @@ import { setFieldConstructor } from './core/field-constructor.js'; import { assertLessThanFull, assertLessThanOrEqualFull, - checkRangesAsProver, - lessThanGeneric, - lessThanOrEqualGeneric, + lessThanFull, + lessThanOrEqualFull, } from './gadgets/comparison.js'; // external API @@ -587,11 +586,7 @@ class Field { if (this.isConstant() && isConstant(y)) { return new Bool(this.toBigInt() < toFp(y)); } - y = Field.from(y); - let maxBits = Fp.sizeInBits - 2; - let upperBound = 1n << BigInt(maxBits); - checkRangesAsProver(this, y, upperBound); - return lessThanGeneric(this, y, upperBound, (v) => v.toBits(maxBits)); + return lessThanFull(this, Field.from(y)); } /** @@ -621,13 +616,7 @@ class Field { if (this.isConstant() && isConstant(y)) { return new Bool(this.toBigInt() <= toFp(y)); } - y = Field.from(y); - let maxBits = Fp.sizeInBits - 2; - let upperBound = 1n << BigInt(maxBits); - checkRangesAsProver(this, y, upperBound); - return lessThanOrEqualGeneric(this, y, upperBound, (v) => - v.toBits(maxBits) - ); + return lessThanOrEqualFull(this, Field.from(y)); } /** diff --git a/tests/vk-regression/vk-regression.json b/tests/vk-regression/vk-regression.json index b077c073f1..1c431c8ef4 100644 --- a/tests/vk-regression/vk-regression.json +++ b/tests/vk-regression/vk-regression.json @@ -231,8 +231,8 @@ "digest": "f7979c1aef4fb5672c7bd77ea927c10f" }, "lessThan": { - "rows": 254, - "digest": "886cbd114436d757e58a24ac7241ea4c" + "rows": 38, + "digest": "eed5490ecb8d1d6a8e9d3699cf5e175a" }, "assertLessThanUInt64": { "rows": 14,