This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
tutorial_lud [2017/04/19 13:26] waruna [Generating and Testing Alphabets] |
tutorial_lud [2019/04/05 09:02] (current) sanjay |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | In this tutorial, we write an Alphabets program, starting from a mathematical equation for LU decomposition. | + | In this tutorial, we write an Alphabets |
| The equation for LU Decomposition, | The equation for LU Decomposition, | ||
| Line 18: | Line 18: | ||
| - | [Temp note due to : in the last case of L, the condition is "1 < j <= i"] | + | =====Writing |
| - | + | ||
| - | =====Writing | + | |
| ====Step 1 : Affine System and Parameters ==== | ====Step 1 : Affine System and Parameters ==== | ||
| - | Let's start from an empty alphabets | + | Let's start from an empty alpha file, with LUD as the name of the system, and a positive integer N as its parameter. |
| - | A system (Affine System) takes its name from system of affine recurrence equations, and represents a block of computation. An Alphabets | + | A system (Affine System) takes its name from system of affine recurrence equations, and represents a block of computation. An Alpha program may contain multiple systems. |
| **Caveat: | **Caveat: | ||
| Parameters are runtime constants represented with some symbol in the code. In this example, parameter N will be used to define the size of the matrices, which is not known until runtime. | Parameters are runtime constants represented with some symbol in the code. In this example, parameter N will be used to define the size of the matrices, which is not known until runtime. | ||
| - | <sxh alphabets; gutter:false> | + | <sxh alphabets; gutter:true> |
| affine LUD {N|N>0} | affine LUD {N|N>0} | ||
| . | . | ||
| Line 34: | Line 32: | ||
| ====Step 2 : Variable Declarations==== | ====Step 2 : Variable Declarations==== | ||
| - | In most cases, a computation uses some inputs and produces outputs. Such variables must be declared with a name, a data type, and a shape/ | + | In most cases, a computation uses some inputs and produces outputs. Such variables must be declared with a name, a data type, and a shape/ |
| For this example, the '' | For this example, the '' | ||
| - | <sxh alphabets; gutter:false> | + | <sxh alphabets; gutter:true> |
| float A {i, | float A {i, | ||
| </ | </ | ||
| Similarly, '' | Similarly, '' | ||
| - | <sxh alphabets; gutter:false> | + | <sxh alphabets; gutter:true> |
| // The convention is that i is the vertical axis going down, and j is the horizontal axis | // The convention is that i is the vertical axis going down, and j is the horizontal axis | ||
| float L {i, | float L {i, | ||
| Line 47: | Line 45: | ||
| Now these variable declarations need to be placed at appropriate places to specify whether they are input/ | Now these variable declarations need to be placed at appropriate places to specify whether they are input/ | ||
| '' | '' | ||
| - | <sxh alphabets; gutter:false> | + | <sxh alphabets; gutter:true> |
| affine LUD {N|N>0} | affine LUD {N|N>0} | ||
| input float A {i, | input float A {i, | ||
| Line 152: | Line 150: | ||
| ====Final Alphabets Program==== | ====Final Alphabets Program==== | ||
| Combine all of the above, and you will get the Alphabets program for LU decomposition. Don't forget the keyword '' | Combine all of the above, and you will get the Alphabets program for LU decomposition. Don't forget the keyword '' | ||
| - | <sxh alphabets; gutter:false> | + | <sxh alphabets; gutter:true> |
| affine LUD {N|N>0} | affine LUD {N|N>0} | ||
| input | input | ||
| Line 229: | Line 227: | ||
| ====OOPS WHAT HAPPENED==== | ====OOPS WHAT HAPPENED==== | ||
| You will see that when you execute the code, **//it will produce an error// | You will see that when you execute the code, **//it will produce an error// | ||
| + | |||