Cystathionine beta synthase: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Rjwilmsi
m Regulation: Journal cites: using AWB (8010)
 
en>Citation bot
m [443]Tweak: issue, title, doi. Formatted dashes. | fconaway
Line 1: Line 1:
I would like to introduce myself to you, I am Andrew and my spouse doesn't like it at all. Ohio is where her house is. The favorite hobby for him and his kids is to perform lacross and he would never give it up. For years she's been operating as a journey agent.<br><br>Here is my homepage: [http://www.indosfriends.com/profile-253/info/ phone psychic]
The [[cyclic redundancy check]] (CRC) is based on [[Division (mathematics)|division]] in the [[polynomial ring|ring of polynomials]] over the [[finite field]] [[GF(2)]] (the integers [[Modular arithmetic|modulo 2]]), that is, the set of [[polynomial]]s where each [[coefficient]] is either zero or one, and [[arithmetic operations]] wrap around (due to the nature of [[Binary numeral system|binary]] arithmetic).
 
Any string of bits can be interpreted as the coefficients of a '''message polynomial''' of this sort, and to find the CRC, we multiply the message polynomial by <math>x^n</math> and then find the remainder when dividing by the [[Degree of a polynomial|degree]]-<math>n</math> '''generator polynomial'''.  The coefficients of the remainder polynomial are the bits of the CRC.
 
The larger (and more complex) a CRC is, the more its properties resemble a [[hashsum]]. What this means is that a CRC32-MPEG will have many collisions but a CRC40 will have far fewer. CRCs beyond CRC50 are mostly collision free, but not true hashsums.<ref name="diablo">{{Cite web|last=Dillon|first=Matt|date=12 October 1998|title=18.2 million dataset CRC-64 test & Program source|url=http://stuff.mit.edu/afs/sipb/user/kolya/diablo/contrib/crctest/README.html|accessdate=27 April 2013}}</ref>
 
The way hashsums (or hashes) are calculated (versus the methods used to calculate a CRC) mostly renders CRCs incapable of being or behaving like true hashsums. CRCs cannot achieve the [[random oracle]] property that most hashsums possess.
 
==Math==
In general form:
 
:<math>M(x) \cdot x^n = Q(x) \cdot G(x) + R (x) </math>
 
Here <math>M(x)</math> is the original message polynomial and <math>G(x)</math> is the degree-<math>n</math> generator polynomial. The bits of <math>M(x) \cdot x^n</math> are the original message with <math>n</math> zeroes added at the end. The CRC 'checksum' is formed by the coefficients of the remainder polynomial <math>R(x)</math> whose degree is strictly less than <math>n</math>. The quotient polynomial <math>Q(x)</math> is of no interest.
 
In communication, the sender attaches the <math>n</math> bits of R after the original message bits of M, which could be shown to be equivalent to sending out <math>M(x) \cdot x^n - R(x)</math> (the ''codeword''.) The receiver, knowing <math>G(x)</math> and therefore <math>n</math>, separates M from R and repeats the calculation, verifying that the received and computed R are equal.  If they are, then the receiver assumes the received message bits are correct. <!-- The zero-remainder method is found under Variations. -->
 
In practice CRC calculations most closely resemble [[long division]] in binary, except that the subtractions involved do not borrow from more significant digits, and thus become [[exclusive or]] operations.
 
A CRC is a [[checksum]] in a strict mathematical sense, as it can be expressed as the weighted modulo-2 sum of per-bit [[Syndrome decoding#Syndrome decoding|syndrome]]s, but that word is generally reserved more specifically for sums computed using larger moduli, such as 10, 256, or 65535.
 
CRCs can also be used as part of [[error-correcting code]]s, which allow not only the detection of transmission errors, but the reconstruction of the correct message.  These codes are based on closely related mathematical principles.
 
==Polynomial arithmetic modulo 2==
Since the coefficients are constrained to a single bit, any math operation on CRC polynomials must map the coefficients of the result to either zero or one. For example in addition:
 
: <math>(x^3 + x) + (x + 1) = x^3 + 2x + 1 \equiv x^3 + 1 \pmod 2</math>
 
Note that <math>2x</math> becomes zero in the above equation because addition of coefficients is performed modulo 2:
 
: <math>2x = x + x = x\times(1 + 1) \equiv x\times0 = 0 \pmod 2</math>
 
Multiplication is similar:
: <math>(x^2 + x)(x + 1) = x^3 + 2x^2 + x \equiv x^3 + x \pmod 2</math>
 
We can also divide polynomials mod 2 and find the quotient and remainder. For example, suppose we're dividing <math>x^3 + x^2 + x</math> by <math>x + 1</math>. We would find that
 
: <math>\frac{x^3 + x^2 + x}{x+1} = (x^2 + 1) - \frac{1}{x+1}</math>
<!--when you say divide, readers will look for divide sign in the equation. It is confusing to me if there is none.-->
In other words,
 
: <math>(x^3 + x^2 + x) = (x^2 + 1)(x + 1) - 1 \equiv (x^2 + 1)(x + 1) + 1 \pmod 2</math>
 
The division yields a quotient of ''x''<sup>2</sup>&nbsp;+&nbsp;1 with a remainder of −1, which, since it is odd, has a last bit of 1.
 
In the above equations, <math>x^2+x+1</math> represents the original message bits <code>111</code>, <math>x+1</math> is the generator polynomial, and the remainder <math>1</math> (equivalently, <math>x^0</math>) is the CRC.  The degree of the generator polynomial is 1, so we first multiplied the message by <math>x^1</math> to get <math>x^3 + x^2 + x</math>.
 
==Variations==
There are several standard variations on CRCs, any or all of which may be used with any CRC polynomial.  ''Implementation variations'' such as [[endianness]] and CRC presentation only affect the mapping of bit strings to the coefficients of <math>M(x)</math> and <math>R(x)</math>, and do not impact the properties of the algorithm.
*'''To check the CRC, instead of calculating the CRC on the message and comparing it to the CRC, a CRC calculation may be run on the entire codeword.'''  If the result is zero, the check passes.  This works because the codeword is <math>M(x) \cdot x^n - R(x) = Q(x) \cdot G(x)</math>, which is always divisible by <math>G(x)</math>.
 
: This simplifies many implementations by avoiding the need to treat the last few bytes of the message specially when checking CRCs.
*'''The shift register may be initialized with ones instead of zeroes.''' This is equivalent to inverting the first <math>n</math> bits of the message feeding them into the algorithm.  The CRC equation becomes <math>M(x) \cdot x^n + \sum_{i=m}^{m+n-1} x^i = Q(x) \cdot G(x) + R (x)</math>, where <math>m > \deg(M(x))</math> is the length of the message in bits. The change this imposes on <math>R(x)</math> is a function of the generating polynomial and the message length, <math>\left ( \sum_{i=m}^{m+n-1} x^i \right ) \bmod G(x)</math>.
 
: The reason this method is used is because an unmodified CRC does not distinguish between two messages which differ only in the number of leading zeroes, because leading zeroes do not affect the value of <math>M(x)</math>.  When this inversion is done, the CRC does distinguish between such messages.
*'''The CRC may be inverted before being appended to the message stream.'''  While an unmodified CRC distinguishes between messages <math>M(x)</math> with different numbers of trailing zeroes, it does not detect trailing zeroes appended after the CRC remainder itself.  This is because all valid codewords are multiples of <math>G(x)</math>, so <math>x</math> times that codeword is also a multiple.  (In fact, this is precisely why the first variant described above works.)
 
In practice, the last two variations are invariably used together.  They change the transmitted CRC, so must be implemented at both the transmitter and the receiver.  While presetting the shift register to ones is straightforward to do at both ends, inverting affects receivers implementing the first variation, because the CRC of a full codeword that already includes a CRC is no longer zero.  Instead, it is a fixed non-zero pattern, the CRC of the inversion pattern of <math>n</math> ones.
 
The CRC thus may be checked either by the obvious method of computing the CRC on the message, inverting it, and comparing with the CRC in the message stream, or by calculating the CRC on the entire codeword and comparing it with an expected fixed value <math>C(x)</math>, called the check polynomial, residue or [[magic number (programming)|magic number]].  This may be computed as <math>C(x) = \left ( \sum_{i=n}^{2n-1} x^i \right ) \bmod G(x)</math>, or equivalently by computing the unmodified CRC of a message consisting of <math>n</math> ones, <math>M(x) = \sum_{i=0}^{n-1} x^i</math>.
 
These inversions are extremely common but not universally performed, even in the case of the CRC-32 or CRC-16-CCITT polynomials.
 
==Reversed representations and reciprocal polynomials==
===Polynomial representations===
All the well-known CRC generator polynomials of degree <math>n</math> have two common hexadecimal representations.  In both cases, the coefficient of <math>x^n</math> is omitted and understood to be 1.
*The msbit-first representation is a hexadecimal number with <math>n</math> bits, the least significant bit of which is always 1.  The most significant bit represents the coefficient of <math>x^{n-1}</math> and the least significant bit represents the coefficient of <math>x^0</math>.
*The lsbit-first representation is a hexadecimal number with <math>n</math> bits, the most significant bit of which is always 1.  The most significant bit represents the coefficient of <math>x^0</math> and the least significant bit represents the coefficient of <math>x^{n-1}</math>.
 
The msbit-first form is often referred to in the literature as the ''normal'' representation, while the lsbit-first is called the ''reversed'' representation. It is essential to use the correct form when implementing a CRC.  If the coefficient of <math>x^{n-1}</math> happens to be zero, the forms can be distinguished at a glance by seeing which end has the bit set.
 
To further confuse the matter, the paper by P. Koopman and T. Chakravarty <ref name="koop02">{{Cite journal
| last = Koopman | first = Philip
| title = 32-Bit Cyclic Redundancy Codes for Internet Applications
| journal = The International Conference on Dependable Systems and Networks
| year = 2002 | month = July <!-- date from http://www.ece.cmu.edu/~koopman/pubs.html -->
| url = http://www.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf
| accessdate = 14 January 2011
| pages = 459–468
| doi = 10.1109/DSN.2002.1028931
}} - verification of Castagnoli's results by exhaustive search and some new good polynomials
</ref><ref name=koop04>{{Cite journal
| last = Koopman | first = Philip
| last2 = Chakravarty | first2 = Tridib
| title = Cyclic Redundancy Code (CRC) Polynomial Selection For Embedded Networks
| journal = The International Conference on Dependable Systems and Networks
| year = 2004 | month = June <!-- date from http://www.ece.cmu.edu/~koopman/pubs.html -->
| url = http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf
| accessdate = 14 January 2011
| pages = 145–154
| doi = 10.1109/DSN.2004.1311885
}} – analysis of short CRC polynomials for embedded applications
</ref> converts CRC generator polynomials to hexadecimal numbers in yet another way: msbit-first, but including the <math>x^n</math> coefficient and omitting the <math>x^0</math> coefficient.  This "Koopman" representation has the advantage that the degree can be determined from the hexadecimal form and the coefficients are easy to read off in left-to-right order.  However, it is not used anywhere else and is not recommended due to the risk of confusion.
 
===Reciprocal polynomials===
A reciprocal polynomial is created by assigning the <math>x^i</math> through <math>x^0</math> coefficients of one polynomial to the <math>x^0</math> through <math>x^i</math> coefficients of a new polynomial.  That is, the reciprocal of the <math>n</math> bit polynomial <math>G(x)</math> is <math>x^nG(x^{-1})</math>.  Example: The reverse of <math>x^{16} + x^{15} + x^2 + 1</math> is <math>x^{16} + x^{14} + x^1 + 1</math>.  The most interesting property of reciprocal polynomials, when used in CRCs, is that they have exactly the same error-detecting strength as the polynomials they are reciprocals of.  The reciprocal of a polynomial generates the same ''codewords'', only bit reversed &mdash; that is, if all but the first <math>n</math> bits of a codeword under the original polynomial are taken, reversed and used as a new message, the CRC of that message under the reciprocal polynomial equals the reverse of the first <math>n</math> bits of the original codeword.  But the reciprocal polynomial is not the same as the original polynomial, and the CRCs generated using it are not the same (even modulo bit reversal) as those generated by the original polynomial.
 
==Error detection strength==
The error-detection ability of a CRC depends on the degree of its key polynomial and on the specific key polynomial used.  The "error polynomial" <math>E(x)</math> is the symmetric difference of the received message codeword and the correct message codeword.  An error will go undetected by a CRC algorithm if and only if the error polynomial is divisible by the CRC polynomial.
*Because a CRC is based on division, no polynomial can detect errors consisting of a string of zeroes prepended to the data, or of missing leading zeroes.  However, see [[#Variations|Variations]].
*All single bit errors will be detected by any polynomial with at least two terms with non-zero coefficients.  The error polynomial is <math>x^k</math>, and <math>x^k</math> is divisible only by polynomials <math>x^i</math> where <math>i \le k</math>.
*All two bit errors separated by a distance less than the [[order (group theory)|order]] of the ''primitive polynomial which is a factor of the generator polynomial'' will be detected.  The error polynomial in the two bit case is <math>E(x) = x^i + x^k = x^k \cdot (x^{i-k} + 1), \; i > k</math>.  As noted above, the <math>x^k</math> term will not be divisible by the CRC polynomial, which leaves the <math>x^{i-k} + 1</math> term. By definition, the smallest value of <math>{i-k}</math> such that a polynomial divides <math>x^{i-k} + 1</math> is the polynomial's order ''or exponent''.  The polynomials with the largest order are called [[primitive polynomial (field theory)|primitive polynomial]]s, and for polynomials of degree <math>n</math> with binary coefficients, have order <math>2^n - 1</math>.
*All errors in an odd number of bits will be detected by a polynomial which is a multiple of <math>x+1</math>.  This is equivalent to the polynomial having an even number of terms with non-zero coefficients. ''This capacity assumes that the generator polynomial is the product of <math>x+1</math> and a primitive polynomial of degree <math>n-i</math> since all primitive polynomials except <math>x+1</math> have an odd number of non-zero coefficients.''
*All [[error burst|burst errors]] of length <math>n</math> will be detected by any polynomial of degree <math>n</math> or greater which has a non-zero <math>x^0</math> term.
(As an aside, there is never reason to use a polynomial with a zero <math>x^0</math> term.  Recall that a CRC is the remainder of the message polynomial times x^n divided by the CRC polynomial.  A polynomial with a zero <math>x^0</math> term always has <math>x</math> as a factor. So if <math>K(x)</math> is the original CRC polynomial and <math>K(x) = x \cdot K'(x)</math>, then
 
: <math>M(x) \cdot x^{n-1} = Q(x) \cdot K'(x) + R(x)</math>
 
: <math>M(x) \cdot x^n = Q(x) \cdot x \cdot K'(x^n) + x \cdot R(x)</math>
 
: <math>M(x) \cdot x^n = Q(x) \cdot K(x^n) + x \cdot R(x)</math>
 
That is, the CRC of any message with the <math>K(x)</math> polynomial is the same as that of the same message with the <math>K'(x)</math> polynomial with a zero appended.  It is just a waste of a bit.)
 
The combination of these factors means that good CRC polynomials are often primitive polynomials (which have the best 2-bit error detection) or primitive polynomials of degree <math>n-1</math>, multiplied by <math>x+1</math> (which detects all odd numbers of bit errors, and has half the two-bit error detection ability of a primitive polynomial of degree <math>n</math>).<ref name="koop02"/>
 
===Bitfilters===
Analysis Technique using bitfilters<ref name="koop02"/> allows one to very efficiently determine the properties of a given generator polynomial.  The results are the following:
 
# All burst errors (but one) with length no longer than the generator polynomial can be detected by any generator polynomial <math>1+\cdots+X^n</math>. This includes 1-bit errors (burst of length 1). The maximum length is <math>n+1</math>, when <math>n</math> is the degree of the generator polynomial (which itself has a length of <math>n+1</math>). The exception to this result is a bit pattern the same as that of the generator polynomial.
# All uneven bit errors are detected by generator polynomials with even number of terms.
# 2-bit errors in a (multiple) distance of the longest bitfilter of even parity to a generator polynomial are not detected; all others are detected. For degrees up to 32 there is an optimal generator polynomial with that degree and even number of terms; in this case the period mentioned above is <math>2^{n-1}-1</math>. For <math>n=16</math> this means that blocks of 32767 bits length do not contain undiscovered 2-bit errors. For uneven number of terms in the generator polynomial there can be a period of <math>2^n-1</math>; however, these generator polynomials (with odd number of terms) do not discover all odd number of errors, so they should be avoided. A list of the corresponding generators with even number of terms can be found in the link mentioned at the beginning of this section.
# All single bit errors within the bitfilter period mentioned above (for even terms in the generator polynomial) can be identified uniquely by their residual. So CRC method can be used to correct single-bit errors as well (within those limits, e.g. 32767 bits with optimal generator polynomials of degree 16). Since all odd errors leave an odd residual, all even an even residual, 1-bit errors and 2-bit errors can be distinguished. However, like other [[SECDED]] techniques, CRCs cannot always distinguish between 1-bit errors and 3-bit errors. When 3 or more bit errors occur in a block, CRC bit error correction will be erroneous itself and produce more errors.
 
==See also==
*[[Error correcting code]]
*[[List of checksum algorithms]]
*[[Parity (telecommunication)]]
*[[Polynomial representations of cyclic redundancy checks]]
 
==References==
<references />
 
{{DEFAULTSORT:Mathematics Of Crc}}
[[Category:Checksum algorithms]]
[[Category:Finite fields]]
 
[[bg:CRC]]
[[ca:Control de redundància cíclica]]
[[cs:Cyklický redundantní součet]]
[[de:Zyklische Redundanzprüfung]]
[[es:Control de redundancia cíclica]]
[[fr:Contrôle de redondance cyclique]]
[[ko:순환 중복 검사]]
[[id:CRC]]
[[it:Cyclic redundancy check]]
[[he:Cyclic redundancy check]]
[[nl:Cyclic Redundancy Check]]
[[ja:巡回冗長検査]]
[[pl:CRC]]
[[pt:CRC]]
[[ru:CRC]]
[[fi:CRC]]
[[sv:Cyclic Redundancy Check]]
[[vi:CRC]]
[[zh:循环冗余校验]]

Revision as of 00:34, 19 August 2013

The cyclic redundancy check (CRC) is based on division in the ring of polynomials over the finite field GF(2) (the integers modulo 2), that is, the set of polynomials where each coefficient is either zero or one, and arithmetic operations wrap around (due to the nature of binary arithmetic).

Any string of bits can be interpreted as the coefficients of a message polynomial of this sort, and to find the CRC, we multiply the message polynomial by xn and then find the remainder when dividing by the degree-n generator polynomial. The coefficients of the remainder polynomial are the bits of the CRC.

The larger (and more complex) a CRC is, the more its properties resemble a hashsum. What this means is that a CRC32-MPEG will have many collisions but a CRC40 will have far fewer. CRCs beyond CRC50 are mostly collision free, but not true hashsums.[1]

The way hashsums (or hashes) are calculated (versus the methods used to calculate a CRC) mostly renders CRCs incapable of being or behaving like true hashsums. CRCs cannot achieve the random oracle property that most hashsums possess.

Math

In general form:

M(x)xn=Q(x)G(x)+R(x)

Here M(x) is the original message polynomial and G(x) is the degree-n generator polynomial. The bits of M(x)xn are the original message with n zeroes added at the end. The CRC 'checksum' is formed by the coefficients of the remainder polynomial R(x) whose degree is strictly less than n. The quotient polynomial Q(x) is of no interest.

In communication, the sender attaches the n bits of R after the original message bits of M, which could be shown to be equivalent to sending out M(x)xnR(x) (the codeword.) The receiver, knowing G(x) and therefore n, separates M from R and repeats the calculation, verifying that the received and computed R are equal. If they are, then the receiver assumes the received message bits are correct.

In practice CRC calculations most closely resemble long division in binary, except that the subtractions involved do not borrow from more significant digits, and thus become exclusive or operations.

A CRC is a checksum in a strict mathematical sense, as it can be expressed as the weighted modulo-2 sum of per-bit syndromes, but that word is generally reserved more specifically for sums computed using larger moduli, such as 10, 256, or 65535.

CRCs can also be used as part of error-correcting codes, which allow not only the detection of transmission errors, but the reconstruction of the correct message. These codes are based on closely related mathematical principles.

Polynomial arithmetic modulo 2

Since the coefficients are constrained to a single bit, any math operation on CRC polynomials must map the coefficients of the result to either zero or one. For example in addition:

(x3+x)+(x+1)=x3+2x+1x3+1(mod2)

Note that 2x becomes zero in the above equation because addition of coefficients is performed modulo 2:

2x=x+x=x×(1+1)x×0=0(mod2)

Multiplication is similar:

(x2+x)(x+1)=x3+2x2+xx3+x(mod2)

We can also divide polynomials mod 2 and find the quotient and remainder. For example, suppose we're dividing x3+x2+x by x+1. We would find that

x3+x2+xx+1=(x2+1)1x+1

In other words,

(x3+x2+x)=(x2+1)(x+1)1(x2+1)(x+1)+1(mod2)

The division yields a quotient of x2 + 1 with a remainder of −1, which, since it is odd, has a last bit of 1.

In the above equations, x2+x+1 represents the original message bits 111, x+1 is the generator polynomial, and the remainder 1 (equivalently, x0) is the CRC. The degree of the generator polynomial is 1, so we first multiplied the message by x1 to get x3+x2+x.

Variations

There are several standard variations on CRCs, any or all of which may be used with any CRC polynomial. Implementation variations such as endianness and CRC presentation only affect the mapping of bit strings to the coefficients of M(x) and R(x), and do not impact the properties of the algorithm.

  • To check the CRC, instead of calculating the CRC on the message and comparing it to the CRC, a CRC calculation may be run on the entire codeword. If the result is zero, the check passes. This works because the codeword is M(x)xnR(x)=Q(x)G(x), which is always divisible by G(x).
This simplifies many implementations by avoiding the need to treat the last few bytes of the message specially when checking CRCs.
The reason this method is used is because an unmodified CRC does not distinguish between two messages which differ only in the number of leading zeroes, because leading zeroes do not affect the value of M(x). When this inversion is done, the CRC does distinguish between such messages.
  • The CRC may be inverted before being appended to the message stream. While an unmodified CRC distinguishes between messages M(x) with different numbers of trailing zeroes, it does not detect trailing zeroes appended after the CRC remainder itself. This is because all valid codewords are multiples of G(x), so x times that codeword is also a multiple. (In fact, this is precisely why the first variant described above works.)

In practice, the last two variations are invariably used together. They change the transmitted CRC, so must be implemented at both the transmitter and the receiver. While presetting the shift register to ones is straightforward to do at both ends, inverting affects receivers implementing the first variation, because the CRC of a full codeword that already includes a CRC is no longer zero. Instead, it is a fixed non-zero pattern, the CRC of the inversion pattern of n ones.

The CRC thus may be checked either by the obvious method of computing the CRC on the message, inverting it, and comparing with the CRC in the message stream, or by calculating the CRC on the entire codeword and comparing it with an expected fixed value C(x), called the check polynomial, residue or magic number. This may be computed as C(x)=(i=n2n1xi)modG(x), or equivalently by computing the unmodified CRC of a message consisting of n ones, M(x)=i=0n1xi.

These inversions are extremely common but not universally performed, even in the case of the CRC-32 or CRC-16-CCITT polynomials.

Reversed representations and reciprocal polynomials

Polynomial representations

All the well-known CRC generator polynomials of degree n have two common hexadecimal representations. In both cases, the coefficient of xn is omitted and understood to be 1.

  • The msbit-first representation is a hexadecimal number with n bits, the least significant bit of which is always 1. The most significant bit represents the coefficient of xn1 and the least significant bit represents the coefficient of x0.
  • The lsbit-first representation is a hexadecimal number with n bits, the most significant bit of which is always 1. The most significant bit represents the coefficient of x0 and the least significant bit represents the coefficient of xn1.

The msbit-first form is often referred to in the literature as the normal representation, while the lsbit-first is called the reversed representation. It is essential to use the correct form when implementing a CRC. If the coefficient of xn1 happens to be zero, the forms can be distinguished at a glance by seeing which end has the bit set.

To further confuse the matter, the paper by P. Koopman and T. Chakravarty [2][3] converts CRC generator polynomials to hexadecimal numbers in yet another way: msbit-first, but including the xn coefficient and omitting the x0 coefficient. This "Koopman" representation has the advantage that the degree can be determined from the hexadecimal form and the coefficients are easy to read off in left-to-right order. However, it is not used anywhere else and is not recommended due to the risk of confusion.

Reciprocal polynomials

A reciprocal polynomial is created by assigning the xi through x0 coefficients of one polynomial to the x0 through xi coefficients of a new polynomial. That is, the reciprocal of the n bit polynomial G(x) is xnG(x1). Example: The reverse of x16+x15+x2+1 is x16+x14+x1+1. The most interesting property of reciprocal polynomials, when used in CRCs, is that they have exactly the same error-detecting strength as the polynomials they are reciprocals of. The reciprocal of a polynomial generates the same codewords, only bit reversed — that is, if all but the first n bits of a codeword under the original polynomial are taken, reversed and used as a new message, the CRC of that message under the reciprocal polynomial equals the reverse of the first n bits of the original codeword. But the reciprocal polynomial is not the same as the original polynomial, and the CRCs generated using it are not the same (even modulo bit reversal) as those generated by the original polynomial.

Error detection strength

The error-detection ability of a CRC depends on the degree of its key polynomial and on the specific key polynomial used. The "error polynomial" E(x) is the symmetric difference of the received message codeword and the correct message codeword. An error will go undetected by a CRC algorithm if and only if the error polynomial is divisible by the CRC polynomial.

  • Because a CRC is based on division, no polynomial can detect errors consisting of a string of zeroes prepended to the data, or of missing leading zeroes. However, see Variations.
  • All single bit errors will be detected by any polynomial with at least two terms with non-zero coefficients. The error polynomial is xk, and xk is divisible only by polynomials xi where ik.
  • All two bit errors separated by a distance less than the order of the primitive polynomial which is a factor of the generator polynomial will be detected. The error polynomial in the two bit case is E(x)=xi+xk=xk(xik+1),i>k. As noted above, the xk term will not be divisible by the CRC polynomial, which leaves the xik+1 term. By definition, the smallest value of ik such that a polynomial divides xik+1 is the polynomial's order or exponent. The polynomials with the largest order are called primitive polynomials, and for polynomials of degree n with binary coefficients, have order 2n1.
  • All errors in an odd number of bits will be detected by a polynomial which is a multiple of x+1. This is equivalent to the polynomial having an even number of terms with non-zero coefficients. This capacity assumes that the generator polynomial is the product of x+1 and a primitive polynomial of degree ni since all primitive polynomials except x+1 have an odd number of non-zero coefficients.
  • All burst errors of length n will be detected by any polynomial of degree n or greater which has a non-zero x0 term.

(As an aside, there is never reason to use a polynomial with a zero x0 term. Recall that a CRC is the remainder of the message polynomial times x^n divided by the CRC polynomial. A polynomial with a zero x0 term always has x as a factor. So if K(x) is the original CRC polynomial and K(x)=xK(x), then

M(x)xn1=Q(x)K(x)+R(x)
M(x)xn=Q(x)xK(xn)+xR(x)
M(x)xn=Q(x)K(xn)+xR(x)

That is, the CRC of any message with the K(x) polynomial is the same as that of the same message with the K(x) polynomial with a zero appended. It is just a waste of a bit.)

The combination of these factors means that good CRC polynomials are often primitive polynomials (which have the best 2-bit error detection) or primitive polynomials of degree n1, multiplied by x+1 (which detects all odd numbers of bit errors, and has half the two-bit error detection ability of a primitive polynomial of degree n).[2]

Bitfilters

Analysis Technique using bitfilters[2] allows one to very efficiently determine the properties of a given generator polynomial. The results are the following:

  1. All burst errors (but one) with length no longer than the generator polynomial can be detected by any generator polynomial 1++Xn. This includes 1-bit errors (burst of length 1). The maximum length is n+1, when n is the degree of the generator polynomial (which itself has a length of n+1). The exception to this result is a bit pattern the same as that of the generator polynomial.
  2. All uneven bit errors are detected by generator polynomials with even number of terms.
  3. 2-bit errors in a (multiple) distance of the longest bitfilter of even parity to a generator polynomial are not detected; all others are detected. For degrees up to 32 there is an optimal generator polynomial with that degree and even number of terms; in this case the period mentioned above is 2n11. For n=16 this means that blocks of 32767 bits length do not contain undiscovered 2-bit errors. For uneven number of terms in the generator polynomial there can be a period of 2n1; however, these generator polynomials (with odd number of terms) do not discover all odd number of errors, so they should be avoided. A list of the corresponding generators with even number of terms can be found in the link mentioned at the beginning of this section.
  4. All single bit errors within the bitfilter period mentioned above (for even terms in the generator polynomial) can be identified uniquely by their residual. So CRC method can be used to correct single-bit errors as well (within those limits, e.g. 32767 bits with optimal generator polynomials of degree 16). Since all odd errors leave an odd residual, all even an even residual, 1-bit errors and 2-bit errors can be distinguished. However, like other SECDED techniques, CRCs cannot always distinguish between 1-bit errors and 3-bit errors. When 3 or more bit errors occur in a block, CRC bit error correction will be erroneous itself and produce more errors.

See also

References

  1. Template:Cite web
  2. 2.0 2.1 2.2 One of the biggest reasons investing in a Singapore new launch is an effective things is as a result of it is doable to be lent massive quantities of money at very low interest rates that you should utilize to purchase it. Then, if property values continue to go up, then you'll get a really high return on funding (ROI). Simply make sure you purchase one of the higher properties, reminiscent of the ones at Fernvale the Riverbank or any Singapore landed property Get Earnings by means of Renting

    In its statement, the singapore property listing - website link, government claimed that the majority citizens buying their first residence won't be hurt by the new measures. Some concessions can even be prolonged to chose teams of consumers, similar to married couples with a minimum of one Singaporean partner who are purchasing their second property so long as they intend to promote their first residential property. Lower the LTV limit on housing loans granted by monetary establishments regulated by MAS from 70% to 60% for property purchasers who are individuals with a number of outstanding housing loans on the time of the brand new housing purchase. Singapore Property Measures - 30 August 2010 The most popular seek for the number of bedrooms in Singapore is 4, followed by 2 and three. Lush Acres EC @ Sengkang

    Discover out more about real estate funding in the area, together with info on international funding incentives and property possession. Many Singaporeans have been investing in property across the causeway in recent years, attracted by comparatively low prices. However, those who need to exit their investments quickly are likely to face significant challenges when trying to sell their property – and could finally be stuck with a property they can't sell. Career improvement programmes, in-house valuation, auctions and administrative help, venture advertising and marketing, skilled talks and traisning are continuously planned for the sales associates to help them obtain better outcomes for his or her shoppers while at Knight Frank Singapore. No change Present Rules

    Extending the tax exemption would help. The exemption, which may be as a lot as $2 million per family, covers individuals who negotiate a principal reduction on their existing mortgage, sell their house short (i.e., for lower than the excellent loans), or take part in a foreclosure course of. An extension of theexemption would seem like a common-sense means to assist stabilize the housing market, but the political turmoil around the fiscal-cliff negotiations means widespread sense could not win out. Home Minority Chief Nancy Pelosi (D-Calif.) believes that the mortgage relief provision will be on the table during the grand-cut price talks, in response to communications director Nadeam Elshami. Buying or promoting of blue mild bulbs is unlawful.

    A vendor's stamp duty has been launched on industrial property for the primary time, at rates ranging from 5 per cent to 15 per cent. The Authorities might be trying to reassure the market that they aren't in opposition to foreigners and PRs investing in Singapore's property market. They imposed these measures because of extenuating components available in the market." The sale of new dual-key EC models will even be restricted to multi-generational households only. The models have two separate entrances, permitting grandparents, for example, to dwell separately. The vendor's stamp obligation takes effect right this moment and applies to industrial property and plots which might be offered inside three years of the date of buy. JLL named Best Performing Property Brand for second year running

    The data offered is for normal info purposes only and isn't supposed to be personalised investment or monetary advice. Motley Fool Singapore contributor Stanley Lim would not personal shares in any corporations talked about. Singapore private home costs increased by 1.eight% within the fourth quarter of 2012, up from 0.6% within the earlier quarter. Resale prices of government-built HDB residences which are usually bought by Singaporeans, elevated by 2.5%, quarter on quarter, the quickest acquire in five quarters. And industrial property, prices are actually double the levels of three years ago. No withholding tax in the event you sell your property. All your local information regarding vital HDB policies, condominium launches, land growth, commercial property and more

    There are various methods to go about discovering the precise property. Some local newspapers (together with the Straits Instances ) have categorised property sections and many local property brokers have websites. Now there are some specifics to consider when buying a 'new launch' rental. Intended use of the unit Every sale begins with 10 p.c low cost for finish of season sale; changes to 20 % discount storewide; follows by additional reduction of fiftyand ends with last discount of 70 % or extra. Typically there is even a warehouse sale or transferring out sale with huge mark-down of costs for stock clearance. Deborah Regulation from Expat Realtor shares her property market update, plus prime rental residences and houses at the moment available to lease Esparina EC @ Sengkang - verification of Castagnoli's results by exhaustive search and some new good polynomials
  3. One of the biggest reasons investing in a Singapore new launch is an effective things is as a result of it is doable to be lent massive quantities of money at very low interest rates that you should utilize to purchase it. Then, if property values continue to go up, then you'll get a really high return on funding (ROI). Simply make sure you purchase one of the higher properties, reminiscent of the ones at Fernvale the Riverbank or any Singapore landed property Get Earnings by means of Renting

    In its statement, the singapore property listing - website link, government claimed that the majority citizens buying their first residence won't be hurt by the new measures. Some concessions can even be prolonged to chose teams of consumers, similar to married couples with a minimum of one Singaporean partner who are purchasing their second property so long as they intend to promote their first residential property. Lower the LTV limit on housing loans granted by monetary establishments regulated by MAS from 70% to 60% for property purchasers who are individuals with a number of outstanding housing loans on the time of the brand new housing purchase. Singapore Property Measures - 30 August 2010 The most popular seek for the number of bedrooms in Singapore is 4, followed by 2 and three. Lush Acres EC @ Sengkang

    Discover out more about real estate funding in the area, together with info on international funding incentives and property possession. Many Singaporeans have been investing in property across the causeway in recent years, attracted by comparatively low prices. However, those who need to exit their investments quickly are likely to face significant challenges when trying to sell their property – and could finally be stuck with a property they can't sell. Career improvement programmes, in-house valuation, auctions and administrative help, venture advertising and marketing, skilled talks and traisning are continuously planned for the sales associates to help them obtain better outcomes for his or her shoppers while at Knight Frank Singapore. No change Present Rules

    Extending the tax exemption would help. The exemption, which may be as a lot as $2 million per family, covers individuals who negotiate a principal reduction on their existing mortgage, sell their house short (i.e., for lower than the excellent loans), or take part in a foreclosure course of. An extension of theexemption would seem like a common-sense means to assist stabilize the housing market, but the political turmoil around the fiscal-cliff negotiations means widespread sense could not win out. Home Minority Chief Nancy Pelosi (D-Calif.) believes that the mortgage relief provision will be on the table during the grand-cut price talks, in response to communications director Nadeam Elshami. Buying or promoting of blue mild bulbs is unlawful.

    A vendor's stamp duty has been launched on industrial property for the primary time, at rates ranging from 5 per cent to 15 per cent. The Authorities might be trying to reassure the market that they aren't in opposition to foreigners and PRs investing in Singapore's property market. They imposed these measures because of extenuating components available in the market." The sale of new dual-key EC models will even be restricted to multi-generational households only. The models have two separate entrances, permitting grandparents, for example, to dwell separately. The vendor's stamp obligation takes effect right this moment and applies to industrial property and plots which might be offered inside three years of the date of buy. JLL named Best Performing Property Brand for second year running

    The data offered is for normal info purposes only and isn't supposed to be personalised investment or monetary advice. Motley Fool Singapore contributor Stanley Lim would not personal shares in any corporations talked about. Singapore private home costs increased by 1.eight% within the fourth quarter of 2012, up from 0.6% within the earlier quarter. Resale prices of government-built HDB residences which are usually bought by Singaporeans, elevated by 2.5%, quarter on quarter, the quickest acquire in five quarters. And industrial property, prices are actually double the levels of three years ago. No withholding tax in the event you sell your property. All your local information regarding vital HDB policies, condominium launches, land growth, commercial property and more

    There are various methods to go about discovering the precise property. Some local newspapers (together with the Straits Instances ) have categorised property sections and many local property brokers have websites. Now there are some specifics to consider when buying a 'new launch' rental. Intended use of the unit Every sale begins with 10 p.c low cost for finish of season sale; changes to 20 % discount storewide; follows by additional reduction of fiftyand ends with last discount of 70 % or extra. Typically there is even a warehouse sale or transferring out sale with huge mark-down of costs for stock clearance. Deborah Regulation from Expat Realtor shares her property market update, plus prime rental residences and houses at the moment available to lease Esparina EC @ Sengkang – analysis of short CRC polynomials for embedded applications

bg:CRC ca:Control de redundància cíclica cs:Cyklický redundantní součet de:Zyklische Redundanzprüfung es:Control de redundancia cíclica fr:Contrôle de redondance cyclique ko:순환 중복 검사 id:CRC it:Cyclic redundancy check he:Cyclic redundancy check nl:Cyclic Redundancy Check ja:巡回冗長検査 pl:CRC pt:CRC ru:CRC fi:CRC sv:Cyclic Redundancy Check vi:CRC zh:循环冗余校验