Calculating (3 + sqrt(5))^n exactly
Octave, 26 bytes

[3 5;1 3]**input('')*[1;0]


Because (a+b*sqrt(5)) * (3+sqrt(5)) = (3a+5b) + (a+3b) * sqrt(5),

multiplying input vector

| 1 |    /* a = 1 */
| 0 |    /* b = 0 */


which stands for 1 = (3+sqrt(5))^0
by matrix

| 3 5 |
| 1 3 |


seems natural. Instead of looping n times, we rather raise the matrix to the power of n and then multiply it by input vector.