public BigFloat getBigFloat(BigInteger value) {

		if (size == 8) {
			double d = value.doubleValue();
			return getBigFloat(d);
		}
		if (size == 4) {
			float f = value.floatValue();
			return getBigFloat(f);
		}

		BigInteger unscaled = value;
		int sign = 1;
		if (unscaled.signum() < 0) {
			sign = -1;
			unscaled = unscaled.negate();
		}

		int scale = effective_frac_size - 1;
		int ulen = unscaled.bitLength();
		if (ulen > effective_frac_size) {
			int shift = effective_frac_size - ulen; // may produce +/- shift
			unscaled = unscaled.shiftLeft(shift);
			scale = effective_frac_size - shift - 1;
			if (scale > bias) {
				return BigFloat.infinity(effective_frac_size, exp_size, sign);
			}
		}

		return new BigFloat(effective_frac_size, exp_size, FloatKind.FINITE, sign, unscaled, scale);
	}
Construct SmallFloat Data. (similar to BigFloat)

@param fracbits number of fractional bits (positive non-zero value; includes additional
           implied bit if relavent).
@param expbits maximum number of bits in exponent
@param kind the Kind, FINITE, INFINITE, ...
@param sign +1 or -1
@param unscaled the value's mantissa
@param scale value's scale
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcode/floatformat/FloatFormat.java