In electrical engineering, a function generator is usually a piece of electronic test equipment or software used to generate different types of electrical waveforms over a wide range of frequencies. Some of the most common waveforms produced by the function generator are the sine wave, square wave, triangular wave and sawtooth shapes. These waveforms can be either repetitive or single-shot (which requires an internal or external trigger source). Another feature included on many function generators is the ability to add a DC offset. Integrated circuits used to generate waveforms may also be described as function generator ICs.
Although function generators cover both audio and radio frequencies, they are usually not suitable for applications that need low distortion or stable frequency signals. When those traits are required, other signal generators would be more appropriate.
Some function generators can be phase-locked to an external signal source (which may be a frequency reference) or another function generator.
Function generators are used in the development, test and repair of electronic equipment. For example, they may be used as a signal source to test amplifiers or to introduce an error signal into a control loop. Function generators are primarily used for working with analog circuits, related pulse generators are primarily used for working with digital circuits.
Simple function generators usually generate triangular waveform whose frequency can be controlled smoothly as well as in steps. This triangular wave is used as the basis for all of its other outputs. The triangular wave is generated by repeatedly charging and discharging a capacitor from a constant current source. This produces a linearly ascending and descending voltage ramp. As the output voltage reaches upper or lower limits, the charging or discharging is reversed using a comparator, producing the linear triangle wave. By varying the current and the size of the capacitor, different frequencies may be obtained. Sawtooth waves can be produced by charging the capacitor slowly with low current, but using a diode over the current source to discharge quickly - the polarity of the diode changes the polarity of the resulting sawtooth, i.e. slow rise and fast fall, or fast rise and slow fall.
A 50% duty cycle square wave is easily obtained by noting whether the capacitor is being charged or discharged, which is reflected in the current switching comparator output. Other duty cycles (theoretically from 0% to 100%) can be obtained by using a comparator and the sawtooth or triangle signal. Most function generators also contain a non-linear diode shaping circuit that can convert the triangle wave into a reasonably accurate sine wave by rounding off the corners of the triangle wave in a process similar to clipping in audio systems.
A walking ring counter, also called a Johnson counter, and a (linear) resistor-only shaping circuit is an alternative way to produce an approximation of a sine wave. This is perhaps the simplest numerically-controlled oscillator. Two such walking ring counters are perhaps the simplest way to generate the continuous-phase frequency-shift keying used in dual-tone multi-frequency signaling and early modem tones.
A typical function generator can provide frequencies up to 20 MHz. RF generators for higher frequencies are not function generators in the strict sense since they typically produce pure or modulated sine signals only.
Function generators, like most signal generators, may also contain an attenuator, various means of modulating the output waveform, and often the ability to automatically and repetitively "sweep" the frequency of the output waveform (by means of a voltage-controlled oscillator) between two operator-determined limits. This capability makes it very easy to evaluate the frequency response of a given electronic circuit.
Some function generators can also generate white or pink noise.
More advanced function generators are called arbitrary waveform generators (AWG). They use direct digital synthesis (DDS) techniques to generate any waveform that can be described by a table of amplitudes and time steps.
Typical specifications for a general-purpose function generator are:
A completely different approach to function generation is to use software instructions to generate a waveform, with provision for output. For example, a general-purpose digital computer can be used to generate the waveform; if frequency range and amplitude are acceptable, the sound card fitted to most computers can be used to output the generated wave.
An electronic circuit element used for generating waveforms within other apparatus that can be used in communications and instrumentation circuits, and also in a function generator instrument. Examples are the Exar XR2206 and the Intersil ICL8038 integrated circuits, which can generate sine, square, triangle, ramp, and pulse waveforms at a voltage-controllable frequency.
An electronic circuit element that provides an output proportional to some mathematical function (such as the square root) of its input; such devices are used in feedback control systems and in analog computers. Examples are the Raytheon QK329 square-law tube and the Intersil ICL8048 Log/Antilog Amplifier.
Mechanical function generators are linkages, cam-follower mechanisms or non-circular gears, designed to reproduce different types of functions, either periodic (like sine or cosine functions), or single-shot (logarithm, parabolic, tangent functions etc.). 
Measurement instruments like pressure gauges, altimeters and barometers include linkage-type function generators as linearization means. Before the advent of digital computers, mechanical function generators were used in the construction of gun fire control systems, and mechanical calculators.