Exemplo n.º 1
0
        private void initialize(string value, SymbolicUnit power = null)
        {
            if (string.IsNullOrEmpty(value))
            {
                return;
            }

            IsNumber = double.TryParse(value, out var valueDouble);
            if (!IsNumber)
            {
                return;
            }

            IsInteger = int.TryParse(value, out var valueInt);
            IsFloat   = !IsInteger;

            // TODO: Handle parsing here?
            _value = value;
            setSign(!isNegative(_value));

            if (power != null)
            {
                _power = power;
            }
        }
Exemplo n.º 2
0
        public SymbolicUnit Simplify(bool isRecursive = false)
        {
            SymbolicUnit newPower = isRecursive ? _power.Simplify(true) : new SymbolicUnit(_power);

            // TODO: Complete Simplify
            return(new SymbolicUnit(_value, newPower));
        }
Exemplo n.º 3
0
 public SymbolicUnit(SymbolicUnit value)
 {
     if (value == null)
     {
         return;
     }
     initialize(value.AsString(), value._power);
 }
Exemplo n.º 4
0
        public SymbolicUnit(double value, SymbolicUnit power = null)
        {
            _value   = value.ToString(CultureInfo.InvariantCulture);
            IsFloat  = true;
            IsNumber = true;
            setSign(value >= 0);

            if (power != null)
            {
                _power = power;
            }
        }
Exemplo n.º 5
0
        public SymbolicUnit(int value, SymbolicUnit power = null)
        {
            _value    = value.ToString();
            IsInteger = true;
            IsNumber  = true;
            setSign(value >= 0);

            if (power != null)
            {
                _power = power;
            }
        }
Exemplo n.º 6
0
        private SymbolicUnit consolidateComplex(SymbolicUnit newPower)
        {
            if (!IsNumber || !newPower.IsNumber)
            {
                return(new SymbolicUnit(_value, newPower));
            }

            if (IsInteger && newPower.IsInteger)
            {
                return(new SymbolicUnit((int)Math.Round(Math.Pow(AsInteger(), newPower.AsInteger()))));
            }
            return(new SymbolicUnit(Math.Pow(AsFloat(), newPower.AsFloat())));
        }
Exemplo n.º 7
0
        public SymbolicUnit Consolidate(bool isRecursive = false)
        {
            switch (_power.Label)
            {
            case "0":
                return(new SymbolicUnit(0));

            case "1":
                return(new SymbolicUnit(_value));

            default:
                SymbolicUnit newPower = isRecursive ? _power.Consolidate(true) : new SymbolicUnit(_power);
                return(consolidateComplex(newPower));
            }
        }
Exemplo n.º 8
0
 public SymbolicUnit(string value, SymbolicUnit power = null)
 {
     initialize(value, power);
 }
Exemplo n.º 9
0
 private static bool powersAreSame(SymbolicUnit value1, SymbolicUnit value2)
 {
     return(value1.powerLabel() == value2.powerLabel());
 }
Exemplo n.º 10
0
 private static bool basesAreSame(SymbolicUnit value1, SymbolicUnit value2)
 {
     return(value1.AsString() == value2.AsString());
 }