Elements of groups, rings and fields are stored in the
element_t
data type. Variables of
this type must be initialized before use, and should be cleared
after they are no longer needed.
The element_
functions must be
used with caution. Just as division by zero does not make sense
for integers, some operations may not make sense for particular
elements. For example, in a ring, one cannot in general invert
elements.
Another caveat is that many of these functions assume their arguments come from the same ring, group or field. No implicit type casting is performed.
For debug builds, turn on run-time checks by defining
PBC_DEBUG
before including
pbc.h
:
#define PBC_DEBUG #include <pbc.h>
Also, when PBC_DEBUG
is
defined, the following macros are active. Normally they are
replaced with empty statements.
PBC_ASSERT(expr, msg)
Macro: if
expr
evaluates to 0, printmsg
and exit.
PBC_ASSERT_MATCH2(a, b)
Macro: if elements
a
andb
are from different fields then exit.
PBC_ASSERT_MATCH3(a, b, c)
Macro: if elements
a
,b
andc
are from different fields then exit.