#include <stdio.h>
#include <math.h>
#include "p_1_0.h"

void Multiply(matrix A, matrix B, matrix C);

void p_1_0_init(DOLProcess *p)
{
	p->local->index = 0;
	p->local->len = LENGTH;
}
int p_1_0_fire(DOLProcess *p)
{	if (p->local->index < p->local->len)
	{
		DOL_read((void*)PORT_IN_GEN, p->local->a, N*N*sizeof(double), p);

		DOL_read((void*)PORT_IN_0_0, p->local->Inv, N*N*sizeof(double), p);
		Multiply(p->local->a, p->local->Inv, p->local->C);

		DOL_write((void*)PORT_OUT_CON, p->local->C, N*N*sizeof(double), p);
		DOL_write((void*)PORT_OUT_1_1, p->local->C, N*N*sizeof(double), p);
		p->local->index++;
	}

	if (p->local->index >= p->local->len)
	{
		DOL_detach(p);
		return -1;
	}
	return 0;
}
