Elementary Functions 
Elementary functions 
Realization of operators for Exponential, Logarithm, Sine, Cosine, Tangent, inverse Tangent, inverse Sine relying on additions/subtractions and shifts. The shifts cost and delay is negligible since they are wired. The additions/subtractions can be carrypropagation free.

From a bread loaf weighting to the exponential computation 
We want to compute X = exp ( Y ), we have available a scale, a white bread whose weight is actually just Y and
a set of weights with values log(1 + 2^{j} ). The weighting is classical and requires (Nb.
weights – 1) addition to approximate the bread's weight Y. The weights values are such that to compute the
exponential of this approximation of Y requires also one extra addition per weight. A weight put down on the right plate (the bread's one) has it value changed into log(1 – 2^{j} ). Thank to this trick, the weighting can be restoring, nonrestoring or "SRT". 
Carry propagation free division for exponential 
The scale is replaced by a "SRT" divider whose "Robertson's diagram" is drawn below.

The constants log(1 + 2^{j} ) and log(1 – 2^{j} ) fed into the "tail" cells are wired . Thus there are 4 variants for the cell according to the values of the two bits. 
Operations of a slice of "SRT" divider for exponential 
The value of each q_{j }is selected by a "head" cell according to _{j }, the weighted sum of the two most significant digits r_{1} and r_{0} of the representation of the partial remainder R_{j}.

The sequence of conditional multiplications by 1, by (1 + 2^{j} ) or by (1 – 2^{j }) requires only one final carry propagation thanks to "CS" adders and to wired shifts. The "CS" additions are truncated to 2n +1 digits, of whom three before the decimal point. The third most significant digit (on the left) is the sign. Although the intermediate results are all positive, doing subtraction in "CS" sometimes lead to unresolved signs. The final result at the bottom must be converted from "CS" to standard binary (a subtraction). The colored window makes it easy to compare the "real" multiplication result (without truncation) and the circuit output (with truncation) 
"ME" cell 
The "ME" cell derives from the add cell "CS" fitted with an extra input "q_{j}" to control either the addition, the identity or the subtraction. Notice that the activity of the carryin "e" never propagates to the carryout "h".

Circuit for exponential computation X = exp ( Y ) 
A "pseudo division" ( the divider is different for each digit q_{j} of the quotient Q ) computes S_{j} log(1 + q_{j}2^{j}) + R = Y. A sequence of "pseudo multiplications" computes X = exp(S_{j} log(1 + q_{j}2^{j}) ). The two computations run simultaneously, without carry propagation thanks to redundant notations, consequently the final result must be converted from "CS" to standard notation.

Numerical example for pseudo division 
The series of rational products is given by the concatenation of the quotient Q ( left ) and the final remainder
R (bottom). Actually for high values of j, 2^{j }_{*}^{ }log(1 + 2^{j} )
becomes very close to 1. If the divider is close to 1, then the remainder becomes an acceptable approximation for
the quotient. The applet gives all the successive partial remainders. The dividend Y (top) must be within ] 1 , +1 [ . 
When "Nb. bits" is less than 14, there is enough room to display the involved constants log(1 ± 2^{j} ) (in red) as well as the partial remainders R_{j} value (in black). Let us recall than R is written with the digits '1', '0' and '1'. The first digit of the constants is '1' or '1' while the others are '1' or '0'. 
Notation conversion 
The stack of conditional multipliers by (1 + 2^{j} ) or by (1 – 2^{j} ) needs only one final carry propagation thanks to the "CS" adders and wired shifts. 
Additions are truncated to 2 n digits, two of which before the decimal point. The third most significant digit
( fully left) is the sign. Despite the fact that all partial results are positive, the execution of subtraction
in "CS" sometimes brings about an unresolved sign. The final result (bottom line) must be converted from
"CS" to binary by an addition (with carry propagation). The previous circuit works with X in the range ] 1 , +1 [ . For the exponential of any number Y, Y is written Y = Q_{*}log(8) + R, where Q is the integer quotient of the division of Y by log(8) and R < log(8) < 1. Then exp(X) = 8^{Q} * exp(R) = 2^{3Q} * exp(R). Since exp(R) < 1, it is acceptable by the above circuit. 
Logarithm and exponential 
The same operator computes either the Logarithm or the Exponential with additions/subtractions (it is the same operation), shifts and constants. The constants are log(1 + 2^{j} ) and log (1 – 2^{j} ) and the digits q_{j} Î{ '1' , '0' , '1' }. The slack selection of the digit value, which will unfortunately be missed later on for Sine and Cosine, allows to avoid all carry propagation but the final one. Clicking the vertical arrow "view" changes the presentation. The key "Reset" allows to control 'manually' the convergence. 