Show me... the gain can NEVER be exact.
Just digitally generate some sinewave numbers and pump them into a 16
or 20-bit DAC. Follow with an undemanding lowpass filter.
Add a second DAC that's the distortion stomper. Sum it in, scaled down
by, say, 1000:1, and load it with distortion correction signals. Once
(somehow) you can measure the distortion of the main dac, it's simple
to program the stomper.
Amplitude is digitally adjustable, by programming the dac numbers, or
the dac reference, with the aid of downstream passive attenuators.
So now we have a digitally-programmable sinewave source with
ppm-accurate frequency and amplitude setability and ppm distortion,
down to milliHertz. May as well toss in other waveforms, and
programmable distortion, noise, and modulation, while you're in there.
I'll email her and tell her we said so.
John