Calculation time, precision, repeatability, access to intermediate steps; There are a many requirements to balance when it comes to algorithm design. There are times to optimize and times for simplicity. Fixed point and floating point each have their challenges to overcome.

 I've been the lead firmware developer for numerous measurement instruments.  Measurements are an interesting blend of high-precision low-noise acquisition, layers upon layers of compensations and corrections, and tight time constraints.  Many of the instruments are driven by sophisticated GUI interfaces.

I was the primary architect and implementer of the measurement engine. These engines involve capturing ADC or image data at precise periods, while coordinating timing of lamps, LED's, and motors. They are the result of collaboration with Systems Engineers who understand the color science and Electrical Engineers who specialized in precision analog.

Once the data has been acquired (or often while it is still acquiring), the raw data is run through a series of compensations and corrections, taking in various pieces of sensor data and combining them until a reliable accurate answer is produced. I created a flexible framework for these calculations which easily supports testing and allows data to be injected or extracted from any intermediate step.