В Icon есть небольшая проблема, связанная с математикой, а именно — неумение интерпретатора возводить в степень отрицательные числа.
Однако, это не особо и проблема, поскольку можно применить небольшое и изящное решение:
procedure pow(x,y) if x < 0 then { if y % 2 = 0 then return abs(x)^y else return -(abs(x)^y) } else return x^y end
И все: теперь функцию pow можно применять вместо обычного возведения в степень, если существует риск получения выражения с отрицательным знаком, к которому в последствии может быть применена операция ^.