add perron function