SPDZ库的安全类型sint、sfix等的比较运算函数:
小于:less_than = __lt__()
大于:greater_than = __gt__()
小于等于: less_equal = __le__()
大于等于: greater_equal = __ge__()
等于: equal = __eq__()
不等于: not_equal = __ne__()
写了一个小程序:
a = sfix(12)
b = sfix(13)
c = sfix.__eq__(a,b)
print_ln("a: %s",a.reveal())
print_ln("b: %s",b.reveal())
print_ln("c: %s",c.reveal())
主要想测试下__eq__()函数的用法。 该函数主要用来比较两个数是否相等。相等返回1,不相等返回0。
编译的时候没有问题:
但是程序执行时出现如下错误:
根据错误描述,程序编译时候没有指定环的比特数。于是需要在编译的时候指定环的比特数。
再次执行程序即可通过。
-------------------------分割线------------------------------------------------------------
a = sfix(12)
b = sfix(13)
print_ln("a: %s",a.reveal())
print_ln("b: %s",b.reveal())
print_ln("less_than: %s", sfix.__lt__(a,b).reveal())
print_ln("greater_than: %s", sfix.__gt__(a,b).reveal())
print_ln("less_equal: %s", sfix.__le__(a,b).reveal())
print_ln("greater_equal: %s", sfix.__ge__(a,b).reveal())
print_ln("equal: %s", sfix.__eq__(a,b).reveal())
print_ln("not_equal: %s", sfix.__ne__(a,b).reveal())
程序运行结果: