Error in FFT example from manual. "Complex wave used in real expression"

The Manual gives the following example in II-5: Waves

    Make/O/N=1024 wave0
    SetScale x 0,1,"s", wave0
    wave0 = sin(2*PI*x) + sin(6*PI*x)/3 + sin(10*PI*X)/5 + sin(14*PI*x)/7
    Display wave0 as "Time Domain"
   
    // Do FFT
    Duplicate/O wave0, cwave0
    FFT cwave0
    cwave0 /= 512; cwave0[0] /= 2
    Display cwave0 as "Frequency Domain";SetAxis bottom, 0, 25
   
    // Calcualate magnitude and phase
    Make/O/N=513 mag0, phase0, power0
    CopyScales cwave0, mag0, phase0, power0
    mag0 = real(r2polar(cwave0))
    phase0 = imag(r2polar(cwave0))
    phase0 *= 180/PI
    Display mag0 as "Magnitude and Phase"; AppendToGraph/R phase0
    SetAxis bottom, 0, 25
    Label left, "Magnitude";Label right, "Phase"
   
    // Calculate power spectrum
    power0 = magsqr(cwave0)
    Display power0 as "Power Sepctrum";SetAxis bottom, 0, 25

But the line "cwave /= 512; cwave0[0] /= 2" gives an error. "Complex wave used in a real expression." What would be the proper way to renormalize the amplitude of cwave0? Sort of discouraging that the manual wouldn't do it correctly.

The code was designed to be run from a Macro or command line many years ago.

Putting the code into a function wasn't tried after Igor added more stringent checking of wave reference types.

That checking is placated by using a WAVE/C wave reference on the FFT result:

Function fComplexFromManual()

    // Make a time domain waveform
    Make/O/N=1024 wave0
    SetScale x 0, 1, "s", wave0   // goes from 0 to 1 second
    wave0=sin(2*PI*x)+sin(6*PI*x)/3+sin(10*PI*x)/5+sin(14*PI*x)/7
    Display wave0 as "Time Domain"

    // Do the FFT
    Duplicate/O wave0, cwave0               // get copy to do FFT on
    FFT cwave0                              // cwave0 is now complex...
    WAVE/C cw0 = cwave0                     // ... so we need a complex wave ref
    cw0 /= 512;cw0[0] /= 2                  // normalize amplitude
    Display cw0 as "Frequency Domain";SetAxis bottom, 0, 25

    // Calculate magnitude and phase
    Make/O/N=513 mag0, phase0, power0           // these are real waves
    CopyScales cw0, mag0, phase0, power0
    mag0 = real(r2polar(cw0))
    phase0 = imag(r2polar(cw0))
    phase0 *= 180/PI                                    // convert to degrees
    Display mag0 as "Magnitude and Phase";AppendToGraph/R phase0
    SetAxis bottom, 0, 25
    Label left, "Magnitude";Label right, "Phase"

    // Calculate power spectrum
    power0 = magsqr(cw0)
    Display power0 as "Power Spectrum";SetAxis bottom, 0, 25
End

This version runs in both a function and in a macro (macros don't permit or need WAVE statements):

// Make a time domain waveform
Make/O/N=1024 wave0
SetScale x 0, 1, "s", wave0         // goes from 0 to 1 second
wave0=sin(2*PI*x)+sin(6*PI*x)/3+sin(10*PI*x)/5+sin(14*PI*x)/7
Display wave0 as "Time Domain"

// Do the FFT
FFT/DEST=cwave0 wave0              // cwave0 is created complex, 513 points
cwave0 /= 512;cwave0[0] /= 2       // normalize amplitude
Display cwave0 as "Frequency Domain";SetAxis bottom, 0, 25

// Calculate magnitude and phase
Make/O/N=513 mag0, phase0, power0  // these are real waves
CopyScales cwave0, mag0, phase0, power0
mag0 = real(r2polar(cwave0))
phase0 = imag(r2polar(cwave0))
phase0 *= 180/PI                   // convert to degrees
Display mag0 as "Magnitude and Phase";AppendToGraph/R phase0
SetAxis bottom, 0, 25
Label left, "Magnitude";Label right, "Phase"

// Calculate power spectrum
power0 = magsqr(cwave0)
Display power0 as "Power Spectrum";SetAxis bottom, 0, 25