*PGTYPESnumeric_new(void);
</synopsis>
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-free">
<term><function>PGTYPESnumeric_free</function></term>
<listitem>
<para>
Free a numeric type, release all of its memory.
<synopsis>
void PGTYPESnumeric_free(numeric *var);
</synopsis>
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-from-asc">
<term><function>PGTYPESnumeric_from_asc</function></term>
<listitem>
<para>
Parse a numeric type from its string notation.
<synopsis>
numeric *PGTYPESnumeric_from_asc(char *str, char **endptr);
</synopsis>
Valid formats are for example:
<literal>-2</literal>,
<literal>.794</literal>,
<literal>+3.44</literal>,
<literal>592.49E07</literal> or
<literal>-32.84e-4</literal>.
If the value could be parsed successfully, a valid pointer is returned,
else the NULL pointer. At the moment ECPG always parses the complete
string and so it currently does not support to store the address of the
first invalid character in <literal>*endptr</literal>. You can safely
set <literal>endptr</literal> to NULL.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-to-asc">
<term><function>PGTYPESnumeric_to_asc</function></term>
<listitem>
<para>
Returns a pointer to a string allocated by <function>malloc</function> that contains the string
representation of the numeric type <literal>num</literal>.
<synopsis>
char *PGTYPESnumeric_to_asc(numeric *num, int dscale);
</synopsis>
The numeric value will be printed with <literal>dscale</literal> decimal
digits, with rounding applied if necessary.
The result must be freed with <function>PGTYPESchar_free()</function>.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-add">
<term><function>PGTYPESnumeric_add</function></term>
<listitem>
<para>
Add two numeric variables into a third one.
<synopsis>
int PGTYPESnumeric_add(numeric *var1, numeric *var2, numeric *result);
</synopsis>
The function adds the variables <literal>var1</literal> and
<literal>var2</literal> into the result variable
<literal>result</literal>.
The function returns 0 on success and -1 in case of error.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-sub">
<term><function>PGTYPESnumeric_sub</function></term>
<listitem>
<para>
Subtract two numeric variables and return the result in a third one.
<synopsis>
int PGTYPESnumeric_sub(numeric *var1, numeric *var2, numeric *result);
</synopsis>
The function subtracts the variable <literal>var2</literal> from
the variable <literal>var1</literal>. The result of the operation is
stored in the variable <literal>result</literal>.
The function returns 0 on success and -1 in case of error.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-mul">
<term><function>PGTYPESnumeric_mul</function></term>
<listitem>
<para>
Multiply two numeric variables and return the result in a third one.
<synopsis>
int PGTYPESnumeric_mul(numeric *var1, numeric *var2, numeric *result);
</synopsis>
The function multiplies the variables <literal>var1</literal> and
<literal>var2</literal>. The result of the operation is stored in the
variable <literal>result</literal>.
The function returns 0 on success and -1 in case of error.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-pgtypes-numeric-div">
<term><function>PGTYPESnumeric_div</function></term>
<listitem>
<para>
Divide two numeric variables and return the result in a third one.
<synopsis>
int PGTYPESnumeric_div(numeric