1. A method comprising: receiving an array as an input to a function, the function being one of a plurality of functions in a function library, and the receiving being performed by a computing device; evaluating a characteristic of the function, the evaluating being performed by the computing device; dynamically determining a partitioning scheme for the array, the dynamically determining being based on the evaluating, and the dynamically determining being performed by the computing device; partitioning the array into a plurality of parts based on the dynamically determined partitioning scheme, the partitioning being performed by the computing device; processing the plurality of parts, the processing being performed by the computing device; and producing a result based on the processing, the producing being performed by the computing device.