// Description: A number in scientific notation
#ifndef PASTELSYS_SCIENTIFIC_NOTATION_H
#define PASTELSYS_SCIENTIFIC_NOTATION_H
#include "pastel/sys/real/scientific_notation_fwd.h"
#include "pastel/sys/mytypes.h"
#include "pastel/sys/integer/native_integer.h"
#include <string>
namespace Pastel
{
    inline bool operator==(
        const ScientificNotation& left,
        const ScientificNotation& right)
    {
        return 
            left.negative == right.negative &&
            left.exponent == right.exponent &&
            left.mantissa == right.mantissa;
    }
    inline bool operator!=(
        const ScientificNotation& left,
        const ScientificNotation& right)
    {
        return !(left == right);
    }
    inline std::string asString(const ScientificNotation& scientific)
    {
        using Pastel::asString;
        return std::string("(") + 
            (scientific.negative ? "-" : "+") + 
            ", " +
            asString(scientific.mantissa) +
            ", " +
            asString(scientific.exponent) +
            ")";
        // return 
        //     std::string(scientific.negative ? "-" : "") + 
        //     "1." + 
        //     asString(scientific.mantissa) +
        //     "e" +
        //     asString(scientific.exponent);
    }
}
#endif