## Monday, December 6, 2010

### Ito Calculus with Tensorial

Here is a short example on how to use the Tensorial package for Ito calculus (stochastic calculus)

ito.pdf

### Numerical Linear Algebra and Quantum Control

Here is a poster about some of my recently published research

Poster pdf

## Sunday, December 5, 2010

### MathLink example 4: Trace of a complex matrix

In this example, I introduce the ability to treat complex numbers.

-------------------------------------------------------
myTrace.c
-------------------------------------------------------
```
#include<stdio.h>
#include<string.h>

extern void myTrace( void );

void myTrace( void )
{

int i,j,n;

double *matrix;

int *dims;
int rank;

printf(" MLGetReal64Array error reading data \n");
};

n = dims[0];

double resum=0.;
double imsum=0.;

double sum[2];

int outdims[1];

int outrank = 1;

for(i=0;i<n;i++){

resum = resum + matrix[2*i*n + 2*i];

imsum = imsum + matrix[2*i*n + 2*i + 1];
}

}

#if __BORLANDC__
#pragma argsused
#endif

int PASCAL WinMain( HINSTANCE hinstCurrent, HINSTANCE hinstPrevious, LPSTR lpszCmdLine, int nCmdShow)
{

char  buff[512];
char FAR * buff_start = buff;

char FAR * argv[32];
char FAR * FAR * argv_end = argv + 32;

hinstPrevious = hinstPrevious; /* suppress warning */

if( !MLInitializeIcon( hinstCurrent, nCmdShow)) return 1;

MLScanString( argv, &argv_end, &lpszCmdLine, &buff_start);
return MLMain( (int)(argv_end - argv), argv);
}

#else

int main(int argc, char* argv[])
{

return MLMain(argc, argv);
}

#endif
```

-----------------------------------------------------
myTrace.tm
-----------------------------------------------------
```:Begin:
:Function:       myTrace

:Pattern:        myTrace[ L_List]
:Arguments:      { L  }
:ArgumentTypes:  { Manual  }
:ReturnType:     Manual

:End:

:Evaluate: myTrace::usage = "myTrace[M] gives the trace of complex matrix M"```

------------------------------------------------------
Makefile
------------------------------------------------------
```MPREP = /usr/bin/mprep
CXX = /usr/bin/c++

myTrace : myTracetm.c myTrace.c
\${CXX} myTracetm.c myTrace.c -o myTrace -lML64i3 -lm -lpthread -lrt -lstdc++

myTracetm.c : myTrace.tm
\${MPREP} myTrace.tm -o \$@```

---------------------------------------------------
myTrace.nb
---------------------------------------------------

```link = Install["./myTrace"]

(m = {{1., 2., 1.}, {2., 2., 2.}, {3., 3., 3.}} + I) // MatrixForm

myTrace[m]

```

## Saturday, December 4, 2010

### MathLink example 3: Trace of a real matrix

In this example we calculate the trace of a matrix of floating point numbers (double type in C)

---------------------------------------------------
myTrace.c
---------------------------------------------------
```
extern double myTrace( void );

double myTrace( void )
{
int i,j,n;

double *matrix;
int *dims;

int rank;

return 0.;
};

n = dims[0];

double sum=0;
for(i=0;i<n;i++) sum = sum + matrix[i*n+i];

return sum;
}

#if __BORLANDC__
#pragma argsused
#endif

int PASCAL WinMain( HINSTANCE hinstCurrent, HINSTANCE hinstPrevious, LPSTR lpszCmdLine, int nCmdShow)
{

char  buff[512];
char FAR * buff_start = buff;

char FAR * argv[32];
char FAR * FAR * argv_end = argv + 32;

hinstPrevious = hinstPrevious; /* suppress warning */

if( !MLInitializeIcon( hinstCurrent, nCmdShow)) return 1;

MLScanString( argv, &argv_end, &lpszCmdLine, &buff_start);
return MLMain( (int)(argv_end - argv), argv);
}

#else

int main(int argc, char* argv[])
{

return MLMain(argc, argv);
}

#endif```

----------------------------------------------
myTrace.tm
----------------------------------------------

```:Begin:
:Function:       myTrace

:Pattern:        myTrace[ L_List]
:Arguments:      { L  }
:ArgumentTypes:  { Manual  }
:ReturnType:     Real

:End:

:Evaluate: myTrace::usage = "myTrace[M] gives the trace of matrix M"
```

---------------------------------------------
Makefile
---------------------------------------------

```MPREP = /usr/bin/mprep
CXX = /usr/bin/c++

myTrace : myTracetm.c myTrace.c
\${CXX} myTracetm.c myTrace.c -o myTrace -lML64i3 -lm -lpthread -lrt -lstdc++

myTracetm.c : myTrace.tm
\${MPREP} myTrace.tm -o \$@

```