provide double/long implementation