dds is just a container format which can store all kind of texture data, compressed and uncompressed and so on. So this really depends on how you save it. But I guess that there is no basic format for compressed 16bit fp textures, because of that I´d assume that your texture is uncompressed.
On bmap_lock, what format is returned?
Edit: Also, you should probably go with 32bit instead of 16, as otherwize things get quite tricky, because there is no corresponding datatype.
Something like this could then work:
#include <d3d9.h>
/* DX Lock flags */
#define D3DLOCK_READONLY 0x00000010L
#define D3DLOCK_DISCARD 0x00002000L
#define D3DLOCK_NOOVERWRITE 0x00001000L
#define D3DLOCK_NOSYSLOCK 0x00000800L
#define D3DLOCK_DONOTWAIT 0x00004000L
#define D3DLOCK_NO_DIRTY_UPDATE 0x00008000L
void ReadPixels(float **pixels, BMAP* rbmap)
{
LPDIRECT3DTEXTURE9 dxtex = rbmap->d3dtex;
D3DLOCKED_RECT dxrect;
unsigned char *bmp;
bmap_preload(rbmap);
dxtex->LockRect(0, &dxrect, NULL, D3DLOCK_READONLY);
bmp = dxrect.pBits;
var width = bmap_width(rbmap);
var height = bmap_height(rbmap);
*pixels = sys_malloc(width*height*sizeof(float));
var x, y;
for(y = 0; y < height; y++)
{
memcpy(pixels[y*width], bmp[y*dxrect.Pitch], sizeof(float*width));
}
dxtex->UnlockRect(0);
}