Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module.
subroutine testObjectiveN
type(testN_t)::test
real(wp),dimension(:),allocatable::xSD,xMN,xNM
xSD = test%steepestDescent([5.0_wp,5.0_wp])
xMN = test%minNewton([5.0_wp,5.0_wp])
xNM = test%nelderMead([5.0_wp,5.0_wp])
write(*,*) xSD
write(*,*) xMN
write(*,*) xNM
end subroutine testObjectiveN