In computer programming, a function, procedure, method, subroutine, routine, or subprogram is a callable unit[1] of software logic that has a well-defined interface and behavior and can be invoked multiple times. Callable units provide a powerful programming tool.[2] The primary purpose is to allow for the decomposition of a large and/or complicated problem into chunks that have relatively low cog