Función Devolver una matriz en Fortran

Tengo entendido que puede devolver una matriz de una función en Fortran, pero por alguna razón mi código solo devuelve el primer valor de la matriz que le pido que devuelva. Esta es la función:

function polynomialMult(npts,x,y)
    integer npts
    double precision x(npts), results(npts + 1), y(npts,npts)

    polynomialMult =  x(1:npts) + 1

end function

y aquí es donde lo llamo

 C(1:numPoints) = polynomialMult(numPoints,x,f)

print *, C(1:numPoints)`

en este momento no hace nada útil porque estoy tratando de entender la sintaxis antes de escribir la lógica. Vi algunas cosas sobre cómo especificar tipos para funciones, pero cuando escribo

integer function polynomialMult(npts,x,y)

o lo que sea me sale un error de compilación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta