blob: 0e22037d7844edef476684c42c264051c771ff7c [file] [log] [blame] [view]
<a name="FP8"></a>
## FP8
**Kind**: global class
**this**: <code>{FP4}</code>
* [FP8](#FP8)
* [new FP8(c, d)](#new_FP8_new)
* [.reduce()](#FP8+reduce)
* [.norm()](#FP8+norm)
* [.iszilch()](#FP8+iszilch)
* [.isunity()](#FP8+isunity)
* [.cmove(g, d)](#FP8+cmove)
* [.isreal()](#FP8+isreal)
* [.real()](#FP8+real)
* [.geta()](#FP8+geta)
* [.getb()](#FP8+getb)
* [.equals(x)](#FP8+equals)
* [.copy(x)](#FP8+copy)
* [.zero()](#FP8+zero)
* [.one(x)](#FP8+one)
* [.set(c, d)](#FP8+set)
* [.seta(c)](#FP8+seta)
* [.neg()](#FP8+neg)
* [.conj()](#FP8+conj)
* [.nconj()](#FP8+nconj)
* [.add(x)](#FP8+add)
* [.sub(x)](#FP8+sub)
* [.pmul(s)](#FP8+pmul)
* [.imul(s)](#FP8+imul)
* [.sqr()](#FP8+sqr)
* [.mul(y)](#FP8+mul)
* [.toString()](#FP8+toString)
* [.inverse()](#FP8+inverse)
* [.times_i()](#FP8+times_i)
* [.times_i2()](#FP8+times_i2)
* [.frob(f)](#FP8+frob)
* [.pow(e)](#FP8+pow)
* [.xtr_A(w, y, z)](#FP8+xtr_A)
* [.xtr_D()](#FP8+xtr_D)
* [.xtr_pow(n)](#FP8+xtr_pow)
* [.xtr_pow2()](#FP8+xtr_pow2)
* [.div2()](#FP8+div2)
* [.div_i()](#FP8+div_i)
* [.div_i2()](#FP8+div_i2)
* [.div_2i()](#FP8+div_2i)
* [.qmul(s)](#FP8+qmul)
* [.tmul(s)](#FP8+tmul)
* [.sqrt()](#FP8+sqrt)
<a name="new_FP8_new"></a>
### new FP8(c, d)
Creates an instance of FP8
| Param | Description |
| --- | --- |
| c | FP8 / FP4 instance |
| d | FP4 instance |
<a name="FP8+reduce"></a>
### fP8.reduce()
Reduces all components of possibly unreduced FP8 mod Modulus
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+norm"></a>
### fP8.norm()
Normalises the components of an FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+iszilch"></a>
### fP8.iszilch()
Tests for FP8 equal to zero
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+isunity"></a>
### fP8.isunity()
Tests for FP8 equal to unity
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+cmove"></a>
### fP8.cmove(g, d)
Conditional copy of FP8 number
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| g | FP8 instance |
| d | copy depends on this value |
<a name="FP8+isreal"></a>
### fP8.isreal()
test is w real? That is in a+ib test b is zero
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+real"></a>
### fP8.real()
extract real part a
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+geta"></a>
### fP8.geta()
extract a from this
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+getb"></a>
### fP8.getb()
extract b from this
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+equals"></a>
### fP8.equals(x)
Tests for equality of two FP8s
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| x | FP8 instance to compare |
<a name="FP8+copy"></a>
### fP8.copy(x)
Copy FP8 to another FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| x | FP8 instance to be copied |
<a name="FP8+zero"></a>
### fP8.zero()
Set FP8 to zero
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+one"></a>
### fP8.one(x)
Set FP8 to unity
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| x | FP8 instance to be set to one |
<a name="FP8+set"></a>
### fP8.set(c, d)
Set FP8 from two FP4 values
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| c | FP4 instance |
| d | FP4 instance |
<a name="FP8+seta"></a>
### fP8.seta(c)
Set FP8 from one FP4 value
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| c | FP4 instance |
<a name="FP8+neg"></a>
### fP8.neg()
Negation of FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+conj"></a>
### fP8.conj()
Conjugation of FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+nconj"></a>
### fP8.nconj()
Negative conjugation of FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+add"></a>
### fP8.add(x)
addition of two FP8s
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| x | FP8 instance |
<a name="FP8+sub"></a>
### fP8.sub(x)
subtraction of two FP8s
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| x | FP8 instance |
<a name="FP8+pmul"></a>
### fP8.pmul(s)
Multiplication of an FP8 by an FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| s | FP8 instance |
<a name="FP8+imul"></a>
### fP8.imul(s)
Multiplication of an FP8 by a small integer
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| s | integer |
<a name="FP8+sqr"></a>
### fP8.sqr()
Fast Squaring of an FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+mul"></a>
### fP8.mul(y)
Full unconditional Multiplication of two FP8s
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| y | FP8 instance, the multiplier |
<a name="FP8+toString"></a>
### fP8.toString()
convert to hex string
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+inverse"></a>
### fP8.inverse()
Inverting an FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+times_i"></a>
### fP8.times\_i()
multiplies an FP8 instance by irreducible polynomial sqrt(1+sqrt(-1))
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+times_i2"></a>
### fP8.times\_i2()
multiplies an FP8 instance by irreducible polynomial (1+sqrt(-1))
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+frob"></a>
### fP8.frob(f)
Raises an FP8 to the power of the internal modulus p, using the Frobenius
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| f | Modulus |
<a name="FP8+pow"></a>
### fP8.pow(e)
Raises an FP8 to the power of a BIG
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| e | BIG instance exponent |
<a name="FP8+xtr_A"></a>
### fP8.xtr\_A(w, y, z)
Calculates the XTR addition function r=w*x-conj(x)*y+z
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| w | FP8 instance |
| y | FP8 instance |
| z | FP8 instance |
<a name="FP8+xtr_D"></a>
### fP8.xtr\_D()
Calculates the XTR doubling function r=x^2-2*conj(x)
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+xtr_pow"></a>
### fP8.xtr\_pow(n)
Calculates FP8 trace of an FP8 raised to the power of a BIG number
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| n | Big number |
<a name="FP8+xtr_pow2"></a>
### fP8.xtr\_pow2()
Calculates FP8 trace of c^a.d^b, where c and d are derived from FP8 traces of FP8s
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+div2"></a>
### fP8.div2()
Divide an FP8 by 2
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+div_i"></a>
### fP8.div\_i()
Divide FP8 number by QNR
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+div_i2"></a>
### fP8.div\_i2()
Divide an FP8 by QNR twice
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+div_2i"></a>
### fP8.div\_2i()
Divide an FP8 by QNR/2
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
<a name="FP8+qmul"></a>
### fP8.qmul(s)
Multiplication of an FP8 by an FP2
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| s | FP2 multiplier |
<a name="FP8+tmul"></a>
### fP8.tmul(s)
Multiplication of an FP8 by an FP
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>
| Param | Description |
| --- | --- |
| s | FP multiplier |
<a name="FP8+sqrt"></a>
### fP8.sqrt()
Calculate square root of an FP8
**Kind**: instance method of [<code>FP8</code>](#FP8)
**this**: <code>{FP8}</code>