mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-09 22:57:59 -05:00
chore: uses if_then_zero only in HPU ERC20 whitepaper (to be updated when encrypt_trivial becomes available on HPU), adds test of if_then_zero for both CPU & HPU
This commit is contained in:
committed by
Pierre Gardrat
parent
122ef489fd
commit
d2a570bdd6
@@ -34,12 +34,12 @@ where
|
|||||||
{
|
{
|
||||||
let has_enough_funds = (from_amount).ge(amount);
|
let has_enough_funds = (from_amount).ge(amount);
|
||||||
let amount_to_transfer = {
|
let amount_to_transfer = {
|
||||||
#[cfg(feature = "gpu")]
|
#[cfg(not(feature = "hpu"))]
|
||||||
{
|
{
|
||||||
let zero_amount = FheType::encrypt_trivial(0u64);
|
let zero_amount = FheType::encrypt_trivial(0u64);
|
||||||
has_enough_funds.select(amount, &zero_amount)
|
has_enough_funds.select(amount, &zero_amount)
|
||||||
}
|
}
|
||||||
#[cfg(not(feature = "gpu"))]
|
#[cfg(feature = "hpu")]
|
||||||
{
|
{
|
||||||
has_enough_funds.if_then_zero(amount)
|
has_enough_funds.if_then_zero(amount)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -386,6 +386,12 @@ fn test_if_then_else() {
|
|||||||
super::test_case_if_then_else(&client_key);
|
super::test_case_if_then_else(&client_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_if_then_zero() {
|
||||||
|
let client_key = setup_default_cpu();
|
||||||
|
super::test_case_if_then_zero(&client_key);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_flip() {
|
fn test_flip() {
|
||||||
let client_key = setup_default_cpu();
|
let client_key = setup_default_cpu();
|
||||||
|
|||||||
@@ -89,6 +89,12 @@ fn test_case_if_then_else_hpu() {
|
|||||||
super::test_case_if_then_else(&client_key);
|
super::test_case_if_then_else(&client_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_case_if_then_zero_hpu() {
|
||||||
|
let client_key = setup_default_hpu();
|
||||||
|
super::test_case_if_then_zero(&client_key);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_case_flip_hpu() {
|
fn test_case_flip_hpu() {
|
||||||
let client_key = setup_default_hpu();
|
let client_key = setup_default_hpu();
|
||||||
|
|||||||
@@ -568,6 +568,28 @@ fn test_case_if_then_else(client_key: &ClientKey) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_case_if_then_zero(client_key: &ClientKey) {
|
||||||
|
let clear_a = 42u8;
|
||||||
|
let clear_b = 128u8;
|
||||||
|
|
||||||
|
let a = FheUint8::encrypt(clear_a, client_key);
|
||||||
|
let b = FheUint8::encrypt(clear_b, client_key);
|
||||||
|
|
||||||
|
let result = a.le(&b).if_then_zero(&a);
|
||||||
|
let decrypted_result: u8 = result.decrypt(client_key);
|
||||||
|
assert_eq!(
|
||||||
|
decrypted_result,
|
||||||
|
if clear_a <= clear_b { clear_a } else { 0 }
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = a.ge(&b).if_then_zero(&a);
|
||||||
|
let decrypted_result: u8 = result.decrypt(client_key);
|
||||||
|
assert_eq!(
|
||||||
|
decrypted_result,
|
||||||
|
if clear_a >= clear_b { clear_a } else { 0 }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
fn test_case_flip(client_key: &ClientKey) {
|
fn test_case_flip(client_key: &ClientKey) {
|
||||||
let clear_a = rand::random::<u32>();
|
let clear_a = rand::random::<u32>();
|
||||||
let clear_b = rand::random::<u32>();
|
let clear_b = rand::random::<u32>();
|
||||||
|
|||||||
Reference in New Issue
Block a user