 ATOMIC WEIGHTS:
 float AtomicWeight(int Z)

 ELEMENT DENSITY:
 float ElementDensity(int Z)

 CROSS SECTIONS:
    (cm2/g)
 float CS_Total(int Z, float E)
 float CS_Photo(int Z, float E)
 float CS_Rayl(int Z, float E)
 float CS_Compt(int Z, float E) 
 float CS_FluorLine(int Z, int line, float E)
    (barn/atom)
 float CS_KN(float E)
 float CS_Energy(int Z, float E)
 float CSb_Total(int Z, float E)
 float CSb_Photo(int Z, float E)
 float CSb_Rayl(int Z, float E)
 float CSb_Compt(int Z, float E) 
 float CSb_FluorLine(int Z, int line, float E)

 DIFFERENTIAL UNPOLARIZED CROSS SECTIONS:
    (cm2/g/sterad)
 float DCS_Rayl(int Z, float E, float theta)
 float DCS_Compt(int Z, float E, float theta)
    (barns/atom/sterad)
 float DCS_Thoms(float theta)
 float DCS_KN(float E, float theta)
 float DCSb_Rayl(int Z, float E, float theta)
 float DCSb_Compt(int Z, float E, float theta)

 DIFFERENTIAL POLARIZED CROSS SECTIONS:
    (cm2/g/sterad)
 float DCSP_Rayl(int Z, float E, float theta, float phi)
 float DCSP_Compt(int Z, float E, float theta, float phi)
    (barns/atom/sterad)
 float DCSP_Thoms(float theta, float phi)
 float DCSP_KN(float E, float theta, float phi)
 float DCSPb_Rayl(int Z, float E, float theta, float phi)
 float DCSPb_Compt(int Z, float E, float theta, float phi)

 FORM FACTORS, SCATTERING FUNCTIONS, MOMENTUM TRANSFER
 float FF_Rayl(int Z, float q)
 float SF_Compt(int Z, float q)
 float MomentTransf(float E, float theta)

 COMPTON ENERGY:
 float ComptonEnergy(float E0, float theta)

 ABSORPTION EDGES AND TRANSITIONS DATA:
 float EdgeEnergy(int Z, int shell)
 float LineEnergy(int Z, int line)
 float FluorYield(int Z, int shell)
 float JumpFactor(int Z, int shell)
 float RadRate(int Z, int line)
 float CosKronTransProb(int Z, int trans)

 ANOMALOUS SCATTERING FACTORs
 float Fi(int Z, float E)
 float Fii(int Z, float E)

 KISSEL PHOTOELECTRIC CROSS SECTIONS
 float CS_Photo_Total(int Z, float E)
 float CSb_Photo_Total(int Z, float E)
 float CS_Photo_Partial(int Z, int shell, float E)
 float CSb_Photo_Partial(int Z, int shell, float E)

 XRF CROSS SECTIONS USING KISSEL PARTIAL PHOTOELECTRIC CROSS SECTIONS
 float CS_FluorLine_Kissel(int Z, int line, float E)
 float CSb_FluorLine_Kissel(int Z, int line, float E)
 float CS_FluorLine_Kissel_Cascade(int Z, int line, float E)
 float CSb_FluorLine_Kissel_Cascade(int Z, int line, float E)
 float CS_FluorLine_Kissel_Nonradiative_Cascade(int Z, int line, float E)
 float CSb_FluorLine_Kissel_Nonradiative_Cascade(int Z, int line, float E)
 float CS_FluorLine_Kissel_Radiative_Cascade(int Z, int line, float E)
 float CSb_FluorLine_Kissel_Radiative_Cascade(int Z, int line, float E)
 float CS_FluorLine_Kissel_no_Cascade(int Z, int line, float E)
 float CSb_FluorLine_Kissel_no_Cascade(int Z, int line, float E)


 TOTAL CROSS SECTIONS (PHOTOIONIZATION+RAYLEIGH+COMPTON) USING KISSEL TOTAL
 PHOTOELECTRIC CROSS SECTIONS
 float CS_Total_Kissel(int Z, float E)
 float CSb_Total_Kissel(int Z, float E)

 ELECTRONIC CONFIGURATION
 float ElectronConfig(int Z, int shell)

 CROSS SECTION FUNCTIONS USING THE COMPOUND PARSER
 float CS_Total_CP(const char compound[], float E)
 float CS_Photo_CP(const char compound[], float E)
 float CS_Rayl_CP(const char compound[], float E)
 float CS_Compt_CP(const char compound[], float E) 
 float CS_Energy_CP(const char compound[], float E) 
 float CSb_Total_CP(const char compound[], float E)
 float CSb_Photo_CP(const char compound[], float E)
 float CSb_Rayl_CP(const char compound[], float E)
 float CSb_Compt_CP(const char compound[], float E) 
 float DCS_Rayl_CP(const char compound[], float E, float theta)
 float DCS_Compt_CP(const char compound[], float E, float theta)
 float DCSb_Rayl_CP(const char compound[], float E, float theta)
 float DCSb_Compt_CP(const char compound[], float E, float theta)
 float DCSP_Rayl_CP(const char compound[], float E, float theta, float phi)
 float DCSP_Compt_CP(const char compound[], float E, float theta, float phi)
 float DCSPb_Rayl_CP(const char compound[], float E, float theta, float phi)
 float DCSPb_Compt_CP(const char compound[], float E, float theta, float phi)
 float CS_Photo_Total_CP(const char compound[], float E)
 float CSb_Photo_Total_CP(const char compound[], float E)
 float CS_Total_Kissel_CP(const char compound[], float E) 
 float CSb_Total_Kissel_CP(const char compound[], float E) 

 REFRACTIVE INDICES FUNCTIONS
 double Refractive_Index_Re(const char compound[], double E, double density)
 double Refractive_Index_Im(const char compound[], double E, double density)
 xrlComplex Refractive_Index(const char compound[], double E, double density)

 COMPTON PROFILES
 float ComptonProfile(int Z, float pz)
 float ComptonProfile_Partial(int Z, int shell, float pz)

 ATOMIC LEVEL WIDTHS
 float AtomicLevelWidth(int Z, int shell)

 NONRADIATIVE RATE
 float AugerRate(int Z, int auger_trans)
 float AugerYield(int Z, int shell)

 CRYSTAL DIFFRACTION
 void Crystal_ArrayInit (Crystal_Array* c_array, int n_crystal_alloc)
 void Crystal_ArrayFree (Crystal_Array* c_array)
 Crystal_Struct* Crystal_MakeCopy (Crystal_Struct* crystal)
 void Crystal_Free (Crystal_Struct* crystal)
 Crystal_Struct* Crystal_GetCrystal(const char* material, Crystal_Array* c_array)
 float Bragg_angle (Crystal_Struct* crystal, float energy, int i_miller, int j_miller, int k_miller)
 float Q_scattering_amplitude(Crystal_Struct* crystal, float energy,
                                     int i_miller, int j_miller, int k_miller, float rel_angle)
 void Atomic_Factors (int Z, float energy, float q, float debye_factor,
 				     float* f0, float* f_primep, float* f_prime2)
 xrlComplex Crystal_F_H_StructureFactor (Crystal_Struct* crystal, float energy,
                       int i_miller, int j_miller, int k_miller, float debye_factor, float rel_angle)
 xrlComplex Crystal_F_H_StructureFactor_Partial (Crystal_Struct* crystal, float energy,
                       int i_miller, int j_miller, int k_miller, float debye_factor, float rel_angle,
		                             int f0_flag, int f_prime_flag, int f_prime2_flag)
 float Crystal_UnitCellVolume (Crystal_Struct* crystal)
 float Crystal_dSpacing (Crystal_Struct* crystal, int i_miller, int j_miller, int k_miller)
 int Crystal_AddCrystal (Crystal_Struct* crystal, Crystal_Array* c_array)
 int Crystal_ReadFile (const char* file_name, Crystal_Array* c_array)

 COMPOUND PARSER
 struct compoundData {
        int nElements;
        double nAtomsAll;
        int *Elements;
        double *massFractions;
 }
 struct compoundData *CompoundParser(const char compoundString[])
 char * AtomicNumberToSymbol(int Z)
 int SymbolToAtomicNumber(char *symbol)
 void xrlFree(void *)
 void FreeCompoundData(struct compoundData *)

 NIST COMPOUND DATA
 struct compoundDataNIST {
        char *name;
        int nElements;
        int *Elements;
        double *massFractions;
        double density;
 }
 struct compoundDataNIST *GetCompoundDataNISTByName(const char compoundString[])
 struct compoundDataNIST *GetCompoundDataNISTByIndex(int compoundIndex)
 char **GetCompoundDataNISTList(int *nCompounds)
 void FreeCompoundDataNIST(struct compoundDataNIST *compoundData)

 RADIONUCLIDES
 struct radioNuclideData{
	char *name;
	int Z;
	int A;
	int N;
	int Z_xray;
	int nXrays;
	int *XrayLines;
	double *XrayIntensities;
	int nGammas;
	double *GammaEnergies;
	double *GammaIntensities;
 }
 struct radioNuclideData *GetRadioNuclideDataByName(const char radioNuclideString[]);
 struct radioNuclideData *GetRadioNuclideDataByIndex(int radioNuclideIndex);
 char **GetRadioNuclideDataList(int *nRadioNuclides);
 void FreeRadioNuclideData(struct radioNuclideData *radioNuclideData);

