 Okay, so we are looking at binary dch codes, a few things I want to emphasize which I think might have been missed out, let me go through this in some detail now. So essentially if you want length n, you have to begin with an element beta and some expression 3, the order of 3 bars is greater than or equal to n. So this is how you have to start constructing a binary dch code and why does such a beta exist, it always exists, it's easy to see why it has to be so. So once you agree on that, things are fine and then you can construct a parity So first you want dn equals, let's say greater than or equal to b. Then you have to do 1beta, beta square all the way to beta dot, n minus 1 and then the second row is good. Beta square square, beta square, oh sorry, this is just beta square and you have beta square all the way to beta square so beta square plus 2 power and minus 1. So now put, we just involve the way down, beta power b minus 1. So that's that, that's that construction method and we show why it satisfies both the properties you want that satisfies the property on n, but really what also looks at gives you a minimum distance at least d. So one thing that this construction does not give a direct candle on is the dimension. To find the dimension, you have to do some more work. The best way to think of the dimension is using this generator matrix. Then there's a polynomial, d of x. What is the LCM of all these? Minimum polynomial. And then we know that n minus k is going to be equal to what? Degree of d of x. So that's the handle you get on the dimension. If you don't compute the dimension directly, you have to find the LCM of the minimal polynomial. But then we saw that beta and beta square will have the same minimal polynomial. So only the odd colors here have some purpose of producing distinct polynomial. So it's very common to take this d minus 1 b to be equal to 2 b plus 1. The minimum distance, the design distance. d is called the design distance. So the reason why it's not exactly equal to the minimum distance is, the minimum distance is greater than or equal to d. You can't be sure whether it will be equal to d or not. You say that it's equal to d, you have to actually produce a weight d code word. In most cases, it will be true, but we don't know that I could have done it. So it's very common to take the design distance to be 2 b plus 1, and this d is called the design variable. A direct connecting capability. That makes sense, right? So you have small d as the minimum distance that is guaranteed, and clearly d equals d minus 1 by 2 can be corrected. So that's your design error connecting capability. Like I said, you will get a minimum bound of the minimum distance, and then you get an expression for the dimension. So it's not very clear how you can quickly bound it, but then you know that since... So remember, this is d minus 1 terms. So d minus 1 by 2 of them can give you non-trivial distance minimal polynomials. So what is d minus 1 by 2? That is small d. So out of these d minus 1 guys, this is actually 2t, t of them are guaranteed to give you the state minimal polynomials. And assuming the worst case that the d of them will give you a degree m minimal polynomial, you can get a bound on the... So you can see that the degree of g of x, what gives us that is smaller than or equal to... Smaller than or equal to m times t. So that's the main result that I was driving at. So that's clear, right? There are 2t terms here, and only the odd power terms have some purpose of giving you distinct minimal polynomial. The even power one clearly will be the same as that by 2. So because you have characteristic 2 here, so you can't get more than that. So that many of them will give you different ones, and the degree can be less than or equal to mg. So this is usually a tight bound. So small t equals to state. What do I mean by saying equals to state? Actually, equality is satisfied. There are some exact calculations you can do there that usually for small t, this is tight. So using this, you get a bound that is greater than or equal to minus m. This is usually true, and like I said, for small t, this is also tight. So that's a useful motion to have, and we saw some examples, and we were able to compute the smallest t for which this bound can be violated. So we had a way of computing that. I showed you an example, and I showed you for what t will this bound be violated up to some t it will be satisfied except for some t will be violated and there's a way to compute it. So you can do that. So remember, there is a statement here that I'm going to make which I think is very important. You have to pay attention to this statement. I think there was some confusion about this statement before. How do I define my binary dph code? It's basically set up all the code words and look at gf2n, to emphasize the operation of the code word that stands to transfer with 0. So this is my constraint, and I said to compute the dimension of the rank of h and related to the dimension you cannot think of the rank of h in gf2rn. So if you think of the rank of h in gf2rn you will get misleading answers because you're forcing c to be binary. On the other hand, I can also define a code over gf2rn with h as the parity check matrix. So look at this other code. Another code can be defined as cn, cheer, 2rn and subscribe, which stands c transpose is 0. So these two codes are very, very different. So clearly this code is contained in this code. Is this correct? This code is contained in this code but for this other code, what is the dimension? How do you define the dimension? What is the dimension? Do I have to do minimal tournaments at this point? No, how do you define the dimension? m minus rank of h, right? Is that clear? And now we compute this rank of h. How can I compute this rank of h? You can do personal elimination. You're right. So I've been making this statement about how for binary BCH codes this condition is redundant. Where is that condition redundant for binary BCH codes? If any code read satisfies the first condition, it will also automatically satisfy the second condition. There's no need to have, enforce that condition again. Can I say that the second row and the first row are linearly dependent? They are not linearly dependent. So I think a lot of people made this statement particularly in the first row. The second row and the first row are not linearly dependent at all. They cannot be linearly dependent. They are very different constraints. But if you first the binary BCH code on it, the condition implied by the second row is redundant. That's the only statement I can make. I cannot say the second row is the some scaled version of the first row. It will be a scaled version of the first row. It will be beta squared. There's no way one beta, one beta squared. One beta squared can never be a scaled version of one beta. So keep that in mind. The second row is not linearly dependent on the first row. On the other hand, if I replace each entry of this matrix by the m bit column vector, suppose I do that, replace each entry of this matrix by an m bit column vector, the first row will give me m rows. The second row will give me m other rows. Once I do that, I can say what? What can I say? Once I do that, I can make some statement about linear dependence. In that binary matrix, binary equivalent matrix, the second set of m rows will be linearly dependent on the first set of m rows. That statement is fine. There's nothing wrong with that statement. But if you look at these two rows as elements of gf2 power m, then there's no way these two are linearly dependent. That will not happen. Once you replace it with m bit column vectors, it has to turn out that this second set of m rows has to be linearly dependent on the first set of m rows. Now we are in a binary way. We are looking at gf2. Everything is in gf2. That has to work out. That's why the second condition is in gf2. There's a subtle distinction here. Think about it if you are so confused. Take some simple examples and work it out about gf16 or something. You'll see that because of gf16, if you replace it with the fourth bit equivalent column-wise, you'll see that the second set of m rows become linearly dependent on the first set of m rows. That's something important to think about. Condense yourselves about that. We have any other questions on this construction? This point is a little bit subtle here. Why we are restricting here to the binary constraint? Here we don't have a binary constraint. We'll come back and look at this another code. Another code has another name. It's called the Reach Solomon code. It's also a very, very popular code. The Reach Solomon code is also very much used in practice. We'll come back and look at this soon enough. You'll see the computations in the Reach Solomon code are much much simpler than the computations in the BCH code. But we'll begin with the binary BCH code. It's also useful in practice. Many, many systems use binary BCH codes. There are some advantages to binary BCH codes. Finally, we'll compare these two and the disadvantages are later on. We'll begin with the binary BCH code. Any questions? Things are fine? Are you comfortable? Let's do another computation. Just to drive home the point here. Let's take an example. Let me take N to be 2,000 from 37. There's a reason why I picked 2,000 for this one. Why have I picked 2,000 for this one? What? It's 2,000. 11 minus 1. Is it okay? So maybe this is not such a great example. So let's pick another number. Let's pick 3,995. What have I picked? 3,995 again. Right? 12 minus 1. You should know the powers of 2 to some 64,000 or something. What's 2 past 16? Sorry? 65536. Up to that, you should know the power of 2. It's important. It's an instant. Several communication contexts show up again and again and again. So let's say 3,996 is easy enough to remember. So it's 2 part 1 minus 1. Is it okay? So what I want to do is to construct BCH codes. So of course you don't have to exactly compute any minimal polynomial. But let's just try to find out for p equals 1. Which gives you d equals 3. You can quickly conclude k will be what? What's the answer? I'm sorry? 4083. 4083, is that okay? How do I get 4083? Degree of GFX is going to be 12, right? So first of all I should pick a beta. So let's say we pick beta to go into GF2 power 12. What's the nicest thing we can pick? Why can I pick that? What's the other way of beta now? 4095, which is what I want. So if I pick 4095, it's a very nice number. We can just go to 4096 and then pick up beta and it's primitive. And then what will be the minimal polynomial of beta? I don't know that. But what will be the degree of the minimal polynomial of beta? It will be 12, right? So most likely like I said it's going to be 12 most of the time. If you want to go really down, before it will not be 12. So the next case is to pick p equals 2 and d equals 5. And then once again, d is not the minimum distance of the code we are designing. We don't know that ahead of time. We only know that it's a bound. So usually it will be a tight bound but you have to be careful with the statement you make. Unless you show an explicit code of that weight you are not proved the minimum distance is that much. So what is this? So remember the real, roughly k is n minus mp. So n is 12. So that's the main thing. So once you just do that you can just keep subtracting 12. So it's a very easy thing to do. What do you get here? 471. So what about p equals 10? So here it could be a little bit fat but believe me if you hold till 10 let's just say. So what would be k? 4095 minus 120, what would that be? 3975. So let's pass at this point and see if we have achieved something which sounds very non-trivial. So I know a code now n equals 4095 and k equals 3975. So what does it mean? I can give you 2 power 3975 code words in web n 0 1 4 0 9 5 So you take the set up all possible 3095 length binary like this putting this noise and stop good. So you are able to come up with 2000, 2 power I think it needs some action. You can take whatever you want and you can look at it and it makes noise. Sorry? I know it really. Ignore the noise as we ignore everything else in this great country of ours. So let's say 2 power 3975 How big an number is that? Who can tell me how many digits it will have if I put 1, 3, 2, 3, 4? Roughly. Sorry? You know how to compute that? How many digits does it have? How do you compute that? Yeah, so Roughly you can do it. Let's take log 10 of this. What do you need for log 10? What's log 10 of 2? 0.3010 0.3010 times 3975 It's very big. It's going to be more than 1300. So a huge number of code words we can produce in this 0, 1, 4, 0, 9, 6 But anybody can produce those code words. So what is special about these code words? Anybody can come up with the list of 2 power 3975 It's not so hard. You'll get it. What is so special about these 2 power 3975 code words that you're producing? Any 2 of them will be found in at least 21 places and I can guarantee that. So that's something quite non-privileged. So at the beginning, if I don't do this, you may not believe. So it's very hard to come up with code words that are always so much distanced apart. But here it is, I can do it. I can produce 2 power 3975 code words Any 2 of them are at least 21 bits apart in different 21 places. So it's quite a non-privileged seed that we have accomplished. So in terms of this, I have a very, very simple description for each of my code words. So it's not that I'm saying this is a very complex description you run some computer algorithm for like 3 days and come up with this thing. So no, I'm not saying anything like that. What am I giving? I'm giving a very precise computation for the code word. So how do I describe the code word? I have to simply produce this gfx. What will be the degree of gfx? 220. So you take any polynomial of degree less than or equal to 3974 with primary coefficients. Then multiply it with this specific 120 degree 120 polynomial you will get the code. So what can I do very easily? I can do encoding very easily. So if I have to do encoding all I have to do is take this 120 degree generator polynomial and multiply it with whatever message polynomial that's coming out. So I think of these things in polynomials, I can do encoding very easily. So not only I'm giving you a guaranteed minimum distance in the construction I'm giving you a very simple encoding procedure. This is very important in practice. If you don't have a simple encoding procedure nothing is going to work. So you have a very simple encoding procedure for addressing this 2975 code word. So it's quite a non-privile phenomenon. So you can do this for anywhere n. For instance if you want to pick 65335 at 355 which is 2 power 16 minus 1 then you take a primitive element in gf2 power 16 and you can just repeat the same process and get all these numbers. In fact if I'm not wrong one such code is used in the digital video work as satellite standards. So they use these things everyday So that's something which I want to convey there's something magical about this construction. It's a very simple construction and it gives you fantastic results in terms of what is possible. So it gives you a handle on going to very very large propellant without any great difficulty. So that's something that's important. We'll come back and address these issues later. So let me talk briefly about the n product. So this is quite important. So like I said if you have an nk nk equal to b equals to b plus 1 binary dph code So remember whenever I say d equals to b plus 1 in the context of binary dph code we have to understand that we have to design this one. So let's say suppose g of x is another problem of n and what would be its degree? Degree will be equal to n minus k I know that's for sure. So every code So what is this code? I know this code has a simple description. Every code word is basically So every code word can be described as m of x times g of x. So this is another interesting result of the number. So this is the code word This is the generator polynomial and this is the message polynomial. And now do I construct this message polynomial? So it's going to be m0 plus m1x plus 0 until mk minus 1 x power k minus 1 and each of these ma's are binary. So I can take 2 power k message polynomials in this fashion multiply each of them with the generator polynomial and I will get a code word. So this is a very valid encoding. So you might just do one. So if I have a message m which is k bits how do I produce a code word? m of x times g of x and you produce a code word see with mx. So this is a perfectly fine encoding. But what is one possible problem with this encoding? Is there any disadvantage to this encoding? Any reason why you may not like this in practice? Anything that you notice? Sorry? It's not that expensive proportionally. n minus k So for every bit that you are producing of the code word, if you are doing something like n minus k operation you can't expect anything less than that. It's not that. So the one problem with this is it's not systematic. That is a crucial defect to this problem. So with this encoder. The reason why this encoder is not so good is because of this non-systematic character. What do you mean by non-systematic? It's not true that the message appears by itself in the code word. So that's an advantage. Why is systematic that's an advantage that's important in practice having a systematic encoder. Why is the systematic encoder nice? Sorry? So then on the decoder side you can directly take the message out. So once you do the decoding, the message is already available. You want to do a division by g of x or something. On the other side, you want it to be multiplications at few bits. So you only have to do multiplications for both n minus k parity. Which is better. But also more importantly typically what happens is there might be some other conditions that are satisfied by your message. There might be some other reasons why you might want your message to be in a certain form and you don't want some encoder to change all the characteristics of the message. When you do multiply the g of x the message might change and I may not like it in practice. I might want the characteristics I have in my message like for instance random positioning of one inch or whatever characteristics I put into my message to be retained by the encoder. I may not want it to violate. It can violate it for a small number of qualities. That's okay, I live up to that. I live up to that. But not for my message. There might be some reasons for that. So maybe you want something like that to be satisfied. So if that's needed, then also systematic encoding is very nice. So we like a systematic encoder. What we are going to talk about now is how to do systematic encoding for this h-coder. That's also very easy. It's a little bit trickier than this one but it's also very easy. So we will not map m of x to m of x times g of x. We will map m of x to some other multiple of g of x so that m shows the itself in the encoder. So this is how you do it. It's very easy. It's not very hard. So here is the systematic encoder. So what you have to do is you have to take m of x and in the first step multiply it by x power of minus k. So what kind of a multiplication is this? This is quite a trivial multiplication. So all you are doing is shifting all the coefficients of m of x to the left. So it's quite easy. We will just map m of k minus 1 x power of minus 1 plus random m1 x power m minus k plus 1 m0 x power of minus k. So that's what you get when you do this multiplication by x power of minus k. So of course this is not an encoding. I'm not in any encoding. But this has a nice form. So if I think of this as the code web. So of course it's not the code web but if I map it to a vector what do I have? So I'm sorry. I have 0's for the first n minus k positions m1 to mk minus k. So I have a vector where the message appears by itself. So this is nice. The message appears by itself. But now all I have to do is to compute some n minus k bits and put it in the first position so that this whole thing becomes a multiple of gfx. And if I do that I'm done. So I've found the systematic encoding method. So what do I have to do to make x power n minus k mfx a multiple of gfx? It may not be a multiple directly but probably I get to some multiple which is not a multiple. First step is to divide by gfx. So that's what we do. So you divide x power n minus k mfx by gfx. Remember gfx has degree equal to n minus k. So that's very important. So what will you get if you do that? Some quotient times gfx plus or minus k. What do you know about the degree here? It's strictly less than n minus k or less than or equal to n minus k minus 1. So this quotient I don't really care about. Some quotient times gfx. Now I have rfx here which has how many bits? n minus k bits. Now if I move this k to this side what happens? I get a multiple of gfx. So when I move rfx to this side what am I doing? I'm doing x power n minus k mfx plus rfx. But what are the first n minus k coefficients of x power n minus k mfx? They're all 0. So rfx will definitely occupy these first positions. So instead of these 0s you put rfx here. When you put rfx here you can guarantee to get a multiple of gfx. And that gives you the input. If you derive x power n minus k mfx by gfx you will get a quotient which you don't care about. You will get a reminder which you care very much about. You take that reminder and put it in the first n minus k positions you will get finally a code goal which will be a multiple of gfx. And that's systematic. So when I go from nfx to this multiple of gfx it is systematic. The message appears by itself there. How do I know that there won't be any repetitions? How do I know that two mfx will not give me the same code goal polynomial in this procedure? Yeah, where the mfx appears by itself there. Clearly the two code goals will also be different and they're all multiples of gfx. So it's a very trivial way to ensure that nothing very large will happen. So this is the systematic encoding procedure for bcx codes. Then it will be c++. I wonder how to divide by gfx. I don't know if you've seen this linear feedback shifted with this circuit. So it's very trivial to achieve the D-slip flap division. So the basic idea is to repeat the long division method. So you put a polynomial inside. You put the quotient there. You find each thing. So you can implement it with a D-slip flap shift register about any problem. So it's very easy to do that. So once you do that this division is done. All right? Any questions? Okay? So that's how you do this. Okay? So that's the encoder part of it. And the final thing I want to talk about is the generator matrix. Okay? Before we move on. So how do we have... How do we define a binary diffuse code? We defined using... using a... So suppose let's say mk e equals 2t plus 1 binary diffuse code. We defined using a 2t plus m parity check matrix over what? Over... some 0 to power m. So some extensive fee. We had a 2t plus m parity check matrix. Okay? And you know a method to go from here to mt plus m binary parity check matrix. How will you do that? How? Replace each element by this m bit column equivalent. But how do we get to mt, not 2mt? Do all the... Yeah, do all the... Get rid of all the... Maybe depending on m even the odd power bonds may not be needed but we know mt plus m is possible. Okay? So we can get that. So it would be nice to get to a generator matrix which is k cross m for instance. Suppose you want a k cross m generator matrix binary generator matrix, how do you do that? Okay? So it's quite easy. We've already seen it but I want to emphasize that once again. It's also possible to get a k cross m generator matrix. Any ideas on how I can do it binary, okay? How can I do that? Any ideas? We've already seen it. The answer is already there in our discussions. It would be more specific, okay? So it and all is general find. For the binary dch code for the generator matrix, m, k, d everything is given. So how do I do that? What is the critical thing that is needed? What do I use to get a generator matrix? The word itself should be a clue. You have to use the generator polynomial, right? So see, that's what gives you... So how do I... See, remember what is a generator matrix? Just giving you a set of linearly independent code words, right? I have one code word already. What is my first code word that I have? GFX, right? GFX is a code word or not? And I give you multiple of GFX is a code word. So you take GFX itself, convert it into one vector, you get a code word. That's my first and simplest code word I can generate, okay? Remember that. So that's very important to remember, okay? So GFX which is, let's say, g0 plus g1x plus random g1 minus k x bar n minus k remember this will not be 0. So g will be equal to x bar n minus k last time will not be 0. So you can just put it right by minus k. And I know from here from here I know so I would like I know g0, g1 g n minus k 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 1 is a code word. So this is a term that's quite important and you should remember that. Code words are all multiples of GFX, you might know that by heart but if I ask you to quickly produce a code word is a code word. In most cases, the minimum weight of this might be equal to d. So, which means what? Which means what have you shown? If for instance I compute this and I see that the weight of this is equal to d, then minimum distance of the bandwidth is equal to d. So, that is a quick way of checking that it should be. If the minimum distance here is not, minimum weight here is not equal to d, you may not be able to say much, but it will give you some tools as to maybe how I can combine these things. So, now, how do I quickly produce other code words? So, let me give you an idea of what is the easiest next code word I can think of. Of course, there are all kinds of multiples of gfx. Which multiples are easy? Yeah, shifting is the easiest multiple. So, you multiply it with 1, it is easy. Next thing you multiply by x or x square or x bar 3. So, any multiples or x is very easy because you are just doing shifting. So, that is an important notion to keep in mind. So, all you can do is, what you can quickly do is to come up with one code word and then other code words. So, other code words can be even defined by shifting. So, of course, if you want to go beyond shifting, what should you do? You should have some columns. So, the shifting is over, it is a good way to start. Remember, g n minus k is actually equal to 1. So, I wanted to remember that g n minus k is equal to 1, where the degree is equal to n minus k. So, what happens when I shift one code word after the other and put them in a row? I would get g 0, g 1. I will go to g n minus k, you know, 1 square. How many zeros will I have here? Let me see. k minus 1, right? I mean, I do like k minus 1 zeros. So, when I shift what happens? I will get a 1 here. I shift a 1 there, a 1 here and so on. So, how many times do I have to shift before I get a k minus 1? So, along with the first one, you will have how many rows here? Right? So, every row of this matrix is a code word of my binary DCH code. And how do I know that no two rows are linearly dependent? Look at the right hand structure. You have 1, 1, 1, 1 along the diagonal along that path. So, no way any two vectors here are linearly dependent. So, this is a generator matrix which is k-trap in which you can easily come. So, this is a generator matrix. Now, it is also binary. Is that clear? Any questions? How do you question? Sorry? Yeah, it is not in systematic form. But you can convert it in systematic form. How do you convert it in systematic form? You can do both in elimination and convert it in systematic form. That is one answer. But if you want the systematic generator, the systematic encoding procedure to work here, it is a little bit more complicated. Let us not go there. So, you can convert this to systematic form by both in elimination. You want it, that is okay. But this is a valid generator matrix. There is nothing wrong with it. It is worse space is equal to your code. No problem. Okay? So, we are going to go for another 10 more minutes today. We are going to have to go anywhere today. Is that clear? Okay? So, one thing that this will help you is if you have to sometimes show in a course, for instance, that the minimum distance is exactly equal to 5 or 7 or something, then this will help you. Okay? So, you can quickly try to find some code word of weight 5 or weight 7. This method will usually help you. Okay? So, in small numbers, you can do a small n, small p. Okay? So, I am going to stop here and move on to discussing your quiz papers, entertaining your answer sheets. Okay? So, before I return, let me discuss, let me discuss the answers. I think most people have done okay. It is not proven to be a very difficult example. Except for the last question. I think last question, enough people have made mistakes. So, maybe I should point out what is going on. Okay? So, the first question we are going to see, it was about coming up with the table for BF16. I think everybody got it right. So, everybody got 6 marks yet. So, it is a DC shift of 6. Right? So, everybody got 6 marks. Nobody missed out on this. The second question I saw all kinds of statements which I wanted to clarify about in class. Okay? So, I have said that I have an NKD code over GF16. So, this is very very important. Okay? So, when I say over GF16, you cannot assume that the code words are only binary. Okay? A lot of people have made that assumption. At least from the reasoning that you know. So, you cannot assume the code words are binary. Okay? So, for instance, a paradigm matrix is given to you. 11, 12, 12, 12, 13, 14, 15. 12, 14, 15. So, the paradigm matrix is given to you. The first question is N, of course, the MS6. That is very easy. Okay? So, for K, how do you do this? How do you do K? Okay? For instance, a lot of people made this. So, quite a few. I think only 18, 17 people involved also. At least 3 or 4 people made this claim which is a large percentage. The second row is linearly dependent on the first row. So, the rank is only 1 for H and N minus K is equal to 1 and K is equal to 5. So, what's wrong with that? What's wrong with that conclusion that K is equal to 5? Okay? The second row is not linearly independent of the first dependent on the first row. Okay? Right? So, why is that true? You can check it. How do you check for sure that the second row is not linearly dependent on the first row? We do this in elimination and show that there's a non-zero term in the first one, followed by a zero on the second one. There's no way you can quickly complete. There are so many other ways of showing that here. It's not very hard. But that is the definite way of doing it. Okay? And you have to be there. Okay? So, if you don't, particularly in a case like this, we just say the two rows are obviously linearly independent. Looking at this, it's not obviously linearly independent. If there is a 1 there and a 0 there, then I agree it's obviously linearly independent. If there's nothing like that, it's not obvious. Definitely not obvious. I can show you some interesting examples. But here it's quite easy. But there are some more complex cases where the only place where you can say obviously linearly dependent is if there is a non-zero term, followed by a zero term. So, otherwise it's not obvious. Okay? So, you can do quick version elimination to check that these two are linearly independent. Okay? And so, that will tell you n minus k is 2. And from there, you can compute k is 4. Okay? So, in the gradient, I will expect some reasoning for linearly independent. Okay? So, you can't just say claim linearly independent. So, there is a way to check for it. So, you have to do version elimination. You can quickly make this 0, right? So, you just simply add the two rows. This becomes 0. Here, we'll get something else. And that shows linearly independent. Okay? That's the first part. And for the minimum distance, what is the definition? The minimum number of linearly dependent columns. Okay? So, remember again, when you earn NGX16, linear dependence is not the same as summing to 0. Is that clear? Okay? So, in the binary case, we can say that best mission is equivalent to minimum number of columns that add to 0. We can say that in the binary case. In the GS16 case, you cannot say that. Okay? So, in this case, it turns out both of them are the same. Okay? But it may not in the general case. Particularly, when I say the code is over GS16, you cannot make the difference. You cannot say the minimum distance is the minimum number of columns that add to 0. That's not correct. That are linearly dependent. That is the correct statement. Okay? We're clear. You have to think about that. There's a very subtle difference there. It's very important to remember. Okay? So, if you do that, okay? So, you have to realize b equals 1. Okay? No one column is all 0. So, b equals 1 can be easily ruled out. Okay? And you have to realize b equals 2. Okay? So, there is some proving needed there. Okay? You have to show that no two columns here are linearly dependent. Okay? So, I think I don't think anybody has bothered to even think about it. You just claim that any two columns are linearly independent. That's not enough. You have to show that no two columns here are linearly independent. I'll be sure that. So, we took out the four. One is alpha 2A. Another one is what? Alpha 2A. Am I right? So, this has to be equal to some constant times this. What should happen? Alpha 2A should be equal to 2 times alpha 2A. Alpha 2A should be equal to, sorry, alpha 3A should be equal to C times alpha 4G. 2A should be equal to C times alpha 4G. Okay? Okay? So, you can quickly manufacture the problem here. So, what will happen if this is true? Then alpha 2A equals C squared times alpha 4G. And if this is also true, then what should happen? C squared is equal to C. The only possibilities for C are 0 or 1. And then you realize that if you multiply any column by 0, you won't get another column. Any column by 1, you'll definitely not get another column. From there, you conclude that no two columns can be linearly dependent. Okay? So, that's a complete way of giving an answer. You can't say the inspection. This is not like an objective type paper where I only look at the last answer. Okay? So, I need the steps. You have to say some plus is equal to C. C is equal to 1. And that is not possible. Okay? So, only then I'm convinced that B equals 2 does not work. It's quite important. Okay? So, you might say it's not important that I do some marks for such steps also. Okay? Not all the marks, but one or two marks will be for that. Okay? And then finally, for B equals 3. Okay? So, D equals 3 is very easy in this case. Okay? You can argue that B has to be less than or equal to 3 by the single term. So, D equals 3 has to be 3. That is one quick way of saying D equals 3 is true. Or you can also quickly find several code words of grade 3. Okay? So, people have tried to find boundary code words of grade 3. Okay? It's also good. It's also easy to find. But non-binary code words are very trivial to find. Okay? So, if you just do Gaussian elimination, pick one column, the other two automatically pick themselves. Right? So, finding non-binary code words of grade 3 is very trivial. Okay? So, you can quickly find non-binary code words of grade 3. Is that clear? What do you mean by non-binary code words of grade 3? So, you do the Gaussian elimination. You will get I here. You will get some other column. You pick this to be non-zero. And then you pick the parities to be 1 and 1. So, it's very easy there to come up with it. The single bound is exactly satisfied. It's easy to do that. Okay? So, that's the final step. Okay? So, once you do that, you have to have D equals 3. Okay? But you cannot claim D equals 3 without proof. The other side of the single bound is to produce an explicit code word of grade. Okay? So, I think this has confused people a little bit. So, spend some time thinking about it. What are the differences between this and the other case? So, if I say binary BCH code. Okay? What will happen for the binary BCH code by this matrix? What is K? Yeah. Yeah. So, if I say, if I say binary BCH code, right? I have to do something else. I have to look at the minimal polynomial of alpha. What is the degree of that? 4. 4. Okay? And then I have to do N minus 4. 6 minus 4, which will be 2. I'll only get K equals 2 if I do binary BCH code. Okay? And the minimum distance will still be 3 only. Okay? So, it's a different kind of code. Right? So, think about that. That's something important. So, I would suggest that you replace each element by its 4 bit equivalent and check that the second row produces linearly dependent copies of the first row. So, you can see that it's not really hard. Okay? So, the third question I did not really expect such kind of confusion. I think almost all answers were interested except for I think one person. Pretty much everybody gave me precise answers and I'm not giving too much to everybody in the bad question. It was probably just a really easy question. So, more I think people made some very serious mistakes when I was very confused with them. Okay? So, let's take an n minus 1 through repetition 4, even though it's code. Okay? So, the important thing to realize is five-digit matrix is complete at once. So, when you make the statement as per the recap, how many bits are there in your syndrome? Those are just two bits. It's either 0 or 1. And how do you find the e-cap corresponding to 0? The least greater vector that gives you 0, which would be all 0. And what is the least greater vector between the syndrome 1? There are several of them. N of them, but you can't pick all n. Okay? So, people claiming that all n can be picked. You can pick only one e-cap. You can only pick one e-cap. So, I'll put my one in the first question. Okay? And then you have to apply the standard formula. What is the standard formula for problem-poor problem? 1 minus 1 minus p power n for this guy. And then minus 1 minus p power n minus 1 times p. So, that's the problem. So, if you just follow the standard method, you get the answer in like three steps. There's nothing more to do here. And I think people are going round and round. And all kinds of confusion about what it corrects when people are claiming d equals 2. You can't correct any error. Of course, you can correct one error vector. Okay? So, okay. I have one book syndrome. You can correct one on zero error vector. Okay? Of course, it doesn't have any error correcting capability. That's not correct. All the way to one error. So, it doesn't have any error correcting capability. Because it corrects one error vector. Okay? So, do it. Do it. That's the least. Okay? So, don't say it doesn't correct anything. Okay? And the next one is the 1 comma 1 comma n repetition code. So, here if you do the syndrome method, it's a bit more complicated. I'm not saying it's not possible. But it's unnecessarily complicated. But you can go back to the main distance description. What is the main distance description? You have just two code words. Right? So, don't make your problem harder by going to a much bigger 5D check matrix and look at 2 power n minus 1 syndrome. Why do you do all that? You have just two code words. What are the two code words? The all-zero code words. The all-zero code words. Any vector, what do you do? Just compute the distance between these two. The closure to 0, you go to 0. If you're closer to 1, you go to 1. That's a much bigger description for the MLB quota. But people do some syndrome description. I have not sorted it, but it's certainly not advisable. Okay? So, you simply do this very quickly. Okay? But now a lot of the error vectors that can be corrected. Okay? So, this requires some careful path. It's not so easy. You have to carefully do it. Okay? So, what are the error vectors that are correctable? Okay? So, this gives me two cases. If n is odd, it's very easy. Okay? So, if n is odd, the rate of e less than or equal to m minus 1 by 2 is correctable. Okay? The rate of e greater than n minus 1 by 2 is not correctable. Okay? Both these statements are true. So, n odd. Okay? And you can quickly find the probability of error. Okay? What happens when m is even? m is even is a slightly more complicated case. Okay? So, one thing you can definitely conclude is the rate of e less than n by 2 is correctable. Can I conclude the other thing? The rate of e greater than or equal to n by 2 is not correctable. No, I cannot conclude it. Okay? The rate of n is okay. But what do we do? What do we do? So, there is a confusion there. Right? So, we are going to say I toss a coin and half the time I decide which is fine, which is optimal or you pick any one. If you pick any one, the computation is a bit more complicated. If you pick any one, your decoder is not symmetric anymore. You can't just happily assume all zero previous transmitted. You have to do zero first and then one first. Anyway, you will get behalf. Okay? So, the best thing is when you have equality for your analysis, you always flip a coin and choose any one which is closest. If you do that, the analysis becomes very simple. So, the MLB decoder will transfer the rate of e equals n by 2, if you correct half of the orders. Okay? Any half you can pick. It doesn't matter. So, it's up to you, whatever you like. And so, the rate of e greater than n by 2, what does it do? It does not correct. Okay? That is also good. Okay? You always make an error. So, that's the MLB decoder. Okay? So, when you write down the expression, travel to the blocker will be distance or odd and distance or even. You cannot get one expression for both. I think almost everybody got one expression for both, except for maybe one or two guys. So, only those guys got that. So, I will do some marks here. Okay? So, there are various ways of thinking about this. Okay? So, let me also give you one more way of thinking about it to clarify this thing to what's happening. Okay? So, you have 2 power n minus k sub 1. Okay? Right? To each syndrome, you can associate a distinct error vector. Okay? So, you keep counting from weight 1, weight 0, weight 1, weight 2, so on. Right? Why am I counting from weight 0, weight 1 and all that? That is the layer weight in a vector. Right? So, of course, you have some minimum distance problem. You'll get stuck. But for the repetition code, you have no minimum distance problem. Right? So, you have to keep on counting till you come to minimum distance. Right? So, beyond this, only a fraction can be corrected. Okay? So, of course, it also could be greater than 2 power n minus k. Is that right? We're clear. Okay? So, think about this very carefully. So, you're looking at 1 and choose 1 and choose 2 and choose t. So, we're going. So, now for the repetition code, minimum distance is n. Okay? So, you can cover up to n by 2. But then, before that, after that, it's fine. But at n by 2, you have to take half to make sure that you're equal to 2 power n minus 1. Okay? So, the sum has to be equal to 2 power n minus 1. And when you have to minimum distance, you can correct for sure. Beyond that, you have to add some things to make it equal to 2 power n minus k. So, it's almost as if you're filling your syndromes with the error vectors, one after the other, and trying to cover as many error vectors as possible, so that you can add up to 2 power n minus k. That's another way of thinking about this problem. Minimum distance is important. Beyond that, something else. Okay? All right. So, let's stop here for now. I'm going to distribute the answer sheets. Okay.