Why does my FFT result seem reversed? Disclaimer: I’m computer scientist, no math expert
I’m computing a frequency spectrum by applying an FFT on 10000 real numbers acquired at 10kHz.
The FFT produce 10000 complex numbers. The frequency spectrum is obtained by computing the magnitude of the complex numbers and yields a symmetric array. I’m programming in Go if it matters.
I was expecting that the magnitude of 0Hz would be stored at index 5000, and 1kHz at index 6000 and 4000. But magnitude of 0Hz is stored at index 0, and 1kHz at index 1000 and 9000.
Is this normal, or is this a feature of the library I use ?
Is this normal ?

Yes.
It follows the mathematical definition of the DFT.