 Good morning everyone. The talk is as follows. Brief introduction to Sylab. We are going to do some calculations, going to solve some problems and then I will point out some of the features, some of the facilities that are available on the web and some guidelines on installation and so on. What is Sylab? By the way, if you have any questions, please raise your hand so I know that there are some questions to answer. Okay, let me ask a question, you don't have to answer some of my questions immediately. How many of you know Sylab? How many of you know MATLAB? Sylab is a software for numerical competitions. It provides extremely reliable results. A large number of libraries are there. So there is a question from Indore. Okay, let's see what it is. Yeah, go ahead. It is not Skylab, it is Sy, like science, Sylab. I am very sorry for that. Yeah, no problem. Good, I am glad to see people at Indore. Yeah, so at this time I would like to show a webpage. You can see this Sylab, first Sylab users conference. Let me just make my, let me make my mouse slightly larger so you can actually see that. All right, see this first Sylab users conference and there were lots of talks here and you can see that, in fact, I gave the keynote address. I talked about National Mission on Education through ICT, but I want you to refer to, I want you to see this talk, use of Sylab for space mission analysis. This was presented by Dr. Martin of CNES, which is equivalent of our ISRO. Okay, now if you click here, you can see that he actually talks about what is Sylab. Okay, of course, I can make it slightly bigger. He says that it has been used successfully for several years in their space agency. Now if you just go up here, just come over on the left hand side of the same page. If you see the second line, you see presentations and the PDF files given are given here. PDF files used by these presenters are given here. Okay, use of Sylab. So, if you click this, you will get the PDF file that he had used, the slides that he had used. The point that I want to make is this person, Dr. Martin, made a summary of in what always Sylab is used in the space mission CNES equivalent of our ISRO. His conclusion is that Sylab is used for almost every activity. Obviously, a very successful space agency that France has cannot depend on some software package that is not reliable. I would like to point out that Sylab uses extremely reliable mathematical routines. Another important thing is it uses a high level language. It has a built-in high level language, can express your ideas in a few lines. For example, if you would take 100 lines to write a program in assembly language, maybe you will need only 10 lines to write it in C and you can express the same thing in one tenth of that, namely one line in Sylab. So, that is why I say that Sylab is to C is about 1 is to 10 and you can also write additional functions using interpreted language. So, there are two types of routines available. One is using C or Fortran for high speed calculations. These are available as built-in libraries. So, you can just pass your arguments and get the results. It also has a high level language using for loops, while loops, break and so on and so forth. You can express, you can write functions. So, it is possible for you to use the interpreted language to write your own program using Sylab. So, you can use either the built-in libraries written in C or Fortran or the functions created using the high level language available in Sylab. So, this high level language is what I call as the interpreted language. Now, Sylab is created for mathematicians. Matrices and vectors can be created easily. No typing, don't have to define, storage etc. So, let me just go to Sylab environment. I have just opened it. At present I am using a Mac OSX operating system. Sylab runs also on Linux machines and also on Windows. So, I said that it is very easy to create matrices. Let us create a 3 by 3 matrix. A equals 1, 2, 3, 4, 5, 6, 7, 8, 0. So, it has created the matrix. Not only that it has what I did was I typed this and entered a carriage return here and it echoes the results. For example, if I just say what is A, it will come and say that A is a 3 by 3 matrix. So, there is no need to type. I don't have to create storage allocation. You can also carry out matrix vector products just like the mathematicians do. For example, when somebody is explaining a matrix vector multiplication. For example, somebody is talking about a linear system. Let us say A x equals b. So, the mathematician will just write A times x equals b. He is not going to say for i equals 1, 3 and then j equals 1, 3 and so on and so forth. He will not be expanding it. He will just write it as A x equals b. For example, let us create a vector called 1. So, you can also go to the next row by entering semicolon. In the previous example, what I did here was I just did a carriage return. It went to the next row. One thing is this results in three lines being used. Instead, I can just say 1 semicolon, 2 semicolon, 3. So, if I do that, it says x is vector of size 1, 2, 3. Of course, I could have written like I had done before 1, 2, 3. I could have done that way also. Both give the same result. All right. I have two things, 3 by 3 matrix A and a vector of dimension 3. So, if I want to multiply these two matrices, the mathematician would just say A times x. I do the same thing. It has computed. It has given the result. So, I did not say for loop. I did not say do loop. I just said multiply. It multiplied. So, this was this environment, the Sylab environment belongs to Matlab family. This environment was originally created by Professor Cleo Mohler, who was a computer science professor at the New Mexico State University. And he was teaching mathematics. He was teaching numerical analysis. He had to deal with matrices. He found that he was spending a lot of time. When they went to coding, they had to do lots of things, keeping track of functions, for loops, do loops, dimensioning, typing and things like that. So, he said that in a class, the mathematicians write as if these were just you know scalars A times x, finding the eigenvalues, finding the determinants, all just done by just one command. Why can't I generate a language that will allow me to do the same thing? So, he came up with this highly successful environment. He had worked on Matlab and that Matlab, the one initially created by Professor Cleo Mohler was created with government grants, American government grants. So, it was available as open source. So, a lot of companies used that open source Matlab and built upon. So, the commercial version of Matlab uses that old open source version of Matlab. In a similar way, Sylab also uses the same old version of Matlab. Of course, all of these packages have improved enormously. Many of them have rewritten the whole thing in C, Fortran and things like that. But nevertheless, the basic ideas for which the original Matlab was created by Professor Cleo Mohler are still maintained in all these platforms. That is the reason why you would see that Sylab is about 95 percent compatible with Matlab because they all come from the same source. Of course, Professor Cleo Mohler worked on linpack and icepack projects. These later on resulted in Lopak and these are the ones that are used for computing eigenvalues and linear equations in a numerically stable way and these are used in all these platforms. That is the reason why I said that these are highly reliable numerical computing platforms. See, these are meant for computations and not only that, these are also created in such a way that the computations can be done extremely fast without you are having to write lots of lines of code. That is the reason why I said that in C, if you need 10 lines, you need only one line in Sylab. So, these are the features that I talked about earlier. The important thing to realize is Sylab is free. Sylab has a lot of mathematical libraries, special functions, polynomials, matrix condition number, matrix functions, decomposition and factorization, signal processing. I told you that Sylab has an inbuilt language. I also called it as the interpreted language. It is like C. It has lots of control flows. It has procedures. What I will do is I will start describing the usage of Sylab. The way I have written my code is that the way I have written the code is that my entries will be in black and the answers given by Sylab will be in blue. So, what I will do is initially I will compute all of this, some of this at least I will hopefully convince you that the answers given here will be given here also. For example, 4 plus 6 plus 12 get a carriage return. So, the answer is 22. So, this is used for computation. Can somebody tell me, so here I typed a equals 4, b equals 6, c equals 12. Let me do the same thing, a equals 4, b equals 6, c equals 12 exactly like I have written and it equals a equals 4, c equals 12. Is this expected? How come b is not echoed? Does anyone have an answer? So, you think about it. Let us continue with this. Anybody has an answer? Yeah, let us go to Nirma. Because sir b is equal to 6, any column is given. Okay, thank you. So, the answer b is not shown. Okay, great. That answer is correct. So, the answer is b has a semicolon. So, that is why it is not echoed. So, it is a very important and useful thing in Sylab just like in MATLAB. If you do not want to display any intermediate result, just put a semicolon. It is extremely useful. Of course, here it does not matter. It is extremely useful in a for loop where you may compute lots of things. You do not want it to echo the results, intermediate results every time. So, for example, suppose you have a 10 by 10 matrix inside a for loop and you are computing every element inside a for loop. In one loop, just go through once. Next time you will compute the second one and so on. Now, if you do not put the semicolon, what will happen is it will display the whole matrix for every loop supposing you do 1000 times, then it will come 1000 times. Okay. So, I hope that you can just follow this. Now, I just say a plus b plus c. Say the answer is 22. Okay. I do some more of these a is 4, b is 6, c is 12. I put a semicolon. It does not echo anything. Then I say d equals a plus b plus c and d is 22. Okay. So, here I said 4 plus 6 plus 12. Okay. I did not say where the answer should go. Sylab automatically puts it in a variable called a n s. Okay. If I say a equals 4 says variable a is created and a equals 4. I didn't say where it is going. It puts it in default variable called a n s. Same thing here. I just compute the answer. It goes to a n s. Here I created a b c. Then I say d equals a plus b plus c and d is 22. Okay. d is a plus b plus c semicolon. It doesn't echo. Then I say d and it says d is 22. Okay. Then there are format statements in Sylab built in functions built in numbers are represented by percent sign. For example, pi is denoted as percent pi. If I get a carriage return, it will say 3.1415927. So, here I have done a very simple calculation. I define x to be square root of 2 by 2, 1 by root 2 and then y is sin inverse of x. So, a stands for arc. So, a sin x is already defined in Sylab and it gives the result in radiance. It is given in radiance. So, I multiply by 180 degrees divided by pi to get 45 degrees. So, let's do this calculation. x is equal to square root of 2 by 2, which is 0.707. And then y is a sin a stands for arc. So, let me do that. So, it has given the same thing. Then I say that y underscore degree equals y multiplied by 180 degrees divided by percent pi. It is 45 degrees. Yeah, let's take the question. Okay. Let's take the question from Amruta. Hello, sir. Are you able to hear me? Yes. Yeah. Okay. My question is, you have specified that C code can be interfaced with Sylab. Will you be able to give more light on that or some material regarding that one? And the second thing is, we have so many toolboxes related to Sylab and we could download that from the web, but we are not able to get any helping material regarding that toolbox. If we are able to get that toolbox or some books regarding that, it will be very useful to us. And the third one is, if you are so friendly as Sylab and Sylab, so there are three questions I wanted to ask you. Thank you. Okay. So, good. There are three questions from Amruta. The first one is how to interface with C. I can, we can make this available. What I will do is, the best thing is to first do a Google search. So, let's say Sylab C interface. Okay. So, you get this interfacing C or Fortran programs. Okay. Here it is. So, what I would do is, the very first thing that I would do is, so this is one of the answers. So, in 6.2.1, they have given up this example also, building an interface program. Okay. So, there is some help available on the web. So, there is some help available on the web, but better help is required. We don't mind actually coming to any other places and conducting a Sylab workshop if required. That is the first question. We are also in the process of establishing moodle-based interaction forums through which we can start interacting. We will inform all of you the moment this is done. This is the second answer to the first question. The second question that came from Amruta is toolboxes. How good are these toolboxes? The third question is, so maybe I didn't understand the second question exactly. So, it has to do with the toolboxes. The third question is the GUI. Is the GUI as good in Sylab? So, there is a trade-off between commercial software packages and free software packages in commercial software packages. It's very expensive, but then because they employ a lot of people, they can make the GUI documentation and so on a lot better. The only problem is if you use commercial software packages, once our students go to the industry, they just can't use them. So, what is the point in using something that is 1000 times more expensive even if it is extraordinary if you can't use it? So, there is a question from Pune. So, we can answer that also. The question from COEP is, are there variables typing called float double and so on? In Sylab, everything is double. That was the question from COEP Pune. Now, I want to do this example. Suppose I want to create a vector. Let's say that I want to create a vector called x equals 1 through 5. What will it create? It says that it breaks it into, so let me see if I can make it bigger. What will happen? Essentially, it says that now it comes in the same column. x equals 1 is to 3. It says 1, 2, 3. So, let me just do 4. It says 1, 2, 3, 4. When I say 5, it cannot put it in the same row. It puts it in the second row. But the values are all there. It is just the display is different. Now, I can say x is equal to 1 through 4 multiplied by percent pi. So, what it will do is it will say 1 times pi, 2 times pi, 3 times pi, 4 times pi, because 1 is to 4 is a vector. So, as I mentioned, you can multiply a vector by a scalar just like mathematicians do. So, when I hit a carriage return, it will say pi, 2 pi, 3 pi, 4 pi. So, you can do that. You can also do it like this. x equals percent pi, 2 times percent pi, 3 times percent pi, 4 times percent pi. You can also, of course, you know, write the whole thing manually. It gives the same answer. You can also use a command called lint space. For example, here I am dividing into the interval 0 to pi into 11 intervals starting from 0, 0.1 pi, 0.2 pi, all the way up to pi. Or I can say 0 to 1 in increments of 0.1. See, I did not mention this here. So, for example, if I say x equals 1 is to 4, it will do this. But if I say x equals 1 is to 2 is to 4, what will it give? So, it will give 1. And then the increment, yeah, there is Amruta-Kaim-Bhutur. Yeah, what will happen? Sir, it is not related to the question, but it was related to the manual that we spoke earlier, sir. Actually, we were downloading the toolbox related to image processing. Yeah. And we are working in digital image processing, and we have a group formed over here. And we were actually trying for the PsyLab toolbox equivalent. And we were able to get the toolbox for that. But we didn't have a supporting material, something similar to the manual, where, which specifies what sort of command has to be used for which purpose. So, since that documentation is not clear, we were not able to proceed ahead using PsyLab. You are still stuck with MATLAB. Okay. All right. So, I will just repeat this question shortly from Amruta. All right. So, the answer here is, yes, one more question from Amruta. Yeah, okay. Will you be able to give us some demo session or workshops regarding this PsyLab, especially for the image processing? We will see if it can be done. So, I will repeat that question later shortly. They just reminded me of the second question. All right. Let's come back to one is to two is to four. This two, like you would do in programming languages, is the increment number. So, it will do one, three. The next one will be five. But then we are writing the limit up to four only. So, it shows up to three only. So, for example, if I do five, you'll say one is to three is to five and so on. Okay. So, here what I'm saying is zero in increments of 0.1 up to one. So, there are 11 points multiplied by pi. So, now I can just repeat the question that Amruta asked manuals are not available for toolboxes. They had a question about signal processing toolbox, image processing toolbox, whether some workshop can be organized. So, let's see whether we can do that. We will certainly try to provide all the help. In fact, we want to take up the use of PsyLab in a big way in the country. So, in fact, your input and your participation is extremely important required to make that happen. Okay, vector operation. So, just like I created this vector, I can find sign of this vector. For example, I can say x equals, let me just do zero increments of 0.1 to 1 multiplied by percent pi. Note that I have to put a semicolon so that it doesn't echo the result. Then I say y equals sign of x, put a semicolon so that it doesn't echo the result. Then I say plot 2d x comma y. It is computed. So, let me just do this it is not very smooth because there are not many points. So, let us just do this for not 1 pi. Let's do this for, I can recall the previous commands by not 1 pi. Let me do this for 3 pi sin x plot 2d. So, you can see that now I have done it for up to 3 pi. So, plotting is extremely easy. And then of course, here what I have done is I have taken sign of this vector. And then if I want to extract any component, I just have to say 5. For example, you have to remember unlike c, the indexing starts from 1. So, y1, y2, y3, y4, y5. So, it comes here. Alright, now let me see whether I can do this. So, I have created these two vectors a is 1 through 5, b is 1 is to 2 is to 9. So, it goes up to 9. Now, I want to do a small calculation. Let me just repeat that b equals 1 is to 2 is to 9. So, the answer is 1, 3, 5, 7, 9. Now, what I want to ask is in fact, I have the question here. I want to ask you this question. What will happen to b of 1 is to 2 is to 5? What will be the answer? b is 1 is to 2 is to 9. It has given me this vector. Now, I am asking this question b of 1 is to 2 is to 5. What will be the answer? Can anybody guess the answer? So, let us, we have not got the answer. Let us first find what 1 is to 2 is to 5 does. 1 is to 2 is to 5 will be Periyar University in Periyar Mariamayi University. Please go ahead. Hello, sir. Good afternoon sir. We are from Periyar Mariamayi College. We are, we form a good team in a neural network. So, we are working on that in our MATLAB. Can we do the same work on the silencer? Same toolbox. Can we use the same toolbox, the same commands or something and the, you know, the silencer? The answer is that, yes, it is possible. Of course, I do not know about all the toolboxes and so on. One has to, we need to discuss. We will set up the website. We will inform you. Then we can start discussing through that. So, I do not have a specific answer to this question at this point. All right. Thanks. So, the question I had was, what is 1 is to 2 is to 5? In fact, I wanted B of 1 is to 2 is to 5. The answer is not given in this question. So, let us do this. So, if I do 1 is to 2 is to 5, it gives 1, 3, 5. So, you can say, if I say B of 1 is to 2 is to 5. So, what will it give? Let us see whether this works. It will give the first element of B and then the third element of B. What is the third element? It is 5. What is the fifth element of B? It is 9. So, it is 159. So, it is possible. So, what we have done is, just recall this, what we did. I said B is this, B 1 is to 2 is to 5. It just extracts the way that we want. Just imagine doing this in C. How many lines of code you would have written to do this? We have taken a lot of lines. So, that is what it does. I have created a variable called D, which is B is 1 is to 2 is to 5 and then 101. It attaches these. Before I go on, I see that there is a big difference in the type of audience. There are some people who have no clue of what Sylab is about and in fact, this talk is meant for people, even for people who do not use Sylab. There are also people who have been using Sylab, who are stuck in neural network processing or neural networks or image processing. So, you have advanced questions and in fact, those questions, I may not be in a position to answer them because I may not be familiar with some of those toolboxes that you might have downloaded. So, all that I can say is that we should be in a position to help you all. What we should do is we can have one more session later on in this, during this program itself, where we can meet once more and see if we can address some specific questions. Here in this talk, what I would like to do is, I would like to stay with the talk that I am giving and I have some questions so that you can think and participate, you would interact with me on the questions that I pose. Your advanced questions can be answered some other time. So, if we, maybe I should have mentioned this right in the beginning. So, at least now I can say that. Is that okay? I said that Sylab has a built-in language, it has functions, it has for loops, do loops and so on. So, for all of these, you need a comparison operator equal to less than, greater than, less than or equal to and so on. So, let us see some usage of this. For example, I create this A equals 1 through 9, B is 9 minus A. So, this is going to create A a vector of 1 through 9 and then B also will be a vector of 9 elements, only thing is 9 minus A. So, A is created 1 through 9, B is 9 minus A, 9 minus 1 is 8, 9 minus 2 is 7, 9 minus 7 is 2, 9 minus 9 is 0. So, I have created these two. Now, what I want to do is, I want to ask this question. In fact, let us see whether you can do this. A equals, let me just say 1 through 4, B is 4 minus A. Now, I want to ask this question, is A equal equal B? What will be the answer? There is a question from Amrita Puri. Now, my question is, I do not want you to ask another question as I mentioned earlier. Now, please do not connect me. The question I have is, I have a specific question. If you have a question, we will answer it later. The question is, because otherwise we will not get anywhere. You have hundreds of questions from people who have used sila for something or other. There are also lots of people who do not even know sila. So, as I mentioned earlier, this is a general purpose talk. Does anyone have an answer to this question, what is A equals B? Yeah, VNIT Nakur has an answer. Yeah, go ahead. The answer is A equals B. Sorry, this is not equal. See, for example, here I said, so the answer is A equals B. Here, I am saying, see, you have to understand the operator. Here, A equals 1 is to 4. Here, I am saying equal equal. That means, I am comparing the two things. So, Velour Institute of Technology Tamil Nadu, let us go there. They say that it is false. Here, I am asking the question is A equal to B. That is the question mark. The moment I say equal equal, I am questioning. Yeah, Velour, yeah, go ahead. Please answer. No, the answer is, it is false. That is not the, that is not completely correct. If I type, if I give the carriage return now, what will sila give? Let us see if anybody else has the answer. Let us see somebody new. Anna University has given the answer. Let Chennai, last one. Yeah, the answer they have given is 0, 0, 0, 0. So, that is the correct answer, because it is going to compare these two. Is 1 is to 3? 1 equal to 3? It will say, so it is not equal. 2 is equal to 2? It will say not equal. 3 equals 1? Not equal. 4 equals 0? Not equal. The only thing is it is not going to give 0, 0, 0, 0. It is going to give false, false, false, false. So, Matlab may give it as 0, 0, 0, 0, but sila will give it this way. Let us see the carriage return. Hey, this, yeah, I made a mistake. In fact, somebody had answered that. I think Amrita Puri has answered it correctly and also Government Engineering College Trissur also answered it correct. So, the answer from Anna University is not okay. You had given all of them 0. You have probably also made the same mistake that I made. Notice that this 2 is equal to this 2. So, it is, the answer is false, true, false, false. And of course, I can ask questions like is A, so let us recall what A is, what B is. I can ask is A greater than B. So, it will be false here. What will happen here? This 2 is not greater than B, not greater than 2. So, this will be also false, false, false, true, true. Okay. All right. So, this is extremely useful. This is extremely useful in applications such as signal processing, image processing. You want to detect an edge and you want to locate in a big matrix entries that are one for example. So, you can just say find all those entries and tell me where they are. I suppose to writing a for loop, this can be done using matrices. Okay. What I will do is, I will give that example and then maybe I will stop here. I want to go to this. Let us go to, of course you can do lots of these things. Let us do a transpose. So, for example, here I have created C equals 1 semicolon 2 semicolon 3. So, it creates a column vector. If I say 1 is to 3, 1, 2, 3 and then B is A transpose, then transpose is obtained by colon, then you get this, sorry, single code, you get 1, 2, 3 and then you can extract sub matrices. Okay. So, here for example, I am saying A is a 3 by 3 matrix and the second column of A is taken out and put it in B. Right. So, for example, let us look at this 1, 2, 3, 4, 5, 6, 7, 8, 0. I have created this, then I say B is equal to A of, supposing I want to extract only the second row. I will say second row all columns. All columns are done by this colon. It will give me 4, 5, 6. If on the other hand, I say A equals B equals A of second row. Okay. Except that I do not want the columns come in the same manner. Suppose I want to say, let it start from third column, decrements of minus, decrements of 1, all the way up to 1. Just think about it. The second row, but in the column, I am saying start with the third, which means 6 should come first and then the second index is 2, 3 to 1, it will be 6, 5, 4. See that 6, 5, 4. Of course, I can do some more operations. A is this. B, let me just say B is 2 is to 3, which means take the second and third. So, it is 6, 5, 4 and then 0, 8, 7. Of course, I can do if I want only 1 and 3. So, I can say 1 is to 2 is to 3, which means skip the second one. So, now I got 3, 2, 1, 0, 8, 7 and so on. So, just imagine this line gives you, I mean really fancy calculation, doing this in C would have taken lots of lines. Okay. This is, next one is an extremely important one that Sylab is optimized for vector calculations. So, I want to illustrate this using this. So, let us create a matrix A equals 1s of, let me first show you this command called 1s. 1s of 5, 1 will give me 5 by 1 and then it will have all 1s. Similarly, A equals 1s of 2, 3 will give me 2 by 3 matrix. Alright. So, what I will do is, I will create this A equals 1s of, let me do this 50,000 comma 1. So, what should I do now? Can I put carriage return? If I put a carriage return, it would try to echo all the 50,000 values, do not want to do this. So, I put a semicolon. So, it has created this vector called A. Now, what I want to do is, I want to add A and A and put it in B. So, I will do it as follows. For I equals 1 is to 3, B equals A of I, B of I equals, let me put this, A of I plus A of I and then remember to put this semicolon. One thing is I said I equals, going from 1 to 3, I have to say 50,000, B equals this. Let me do this. Okay, let us see. Let us see whether this will work. Okay, it did not like it. Okay, the usage is, okay let us do it for smaller one, 1s of 5 comma 1, B equals for I equals 1 through 5, B of I equals A of I plus A of, so say it is actually computing every time. So, that is okay. The mistake was I think because B was typed as something else, it is expecting some other thing. So, I did not like this. Okay, so what we will do is, we will do the following. So, this is fine. So, we will do the following, clear. So, A is 1s of 50,000 comma 1 and then B is, it is doing the computation. All right, it has done the computation. So, what I will do is, invoke this function called timer. Okay, I do the calculation once again, timer. So, it says now it took 0.4565. Just remember this number. Now, what I will do is C equals A plus A. So, here I did the same thing except here I went through a loop. Here I did matrix calculation. So, let us do this once again. Timer, C is this timer. You can see that here it took 0.45 when I went through the loop. When I did this A plus A, here I am no longer using the loop. It uses only 0.142 and we can of course ask is C equal equal B. Okay, if I do that, what will happen? Now, C is a vector of size 50,000. B is also a vector of size 50,000. We will compare all of them and it will say that. So, what I will do is, let me just do a max of this. Let us see what happens. Function not defined. Okay, let me see. Size of B is 50,000 by 1. Size of A, C is 50,000 by 1. So, help. Let me just do norm. Okay, there is a norm. Let us see whether this works. Norm of B not defined. Okay, so let us do it this way. Comparison equals B equal equal C. If I went through this, it just keeps saying true. Okay, then max of okay. So, the point is that this is a binary vector and I do not know whether some will work. So, some worked here, some of comparison and it gives 50,000. So, we compared B and C and B and C are identical and it gave 1 for each of them and then we added all of them, we got 50,000. So, this is of course an indirect way to check that. So, what I want you to do is, to the extent possible, use matrix calculation. Don't use for loop. Yeah. All right. Time is over. So, as a result, what I will do is, I will stop here. I hope I was able to give some flavor of Sylab. You know, there were lots of questions. In fact, there were questions from, I could address only about six or seven institutions. One of the reasons is that, one of the reasons why I didn't want to answer many of your questions is that you had questions, lots of questions not directly relevant to my talk and I thought that we could have a separate session to answer some of these high level questions. At that time, I will not answer, I will not give a talk, but maybe we can just field questions. So, with that, I would like to end. Just give me one minute. I will just see if we have. So, I had something on differential equations. There is an interest. I can give a talk later. So, I will just quickly go through this. And then, of course, plots are very nice. One can create nice plots in Sylab. I will upload this file. You can look at it. So, to conclude, Sylab is ideal for educational institutions, including schools. It's built on a sound numerical platform. It's free. It's also suitable for industrial applications. There is, of course, a standard trade-off between free and commercial applications. So, I want to thank you for listening to me. If required, we can meet again for another session on Sylab. Thank you.