Delaymicroseconds() does not take a double as an argument but an unsigned long
Yeah, but it should convert automatically for you...
You may be running into the fact that floating point calculations (and also analogRead) take quite a long time compared to microseconds - 150+ cycles for simple operations, ~500 cycles for divide, up to 3000 cycles for some of the math functions...
https://www.nongnu.org/avr-libc/user-manual/benchmarks.html