According to elemental in Fortran Wiki elemental implies pure so no need to add it. You should declare impure if you need some flexibility IMPURE
This feature is obsolescent since Fortran 2018. You might preferer a simple do, or a do concurrent.