When you change from assigning t to 1.d0, a few things happen.
1) You are assigning a constant value, the compiler can hardcode this store.
2) t is never used, the compiler can optimize this out completely and not even evaluate anything in this line. This may also save you overhead with cache misses referencing the arrays used in calculating t (not a given, but a potential source of performance loss).
3) the compiler can optimize out the do loop and just store 1.d0 to every array element, which can be very efficient.
Essentially by replacing t with 1.d0 you change the entire do loop to just "interp_value(1:N) = 1.d0" and it should be clear why that is faster.
When you change from assigning t to 1.d0, a few things happen.
1) You are assigning a constant value, the compiler can hardcode this store.
2) t is never used, the compiler can optimize this out completely and not even evaluate anything in this line. This may also save you overhead with cache misses referencing the arrays used in calculating t (not a given, but a potential source of performance loss).
3) the compiler can optimize out the do loop and just store 1.d0 to every array element, which can be very efficient.
Essentially by replacing t with 1.d0 you change the entire do loop to just "interp_value(1:N) = 1.d0" and it should be clear why that is faster.