📄 conversions.txt
字号:
CONVERSIONS
destination: source
int: int, long, ZZ, float, double, xdouble, quad_float, RR
long: int, long, ZZ, float, double, xdouble, quad_float, RR
float: int, long, ZZ, float, double, xdouble, quad_float, RR
double: int, long, ZZ, float, double, xdouble, quad_float, RR
unsigned
int: ZZ
unsigned
long: ZZ
xdouble: int, long, ZZ, float, double, xdouble, quad_float, RR,
unsigned int, unsigned long, const char*
quad_float: int, long, ZZ, float, double, xdouble, quad_float, RR,
unsigned int, unsigned long, const char*
RR: int, long, ZZ, float, double, xdouble, quad_float, RR,
unsigned int, unsigned long, const char*
ZZ: int, long, ZZ, float, double, xdouble, quad_float, RR,
unsigned int, unsigned long, const char*
ZZ_p: long, ZZ
vec_ZZ_p: vec_ZZ
ZZ_pX: long, ZZ_p, ZZ, ZZX, vec_ZZ_p
zz_p: long, ZZ
vec_zz_p: vec_ZZ
ZZ_pX: long, zz_p, ZZ, ZZX, vec_zz_p
vec_ZZ: vec_ZZ_p, vec_zz_p
ZZX: long, ZZ, ZZ_pX, zz_pX
GF2: long, ZZ
vec_GF2: GF2X
GF2X: long, ZZ, GF2, vec_GF2
GF2E: long, ZZ, GF2, GF2X
GF2EX: long, ZZ, GF2, GF2E, GF2X, vec_GF2E
mat_ZZ_p: mat_ZZ
mat_zz_p: mat_ZZ
ZZ_pE: long, ZZ, ZZ_p, ZZ_pX
ZZ_pEX: long, ZZ, ZZ_p, ZZ_pE, ZZ_pX
zz_pE: long, ZZ, zz_p, zz_pX
zz_pEX: long, ZZ, zz_p, zz_pE, zz_pX
********** NOTES ***********
[1] All conversion operators come in procedural or functional
form. To convert a of type S to x of type T, you can write
conv(x, a);
or
x = to_T(a);
Note that when T is 'unsigned int/long', the functional
forms are 'to_uint' and 'to_ulong'.
[2] All conversions from ZZ to signed or unsigned int or long compute
the result modulo 2^n, where n is the number of bits of
the destination type.
[2] All floating point to integral conversions compute the floor
function *exactly*.
[3] The ZZ to double conversion routine is very precise:
the result is the nearest double, breaking ties using the
"round to even" rule. Overflow results in +/- Infinity.
All this assumes the underlying floating point adheres to
the IEEE standard.
[4] All conversions to RR round to the current working precision.
[5] All conversions from long or ZZ to one of "mod p" types
ZZ_p, ZZ_pX, ZZ_pE, ZZ_pEX,
zz_p, zz_pX, zz_pE, zz_pEX,
GF2, GF2X, GF2E, GF2EX
yield the the residue class modulo p.
[6] All polynomial to polynomial conversions apply coefficient-wise
conversion.
[7] All vector/matrix to vector/matrix conversions apply element-wise
conversion.
[8] The GF2X/ZZ_pX/zz_pX to GF2E/ZZ_pE/zz_pE conversions reduce
the given polynomial modulo the current modulus.
[9] All conversions from the type const char* apply the same algorithm
as is used for reading from an I/O stream, so
ZZ x = to_ZZ("999999999999999999");
initializes the ZZ x to the integer 999999999999999999.
[10] The conversions to vec_ZZ from vec_ZZ_p and vec_zz_p copy the
standard non-negative residues; likewise for the conversions
to ZZX from ZZ_pX and zz_pX.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -