get(0); if (!$e instanceof UnsignedIntegerObject && !$e instanceof SignedIntegerObject) { throw new InvalidArgumentException('The exponent must be a Signed Integer or an Unsigned Integer object.'); } $m = $object->get(1); if (!$m instanceof UnsignedIntegerObject && !$m instanceof SignedIntegerObject && !$m instanceof NegativeBigIntegerTag && !$m instanceof PositiveBigIntegerTag) { throw new InvalidArgumentException('The mantissa must be a Positive or Negative Signed Integer or an Unsigned Integer object.'); } return new self(5, null, $object); } public static function createFromExponentAndMantissa(CBORObject $e, CBORObject $m): Base { $object = new ListObject(); $object->add($e); $object->add($m); return self::create($object); } public function getNormalizedData(bool $ignoreTags = false) { if ($ignoreTags) { return $this->object->getNormalizedData($ignoreTags); } if (!$this->object instanceof ListObject || 2 !== count($this->object)) { return $this->object->getNormalizedData($ignoreTags); } $e = $this->object->get(0); $m = $this->object->get(1); if (!$e instanceof UnsignedIntegerObject && !$e instanceof SignedIntegerObject) { return $this->object->getNormalizedData($ignoreTags); } if (!$m instanceof UnsignedIntegerObject && !$m instanceof SignedIntegerObject && !$m instanceof NegativeBigIntegerTag && !$m instanceof PositiveBigIntegerTag) { return $this->object->getNormalizedData($ignoreTags); } return rtrim( bcmul( $m->getNormalizedData($ignoreTags), bcpow( '2', $e->getNormalizedData($ignoreTags), 100), 100), '0' ); } }