new irrational function