/// <summary>
        /// Given <paramref name="_base"/> value raised to power <paramref name="_expo"/>
        /// </summary>
        /// <param name="_base">Base value</param>
        /// <param name="_expo">Exponential value</param>
        /// <param name="matDict">Matrix dictionary to refer to if needed</param>
        public static void OPExpo(Token _base,
                                  Token _expo,
                                  Dictionary <string, MatrisBase <dynamic> > matDict,
                                  CompilerDictionaryMode mode = CompilerDictionaryMode.Matrix)
        {
            if (_expo.tknType != TokenType.NUMBER)
            {
                _expo.val = !CheckMatrixAndUpdateVal(_expo, matDict, mode, true)
                                  ? throw new Exception(CompilerMessage.EXPO_NOT_SCALAR)
                                  : !((MatrisBase <dynamic>)_expo.val).IsScalar()
                                      ? throw new Exception(CompilerMessage.MAT_SHOULD_BE_SCALAR)
                                      : ((MatrisBase <dynamic>)_expo.val)[0, 0];
            }

            if (CheckMatrixAndUpdateVal(_base, matDict, mode, true))  // base matrix
            {
                AssertNotNull(_base);
                _expo.val     = ((MatrisBase <object>)_base.val).Power((dynamic)_expo.val);
                _expo.tknType = TokenType.MATRIS;
                Validations.CheckModeAndMatrixReference(mode, _expo.val);
            }
            else // base is number
            {
                AssertNotNull(_base);
                AssertNotNull(_expo);
                _expo.val     = CompilerUtils.PowerMethod(double.Parse(_base.val.ToString()), double.Parse(_expo.val.ToString()));
                _expo.tknType = TokenType.NUMBER;
            }
        }