If any of your arrays are constant, try putting them in rom.
The C18 User's Guide shows how to do this in section 2.4.3
Basically, you use it like you would use "const", but any pointers to rom data must also be specified as rom pointers.
If you can't stick anything in rom, you can avoid using floats and trig functions by approximating them with integers. You would probably have to approximate the trig functions with lookup tables, which can be placed in rom as well.