54 lines
662 B
C
54 lines
662 B
C
#include "fe.h"
|
|
|
|
/*
|
|
return 1 if f == 0
|
|
return 0 if f != 0
|
|
|
|
Preconditions:
|
|
|f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
|
|
*/
|
|
|
|
int fe_isnonzero(const fe f) {
|
|
unsigned char s[32];
|
|
unsigned char r;
|
|
|
|
fe_tobytes(s, f);
|
|
|
|
r = s[0];
|
|
#define F(i) r |= s[i]
|
|
F(1);
|
|
F(2);
|
|
F(3);
|
|
F(4);
|
|
F(5);
|
|
F(6);
|
|
F(7);
|
|
F(8);
|
|
F(9);
|
|
F(10);
|
|
F(11);
|
|
F(12);
|
|
F(13);
|
|
F(14);
|
|
F(15);
|
|
F(16);
|
|
F(17);
|
|
F(18);
|
|
F(19);
|
|
F(20);
|
|
F(21);
|
|
F(22);
|
|
F(23);
|
|
F(24);
|
|
F(25);
|
|
F(26);
|
|
F(27);
|
|
F(28);
|
|
F(29);
|
|
F(30);
|
|
F(31);
|
|
#undef F
|
|
|
|
return r != 0;
|
|
}
|