Are you talking about this function:
```
    //! Converts the param `other` appropriately and then calls `powrat`
    virtual RCP<const Number> pow(const Number &other) const {
        if (is_a<Integer>(other)) {
            return powrat(static_cast<const Integer&>(other));
        } else {
            throw std::runtime_error("Not implemented.");
        }
    };
```
? If so, then it just needs to be implemented. Essentially the issue is for things like:
`(1/2)^(3/4)`
SymPy does:
```
In [2]: print (S(1)/2)**(S(3)/4)
2**(1/4)/2
```
In other words, the result of this operation is not a Number. Can you post code that triggers this case? Obviously the current definition of `Number::pow()` cannot be used for this case.