The manual to FireFly program clearly explain why and how to use spherical or cartesian functions when working with different basis sets. Here we publish this part of manual. The fresh and whole manual you can find at the FireFly website, it is free for download and is very useful for both Firefly users and users of other *ab initio* packages.

Full support of spherical basis functions (also referred to as pure functions) has been implemented in Firefly. By default, spherical functions are disabled. They can be enabled by specifying:

`$CONTRL D5=.T. $END`

The **$D5** group provides further control through the D5, F7, and G9 keywords, which pertain to d, f, and g functions, respectively. Their default values are .T. meaning that spherical functions are used for these three types of functions, provided of course that spherical functions are enabled in the first place by setting **$CONTRL D5=.T. $**

As and example, if one would like to use Cartesian d functions but spherical g functions, one should specify:

`$CONTRL D5=.T. $END`

$D5 D5=.F. $END

Whether one should use Cartesian or spherical functions depends on what the basis set used has been designed for. As a general rule, older basis sets are usually designed to use Cartesian d functions, while newer sets should generally be used with spherical d functions. Higher functions (f and g) should almost always be spherical.

The following sets in Firefly should be used with Cartesian d functions:

**STO-NG**- Popple split-valence
**N-21G**/**N-31G** **SBKJC****HW****DH****DZV****TZV****MINI**and**MIDI**

As spherical functions are disabled by default, one does not have to specify anything special when augmenting these basis sets with d functions. On the other hand, f functions with these sets are usually spherical. Therefore, when using a basis set such as **6-31G(2df,2p)**, one should use Cartesian d and spherical f functions (giving input as in the example above).

The **N-311G/MC** set in Firefly was designed to use spherical polarization functions, so setting **$CONTRL D5=.T.$** for this basis set is a requirement. The same goes for many popular basis sets not incorporated in Firefly such as. Examples are:

- Ahlrichs’
**SV**,**TZV**,**QZV**(both def and def2 generation), and all sets derived from these (such as**def2-TZVPPD**) - Dunning’s cc-pVXZ family and all sets derived from these (such as
**aug-cc-pVTZ**,**cc-pwCVTZ**, and**cc-pVTZ-PP**) - Jensen’s pc-X family and all sets derived from these (such as
**aug-pc-2**and**pcS-2**) -
**LANL2DZdp**,**LANL2TZ**, and**LANL08d** - Roos’ augmented
**DZ**and**TZ ANO**, and**ANO-RCC** - Sadlej’s
**pVTZ** - The Sapporo family of sets

Not using spherical functions for these sets can result in discrepancies in energies and/or poor SCF convergence.

Note that the current implementation of the D5 option is incompatible with non-standard molecular input frames (i.e. custom orientations of axes).