Optimization Letters manuscript No. (will be inserted by the editor) Higher order numerical differentiation on the Infinity Computer Yaroslav D. Sergeyev Abstract There exist many applications where it is necessary to approximate numerically derivatives of a function which is given by a computer procedure. In particular, all the fields of optimization have a special interest in such a kind of information. In this paper, a new way to do this is presented for a new kind of a computer – the Infinity Computer – able to work numerically with finite, infinite, and infinitesimal numbers. It is proved that the Infinity Computer is able to calculate values of derivatives of a higher order for a wide class of functions represented by computer procedures. It is shown that the ability to compute derivatives of arbitrary order automatically and accurate to working precision is an intrinsic property of the Infinity Computer related to its way of functioning. Numerical examples illustrating the new concepts and numerical tools are given. Keywords Higher order numerical differentiation, infinite and infinitesimal numbers, Infinity Computer. Mathematics Subject Classification (2000) 65K05, 90C26, 90C56 1 Introduction In many practical applications related to the scientific computing (e.g., in global and local optimization, numerical simulation, approximation, etc.) it is necessary to calculate derivatives of a function g(x) which is given by a computer procedure calculating its approximation f(x). Very often a user working with the computing code f(x) is not the person who has written this code. As a result, for the user the program calculating y = f(x) is just a black box, i.e., if it has as the input a value x then the program returns the corresponding value y and the user does not know the internal structure of the program. As a result, when for solving an applied problem the usage of derivatives is required and a procedure for evaluating the exact value of f ′(x) is not available, we face the necessity to approximate f ′(x) in a way. Yaroslav D. Sergeyev DEIS – University of Calabria, Via P. Bucci 42C, 87036 Rende (CS), Italy Software Department, N.I. Lobatchevsky State University, Nizhni Novgorod, Russia E-mail: yaro@si.deis.unical.it 2 In particular, this situation happens very often in the black box global and local optimization (see [5, 11, 19, 20]) and related application areas. Let us give a simple but important example (see, e.g., [19,20,23]) related to the problem of finding the minimal root of an equation f(x) = 0 where x ∈ [a, b] and f(x) is multiextremal (as a result, there can be several different roots over [a, b]), given by a computer program and such that f(a) > 0. This problem arises in many applications, such as time domain analysis (see [3]), filter theory (see [7]), and wavelet theory (see [21]) and can be interpreted, for instance, as follows. It is necessary to know the behavior of a device over a time interval [a, b]. The device starts to work at the time x = a and it functions correctly while for x ≥ a the computer procedure calculating f(x) returns values f(x) > 0. Of course, at the initial moment, x = a, the device works correctly and f(a) > 0. It is necessary either to find an interval [a, x∗) such that f(x∗) = 0, f(x) > 0, x ∈ [a, x∗), x∗ ∈ (a, b], (1) or to prove that x∗ satisfying (1) does not exist in [a, b]. Efficient methods proposed recently for solving this problem (see [6, 18, 19]) strongly use ideas developed in the field of global optimization. They require calculating the first derivative f ′(x) of f(x) and since a program calculating f ′(x) is usually not available, the problem of finding an approximation of f ′(x) arises. There exist several approaches to tackle this problem. First, numerical approximations are used for this purpose (see e.g., [9] for a detailed discussion). In applications, the following three simple formulae (more complex and numerically more expensive approximations can be found in [9]) are often used f ′(x) ≈ f(x + h) − f(x) h , f ′(x) ≈ f(x) − f(x − h) h , (2) f ′(x) ≈ f(x + h) − f(x − h) 2h (3) by practitioners. However, these procedures are fraught with danger (see [9]) since eventually round-off errors will dominate calculation. As h tends to zero, both f(x + h) and f(x − h) tend to f(x), so that their difference tends to the difference of two almost equal quantities and thus contains fewer and fewer significant digits. Thus, it is meaningless to carry out these computations beyond a certain threshold value of h. Calculations of higher derivatives suffer from the same problems. The complex step method (see [8]) allows one to improve approximations of f ′(x) avoiding subtractive cancellation errors present in (2), (3) by using the following formula to approximate f ′(x) f ′(x) ≈ Im[f(x + ih)] h , (4) where Im(u) is the imaginary part of u. Though this estimate does not involve the dangerous difference operation, it is still an approximation of f ′(x) because it depends on the choice of the step h. Another approach consists of the usage of symbolic (algebraic) computations (see, e.g., [4]) where f(x) is differentiated as an expression in symbolic form in contrast to manipulating of numerical quantities represented by the symbols used to express f(x). Unfortunately this approach can be too slow when it is applied to long codes coming from real world applications. There exist an extensive literature (see, e.g., [1, 2, 5] and references given therein) dedicated to automatic (algorithmic) differentiation (AD) that is a set of techniques based on 3 the mechanical application of the chain rule to obtain derivatives of a function given as a computer program. By applying the chain rule of derivation to elementary operations this approach allows one to compute derivatives of arbitrary order automatically with the precision of the code representing f(x). Implementations of AD can be broadly classified into two categories that have their advantages and disadvantages (see [2, 5] for a detailed discussion): (i) AD tools based on source-to-source transformation changing the semantics by explicitly rewriting the code; (ii) AD tools based on operator overloading using the fact that modern programming languages offer the possibility to redefine the semantics of elementary operators. In particular, the dual numbers extending the real numbers by adjoining one new element d with the property d2 = 0 (i.e., d is nilpotent) can be used for this purpose (see, e.g., [1]). Every dual number has the form v = a + db, where a and b are real numbers and v can be represented as the ordered pair (a, b). On the one hand, dual numbers have a clear similarity with complex numbers z = a + ib where i2 = −1. On the other hand, speaking informally it can be said that the imaginary unit d of dual numbers is a close relative to infinitesimals (we mean here a general non formalized idea about infinitesimals) since the square (or any higher power) of d is exactly zero and the square of an infinitesimal is 'almost zero'. All the methods described above use traditional computers as computational devices and propose a number of techniques to calculate derivatives on them. In this paper, a new way to calculate derivatives numerically is proposed. It is made by using a new kind of a computer – the Infinity Computer – introduced in [13–15] and able to work numerically with finite, infinite, and infinitesimal quantities. This computer is based on a new applied point of view on infinite and infinitesimal numbers (that is not related to non-standard analysis) introduced in [12,14]. The new approach does not use Cantor's ideas and works with infinite and infinitesimal numbers being in accordance with Aristotle's principle 'The part is less than the whole'. We conclude this introduction by emphasizing that traditional approaches for differentiation considered above have been developed ad hoc for solving this problem as additional tools that should be used together with the traditional computers. Without these additional tools the traditional computers are not able to calculate derivatives of functions defined by computer procedures. In this paper, it is shown that the ability to compute derivatives of arbitrary order automatically and accurate to working precision is an intrinsic property of the Infinity Computer related to its way of functioning. This is just one of the particular features offered to the user by the Infinity Computer. Naturally, this is a direct consequence of the fact that it can execute numerical computations with infinite and infinitesimal quantities explicitly. 2 Representation of numbers at the Infinity Computer In [12,14,16,17], a new powerful numeral system has been developed to express finite, infinite, and infinitesimal numbers in a unique framework. The main idea consists of measuring infinite and infinitesimal quantities by different (infinite, finite, and infinitesimal) units of measure. In this section we give just a brief introduction to the new methodology that can be found in a rather comprehensive form in the survey [14] or in the monograph [12] written in a popular manner. A new infinite unit of measure has been introduced as the number of elements of the set N of natural numbers. It is expressed by a new numeral 1 called grossone. It is necessary to emphasize immediately that the infinite number 1 is not either Cantor's א0 or ω and the 4 new approach is not related to the non-standard analysis. For instance, one of the important differences consists of the fact that infinite integer positive numbers that can be viewed by using numerals including grossone can be interpreted in the terms of the number of elements of certain infinite sets. Another difference consists of the fact that 1 has both cardinal and ordinal properties as usual finite natural numbers. Formally, grossone is introduced as a new number by describing its properties postulated by the Infinite Unit Axiom (IUA) (see [12,14]). This axiom is added to axioms for real numbers similarly to addition of the axiom determining zero to axioms of natural numbers when integer numbers are introduced. Inasmuch as it has been postulated that grossone is a number, all other axioms for numbers hold for it, too. Particularly, associative and commutative properties of multiplication and addition, distributive property of multiplication over addition, existence of inverse elements with respect to addition and multiplication hold for grossone as for finite numbers. This means that the following relations hold for grossone, as for any other number 0 * 1 = 1 * 0 = 0, 1 − 1 = 0, 1 1 = 1, 10 = 1, 11 = 1, 01 = 0. (5) To express infinite and infinitesimal numbers at the Infinity Computer, records similar to traditional positional numeral systems can be used (see [12–14]). Numbers expressed in this new positional systems with the radix 1 are called hereinafter grossnumbers. In order to construct a number C in this system, we subdivide C into groups corresponding to powers of grossone: C = cpm1 pm + . . . + cp11 p1 + cp01 p0 + cp −1 1p−1 + . . . + cp −k 1p−k . (6) Then, the record C = cpm1 pm . . . cp11 p1cp01 p0cp −1 1p−1 . . . cp −k 1p−k (7) represents the number C, where finite numbers ci 6= 0 called grossdigits can be positive or negative. They show how many corresponding units should be added or subtracted in order to form the number C. Grossdigits can be expressed by several symbols. Numbers pi in (7) called grosspowers can be finite, infinite, and infinitesimal, they are sorted in the decreasing order with p0 = 0 pm > pm−1 > . . . > p1 > p0 > p−1 > . . . p−(k−1) > p−k. In the record (7), we write 1pi explicitly because in the new numeral positional system the number i in general is not equal to the grosspower pi (see [14] for a detailed discussion). Finite numbers in this new numeral system are represented by numerals having only one grosspower p0 = 0. In fact, if we have a number C such that m = k = 0 in representation (7), then due to (5), we have C = c01 0 = c0. Thus, the number C in this case does not contain grossone and is equal to the grossdigit c0 being a conventional finite number expressed in a traditional finite numeral system. The simplest infinitesimal numbers are represented by numerals C having only finite or infinite negative grosspowers, e.g., 6.731−4.756.71−150. The simplest infinitesimal number is 1 1 = 1−1 being the inverse element with respect to multiplication for 1: 1−1 * 1 = 1 * 1−1 = 1. (8) 5 Note that all infinitesimals are not equal to zero. Particularly, 1 1 > 0 because it is a result of division of two positive numbers. In the context of the numerical differentiation discussed in this paper, it is worth mentioning that (without going in a detailed and rather philosophical discussion on the topic 'Can or cannot dual numbers be viewed as a kind of infinitesimals?') there exist two formal differences between infinitesimals C from (7) and dual numbers (see, e.g., [1]). First, for any infinitesimal C it follows C2 > 0 (for instance, (1−1)2 > 0) whereas for dual numbers we have d2 = 0. Second, in the context of [1] the element d represented as (0, 1) has not its inverse and infinitesimals C have their inverse. The simplest infinite numbers are expressed by numerals having positive finite or infinite grosspowers. They have infinite parts and can also have a finite part and infinitesimal ones. For instance, the number 1.5114.2(−10.645)157.8910811−4.272.81−60 has two infinite parts 1.5114.2 and −10.64515 one finite part 7.8910 and two infinitesimal parts 811−4.2 and 72.81−60. All of the numbers introduce above can be grosspowers, as well, giving so a possibility to have various combinations of quantities and to construct terms having a more complex structure. A working software simulator of the Infinity Computer has been implemented and the first application – the Infinity Calculator – has been realized. We conclude this section by emphasizing the following important issue: the Infinity Computer works with infinite, finite, and infinitesimal numbers numerically, not symbolically (see [15]). 3 Numerical differentiation Let us return to the problem of numerical differentiation of a function g(x). We suppose that a set of elementary functions (sin(x), cos(x), ax etc.) is represented at the Infinity Computer by one of the usual ways used in traditional computers (see, e.g. [10]) involving the argument x, finite constants, and four arithmetical operations. A programmer writes a program P that should calculate g(x) using the said implementations of elementary functions, the argument x, and finite constants connected by four arithmetical operations. Obviously, P calculates a numerical approximation f(x) of the function g(x). As a rule, the programmer does not use analytical formulae of f ′(x), f ′′(x), . . . f (k)(x) to write the program calculating f(x). We suppose that f(x) approximates g(x) sufficiently well with respect to some criteria and we shall not discuss the goodness of this approximation in this paper. Then, as often happens in the scientific computing, a user takes the program P calculating f(x) and is interested to calculate f ′(x) and higher derivatives numerically by using this program. Computer programs for calculating f ′(x), f ′′(x), . . . f (k)(x) and their analytical formulae are unavailable and the internal structure of the program calculating f(x) is unknown to the user. In this situation, our attention will be attracted to the problem of a numerical calculation of the derivatives f ′(x), f ′′(x), . . . f (k)(x) and to the information that can be obtained from the computer procedure P calculating f(x) for this purpose when it is executed at the Infinity Computer. The following theorem holds. Theorem 1 Suppose that: (i) for a function f(x) calculated by a procedure implemented at the Infinity Computer there exists an unknown Taylor expansion in a finite neighborhood δ(y) of a finite point y; (ii) f(x), f ′(x), f ′′(x), . . . f (k)(x) assume finite values or are equal 6 to zero for x ∈ δ(y); (iii) f(x) has been evaluated at a point y + 1−1 ∈ δ(y). Then the Infinity Computer returns the result of this evaluation in the positional numeral system with the infinite radix 1 in the following form f(y + 1−1) = c01 0 c−11 −1 c−21 −2 . . . c −(k−1)1 −(k−1) c−k1 −k , (9) where f(y) = c0, f ′(y) = c−1, f ′′(y) = 2!c−2, . . . f (k)(y) = k!c−k. (10) Proof Due to its rules of operation (see (6), (7)), the Infinity Computer collects different exponents of 1 in independent groups cp −i 1p−i with finite grossdigits cp −i when it calculates f(y + 1−1). Since functions f(x), f ′(x), f ′′(x), . . . f (k)(x) assume finite values or are equal to zero in δ(y) which is also finite, the highest grosspower in the number (9) is necessary less or equal to zero. Thus, the number that the Infinity Computer returns can have only a finite and infinitesimal parts. Four arithmetical operations (see [14, 15]) executed by the Infinity Computer with the operands having finite integer grosspowers in the form (7) produce only results with finite integer grosspowers. This fact ensures that the result f(y + 1−1) can have only integer non-positive grosspowers in (9). Due to the rules of the positional system (see (6), (7)), the number f(y + 1−1) from (9) can be written as follows f(y + 1−1) = c01 0 c−11 −1 c−21 −2 . . . c −(k−1)1 −(k−1) c−k1 −k = c01 0 + c−11 −1 + c−21 −2 + . . . + c −(k−1)1 −(k−1) + c−k1 −k . (11) The Infinity Computer while calculates the value f(y + 1−1) does not use the Taylor expansion for f(x), it just executes commands of the program. However, this unknown Taylor expansion for f(x) (we emphasize that it is unknown for: the Infinity Computer itself, for the programmer, and for the user) exists in the neighborhood δ(y) of the point y, for a point x = y + h ∈ δ(y), h > 0. Thus, it should be true f(y + h) = f(y) + f ′(y)h + f ′′(y) h2 2 + . . . + f (k)(y) hk k! + . . . (12) By assuming h = 1−1 in (12) and by using the fact that 10 = 1 (see (5)) we obtain f(y + 1−1) = f(y)10 + f ′(y)1−1 + f ′′(y) 2 1−2 + . . . + f (k)(y) k! 1−k + . . . (13) The uniqueness of the Taylor expansion allows us to obtain (9) by equating the first k + 1 coefficients of 1 in (13) with grossdigits c0, c−1, c−2, . . . c−(k−1), c−k in (11) completing so the proof. 2 Let us comment upon the theorem. It describes a situation where a user needs to evaluate f(x) and its derivatives at a point x = y but analytic expressions of f(x), f ′(x), f ′′(x), . . . f (k)(x) are unknown and computer procedures for calculating f ′(x), f ′′(x), . . . f (k)(x) are unavailable. Moreover, the internal structure of the procedure P calculating f(x) can also be unknown to the user. In this situation, instead of the usage of, for instance, traditional formulae (2), (3) for an approximation of f ′(x), the user evaluates f(x) at the point x = y+1−1 at the Infinity Computer. Note that if P has been written by the programmer for the Infinity Computer, then the user just runs P without any intervention on the code of P . In the case when P has been written for traditional computers, in order to transfer it to the Infinity 7 Computer, variables and constants used in P should be just redeclared as grossnumbers (7). Traditional arithmetic operations are then overloaded due to the rules defined in [14, 15]. The operation of evaluation of f(x) at the point x = y + 1−1 returns a number in the form (9) from where the user can easily obtain values of f(y) and f ′(y), f ′′(y), . . . f (k)(y) as shown in (10) without any knowledge of the Taylor expansion of f(x) and of the analytic formulae and computer procedures for evaluating derivatives. Due to the fact that the Infinity Computer is able to work with infinite and infinitesimal numbers numerically, the values f ′(y), . . . f (k)(y) are calculated exactly at the point x = y without introduction of dangerous operations (2), (3) (or (4)) related to the necessity to use finite values of h when one works with traditional computers. We emphasize also that the user obtains the function value and the values of the derivatives after calculation of f(x) at a single point. It is worthy to notice that numerical operations that the Infinity Computer performs when it executes the program f(x) can be viewed as an automatic rewriting of f(x) from the basis in x into the basis in 1 by setting x = y + 1−1 with y being a finite number. The numerical finite value of y is then combined with other finite numbers present in the program and they all are collected as finite coefficients (i.e., grossdigits) of grosspowers of 1. In some sense this is similar to rearrangements that often are executed when one works with wavelets (see [21]) or with formal power series (see [22]). Let us consider some numerical examples. Their results can be checked by the reader directly on systems using symbolic calculations (e.g., MAPLE) by taking instead of 1−1 a symbolic parameter, let say, a, thinking about a as an infinitesimal number and by calculating then f(y + a) where y is a number. The crucial difference of the Infinity Computer with respect to systems executing symbolic computations consists of the fact that the Infinity Computer works with infinite, finite, and infinitesimal numbers numerically, not symbolically. Naturally, this feature of the Infinity Computer becomes very advantageous when one should execute complex numerical computations. Example 1 Suppose that we have a computer procedure implementing the following function g(x) = x3 as f(x) = x *x *x and we want to evaluate the values f(y), f ′(y), f ′′(y), and f (3)(y) at the point y = 5. The Infinity Computer executes the following operations f(5 + 1−1) = 51011−1 * 51011−1 * 51011−1 = 2510101−111−2 * 51011−1 = 12510751−1151−211−3. (14) From (14), by applying (10) we obtain that f(5) = 125, f ′(5) = 75, f ′′(5) = 2! * 15 = 30, f (3)(5) = 3! * 1 = 6, that are correct values of f(x) and the derivatives at the point y = 5. Let us check this numerical result analytically by taking a generic point y. Then we obtain f(y + 1−1) = (y + 1−1)3 = (y + 1−1) * (y + 1−1) * (y + 1−1) = (15) y 3 + 3y21−1 + 3y1−2 + 1−3 = y3103y21−13y1−211−3. (16) By applying (10) we have the required values f(y) = y3, f ′(y) = 3y2, f ′′(y) = 2! * 3y = 6y, f (3)(y) = 3! * 1 = 6. That coincide with the respective analytical derivatives calculated at the point x = y: f ′(x) = 3x2, f ′′(x) = 6x, f (3)(x) = 6. 2 8 Example 2 Suppose that we have the following function g(x) = x + sin(x) and it is represented in the Infinity Computer as f(x) = x + sin(x), (17) where sin(x) is a computer implementation of sin(x). If we want to evaluate f(x), f ′(x), f ′′(x), and f (3)(x) at a point y, by taking k = 3 in (9) we obtain f(y + 1−1) = (y + sin(y))10(1 + sin ′ (y))1−1 sin ′′ (y) 2 1−2 sin (3) (y) 3! 1−3, where the result depends on the way of implementation of sin(x). For example, suppose for the illustrative purpose that in the neighborhood of the point y = 0 the Infinity Computer uses the following simple implementation sin(x) = x − x * x * x 6 being the first two items in the corresponding Taylor expansion. Then the computer program f(x) becomes f(x) = x + x − x * x * x 6 and the Infinity Computer with y = 0 works as follows f(0 + 1−1) = 0 + 1−1 + 0 + 1−1 − (0 + 1−1) * (0 + 1−1) * (0 + 1−1) 6 = 21−1 − 1−3 6 = 21−1(-0.166667)1−3. By applying (10) we have the required values f(0) = 0, f ′(0) = 2, f ′′(0) = 2! * 0 = 0, f (3)(0) = 3! * (-0.166667) = −1. That, obviously, coincide with the respective analytical derivatives (that, we emphasize this fact again, were not used by the Infinity Computer) f ′(x) = 2 − 0.5x2, f ′′(x) = −x, f (3)(x) = −1 calculated at the point y = 0. 2 Example 3 Suppose that we have a computer procedure f(x) = x*x+1x implementing the function g(x) = x 2+1 x and we want to calculate the values f(y), f ′(y), f ′′(y), and f (3)(y) at a point y = 3. We consider the Infinity Computer that returns grossdigits corresponding to the exponents of grossone from 0 to -3. Then we have f(3 + 1−1) = (3 + 1−1) * (3 + 1−1) + 1 3 + 1−1 = 101061−111−2 31011−1 = 3.333333100.8888891−10.0370371−2 − 0.01234571−3. By applying (10) we obtain that f(3) = 3.333333, f ′(3) = 0.888889, f ′′(3) = 2! * 0.037037 = 0.074074, f (3)(3) = 3! * (−0.0123457) = −0.074074, that are values which one obtains by using explicit analytic formulae f(x) = x2 + 1 x , f ′(x) = 1 − x−2, f ′′(x) = 2x−3, f (3)(x) = −6x−4 for f(x) and its derivatives at the point x = 3. 2 9 References 1. M. Berz. Automatic differentiation as nonarchimedean analysis. In Computer Arithmetic and Enclosure Methods, pages 439–450. Elsevier, Amsterdam, 1992. 2. C. Bischof and M. Bücker. Computing derivatives of computer programs. In Modern Methods and Algorithms of Quantum Chemistry Proceedings, NIC Series, vol. 3, pages 315–327. John von Neumann Institute for Computing, Jülich, 2 edition, 2000. 3. L.O. Chua, C.A. Desoer, and E.S. Kuh. Linear and Non linear Circuits. MacGraw Hill, Singapore, 1987. 4. J.S. Cohen. Computer Algebra and Symbolic Computation: Mathematical Methods. A K Peters, Ltd., Wellesley, MA, 1966. 5. G. Corliss, C. Faure, A. Griewank, L. Hascoet, and U. Naumann, editors. Automatic Differentiation of Algorithms: From Simulation to Optimization. Springer-Verlag, New York, 2002. 6. P. Daponte, D. Grimaldi, A. Molinaro, and Ya.D. Sergeyev. An algorithm for finding the zero-crossing of time signals with lipschitzian derivatives. Measurement, 16:37–49, 1995. 7. H.Y-F. Lam. Analog and Digital Filters-Design and Realization. Prentice Hall Inc., New Jersey, 1979. 8. J.N. Lyness and C.B. Moler. Numerical differentiation of analytic functions. SIAM J. Numer. Anal., 4:202–210, 1967. 9. P. Moin. Fundamentals of Engineering Numerical Analysis. Cambridge University Press, Cambridge, 2001. 10. J.M. Muller. Elementary functions: algorithms and implementation. Birkhäuser, Boston, 2006. 11. P.M. Pardalos and M.G.C. Resende, editors. Handbook of Applied Optimization. Oxford University Press, New York, 2002. 12. Ya.D. Sergeyev. Arithmetic of Infinity. Edizioni Orizzonti Meridionali, CS, 2003. 13. Ya.D. Sergeyev. http://www.theinfinitycomputer.com. 2004. 14. Ya.D. Sergeyev. A new applied approach for executing computations with infinite and infinitesimal quantities. Informatica, 19(4):567–596, 2008. 15. Ya.D. Sergeyev. Computer system for storing infinite, infinitesimal, and finite quantities and executing arithmetical operations with them. EU patent 1728149, 2009. 16. Ya.D. Sergeyev. Numerical computations and mathematical modelling with infinite and infinitesimal numbers. Journal of Applied Mathematics and Computing, 29:177–195, 2009. 17. Ya.D. Sergeyev. Numerical point of view on Calculus for functions assuming finite, infinite, and infinitesimal values over finite, infinite, and infinitesimal domains. Nonlinear Analysis Series A: Theory, Methods & Applications, 71(12):e1688–e1707, 2009. 18. Ya.D. Sergeyev, P. Daponte, D. Grimaldi, and A. Molinaro. Two methods for solving optimization problems arising in electronic measurements and electrical engineering. SIAM J. Optim., 10(1):1–21, 1999. 19. Ya.D. Sergeyev and D.E. Kvasov. Diagonal global optimization methods. Fizmatlit, Moscow, 2008. in Russian. 20. R.G. Strongin and Ya.D. Sergeyev. Global Optimization and Non-Convex Constraints: Sequential and Parallel Algorithms. Kluwer Academic Publishers, Dordrecht, 2000. 21. D.F. Walnut. An Introduction to Wavelet Analysis. Birkhäuser, Boston, 2004. 22. H.S. Wilf. Generatingfunctionology. A K Peters, Ltd., Wellesley, MA, 3rd edition, 2006. 23. M.A. Wolfe. On first zero crossing points. Applied Mathematics and Computation, 150:467–479, 2004.