A computer for operations with (mathematical) functions (unlike the usual computer) operates with functions at the hardware level (i.e. without programming these operations).
Contents
History
A computing machine for operations with functions was presented and developed by Mikhail Kartsev in 1967. Among the operations of this computing machine were the functions addition, subtraction and multiplication, functions comparison, the same operations between a function and a number, finding the function maximum, computing indefinite integral, computing definite integral of derivative of two functions, derivative of two functions, shift of a function along the X-axis etc. By its architecture this computing machine was (using the modern terminology) a vector processor or array processor, a central processing unit (CPU) that implements an instruction set containing instructions that operate on one-dimensional arrays of data called vectors. In it there has been used the fact that many of these operations may be interpreted as the known operation on vectors: addition and subtraction of functions - as addition and subtraction of vectors, computing a definite integral of two functions derivative— as computing the vector product of two vectors, function shift along the X-axis – as vector rotation about axes, etc. In 1966 Khmelnik had proposed a functions coding method, i.e. the functions representation by a "uniform" (for a function as a whole) positional code. And so the mentioned operations with functions are performed as unique computer operations with such codes on a "single" arithmetic unit.
The main idea
The positional code of an integer number
Such code may be called "linear". Unlike it a positional code of one-variable
and so it is flat and "triangular", as the digits in it comprise a triangle.
The value of the positional number
where
where
Addition of positional codes of numbers is associated with the carry transfer to a higher digit according to the scheme
Addition of positional codes of one-variable functions is also associated with the carry transfer to higher digits according to the scheme:
Here the same transfer is carried simultaneously to two higher digits.
R-nary triangular code
A triangular code is called R-nary (and is denoted as
For example, a triangular code is a ternary code
For R-nary triangular codes the following equalities are valid:
where
Single-digit addition
in R-nary triangular codes consists in the following:
This procedure is described (as also for one-digit addition of the numbers) by a table of one-digit addition, where all the values of the terms
Below we have written the table of one-digit addition for
One-digit subtraction
in R-nary triangular codes differs from the one-digit addition only by the fact that in the given
One-digit division by the parameter R
in R-nary triangular codes is based on using the correlation:
from this it follows that the division of each digit causes carries into two lowest digits. Hence, the digits result in this operation is a sum of the quotient from the division of this digit by R and two carries from two highest digits. Thus, when divided by parameter R
This procedure is described by the table of one-digit division by parameter R, where all the values of terms and all values of carries, appearing at the decomposition of the sum
Below the table will be given for the one-digit division by the parameter R for
Addition and subtraction
of R-nary triangular codes consists (as in positional codes of numbers) in subsequently performed one-digit operations. Mind that the one-digit operations in all digits of each column are performed simultaneously.
Multiplication
of R-nary triangular codes. Multiplication of a code
Derivation
of R-nary triangular codes. The derivative of function
So the derivation of triangular codes of a function
The derivation method consists of organizing carries from mk-digit into (m+1,k)-digit and into (m-1,k)-digit, and their summing in the given digit is performed in the same way as in one-digit addition.
Coding and decoding
of R-nary triangular codes. A function represented by series of the form
with integer coefficients
Truncation
of R-nary triangular codes. This is the name of an operation of reducing the number of "non"-zero columns. The necessity of truncation appears at the emergence of carries beyond the digit net. The truncation consists in division by parameter R. All coefficients of the series represented by the code are reduced R times, and the fractional parts of these coefficients are discarded. The first term of the series is also discarded. Such reduction is acceptable if it is known that the series of functions converge. Truncation consists in subsequently performed one-digit operations of division by parameter R. The one-digit operations in all the digits of a row are performed simultaneously, and the carries from lower row are discarded.
Scale factor
R-nary triangular code is accompanied by a scale factor M, similar to exponent for floating-point number. Factor M permits to display all coefficients of the coded series as integer numbers. Factor M is multiplied by R at the code truncation. For addition factors M are aligned, to do so one of added codes must be truncated. For multiplication the factors M are also multiplied.
Positional code for functions of many variables
Positional code for function of two variables is depicted on Figure 1. It corresponds to a "triple" sum of the form::
where
A positional code for the function from several variables corresponds to a sum of the form
where