generalize possibly from Float to Ord o