Free: PCGen hands down, nothing else even gets close imo.
@OP get latest beta version, make sure you have a proper installation of java that is supported by PCGen and make sure you load the correct sources on start-up.
If you don't mind spending some cash, HeroLab is probably just a bit better and more user-friendly.