@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		BigFloat other = (BigFloat) obj;
		if (expbits != other.expbits) {
			return false;
		}
		if (fracbits != other.fracbits) {
			return false;
		}
		if (kind != other.kind) {
			return false;
		}
		switch (kind) {
			case FINITE:
				if (sign != other.sign) {
					return false;
				}
				if (scale != other.scale) {
					return false;
				}
				if (!unscaled.equals(other.unscaled)) {
					return false;

				}
				break;
			case INFINITE:
				if (sign != other.sign) {
					return false;
				}
				break;
			case QUIET_NAN:
			case SIGNALING_NAN:
				break;
		}
		return true;
	}
Construct a BigFloat.  If kind is FINITE, the value is <code>sign*unscaled*2^(scale-fracbits)</code>.
<p>
NOTE: Requires that normal values are constructed in a normal form as with denormal values.

@param fracbits number of fractional bits (positive non-zero value; includes additional 
implied bit if relavent).
@param expbits maximum number of bits in exponent (positive non-zero value)
@param kind the Kind, FINITE, INFINITE, ...
@param sign +1 or -1
@param unscaled the value's mantissa (bit size <= fracbits+1)
@param scale value's scale (signed value with the biased range of expbits)
@throws IllegalArgumentException if invalid unscaled and scale values are specified based upon the fracbits and expbits values.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcode/floatformat/BigFloat.java