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; } }
public SymbolicUnit Simplify(bool isRecursive = false) { SymbolicUnit newPower = isRecursive ? _power.Simplify(true) : new SymbolicUnit(_power); // TODO: Complete Simplify return(new SymbolicUnit(_value, newPower)); }
public SymbolicUnit(SymbolicUnit value) { if (value == null) { return; } initialize(value.AsString(), value._power); }
public SymbolicUnit(double value, SymbolicUnit power = null) { _value = value.ToString(CultureInfo.InvariantCulture); IsFloat = true; IsNumber = true; setSign(value >= 0); if (power != null) { _power = power; } }
public SymbolicUnit(int value, SymbolicUnit power = null) { _value = value.ToString(); IsInteger = true; IsNumber = true; setSign(value >= 0); if (power != null) { _power = power; } }
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()))); }
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)); } }
public SymbolicUnit(string value, SymbolicUnit power = null) { initialize(value, power); }
private static bool powersAreSame(SymbolicUnit value1, SymbolicUnit value2) { return(value1.powerLabel() == value2.powerLabel()); }
private static bool basesAreSame(SymbolicUnit value1, SymbolicUnit value2) { return(value1.AsString() == value2.AsString()); }