• No results found

An introduction to error correcting codes

N/A
N/A
Protected

Academic year: 2022

Share "An introduction to error correcting codes"

Copied!
52
0
0

Loading.... (view fulltext now)

Full text

(1)

An introduction to error correcting codes

Mathematics sin fronteras

Mar´ıa Chara

Universidad Nacional del Litoral

May 19, 2021

(2)

Mariner 9, 1971

Figure:https://en.wikipedia.org/wiki/Mariner 9

(3)

Mariner 9, 1971

(4)

Coding and decoding with the generator matrix

If B = {v1, . . . , vk} is a basis of an [n, k] code C, we define thegenerator matrixGof the code as the matrix Gk×nfor which the rows are the vectors viof the base.

For an [n, k] code C over Fqwe can encode using the generator matrix G:

Fkq −→ Fnq

u → c = uG

Example: Mariner 9

u = (a1, a2, . . . , a6) −→ c = (c1, c2, . . . , c32)

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

(5)

Coding and decoding with the generator matrix

If B = {v1, . . . , vk} is a basis of an [n, k] code C, we define thegenerator matrixGof the code as the matrix Gk×nfor which the rows are the vectors viof the base.

For an [n, k] code C over Fqwe can encode using the generator matrix G:

Fkq −→ Fnq

u → c = uG

Example: Mariner 9

u = (a1, a2, . . . , a6) −→ c = (c1, c2, . . . , c32)

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

(6)

Coding and decoding with the generator matrix

If B = {v1, . . . , vk} is a basis of an [n, k] code C, we define thegenerator matrixGof the code as the matrix Gk×nfor which the rows are the vectors viof the base.

For an [n, k] code C over Fqwe can encode using the generator matrix G:

Fkq −→ Fnq

u → c = uG

Example: Mariner 9

u = (a1, a2, . . . , a6) −→ c = (c1, c2, . . . , c32)

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

(7)

Coding and decoding with the generator matrix

If G is on standard form, i.e. G = (Ik|A), then decoding is trivial since u ∈ Fkq −→ c = uG = (u|uA) ∈ Fnq −→ u = c|

Fk q ∈ Fkq.

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

How can we detect if a word has been transmitted with an error?

(8)

Coding and decoding with the generator matrix

If G is on standard form, i.e. G = (Ik|A), then decoding is trivial since u ∈ Fkq −→ c = uG = (u|uA) ∈ Fnq −→ u = c|

Fk q ∈ Fkq.

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

How can we detect if a word has been transmitted with an error?

(9)

Coding and decoding with the generator matrix

If G is on standard form, i.e. G = (Ik|A), then decoding is trivial since u ∈ Fkq −→ c = uG = (u|uA) ∈ Fnq −→ u = c|

Fk q ∈ Fkq.

Example: G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

How can we detect if a word has been transmitted with an error?

(10)

Parity check matrix and the dual code

The canonical inner product on Fnq is defined by

ha, bi =

n

X

i=1

aibi,

for a = (a1, . . . , an)and b = (b1, . . . , bn)in Fnq.

If C ⊆ Fnq is a code then

C= {u ∈ Fnq : hu, ci = 0for all c ∈ C} is calledthe dualof C.

The code C is calledself-dualif C= C.

Proposition

If C is an [n, k] code over Fqthen Cis an [n, n − k] code over Fq.

(11)

Parity check matrix and the dual code

The canonical inner product on Fnq is defined by

ha, bi =

n

X

i=1

aibi,

for a = (a1, . . . , an)and b = (b1, . . . , bn)in Fnq.

If C ⊆ Fnq is a code then

C= {u ∈ Fnq : hu, ci = 0for all c ∈ C}

is calledthe dualof C.

The code C is calledself-dualif C= C.

Proposition

If C is an [n, k] code over Fqthen Cis an [n, n − k] code over Fq.

(12)

Parity check matrix and the dual code

The canonical inner product on Fnq is defined by

ha, bi =

n

X

i=1

aibi,

for a = (a1, . . . , an)and b = (b1, . . . , bn)in Fnq.

If C ⊆ Fnq is a code then

C= {u ∈ Fnq : hu, ci = 0for all c ∈ C}

is calledthe dualof C.

The code C is calledself-dualif C= C.

Proposition

If C is an [n, k] code over Fqthen Cis an [n, n − k] code over Fq.

(13)

Parity check matrix and the dual code

The canonical inner product on Fnq is defined by

ha, bi =

n

X

i=1

aibi,

for a = (a1, . . . , an)and b = (b1, . . . , bn)in Fnq.

If C ⊆ Fnq is a code then

C= {u ∈ Fnq : hu, ci = 0for all c ∈ C}

is calledthe dualof C.

The code C is calledself-dualif C= C.

Proposition

If C is an [n, k] code over Fqthen Cis an [n, n − k] code over Fq.

(14)

Parity check matrix and the dual code

A generator matrix H of Cis said to be aparity check matrixfor C. Clearly His an(n − k) × n matrix.

A parity check matrix H ’checks’ whether a vector u ∈ Fnq is a codeword or not since

x ∈ C ⇐⇒ HxT = 0.

If the generator matrix G of a code C is in standard form, i.e, G = (Ik|A)

then a parity check matrix for C is

H = (−AT|In−k) where In−kis the identity matrix of size n − k.

A matrix H of this form is said to be instandard form as a parity check matrix(although is not in standard form as a generator matrix of C).

(15)

Parity check matrix and the dual code

A generator matrix H of Cis said to be aparity check matrixfor C. Clearly His an(n − k) × n matrix.

A parity check matrix H ’checks’ whether a vector u ∈ Fnq is a codeword or not since

x ∈ C ⇐⇒ HxT = 0.

If the generator matrix G of a code C is in standard form, i.e, G = (Ik|A)

then a parity check matrix for C is

H = (−AT|In−k) where In−kis the identity matrix of size n − k.

A matrix H of this form is said to be instandard form as a parity check matrix(although is not in standard form as a generator matrix of C).

(16)

Parity check matrix and the dual code

A generator matrix H of Cis said to be aparity check matrixfor C. Clearly His an(n − k) × n matrix.

A parity check matrix H ’checks’ whether a vector u ∈ Fnq is a codeword or not since

x ∈ C ⇐⇒ HxT = 0.

If the generator matrix G of a code C is in standard form, i.e, G = (Ik|A)

then a parity check matrix for C is

H = (−AT|In−k) where In−kis the identity matrix of size n − k.

A matrix H of this form is said to be instandard form as a parity check matrix(although is not in standard form as a generator matrix of C).

(17)

Parity check matrix and the dual code

A generator matrix H of Cis said to be aparity check matrixfor C. Clearly His an(n − k) × n matrix.

A parity check matrix H ’checks’ whether a vector u ∈ Fnq is a codeword or not since

x ∈ C ⇐⇒ HxT = 0.

If the generator matrix G of a code C is in standard form, i.e, G = (Ik|A)

then a parity check matrix for C is

H = (−AT|In−k) where In−kis the identity matrix of size n − k.

A matrix H of this form is said to be instandard form as a parity check matrix(although is not in standard form as a generator matrix of C).

(18)

Example

G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

(19)

Error correction

Definition

If C is an [n, k] code over Fqand H is a parity check matrix for C, then for any word y ∈ Fnq the syndrome of y is defined by S(y) = yHT.

y ∈ Cif and only if S(y) = 0.

If y 6∈ C then y is corrected as y − e where S(y) = S(e).

(20)

Definition

If C is an [n, k] code over Fq and a ∈ Fnq, the left coset a + C is defined as a + C = {a + x : x ∈ C}.

C ⊂ Fnq is a vector space The quotient

Fnq/C = {a + C : a ∈ Fnq} is a vector space

α(a + C) = αa + C (a + C) + (b + C) = (a + b) + C where α ∈ Fqand a, b ∈ Fnq,

|Fnq/C| = |Fnq|/|C| = qn/qk= qn−k.

(21)

Definition

If C is an [n, k] code over Fq and a ∈ Fnq, the left coset a + C is defined as a + C = {a + x : x ∈ C}.

C ⊂ Fnq is a vector space The quotient

Fnq/C = {a + C : a ∈ Fnq} is a vector space

α(a + C) = αa + C (a + C) + (b + C) = (a + b) + C where α ∈ Fqand a, b ∈ Fnq,

|Fnq/C| = |Fnq|/|C| = qn/qk= qn−k.

(22)

Definition

If C is an [n, k] code over Fq and a ∈ Fnq, the left coset a + C is defined as a + C = {a + x : x ∈ C}.

C ⊂ Fnq is a vector space The quotient

Fnq/C = {a + C : a ∈ Fnq} is a vector space

α(a + C) = αa + C (a + C) + (b + C) = (a + b) + C where α ∈ Fqand a, b ∈ Fnq,

|Fnq/C| = |Fnq|/|C| = qn/qk= qn−k.

(23)

Theorem

Every word of Fnq belongs to exactly one left coset of C. Two cosets are either disjoint or identical.

There are qn−kdisjoint cosets (with qkwords).

The coset leader is any word in the coset of minimum weight.

To perform error correction we can construct a table with all the coset leaders and their syndromes.

(24)

Example

G =

1 0 0 0 1 1

0 1 0 1 0 1

0 0 1 1 1 0

 H =

0 1 1 1 0 0

1 0 1 0 1 0

1 1 0 0 0 1

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

(25)

Example

C = {(000000), (100011), (010101), (001110), (110110), (011011), (101101), (111000)}.

e0= (000000) S(e0) = (000) e4= (000100) S(e4) = (100) e1= (100000) S(e1) = (011) e5= (000010) S(e5) = (010) e2= (010000) S(e2) = (101) e6= (000001) S(e6) = (001) e3= (001000) S(e3) = (110) e7= (100100) S(e7) = (111)

HT=

0 1 1

1 0 1

1 1 0

1 0 0

0 1 0

0 0 1

x = (010101) → y = (010001) x = (010101) → y = (011101) x = (011011) → y = (011111) x = (110110) → y = (110010)

2 errores: x = (110110) → y = (110101)

(26)
(27)

Theorem

Let C be an [n, k, d] code and let H be a parity check matrix for C. Then d = min{r :there are r linearly dependent columns in H}.

In other words, H has d linearly dependent columns but any set of d − 1 columns are linearly independents.

ProofLet H1, H2, ..., Hnthe columns of H. Then

c = (c1, . . . , cn) ∈ C ⇐⇒ HcT= 0 ⇐⇒ cHT = 0 ⇐⇒ c1H1+ · · · + cnHn= 0. If c ∈ C is a word of minimum weight d we have that H has d linearly depen- dent columns, but any set of d − 1 or less columns are linearly independent, because in that case we would have non-zero words in C with weight less than d. Reciprocally, if there are r columns linearly dependent then there are words of weight r but the minimum distance is the smallest of these weights.

(28)

Theorem

Let C be an [n, k, d] code and let H be a parity check matrix for C. Then d = min{r :there are r linearly dependent columns in H}.

In other words, H has d linearly dependent columns but any set of d − 1 columns are linearly independents.

Proof

Let H1, H2, ..., Hnthe columns of H. Then

c = (c1, . . . , cn) ∈ C ⇐⇒ HcT= 0 ⇐⇒ cHT = 0 ⇐⇒ c1H1+ · · · + cnHn= 0. If c ∈ C is a word of minimum weight d we have that H has d linearly depen- dent columns, but any set of d − 1 or less columns are linearly independent, because in that case we would have non-zero words in C with weight less than d. Reciprocally, if there are r columns linearly dependent then there are words of weight r but the minimum distance is the smallest of these weights.

(29)

Theorem

Let C be an [n, k, d] code and let H be a parity check matrix for C. Then d = min{r :there are r linearly dependent columns in H}.

In other words, H has d linearly dependent columns but any set of d − 1 columns are linearly independents.

ProofLet H1, H2, ..., Hnthe columns of H. Then

c = (c1, . . . , cn) ∈ C ⇐⇒ HcT= 0 ⇐⇒ cHT = 0 ⇐⇒ c1H1+ · · · + cnHn= 0.

If c ∈ C is a word of minimum weight d we have that H has d linearly depen- dent columns, but any set of d − 1 or less columns are linearly independent, because in that case we would have non-zero words in C with weight less than d. Reciprocally, if there are r columns linearly dependent then there are words of weight r but the minimum distance is the smallest of these weights.

(30)

Theorem

Let C be an [n, k, d] code and let H be a parity check matrix for C. Then d = min{r :there are r linearly dependent columns in H}.

In other words, H has d linearly dependent columns but any set of d − 1 columns are linearly independents.

ProofLet H1, H2, ..., Hnthe columns of H. Then

c = (c1, . . . , cn) ∈ C ⇐⇒ HcT= 0 ⇐⇒ cHT = 0 ⇐⇒ c1H1+ · · · + cnHn= 0.

If c ∈ C is a word of minimum weight d we have that H has d linearly depen- dent columns, but any set of d − 1 or less columns are linearly independent, because in that case we would have non-zero words in C with weight less than d.

Reciprocally, if there are r columns linearly dependent then there are words of weight r but the minimum distance is the smallest of these weights.

(31)

Theorem

Let C be an [n, k, d] code and let H be a parity check matrix for C. Then d = min{r :there are r linearly dependent columns in H}.

In other words, H has d linearly dependent columns but any set of d − 1 columns are linearly independents.

ProofLet H1, H2, ..., Hnthe columns of H. Then

c = (c1, . . . , cn) ∈ C ⇐⇒ HcT= 0 ⇐⇒ cHT = 0 ⇐⇒ c1H1+ · · · + cnHn= 0.

If c ∈ C is a word of minimum weight d we have that H has d linearly depen- dent columns, but any set of d − 1 or less columns are linearly independent, because in that case we would have non-zero words in C with weight less than d. Reciprocally, if there are r columns linearly dependent then there are words of weight r but the minimum distance is the smallest of these weights.

(32)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(33)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(34)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(35)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 23 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(36)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = (11 · 2 + 1) · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(37)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 11 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(38)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = (5 · 2 + 1) · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(39)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 5 · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(40)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = (2 · 2 + 1) · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(41)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 2 · 23+ 1 · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(42)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = (1 · 2 + 0)23+ 1 · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(43)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 1 · 24+ 0 · 23+ 1 · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(44)

Hadamard Code

A Hadamard code is an [2r, r, 2r−1]linear code over a binary alphabet which can correct many errors. The generator matrix G can be constructed in the following way: the ith column of G is the binary representation of i for i = 0, . . . , 2r− 1

23 = 1 · 24+ 0 · 23+ 1 · 22+ 1 · 21+ 1 · 20

Example: the [8, 3, 4] Hadamard code has generator matrix:

G =

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

(45)

Punctured Hadamard code

The punctured Hadamard code is a [2r−1, r, 2r−2]linear code over the binary alphabet. The generator matrix for this code is obtained from the generator matrix of a Hadamard code without the columns starting with 0.

Example: r = 3:

G[8,3,4]=

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

 → G[4,3,2]=

1 1 1 1

0 0 1 1

0 1 0 1

C = {(0000), (0101), (0011), (1111), (0110), (1010), (1100), (1001)}

(46)

Punctured Hadamard code

The punctured Hadamard code is a [2r−1, r, 2r−2]linear code over the binary alphabet. The generator matrix for this code is obtained from the generator matrix of a Hadamard code without the columns starting with 0.

Example: r = 3:

G[8,3,4]=

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

 → G[4,3,2]=

1 1 1 1

0 0 1 1

0 1 0 1

C = {(0000), (0101), (0011), (1111), (0110), (1010), (1100), (1001)}

(47)

Punctured Hadamard code

The punctured Hadamard code is a [2r−1, r, 2r−2]linear code over the binary alphabet. The generator matrix for this code is obtained from the generator matrix of a Hadamard code without the columns starting with 0.

Example: r = 3:

G[8,3,4]=

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

 → G[4,3,2]=

1 1 1 1

0 0 1 1

0 1 0 1

C = {(0000), (0101), (0011), (1111), (0110), (1010), (1100), (1001)}

(48)

Punctured Hadamard code

The punctured Hadamard code is a [2r−1, r, 2r−2]linear code over the binary alphabet. The generator matrix for this code is obtained from the generator matrix of a Hadamard code without the columns starting with 0.

Example: r = 3:

G[8,3,4]=

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

 → G[4,3,2]=

1 1 1 1

0 0 1 1

0 1 0 1

C = {(0000), (0101), (0011), (1111), (0110), (1010), (1100), (1001)}

(49)

Reed-Muller code

For 0 ≤ r ≤ m the Reed-Muller denoted by R(r, m) is an [n, k, d] binary code with

n = 2m, k =

r

X

i=0

m i

!

, d = 2m−r. The generator matrix for R(r, m) is

Gr,m=

 Gr,m−1 Gr,m−1

0 Gr−1,m−1



si 0 < r < m

G0,m= (1 1 · · · 1)

| {z }

m+1

Gm,m=

 Gm−1,m

0 · · · 0 1



(50)
(51)

Challenge

Write the generator matrix of the [32, 6, 16]

punctured Hadamard code used by Mariner 9.

(52)

¿Preguntas?

Mar´ıa Chara

charamaria@gmail.com Sara´ı Hern ´andez-Torres sarai.h@campus.technion.ac.il

References

Related documents

 For an occupational illness that results in lost time from work beyond the day or shift on which it occurred, the unit to which the Soldier is assigned will submit a completed

What rights do alliance partners have to jointly earned returns in the alliance, given its organizational form statutory structure and governance structure, the sources of

The Deputy Nursery Manager will be expected to work alongside the Nursery Manager as part of a team to build good working relationships at every level.. Working in partnership

Old Mutual Life Holdings (SA) Ltd Old Mutual Life Assurance Company (SA) Ltd [FSP No: 703] Old Mutual plc Old Mutual Group (UK) Ltd Old Mutual Netherlands (BV) Ltd Old Mutual (SA)

After pressure testing, test gauges and equipment shall be disconnected, connections remade and tested with soap solution when under service pressure... Power supplies, electric

Mont-Blanc project from Barcelona Supercomputing Centre (BSC) is aiming to build a system providing exascale performance using ARM based processors and accelerators, and with 15 to

The intensity of the A 1g Raman mode and the optical contrast 23 , measured in a multilayered MoS 2 flake after scanning a laser with increasing power, have been employed