public function divide($operand, $roundingMode = self::ROUND_HALF_UP, $useGaapPrecision = false)
    {
        $this->assertOperand($operand, true);

        $validatedOperand = $this->normalizeOperand($operand);

        if ($useGaapPrecision) {
            $amount = Math::bcround(
                bcdiv($this->amount, $validatedOperand, self::GAAP_PRECISION + 1),
                self::GAAP_PRECISION,
                $roundingMode
            );
        } else {
            $amount = Math::bcround(
                bcdiv($this->amount, $validatedOperand, self::GAAP_PRECISION + 1),
                self::BASIC_PRECISION,
                $roundingMode
            );
        }

        return new Money($amount, $this->currency);
    }