simplify method

  1. @override
Expression simplify()
override

Possible simplifications:

  1. sqrt(x^2) = x
  2. sqrt(0) = 0
  3. sqrt(1) = 1

Note: This simplification works only for real numbers and not for complex numbers.

Implementation

@override
Expression simplify() {
  final Expression argSimpl = arg.simplify();

  if (argSimpl is Power) {
    final Expression exponent = argSimpl.second;
    if (exponent is Number) {
      if (exponent.value == 2) {
        return argSimpl.first; // sqrt(x^2) = x
      }
    }
  }

  if (_isNumber(argSimpl, 0)) {
    return Number(0); // sqrt(0) = 0
  }

  if (_isNumber(argSimpl, 1)) {
    return Number(1); // sqrt(1) = 1
  }

  return Sqrt(argSimpl);
}