text: Methods of computing square roots
  
  Document Sample
  
  ```					Methods of computing square roots
  Rough estimation
  Many of the methods for calculating square roots of a positive real number S require
  an initial seed value. If the initial value is too far from the actual square root, the
  calculation will be slowed down. It is therefore useful to have a rough estimate, which
  may be very inaccurate but easy to calculate. If S ≥ 1, let D be the number of digits to
  the left of the decimal point. If S < 1, let D be the negative of the number of zeros to
  the immediate right of the decimal point. Then the rough estimation is this:
  
  If D is odd, D = 2n + 1, then use
  If D is even, D = 2n + 2, then use
  
  Two      and      six    are     used       because                                 and
  
  When working in the binary numeral system (as computers do internally), an
  alternative method is to use (here D is the number of binary digits).
  
  Babylonian method
  
  Graph charting the use of the Babylonian method for approximating the square root of
  100 (10) using start values x0=50, x0=1, and x0=-5. Note that using a negative start
  value yields the negative root.
  
  Perhaps the first algorithm used for approximating       is known as the "Babylonian
  method", named after the Babylonians,[1] or "Heron's method", named after the first-
  century Greek mathematician Hero of Alexandria who gave the first explicit
  description of the method.[2] It can be derived from (but predates) Newton's method.
  This is a quadratically convergent algorithm, which means that the number of correct
  digits of the approximation roughly doubles with each iteration. It proceeds as
  follows:
  
  1. Start with an arbitrary positive start value x0 (the closer to the root, the better).
  2. Let xn+1 be the average of xn and S / xn (using the arithmetic mean to
  approximate the geometric mean).
  3. Repeat step 2 until the desired accuracy is achieved.
  
  It can also be represented as:
  
  This algorithm works equally well in the p-adic numbers, but cannot be used to
  identify real square roots with p-adic square roots; it is easy, for example, to construct
  a sequence of rational numbers by this method which converges to + 3 in the reals,
  but to − 3 in the 2-adics.
  
  Example
  
  To calculate      , where S = 125348, to 6 significant figures, we will use the rough
  estimation method above to get x0. The number of digits in S is D=6=2·2+2. So, n=2
  and the rough estimate is
  
  Therefore,
  
  Convergence
  
  We let the relative error in xn be defined by
  and thus
  
  Then one can show that
  
  and thus that
  
  and consequently that convergence is assured provided that x0 and S are both positive.
  
  Worst case for convergence
  
  If one is using the rough estimate above with the Babylonian method, then the worst
  cases are:
  
  Thus in any case,
  
  Remember that rounding errors will slow the convergence. One should keep at least
  one extra digit beyond the desired accuracy of the xn which you are calculating to
  minimize round off error.
  Exponential identity
  Pocket calculators typically implement good routines to compute the exponential
  function and the natural logarithm, and then compute the square root of S using the
  identity
  
  The same identity is used when computing square roots with logarithm tables or slide
  rules.
  
  Method of bisecting intervals
  Another simple way to find a square root is the high/low method, similar to the
  bisection method. This method involves guessing a number based on known squares,
  then checking if its square is too high or too low and adjusting accordingly.
  
  Suppose you want to find the square root of 20. You know that the square of 5 is 25,
  and that the square of 4 is 16, so it must be between 4 and 5. Now you guess 4.5. The
  square of 4.5 equals 20.25 and is too high, so you guess 4.4. This equals 19.36 and is
  too low. So the root is between 4.4 and 4.5. Continue this pattern until you get as
  many decimal places as needed. We are going to stop at three.
  
  4.452 = 19.8025 (too low)
  4.472 = 19.9809 (too low, but close)
  4.482 = 20.0704 (too high)
  4.4752 = 20.025625 (too high)
  4.4732 = 20.007729 (too high, but close)
  4.4722 = 19.998784 (too low)
  
  Now that we know that it is between 4.472 and 4.473, we now know that the square
  root of 20 to the first three decimal places is 4.472.
  
  Bakhshali approximation
  This is a method for finding an approximation to a square root which was described in
  an ancient manuscript known as the Bakhshali manuscript. It is equivalent to two
  iterations of the Babylonian method beginning with N. The original presentation goes
  as follows: To calculate        , let N2 be the nearest perfect square to S. Then,
  calculate:
  This can be also written as:
  
  Example
  
  We'll find
  
  Digit-by-digit calculation
  This is a method to find each digit of the square root in a sequence. It is slower than
  the Babylonian method (if you have a calculator which can divide in one operation),
  
     It can be easier for manual calculations.
     Every digit of the root found is known to be correct, i.e. it will not have to be
  changed later.
     If the square root has an expansion which terminates, the algorithm will
  terminate after the last digit is found. Thus, it can be used to check whether a
  given integer is a square number.
  
  Napier's bones include an aid for the execution of this algorithm. The shifting nth-root
  algorithm is a generalization of this method.
  
  The algorithm works for any base, and naturally, the way it proceeds depends on the
  base chosen.
  
  Decimal (base 10)
  
  Write the original number in decimal form. The numbers are written similar to the
  long division algorithm, and, as in long division, the root will be written on the line
  above. Now separate the digits into pairs, starting from the decimal point and going
  both left and right. The decimal point of the root will be above the decimal point of
  the square. One digit of the root will appear above each pair of digits of the square.
  
  Beginning with the left-most pair of digits, do the following procedure for each pair:
  
  1. Starting on the left, bring down the most significant (leftmost) pair of digits
  not yet used (if all the digits have been used, write "00") and write them to the
  right of the remainder from the previous step (on the first step, there will be no
  remainder). In other words, multiply the remainder by 100 and add the two
  digits. This will be the current value c.
  2. Find p, y and x, as follows:
  o Let p be the part of the root found so far, ignoring any decimal point.
  (For the first step, p = 0).
  o
  Determine the greatest digit x such that                             does
  not exceed c.
   Note: 20p + x is simply twice p, with the digit x appended to
  the right).
   Note: You can find x by guessing what c/(20·p) is and doing a
  trial calculation of y, then adjusting x upward or downward as
  necessary.
  o Place the digit x as the next digit of the root, i.e above the two digits of
  the square which you just brought down. Thus the next p will be the
  old p times 10 plus x.
  3. Subtract y from c to form a new remainder.
  4. If the remainder is zero and there are no more digits to bring down, then the
  algorithm has terminated. Otherwise go back to step 1 for another iteration.
  
  Examples
  
  Find the square root of 152.2756.
  
  1   2. 3   4
  /
  \/       01 52.27 56
  
  01                     1*1 <= 1 < 2*2                 x = 1
  01                       y = x*x = 1*1 = 1
  00 52                  22*2 <= 52 < 23*3              x = 2
  00 44                    y = (20+x)*x = 22*2 = 44
  08 27               243*3 <= 827 < 244*4           x = 3
  07 29                 y = (240+x)*x = 243*3 = 729
  98 56            2464*4 <= 9856 < 2465*5        x = 4
  98 56              y = (2460+x)*x = 2464*4 = 9856
  00 00            Algorithm terminates: Answer is 12.34
  
  Find the square root of 2.
  
  1. 4   1   4   2
  /
  \/       02.00 00 00 00
  
  02                     1*1 <= 2 < 2*2                 x =         1
  01                       y = x*x = 1*1 = 1
  01 00                  24*4 <= 100 < 25*5             x =         4
  00 96                    y = (20+x)*x = 24*4 = 96
  04      00          281*1 <= 400 < 282*2           x =         1
  02      81            y = (280+x)*x = 281*1 = 281
  01      19 00       2824*4 <= 11900 < 2825*5       x =         4
  01      12 96         y = (2820+x)*x = 2824*4 = 11296
  06 04 00    28282*2 <= 60400 < 28283*3     x =         2
  The desired precision is achieved:
  The square root of 2 is about 1.4142
  
  Binary numeral system (base 2)
  
  Inherent to digit-by-digit algorithms is a search and test step: find a digit,      , when
  added to the right of a current solution ', such that                     , where
  is the value for which a root is desired. Expanding, we obtain
  . The current value of          —or, usually, the
  remainder—can be incrementally updated efficiently when working in binary, as the
  value of will be a single bit, and the operations needed to compute           and
  can be replaced with faster bit shift operations. This gives rise to simple
  computer implementations:[3]
  
  short sqrt(short num) {
  short op = num;
  short res = 0;
  short one = 1 << 14; // The second-to-top bit is set: 1L<<30
  for long
  
  // "one" starts at the highest power of four <= the argument.
  while (one > op)
  one >>= 2;
  
  while (one != 0) {
  if (op >= res + one) {
  op -= res + one;
  res = (res >> 1) + one;
  }
  else
  res >>= 1;
  one >>= 2;
  }
  return res;
  }
  
  Faster algorithms, in binary and decimal or any other base, can be realized by using
  lookup tables—in effect trading more storage space for reduced run time.[4]
  
  Vedic duplex method for extracting a square root
  The duplex method is a variant of the digit by digit method for calculating the square
  root of a whole or decimal number one digit at a time.[5] The duplex is the square of
  the central digit plus double the cross-product of digits equidistant from the center.
  The duplex is computed from the quotient digits (square root digits) computed thus
  far, but after the initial digits. The duplex is subtracted from the dividend digit prior to
  the second subtraction for the product of the quotient digit times the divisor digit. For
  perfect squares the duplex and the dividend will get smaller and reach zero after a few
  steps. For non-perfect squares the decimal value of the square root can be calculated
  to any precision desired. However, as the decimal places proliferate, the duplex
  adjustment gets larger and longer to calculate. The duplex method follows the Vedic
  ideal for an algorithm, one-line, mental calculation. It is flexible in choosing the first
  digit group and the divisor. Small divisors are to be avoided by starting with a larger
  initial group.
  In short, to calculate the duplex of a number, double the product of each pair of
  equidistant digits plus the square of the center digit (of the digits to the right of the
  colon).
  
  Number => Calculation = Duplex
  574 ==> 2(5·4) + 72 = 89
  406,739 ==> 2(4·9)+ 2(0·3)+ 2(6·7) = 72+0+84 = 156
  123,456 ==> 2(1·6)+ 2(2·5)+ 2(3·4) = 12 +20 +24 = 56
  88,900,777 ==> 2(8·7)+2(8·7)+2(9·7)+2(0·0)+2(0·0) = 112+112+126+0+0 =
  350
  48329,03711 ==> 2(4·1)+2(8·1)+2(3·7)+2(2·3)+2(9·0)= 8+16+42+12+0 = 78
  
  In a square root calculation the quotient digit set increases incrementally for each step.
  
  Number => Calculation = Duplex:
  1 ==> 12 = 1
  14 ==>2(1·4) = 8
  142 ==> 2(1·2) + 42 = 4 + 16 = 20
  14,21 ==> 2(1·1) + 2(4·2) = 2 + 16 = 18
  14213 ==> 6+8+4 = 18
  142,135 ==> 10+24+4 = 38
  1421356 ==> 12+40+12+1 = 65
  1421,3562 ==> 4+48+20+6 = 78
  142,135,623 ==> 6+16+24+10+9 = 65
  142,1356,237 ==> 14+24+8+12+30 = 88
  142,13562,373 ==> 6+56+12+4+36+25 = 139
  
  Example 1, by discussion
  
  Consider the perfect square 2809 = 532. Use the duplex method to find the square root
  of 2,809.
  
     Set down the number in groups of two digits.
     We define a divisor, a dividend and a quotient to find the root.
     Given 2809. Consider the first group, 28.
  o Find the nearest perfect square below that group.
  o The root of that perfect square is the first digit of our root.
  2
  o Since 28 > 25 and 25 = 5 , we take 5 as the first digit in the square
  root.
  o For the divisor we take double this first digit (2 · 5), which is 10.
     Next, we set up a division framework with a colon.
  o 28: 0 9 is the dividend and 5: is the quotient.
  o We put a colon to the right of 28 and 5 and keep the colons lined up
  vertically. The duplex is calculated only on quotient digits to the right
  of the colon.
     We calculate the remainder. 28: minus 25: is 3:.
  o We append the remainder on the left of the next digit to get the new
  dividend.
  o Here, we append 3 to the next dividend digit 0, which makes the new
  dividend 30. The divisor 10 goes into 30 just 3 times. (No reserve
  needed here for subsequent deductions.)
     We repeat the operation.
  o The zero remainder appended to 9. Nine is the next dividend.
  o   Now we have a digit to the right of the colon so we deduct the duplex,
  32 = 9.
  o   Subtracting this duplex from the dividend 9, we get a zero remainder.
  o   Ten into zero is zero. The next root digit is zero. The next duplex is
  2(3·0) = 0.
  o   The dividend is zero. We have an exact square root, 53.0.
  
  Example 1, analysis and square root framework
  
  Find the square root of 2809.
  Set down the number in groups of two digits.
  The number of groups gives the number of whole digits in the root.
  Put a colon after the first group, 28, to separate it.
  From the first group, 28, we obtain the divisor, 10, since
  28>25=52 and by doubling this first root, 2x5=10.
  Gross dividend:     28: 0 9. Using mental math:
  Divisor: 10)     3 0    Square: 10) 28: 30 9
  Duplex, Deduction:     25: xx 09 Square root: 5:     3. 0
  Dividend:         30 00
  Remainder:      3: 00 00
  Square Root, Quotient:      5: 3. 0
  
  Example 2
  
  Find the square root of 2,080,180,881. Solution by the duplex method: this ten-digit
  square has five digit-pairs, so it will have a five-digit square root. The first digit-pair
  is 20. Put the colon to the right. The nearest square below 20 is 16, whose root is 4,
  the first root digit. So, we use 2·4=8 for the divisor. Now we proceed with the duplex
  division, one digit column at a time. Prefix the remainder to the next dividend digit.
  
  divisor; gross dividend: 8) 20: 8     0  1   8    0   8                     8     1
  read the dividend diagonally up: 4    8   7 11    10 10                     0     8
  minus the duplex:    16: xx 25 60 36      90 108                   00    81
  actual dividend:      : 48 55 11 82      10 00                    08    00
  minus the product:      : 40 48 00 72      00 00                      0   00
  remainder:     4: 8     7 11 10    10   0                     8   00
  quotient:     4: 5, 6     0   9.   0   0                     0     0
  Duplex calculations:
  Quotient-digits ==> Duplex deduction.
  5        ==> 52= 25
  5 and 6 ==> 2(5·6) = 60
  5,6,0    ==> 2(5·0)+62 = 36
  5,6,0,9 ==> 2(5·9)+2(6·0) = 90
  5,6,0,9,0 ==> 2(5·0)+2(6·9)+ 0 = 108
  5,6,0,9,0,0 ==> 2(5·0)+2(6·0)+2(0·9) = 0
  5,6,0,9,0,0,0 ==> 2(5·0)+2(6·0)+2(0·0)+92 = 81
  
  Hence the square root of 2,080,180,881 is exactly 45,609.
  
  ] Example 3
  
  Find the square root of two to ten places. Let us take 20,000 as the beginning group,
  using three digit-pairs at the start. The perfect square just below 20,000 is 141, since
  1412 = 19881 < 20,000. So, the first root digits are 141 and the divisor doubled, 2 x
  141 = 282. With a larger divisor the duplex will be relatively small. Hence, we can
  pick the multiple of the divisor without confusion.
  
  Dividend: 2.0000 :    0               0       0        0       0        0       0
  0
  Diagonal;Divisor: (282) : 1190               620     400    1020     1620     1820      750
  1120
  Minus duplex:         : xxxx             16       16      12      28       53       74
  59
  Actual dividend: 20000 : 1190              604     384    1008     1592     1767      676
  1061
  Minus product: 19881 : 1128              564     282      846    1410     1692      564
  846
  Remainder:     119 :   62             40     102     162      182       75      112
  215
  Root quotient:   1.41 :     4              2        1       3        5       6        2
  3
  
  Ten multiples of 282: 282; 564; 846; 1128; 1410; 1692; 1974; 2256; 2538; 2820.
  
  A two-variable iterative method
  This method is applicable for finding the square root of                     and converges
  best for         . This, however, is no real limitation for a computer based calculation,
  as in base 2 floating point and fixed point representations, it is trivial to multiply by
  an integer power of 4, and therefore         by the corresponding power of 2, by
  changing the exponent or by shifting, respectively. Therefore, one can move to the
  
  range                 . Moreover, the following method does not employ general
  divisions, but only additions, subtractions, multiplications, and divisions by powers of
  two, which are again trivial to implement. A disadvantage of the method is that
  numerical errors accumulate, in contrast to single variable iterative methods such as
  the Babylonian one.
  
  The initialization step of this method is
  
  Then,               (while           ).
  
  Note that the convergence of      , and therefore also of   , is quadratic.
  
  The proof of the method is rather easy. First, we rewrite the iterative definition of
  as
  .
  
  Then it is straightforward to prove by induction that
  
  and therefore the convergence of        to the desired result         is ensured by the
  convergence of    to 0, which in turn follows from                    .
  
  This method was developed around 1950 by M. V. Wilkes, D. J. Wheeler and S.
  Gill[6] for use on EDSAC, one of the first electronic computers[7]. The method was
  later generalized, allowing the computation of non-square roots[8].
  
  Iterative methods for reciprocal square roots
  The following are iterative methods for finding the reciprocal square root of S which
  is          . Once it has been found, we can find             by simple multiplication:
  . These iterations involve only multiplication, and not division.
  They are therefore faster than the Babylonian method. However, they are not stable. If
  the initial value is not close to the reciprocal square root, the iterations will diverge
  away from it rather than converge to it. It can therefore be advantageous to perform an
  iteration of the Babylonian method on a rough estimate before starting to apply these
  methods.
  
     One method is found by applying Newton's method to the equation (1       / x2) −
  S = 0. It converges quadratically:
  
     Another iteration obtained by Halley's method, which is the Householder's
  method of order two, converges cubically, but involves more operations per
  iteration:
  
  Taylor series
  If N is an approximation to        , a better approximation can be found by using the
  Taylor series of the square root function:
  As an iterative method, the order of convergence is equal to the number of terms used.
  With 2 terms, it is identical to the Babylonian method; With 3 terms, each iteration
  takes almost as many operations as the Bakhshali approximation, but converges more
  slowly. Therefore, this is not a particularly efficient way of calculation.
  
  Other methods
  Finding       is the same as solving the equation                 . Therefore, any
  general numerical root-finding algorithm can be used. Newton's method, for example,
  reduces in this case to the Babylonian method. Other methods are less efficient than
  the ones presented above.
  
  A completely different method for computing the square root is based on the
  CORDIC algorithm, which uses only very simple operations (addition, subtraction,
  bitshift and table lookup, but no multiplication).
  
  Continued fraction expansion
  
  Quadratic irrationals (numbers of the form            , where a, b and c are integers),
  and in particular, square roots of integers, have periodic continued fractions.
  Sometimes we may be interested not in finding the numerical value of a square root,
  but rather in its continued fraction expansion. The following iterative algorithm can
  be used for this purpose (S is any natural number which is not a perfect square):
  
  Notice that mn, dn, and an are always integers. The algorithm terminates when this
  triplet is the same as one encountered before. The expansion will repeat from then on.
  The sequence [a0; a1, a2, a3, …] is the continued fraction expansion:
  Example, square root of 114 as a continued fraction
  
  We begin with m0 = 0; d0 = 1; and a0 = 10 (102 = 100 and 112 = 121 > 114 so 10
  chosen).
  
  So, m1 = 10; d1 = 14; and a1 = 1.
  
  Next, m2 = 4; d2 = 7; and a2 = 2.
  
  Now, loop back to the second equation above.
  
  Consequently, the continued fraction for the square root of 114 is
  Pell's equation
  Pell's equation and its variants yield a method for efficiently finding continued
  fraction convergents of square roots of integers. However, it can be complicated to
  execute, and usually not every convergent is generated. The ideas behind the method
  are as follows:
  
     If (p, q) is a solution (where p and q are integers) to the equation
  
  , then is a continued fraction convergent of   , and as
  such, is an excellent rational approximation to it.
     If (pa, qa) and (pb, qb) are solutions, then so is:
  
  (compare to the multiplication of quadratic integers)
  
     More generally, if (p1, q1) is a solution, then it is possible to generate a
  sequence of solutions (pn, qn) satisfying:
  
  The method is as follows:
  
     Find positive integers p1 and q1 such that              . This is the hard
  part; It can be done either by guessing, or by using fairly sophisticated
  techniques.
  
     To generate a long list of convergents, iterate:
  
     To find the larger convergents quickly, iterate:
  
  Notice that the corresponding sequence of fractions coincides with the one
  given by the Hero's method starting with       .
  
     In either case,      is a rational approximation satisfying
  Approximations that depend on IEEE representation
  On computers, a very rapid Newton's-method-based approximation to the square root
  can be obtained for floating point numbers when computers use an IEEE (or
  sufficiently similar) representation.
  
  This technique is based on the fact that the IEEE floating point format approximates
  base-2 logarithm. For example, you can get the approximate logarithm of 32-bit single
  precision floating point number by translating its binary representation as an integer,
  23
  scaling it by 2 , and removing a bias of 127.
  
  For example, 1.0 is represented by a hexadecimal number 0x3F800000, which would
  represent 1065353216 =              if taken as an integer. Using the formula above
  23
  you get 1065353216 / 2 − 127 = 0, as expected from log2(1.0). In a similar
  fashion you get 0.5 from 1.5(0x3FC00000).
  
  In order to get the square root, we can divide the logarithm by 2 and convert the value
  back. The following program demonstrates the idea. Note that we intentionally allow
  the exponent's lowest bit to propagate into the mantissa.
  
  float fastsqrt(float val) {
  union
  {
  int tmp;
  float val;
  } u;
  u.val = val;
  u.tmp -= 1<<23; /* Remove last bit so 1.0 gives 1.0 */
  /* tmp is now an approximation to logbase2(val) */
  u.tmp >>= 1; /* divide by 2 */
  u.tmp += 1<<29; /* add 64 to exponent: (e+127)/2 =(e/2)+63,
  */
  /* that represents (e/2)-64 but we want e/2 */
  return u.val;
  }
  
  In the above, the operations to remove last exponent bit and add the IEEE bias can be
  operation to reduce the maximum relative error. So, the three operations, not
  including the cast, can be rewritten as:
  
  tmp = (1<<29) + (tmp >> 1) - (1<<22) + m;
  
  Where m is a bias for adjusting the approximation errors. For example, with m = 0
  you get accurate results for even powers of 2 (e.g. 1.0), but for other numbers the
  results will be slightly too big (e.g. you get 1.5 for 2.0 instead of 1.414... with 6%
  error). With m = -0x4C000 you get errors between about -3.5% and 3.5%.
  
  If the approximation is to be used for an initial guess for Newton's method to the
  2
  equation (1 / x ) − S = 0, you need to use a reciprocal form shown in the following
  section.
  
  Reciprocal of the square root
  
  A variant of the above routine is included below, which can be used to compute the
  reciprocal of the square root, i.e.        instead, was written by Greg Walsh, and
  implemented into SGI Indigo by Gary Tarolli.[9][10] The integer-shift approximation
  produced a relative error of less than 4%, and the error dropped further to 0.15% with
  one iteration of Newton's method on the following line.[11] In computer graphics it is a
  very efficient way to normalize a vector.
  
  float invSqrt(float x)
  {
  float xhalf = 0.5f*x;
  union
  {
  float x;
  int i;
  } u;
  u.x = x;
  u.i = 0x5f3759df - (u.i >> 1);
  x = u.x * (1.5f - xhalf * u.x * u.x);
  return x;
  }
  
  Some VLSI hardware implements inverse square root using a second degree
  polynomial estimation followed by a Goldschmidt iteration.
  
  ```
  DOCUMENT INFO
  Shared By:
  Categories:
  Tags:
  Stats:
   views: 52 posted: 2/14/2012 language: English pages: 16
explanation: The provided text is an extensive document detailing various methods for computing square roots, including the Babylonian method, the method of bisecting intervals, the Bakhshali approximation, the digit-by-digit calculation, the Vedic duplex method, and others. The document also covers iterative methods for reciprocal square roots, the use of Taylor series, and methods based on continued fractions and Pell's equation. Additionally, it includes a section on approximations that depend on IEEE floating-point representation, such as the fast inverse square root algorithm.
  
  The document does not contain a specific question or a question and answer. It is primarily a detailed explanation and description of different methods for computing square roots.
distilabel_metadata.content: Evaluate the user given text extract and determine if it contains a math question and optionally and answer to this question.
  
  Output rules:
  
  1. Briefly describe the document and mention if it contains a question or a question and answer.
  2. Finalize the output with: Label: no-question,question,question-and-answer,multiple-question,multiple-question-and-answer
distilabel_metadata.role: system
distilabel_metadata.content: Methods of computing square roots
  
  Document Sample
  
  ```					Methods of computing square roots
  Rough estimation
  Many of the methods for calculating square roots of a positive real number S require
  an initial seed value. If the initial value is too far from the actual square root, the
  calculation will be slowed down. It is therefore useful to have a rough estimate, which
  may be very inaccurate but easy to calculate. If S ≥ 1, let D be the number of digits to
  the left of the decimal point. If S < 1, let D be the negative of the number of zeros to
  the immediate right of the decimal point. Then the rough estimation is this:
  
  If D is odd, D = 2n + 1, then use
  If D is even, D = 2n + 2, then use
  
  Two      and      six    are     used       because                                 and
  
  When working in the binary numeral system (as computers do internally), an
  alternative method is to use (here D is the number of binary digits).
  
  Babylonian method
  
  Graph charting the use of the Babylonian method for approximating the square root of
  100 (10) using start values x0=50, x0=1, and x0=-5. Note that using a negative start
  value yields the negative root.
  
  Perhaps the first algorithm used for approximating       is known as the "Babylonian
  method", named after the Babylonians,[1] or "Heron's method", named after the first-
  century Greek mathematician Hero of Alexandria who gave the first explicit
  description of the method.[2] It can be derived from (but predates) Newton's method.
  This is a quadratically convergent algorithm, which means that the number of correct
  digits of the approximation roughly doubles with each iteration. It proceeds as
  follows:
  
  1. Start with an arbitrary positive start value x0 (the closer to the root, the better).
  2. Let xn+1 be the average of xn and S / xn (using the arithmetic mean to
  approximate the geometric mean).
  3. Repeat step 2 until the desired accuracy is achieved.
  
  It can also be represented as:
  
  This algorithm works equally well in the p-adic numbers, but cannot be used to
  identify real square roots with p-adic square roots; it is easy, for example, to construct
  a sequence of rational numbers by this method which converges to + 3 in the reals,
  but to − 3 in the 2-adics.
  
  Example
  
  To calculate      , where S = 125348, to 6 significant figures, we will use the rough
  estimation method above to get x0. The number of digits in S is D=6=2·2+2. So, n=2
  and the rough estimate is
  
  Therefore,
  
  Convergence
  
  We let the relative error in xn be defined by
  and thus
  
  Then one can show that
  
  and thus that
  
  and consequently that convergence is assured provided that x0 and S are both positive.
  
  Worst case for convergence
  
  If one is using the rough estimate above with the Babylonian method, then the worst
  cases are:
  
  Thus in any case,
  
  Remember that rounding errors will slow the convergence. One should keep at least
  one extra digit beyond the desired accuracy of the xn which you are calculating to
  minimize round off error.
  Exponential identity
  Pocket calculators typically implement good routines to compute the exponential
  function and the natural logarithm, and then compute the square root of S using the
  identity
  
  The same identity is used when computing square roots with logarithm tables or slide
  rules.
  
  Method of bisecting intervals
  Another simple way to find a square root is the high/low method, similar to the
  bisection method. This method involves guessing a number based on known squares,
  then checking if its square is too high or too low and adjusting accordingly.
  
  Suppose you want to find the square root of 20. You know that the square of 5 is 25,
  and that the square of 4 is 16, so it must be between 4 and 5. Now you guess 4.5. The
  square of 4.5 equals 20.25 and is too high, so you guess 4.4. This equals 19.36 and is
  too low. So the root is between 4.4 and 4.5. Continue this pattern until you get as
  many decimal places as needed. We are going to stop at three.
  
  4.452 = 19.8025 (too low)
  4.472 = 19.9809 (too low, but close)
  4.482 = 20.0704 (too high)
  4.4752 = 20.025625 (too high)
  4.4732 = 20.007729 (too high, but close)
  4.4722 = 19.998784 (too low)
  
  Now that we know that it is between 4.472 and 4.473, we now know that the square
  root of 20 to the first three decimal places is 4.472.
  
  Bakhshali approximation
  This is a method for finding an approximation to a square root which was described in
  an ancient manuscript known as the Bakhshali manuscript. It is equivalent to two
  iterations of the Babylonian method beginning with N. The original presentation goes
  as follows: To calculate        , let N2 be the nearest perfect square to S. Then,
  calculate:
  This can be also written as:
  
  Example
  
  We'll find
  
  Digit-by-digit calculation
  This is a method to find each digit of the square root in a sequence. It is slower than
  the Babylonian method (if you have a calculator which can divide in one operation),
  
     It can be easier for manual calculations.
     Every digit of the root found is known to be correct, i.e. it will not have to be
  changed later.
     If the square root has an expansion which terminates, the algorithm will
  terminate after the last digit is found. Thus, it can be used to check whether a
  given integer is a square number.
  
  Napier's bones include an aid for the execution of this algorithm. The shifting nth-root
  algorithm is a generalization of this method.
  
  The algorithm works for any base, and naturally, the way it proceeds depends on the
  base chosen.
  
  Decimal (base 10)
  
  Write the original number in decimal form. The numbers are written similar to the
  long division algorithm, and, as in long division, the root will be written on the line
  above. Now separate the digits into pairs, starting from the decimal point and going
  both left and right. The decimal point of the root will be above the decimal point of
  the square. One digit of the root will appear above each pair of digits of the square.
  
  Beginning with the left-most pair of digits, do the following procedure for each pair:
  
  1. Starting on the left, bring down the most significant (leftmost) pair of digits
  not yet used (if all the digits have been used, write "00") and write them to the
  right of the remainder from the previous step (on the first step, there will be no
  remainder). In other words, multiply the remainder by 100 and add the two
  digits. This will be the current value c.
  2. Find p, y and x, as follows:
  o Let p be the part of the root found so far, ignoring any decimal point.
  (For the first step, p = 0).
  o
  Determine the greatest digit x such that                             does
  not exceed c.
   Note: 20p + x is simply twice p, with the digit x appended to
  the right).
   Note: You can find x by guessing what c/(20·p) is and doing a
  trial calculation of y, then adjusting x upward or downward as
  necessary.
  o Place the digit x as the next digit of the root, i.e above the two digits of
  the square which you just brought down. Thus the next p will be the
  old p times 10 plus x.
  3. Subtract y from c to form a new remainder.
  4. If the remainder is zero and there are no more digits to bring down, then the
  algorithm has terminated. Otherwise go back to step 1 for another iteration.
  
  Examples
  
  Find the square root of 152.2756.
  
  1   2. 3   4
  /
  \/       01 52.27 56
  
  01                     1*1 <= 1 < 2*2                 x = 1
  01                       y = x*x = 1*1 = 1
  00 52                  22*2 <= 52 < 23*3              x = 2
  00 44                    y = (20+x)*x = 22*2 = 44
  08 27               243*3 <= 827 < 244*4           x = 3
  07 29                 y = (240+x)*x = 243*3 = 729
  98 56            2464*4 <= 9856 < 2465*5        x = 4
  98 56              y = (2460+x)*x = 2464*4 = 9856
  00 00            Algorithm terminates: Answer is 12.34
  
  Find the square root of 2.
  
  1. 4   1   4   2
  /
  \/       02.00 00 00 00
  
  02                     1*1 <= 2 < 2*2                 x =         1
  01                       y = x*x = 1*1 = 1
  01 00                  24*4 <= 100 < 25*5             x =         4
  00 96                    y = (20+x)*x = 24*4 = 96
  04      00          281*1 <= 400 < 282*2           x =         1
  02      81            y = (280+x)*x = 281*1 = 281
  01      19 00       2824*4 <= 11900 < 2825*5       x =         4
  01      12 96         y = (2820+x)*x = 2824*4 = 11296
  06 04 00    28282*2 <= 60400 < 28283*3     x =         2
  The desired precision is achieved:
  The square root of 2 is about 1.4142
  
  Binary numeral system (base 2)
  
  Inherent to digit-by-digit algorithms is a search and test step: find a digit,      , when
  added to the right of a current solution ', such that                     , where
  is the value for which a root is desired. Expanding, we obtain
  . The current value of          —or, usually, the
  remainder—can be incrementally updated efficiently when working in binary, as the
  value of will be a single bit, and the operations needed to compute           and
  can be replaced with faster bit shift operations. This gives rise to simple
  computer implementations:[3]
  
  short sqrt(short num) {
  short op = num;
  short res = 0;
  short one = 1 << 14; // The second-to-top bit is set: 1L<<30
  for long
  
  // "one" starts at the highest power of four <= the argument.
  while (one > op)
  one >>= 2;
  
  while (one != 0) {
  if (op >= res + one) {
  op -= res + one;
  res = (res >> 1) + one;
  }
  else
  res >>= 1;
  one >>= 2;
  }
  return res;
  }
  
  Faster algorithms, in binary and decimal or any other base, can be realized by using
  lookup tables—in effect trading more storage space for reduced run time.[4]
  
  Vedic duplex method for extracting a square root
  The duplex method is a variant of the digit by digit method for calculating the square
  root of a whole or decimal number one digit at a time.[5] The duplex is the square of
  the central digit plus double the cross-product of digits equidistant from the center.
  The duplex is computed from the quotient digits (square root digits) computed thus
  far, but after the initial digits. The duplex is subtracted from the dividend digit prior to
  the second subtraction for the product of the quotient digit times the divisor digit. For
  perfect squares the duplex and the dividend will get smaller and reach zero after a few
  steps. For non-perfect squares the decimal value of the square root can be calculated
  to any precision desired. However, as the decimal places proliferate, the duplex
  adjustment gets larger and longer to calculate. The duplex method follows the Vedic
  ideal for an algorithm, one-line, mental calculation. It is flexible in choosing the first
  digit group and the divisor. Small divisors are to be avoided by starting with a larger
  initial group.
  In short, to calculate the duplex of a number, double the product of each pair of
  equidistant digits plus the square of the center digit (of the digits to the right of the
  colon).
  
  Number => Calculation = Duplex
  574 ==> 2(5·4) + 72 = 89
  406,739 ==> 2(4·9)+ 2(0·3)+ 2(6·7) = 72+0+84 = 156
  123,456 ==> 2(1·6)+ 2(2·5)+ 2(3·4) = 12 +20 +24 = 56
  88,900,777 ==> 2(8·7)+2(8·7)+2(9·7)+2(0·0)+2(0·0) = 112+112+126+0+0 =
  350
  48329,03711 ==> 2(4·1)+2(8·1)+2(3·7)+2(2·3)+2(9·0)= 8+16+42+12+0 = 78
  
  In a square root calculation the quotient digit set increases incrementally for each step.
  
  Number => Calculation = Duplex:
  1 ==> 12 = 1
  14 ==>2(1·4) = 8
  142 ==> 2(1·2) + 42 = 4 + 16 = 20
  14,21 ==> 2(1·1) + 2(4·2) = 2 + 16 = 18
  14213 ==> 6+8+4 = 18
  142,135 ==> 10+24+4 = 38
  1421356 ==> 12+40+12+1 = 65
  1421,3562 ==> 4+48+20+6 = 78
  142,135,623 ==> 6+16+24+10+9 = 65
  142,1356,237 ==> 14+24+8+12+30 = 88
  142,13562,373 ==> 6+56+12+4+36+25 = 139
  
  Example 1, by discussion
  
  Consider the perfect square 2809 = 532. Use the duplex method to find the square root
  of 2,809.
  
     Set down the number in groups of two digits.
     We define a divisor, a dividend and a quotient to find the root.
     Given 2809. Consider the first group, 28.
  o Find the nearest perfect square below that group.
  o The root of that perfect square is the first digit of our root.
  2
  o Since 28 > 25 and 25 = 5 , we take 5 as the first digit in the square
  root.
  o For the divisor we take double this first digit (2 · 5), which is 10.
     Next, we set up a division framework with a colon.
  o 28: 0 9 is the dividend and 5: is the quotient.
  o We put a colon to the right of 28 and 5 and keep the colons lined up
  vertically. The duplex is calculated only on quotient digits to the right
  of the colon.
     We calculate the remainder. 28: minus 25: is 3:.
  o We append the remainder on the left of the next digit to get the new
  dividend.
  o Here, we append 3 to the next dividend digit 0, which makes the new
  dividend 30. The divisor 10 goes into 30 just 3 times. (No reserve
  needed here for subsequent deductions.)
     We repeat the operation.
  o The zero remainder appended to 9. Nine is the next dividend.
  o   Now we have a digit to the right of the colon so we deduct the duplex,
  32 = 9.
  o   Subtracting this duplex from the dividend 9, we get a zero remainder.
  o   Ten into zero is zero. The next root digit is zero. The next duplex is
  2(3·0) = 0.
  o   The dividend is zero. We have an exact square root, 53.0.
  
  Example 1, analysis and square root framework
  
  Find the square root of 2809.
  Set down the number in groups of two digits.
  The number of groups gives the number of whole digits in the root.
  Put a colon after the first group, 28, to separate it.
  From the first group, 28, we obtain the divisor, 10, since
  28>25=52 and by doubling this first root, 2x5=10.
  Gross dividend:     28: 0 9. Using mental math:
  Divisor: 10)     3 0    Square: 10) 28: 30 9
  Duplex, Deduction:     25: xx 09 Square root: 5:     3. 0
  Dividend:         30 00
  Remainder:      3: 00 00
  Square Root, Quotient:      5: 3. 0
  
  Example 2
  
  Find the square root of 2,080,180,881. Solution by the duplex method: this ten-digit
  square has five digit-pairs, so it will have a five-digit square root. The first digit-pair
  is 20. Put the colon to the right. The nearest square below 20 is 16, whose root is 4,
  the first root digit. So, we use 2·4=8 for the divisor. Now we proceed with the duplex
  division, one digit column at a time. Prefix the remainder to the next dividend digit.
  
  divisor; gross dividend: 8) 20: 8     0  1   8    0   8                     8     1
  read the dividend diagonally up: 4    8   7 11    10 10                     0     8
  minus the duplex:    16: xx 25 60 36      90 108                   00    81
  actual dividend:      : 48 55 11 82      10 00                    08    00
  minus the product:      : 40 48 00 72      00 00                      0   00
  remainder:     4: 8     7 11 10    10   0                     8   00
  quotient:     4: 5, 6     0   9.   0   0                     0     0
  Duplex calculations:
  Quotient-digits ==> Duplex deduction.
  5        ==> 52= 25
  5 and 6 ==> 2(5·6) = 60
  5,6,0    ==> 2(5·0)+62 = 36
  5,6,0,9 ==> 2(5·9)+2(6·0) = 90
  5,6,0,9,0 ==> 2(5·0)+2(6·9)+ 0 = 108
  5,6,0,9,0,0 ==> 2(5·0)+2(6·0)+2(0·9) = 0
  5,6,0,9,0,0,0 ==> 2(5·0)+2(6·0)+2(0·0)+92 = 81
  
  Hence the square root of 2,080,180,881 is exactly 45,609.
  
  ] Example 3
  
  Find the square root of two to ten places. Let us take 20,000 as the beginning group,
  using three digit-pairs at the start. The perfect square just below 20,000 is 141, since
  1412 = 19881 < 20,000. So, the first root digits are 141 and the divisor doubled, 2 x
  141 = 282. With a larger divisor the duplex will be relatively small. Hence, we can
  pick the multiple of the divisor without confusion.
  
  Dividend: 2.0000 :    0               0       0        0       0        0       0
  0
  Diagonal;Divisor: (282) : 1190               620     400    1020     1620     1820      750
  1120
  Minus duplex:         : xxxx             16       16      12      28       53       74
  59
  Actual dividend: 20000 : 1190              604     384    1008     1592     1767      676
  1061
  Minus product: 19881 : 1128              564     282      846    1410     1692      564
  846
  Remainder:     119 :   62             40     102     162      182       75      112
  215
  Root quotient:   1.41 :     4              2        1       3        5       6        2
  3
  
  Ten multiples of 282: 282; 564; 846; 1128; 1410; 1692; 1974; 2256; 2538; 2820.
  
  A two-variable iterative method
  This method is applicable for finding the square root of                     and converges
  best for         . This, however, is no real limitation for a computer based calculation,
  as in base 2 floating point and fixed point representations, it is trivial to multiply by
  an integer power of 4, and therefore         by the corresponding power of 2, by
  changing the exponent or by shifting, respectively. Therefore, one can move to the
  
  range                 . Moreover, the following method does not employ general
  divisions, but only additions, subtractions, multiplications, and divisions by powers of
  two, which are again trivial to implement. A disadvantage of the method is that
  numerical errors accumulate, in contrast to single variable iterative methods such as
  the Babylonian one.
  
  The initialization step of this method is
  
  Then,               (while           ).
  
  Note that the convergence of      , and therefore also of   , is quadratic.
  
  The proof of the method is rather easy. First, we rewrite the iterative definition of
  as
  .
  
  Then it is straightforward to prove by induction that
  
  and therefore the convergence of        to the desired result         is ensured by the
  convergence of    to 0, which in turn follows from                    .
  
  This method was developed around 1950 by M. V. Wilkes, D. J. Wheeler and S.
  Gill[6] for use on EDSAC, one of the first electronic computers[7]. The method was
  later generalized, allowing the computation of non-square roots[8].
  
  Iterative methods for reciprocal square roots
  The following are iterative methods for finding the reciprocal square root of S which
  is          . Once it has been found, we can find             by simple multiplication:
  . These iterations involve only multiplication, and not division.
  They are therefore faster than the Babylonian method. However, they are not stable. If
  the initial value is not close to the reciprocal square root, the iterations will diverge
  away from it rather than converge to it. It can therefore be advantageous to perform an
  iteration of the Babylonian method on a rough estimate before starting to apply these
  methods.
  
     One method is found by applying Newton's method to the equation (1       / x2) −
  S = 0. It converges quadratically:
  
     Another iteration obtained by Halley's method, which is the Householder's
  method of order two, converges cubically, but involves more operations per
  iteration:
  
  Taylor series
  If N is an approximation to        , a better approximation can be found by using the
  Taylor series of the square root function:
  As an iterative method, the order of convergence is equal to the number of terms used.
  With 2 terms, it is identical to the Babylonian method; With 3 terms, each iteration
  takes almost as many operations as the Bakhshali approximation, but converges more
  slowly. Therefore, this is not a particularly efficient way of calculation.
  
  Other methods
  Finding       is the same as solving the equation                 . Therefore, any
  general numerical root-finding algorithm can be used. Newton's method, for example,
  reduces in this case to the Babylonian method. Other methods are less efficient than
  the ones presented above.
  
  A completely different method for computing the square root is based on the
  CORDIC algorithm, which uses only very simple operations (addition, subtraction,
  bitshift and table lookup, but no multiplication).
  
  Continued fraction expansion
  
  Quadratic irrationals (numbers of the form            , where a, b and c are integers),
  and in particular, square roots of integers, have periodic continued fractions.
  Sometimes we may be interested not in finding the numerical value of a square root,
  but rather in its continued fraction expansion. The following iterative algorithm can
  be used for this purpose (S is any natural number which is not a perfect square):
  
  Notice that mn, dn, and an are always integers. The algorithm terminates when this
  triplet is the same as one encountered before. The expansion will repeat from then on.
  The sequence [a0; a1, a2, a3, …] is the continued fraction expansion:
  Example, square root of 114 as a continued fraction
  
  We begin with m0 = 0; d0 = 1; and a0 = 10 (102 = 100 and 112 = 121 > 114 so 10
  chosen).
  
  So, m1 = 10; d1 = 14; and a1 = 1.
  
  Next, m2 = 4; d2 = 7; and a2 = 2.
  
  Now, loop back to the second equation above.
  
  Consequently, the continued fraction for the square root of 114 is
  Pell's equation
  Pell's equation and its variants yield a method for efficiently finding continued
  fraction convergents of square roots of integers. However, it can be complicated to
  execute, and usually not every convergent is generated. The ideas behind the method
  are as follows:
  
     If (p, q) is a solution (where p and q are integers) to the equation
  
  , then is a continued fraction convergent of   , and as
  such, is an excellent rational approximation to it.
     If (pa, qa) and (pb, qb) are solutions, then so is:
  
  (compare to the multiplication of quadratic integers)
  
     More generally, if (p1, q1) is a solution, then it is possible to generate a
  sequence of solutions (pn, qn) satisfying:
  
  The method is as follows:
  
     Find positive integers p1 and q1 such that              . This is the hard
  part; It can be done either by guessing, or by using fairly sophisticated
  techniques.
  
     To generate a long list of convergents, iterate:
  
     To find the larger convergents quickly, iterate:
  
  Notice that the corresponding sequence of fractions coincides with the one
  given by the Hero's method starting with       .
  
     In either case,      is a rational approximation satisfying
  Approximations that depend on IEEE representation
  On computers, a very rapid Newton's-method-based approximation to the square root
  can be obtained for floating point numbers when computers use an IEEE (or
  sufficiently similar) representation.
  
  This technique is based on the fact that the IEEE floating point format approximates
  base-2 logarithm. For example, you can get the approximate logarithm of 32-bit single
  precision floating point number by translating its binary representation as an integer,
  23
  scaling it by 2 , and removing a bias of 127.
  
  For example, 1.0 is represented by a hexadecimal number 0x3F800000, which would
  represent 1065353216 =              if taken as an integer. Using the formula above
  23
  you get 1065353216 / 2 − 127 = 0, as expected from log2(1.0). In a similar
  fashion you get 0.5 from 1.5(0x3FC00000).
  
  In order to get the square root, we can divide the logarithm by 2 and convert the value
  back. The following program demonstrates the idea. Note that we intentionally allow
  the exponent's lowest bit to propagate into the mantissa.
  
  float fastsqrt(float val) {
  union
  {
  int tmp;
  float val;
  } u;
  u.val = val;
  u.tmp -= 1<<23; /* Remove last bit so 1.0 gives 1.0 */
  /* tmp is now an approximation to logbase2(val) */
  u.tmp >>= 1; /* divide by 2 */
  u.tmp += 1<<29; /* add 64 to exponent: (e+127)/2 =(e/2)+63,
  */
  /* that represents (e/2)-64 but we want e/2 */
  return u.val;
  }
  
  In the above, the operations to remove last exponent bit and add the IEEE bias can be
  operation to reduce the maximum relative error. So, the three operations, not
  including the cast, can be rewritten as:
  
  tmp = (1<<29) + (tmp >> 1) - (1<<22) + m;
  
  Where m is a bias for adjusting the approximation errors. For example, with m = 0
  you get accurate results for even powers of 2 (e.g. 1.0), but for other numbers the
  results will be slightly too big (e.g. you get 1.5 for 2.0 instead of 1.414... with 6%
  error). With m = -0x4C000 you get errors between about -3.5% and 3.5%.
  
  If the approximation is to be used for an initial guess for Newton's method to the
  2
  equation (1 / x ) − S = 0, you need to use a reciprocal form shown in the following
  section.
  
  Reciprocal of the square root
  
  A variant of the above routine is included below, which can be used to compute the
  reciprocal of the square root, i.e.        instead, was written by Greg Walsh, and
  implemented into SGI Indigo by Gary Tarolli.[9][10] The integer-shift approximation
  produced a relative error of less than 4%, and the error dropped further to 0.15% with
  one iteration of Newton's method on the following line.[11] In computer graphics it is a
  very efficient way to normalize a vector.
  
  float invSqrt(float x)
  {
  float xhalf = 0.5f*x;
  union
  {
  float x;
  int i;
  } u;
  u.x = x;
  u.i = 0x5f3759df - (u.i >> 1);
  x = u.x * (1.5f - xhalf * u.x * u.x);
  return x;
  }
  
  Some VLSI hardware implements inverse square root using a second degree
  polynomial estimation followed by a Goldschmidt iteration.
  
  ```
  DOCUMENT INFO
  Shared By:
  Categories:
  Tags:
  Stats:
   views: 52 posted: 2/14/2012 language: English pages: 16
distilabel_metadata.role: user
distilabel_metadata.raw_output_q_a_detector_0: The provided text is an extensive document detailing various methods for computing square roots, including the Babylonian method, the method of bisecting intervals, the Bakhshali approximation, the digit-by-digit calculation, the Vedic duplex method, and others. The document also covers iterative methods for reciprocal square roots, the use of Taylor series, and methods based on continued fractions and Pell's equation. Additionally, it includes a section on approximations that depend on IEEE floating-point representation, such as the fast inverse square root algorithm.
  
  The document does not contain a specific question or a question and answer. It is primarily a detailed explanation and description of different methods for computing square roots.
  
  Label: no-question