use constant memory, and options(-O3 -use_fast_math)