package org.bouncycastle.pqc.math.linearalgebra;

import java.math.BigInteger;


This interface defines a finite field element. It is implemented by the class GF2nElement.
See Also:
/** * This interface defines a finite field element. It is implemented by the * class {@link GF2nElement}. * * @see GF2nElement */
public interface GFElement {
Returns:a copy of this GFElement
/** * @return a copy of this GFElement */
Object clone(); // ///////////////////////////////////////////////////////////////// // comparison // /////////////////////////////////////////////////////////////////
Compare this curve with another object.
Params:
  • other – the other object
Returns:the result of the comparison
/** * Compare this curve with another object. * * @param other the other object * @return the result of the comparison */
boolean equals(Object other);
Returns:the hash code of this element
/** * @return the hash code of this element */
int hashCode();
Checks whether this element is zero.
Returns:true if this is the zero element
/** * Checks whether this element is zero. * * @return <tt>true</tt> if <tt>this</tt> is the zero element */
boolean isZero();
Checks whether this element is one.
Returns:true if this is the one element
/** * Checks whether this element is one. * * @return <tt>true</tt> if <tt>this</tt> is the one element */
boolean isOne(); // ///////////////////////////////////////////////////////////////////// // arithmetic // /////////////////////////////////////////////////////////////////////
Compute the sum of this element and the addend.
Params:
  • addend – the addend
Returns:this + other (newly created)
/** * Compute the sum of this element and the addend. * * @param addend the addend * @return <tt>this + other</tt> (newly created) */
GFElement add(GFElement addend) throws RuntimeException;
Compute the sum of this element and the addend, overwriting this element.
Params:
  • addend – the addend
/** * Compute the sum of this element and the addend, overwriting this element. * * @param addend the addend */
void addToThis(GFElement addend) throws RuntimeException;
Compute the difference of this element and minuend.
Params:
  • minuend – the minuend
Returns:this - minuend (newly created)
/** * Compute the difference of this element and <tt>minuend</tt>. * * @param minuend the minuend * @return <tt>this - minuend</tt> (newly created) */
GFElement subtract(GFElement minuend) throws RuntimeException;
Compute the difference of this element and minuend, overwriting this element.
Params:
  • minuend – the minuend
/** * Compute the difference of this element and <tt>minuend</tt>, * overwriting this element. * * @param minuend the minuend */
void subtractFromThis(GFElement minuend);
Compute the product of this element and factor.
Params:
  • factor – the factor
Returns:this * factor (newly created)
/** * Compute the product of this element and <tt>factor</tt>. * * @param factor the factor * @return <tt>this * factor</tt> (newly created) */
GFElement multiply(GFElement factor) throws RuntimeException;
Compute this * factor (overwrite this).
Params:
  • factor – the factor
/** * Compute <tt>this * factor</tt> (overwrite <tt>this</tt>). * * @param factor the factor */
void multiplyThisBy(GFElement factor) throws RuntimeException;
Compute the multiplicative inverse of this element.
Throws:
Returns:this-1 (newly created)
/** * Compute the multiplicative inverse of this element. * * @return <tt>this<sup>-1</sup></tt> (newly created) * @throws ArithmeticException if <tt>this</tt> is the zero element. */
GFElement invert() throws ArithmeticException; // ///////////////////////////////////////////////////////////////////// // conversion // /////////////////////////////////////////////////////////////////////
Returns this element as FlexiBigInt. The conversion is P1363-conform.
Returns:this element as BigInt
/** * Returns this element as FlexiBigInt. The conversion is <a * href="http://grouper.ieee.org/groups/1363/">P1363</a>-conform. * * @return this element as BigInt */
BigInteger toFlexiBigInt();
Returns this element as byte array. The conversion is P1363-conform.
Returns:this element as byte array
/** * Returns this element as byte array. The conversion is <a href = * "http://grouper.ieee.org/groups/1363/">P1363</a>-conform. * * @return this element as byte array */
byte[] toByteArray();
Return a String representation of this element.
Returns:String representation of this element
/** * Return a String representation of this element. * * @return String representation of this element */
String toString();
Return a String representation of this element. radix specifies the radix of the String representation.
Params:
  • radix – specifies the radix of the String representation
Returns:String representation of this element with the specified radix
/** * Return a String representation of this element. <tt>radix</tt> * specifies the radix of the String representation. * * @param radix specifies the radix of the String representation * @return String representation of this element with the specified radix */
String toString(int radix); }