added reciprocal from index to index type

This commit is contained in:
Ahmet Inan 2023-04-15 11:06:23 +02:00
commit 03ac76c7d8

View file

@ -188,12 +188,19 @@ Value<M, POLY, TYPE> operator * (Value<M, POLY, TYPE> a, Value<M, POLY, TYPE> b)
return (!a.v || !b.v) ? a.zero() : value(index(a) * index(b));
}
template <int M, int POLY, typename TYPE>
Index<M, POLY, TYPE> rcp(Index<M, POLY, TYPE> a)
{
assert(a.i < a.modulus());
return Index<M, POLY, TYPE>(!a.i ? 0 : a.modulus() - a.i);
}
template <int M, int POLY, typename TYPE>
Value<M, POLY, TYPE> rcp(Value<M, POLY, TYPE> a)
{
assert(a.v <= a.N);
assert(a.v);
return value(Index<M, POLY, TYPE>(index(a).modulus() - index(a).i));
return value(rcp(index(a)));
}
template <int M, int POLY, typename TYPE>