1. A method of operating a multi-axis machine, the method comprising: monitoring a kinematic linkage of the machine by a singular value decomposition to discover a singularity by detecting an approach by one or more joints of the linkage toward the singularity, detecting which specific joint or joints of the one or more joints are approaching singularity, and predicting which degree or degrees of freedom would be lost at the singularity, the monitoring performed using a manipulator matrix; determining a degree n of the approached singularity by determining a smallest singular value that raises a condition number of the manipulator matrix above a predetermined threshold; identifying the one or more joints approaching singularity; obtaining n virtual joints; replacing the one or more identified joints with the virtual joints in the manipulator matrix to modify the manipulator matrix; using the modified manipulator matrix to determine position changes for links of the linkage; and wherein identifying the one or more joints approaching singularity comprises detecting a largest element of each of n right singular vectors of the decomposition.