1. A non-transitory computer accessible memory medium that stores program instructions executable by a processor to implement: including a first function in a first program in response to user input, wherein the first function is user configurable to specify an auxiliary function to be performed by a modified QR decomposition circuit in addition to QR decomposition of a matrix A into two matrices Q and R using a Modified Gram Schmidt (MGS) process, wherein Q represents an orthonormal basis that spans a column space of A, and wherein R is a triangular matrix; automatically generating a second program based on a configuration of the QR decomposition and the auxiliary function, wherein the second program comprises program code that implements the QR decomposition and the auxiliary function for the first function in the first program; and automatically generating a hardware configuration program based on the first program, including the second program, wherein the hardware configuration program is deployable to programmable hardware, thereby implementing the modified QR decomposition circuit, including the QR decomposition of the matrix A and the auxiliary function; wherein the hardware configuration program specifies that the modified QR decomposition circuit comprise: an input; a first set of hardware components, coupled to the input, wherein the first set of hardware components are dedicated to computing matrix Q; and an output; wherein the input is configured to: receive a first set of inputs at the input, wherein the first set of inputs includes the matrix A and a scaling factor σ; wherein the first set of hardware components is configured to: compute matrix Q based on the first set of inputs using the MGS process; scale an identity matrix I by the scaling factor σ, thereby generating scaled identity matrix σI; receive a second set of inputs, wherein the second set of inputs is different from the first set of inputs, and wherein the second set of inputs comprises the scaled identity matrix; compute scaled matrix σR −1 based on the second set of inputs using the MGS process; unscale the scaled matrix σR −1 , thereby computing matrix R −1 , wherein matrix R −1 is the inverse of matrix R; and wherein the output is configured to: output the matrix Q and/or matrix R −1 via the output.