<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Computer Science Life &#187; Faculty</title>
	<atom:link href="http://acszone.xhost.ro/?cat=4&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://acszone.xhost.ro</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 05 Mar 2010 21:13:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>First post</title>
		<link>http://acszone.xhost.ro/?p=1</link>
		<comments>http://acszone.xhost.ro/?p=1#comments</comments>
		<pubDate>Thu, 04 Mar 2010 17:08:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Faculty]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://acszone.xhost.ro/?p=1</guid>
		<description><![CDATA[Welcome to my blog. In my first post I will talk have a programing topic, more exactly a Divide and conquer problem : Matrix multiplication using this programming technique. We will show the simplest way, using  a particular case of matrices, square matrices with dimension being an even number (in order to keep the thing [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to my blog. In my first post I will talk have a programing topic, more exactly a <a href="http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm">Divide and conquer</a> problem : Matrix multiplication using this programming technique. We will show the simplest way, using  a particular case of matrices, square matrices with dimension being an even number (in order to keep the thing clear and concise ).</p>
<p>The idea is the follow : split each matrix in 4 square matrices till the dimension of this matrices is 2 . In this case, we will apply the known matrix multiplication.  Our function will have as arguments the input matrices, their dimension , the left upper corner coordinates ( line and column ) and the current dimension.</p>
<p>When the algorithm reaches matrices with dimension equal to 2 , proper elements in the matrix result are computed.</p>
<p>Here is the algorithm, written in C :</p>
<pre>
<div class="geshi c">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &nbsp;&lt;stdio.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#include &lt;stdlib.h&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> <span class="sy0">**</span>d <span class="sy0">=</span> <span class="kw2">NULL</span> ; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// global result matrix</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* &nbsp;reading &nbsp;function</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* file_name file input name</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* n &nbsp; dimension of the matrix</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* a, b &nbsp; operand matrices</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> read<span class="br0">&#40;</span><span class="kw4">char</span><span class="sy0">*</span> file_name, <span class="kw4">int</span> <span class="sy0">*</span>n, <span class="kw4">int</span> <span class="sy0">***</span>a, <span class="kw4">int</span> <span class="sy0">***</span>b<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> i, j;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;FILE <span class="sy0">*</span>fd <span class="sy0">=</span> fopen<span class="br0">&#40;</span>file_name, <span class="st0">&quot;r&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// dimension of the matrix</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;fscanf<span class="br0">&#40;</span>fd, <span class="st0">&quot;%i&quot;</span>, n<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// elements of &nbsp;A</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">*</span>a <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">**</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; <span class="sy0">*</span>n; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#40;</span><span class="sy0">*</span>a<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">0</span>; j &lt; <span class="sy0">*</span>n; j<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;fscanf<span class="br0">&#40;</span>fd, <span class="st0">&quot;%i&quot;</span>, <span class="sy0">&amp;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>a<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// elements of B</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">*</span>b <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">**</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; <span class="sy0">*</span>n; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#40;</span><span class="sy0">*</span>b<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">0</span>; j &lt; <span class="sy0">*</span>n; j<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;fscanf<span class="br0">&#40;</span>fd, <span class="st0">&quot;%i&quot;</span>, <span class="sy0">&amp;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="sy0">*</span>b<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;fclose<span class="br0">&#40;</span>fd<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* iterative algorithm for multiplication</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* n &nbsp;dimension</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* a, b &nbsp;operands</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* c result &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> matrix_multiply<span class="br0">&#40;</span><span class="kw4">int</span> n, <span class="kw4">int</span> <span class="sy0">**</span>a, <span class="kw4">int</span> <span class="sy0">**</span>b, <span class="kw4">int</span> <span class="sy0">***</span>c<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> i, j, k;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">*</span>c <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">**</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// inmultire matrice </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; n; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#40;</span><span class="sy0">*</span>c<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">0</span>; j &lt; n; j<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#40;</span><span class="sy0">*</span>c<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>k <span class="sy0">=</span> <span class="nu0">0</span>; k &lt; n; k<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#40;</span><span class="sy0">*</span>c<span class="br0">&#41;</span><span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span> <span class="sy0">+=</span> a<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>k<span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>k<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* compare matrices</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* n dimension</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* a,b matrices</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* return 1/0 &nbsp;different/equal</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> matrix_cmp<span class="br0">&#40;</span><span class="kw4">int</span> n, <span class="kw4">int</span> <span class="sy0">**</span>a, <span class="kw4">int</span> <span class="sy0">**</span>b<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> i, j;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span>a <span class="sy0">==</span> <span class="kw2">NULL</span><span class="br0">&#41;</span> || <span class="br0">&#40;</span>b <span class="sy0">==</span> <span class="kw2">NULL</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; n; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j <span class="sy0">=</span> <span class="nu0">0</span>; j &lt; n; j<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>a<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span> <span class="sy0">!=</span> b<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* free memory</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* n dimension</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* a matrix</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> free_matrix<span class="br0">&#40;</span><span class="kw4">int</span> n, <span class="kw4">int</span> <span class="sy0">**</span>a<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> i;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span>i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; n; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; free<span class="br0">&#40;</span>a<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;free<span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> print_matrix<span class="br0">&#40;</span><span class="kw4">int</span> n, <span class="kw4">int</span> <span class="sy0">**</span>a<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span>; i&lt;n; i<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> j<span class="sy0">=</span><span class="nu0">0</span>; j&lt;n; j<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;%i &quot;</span>,a<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">void</span> DI_mm<span class="br0">&#40;</span><span class="kw4">int</span> n, <span class="kw4">int</span> <span class="sy0">**</span>a, <span class="kw4">int</span> <span class="sy0">**</span>b, <span class="kw4">int</span> lia, <span class="kw4">int</span> cia, <span class="kw4">int</span> lib, <span class="kw4">int</span> cib, <span class="kw4">int</span> dim<span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> i;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> dim <span class="sy0">==</span> <span class="nu0">2</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; d<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> <span class="sy0">+=</span> a<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cia<span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib<span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> <span class="sy0">+</span> a<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; d<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+=</span> a<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cia<span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib<span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> a<span class="br0">&#91;</span>lia<span class="br0">&#93;</span><span class="br0">&#91;</span>cia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; d<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> <span class="sy0">+=</span> a<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cia<span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib<span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> <span class="sy0">+</span> a<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib<span class="br0">&#93;</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; d<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+=</span> a<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cia<span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib<span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> a<span class="br0">&#91;</span>lia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cia <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">*</span> b<span class="br0">&#91;</span>lib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>cib <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; dim <span class="sy0">=</span> dim <span class="sy0">/</span> <span class="nu0">2</span> ;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia,cia,lib,cib,dim<span class="br0">&#41;</span>; <span class="co1">// 1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia,cia <span class="sy0">+</span> dim,lib <span class="sy0">+</span> dim,cib,dim<span class="br0">&#41;</span>; <span class="co1">// 2</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia,cia,lib,cib <span class="sy0">+</span> dim,dim<span class="br0">&#41;</span>; <span class="co1">// 3</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia,cia <span class="sy0">+</span> dim,lib <span class="sy0">+</span> dim,cib <span class="sy0">+</span> dim,dim<span class="br0">&#41;</span>; &nbsp;<span class="co1">// 4</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia <span class="sy0">+</span> dim,cia,lib,cib,dim<span class="br0">&#41;</span>; &nbsp;<span class="co1">// 5</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia <span class="sy0">+</span> dim,cia <span class="sy0">+</span> dim,lib <span class="sy0">+</span> dim,cib,dim<span class="br0">&#41;</span>; <span class="co1">// 6</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia <span class="sy0">+</span> dim,cia,lib,cib <span class="sy0">+</span> dim,dim<span class="br0">&#41;</span>; <span class="co1">// 7</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; DI_mm<span class="br0">&#40;</span>n,a,b,lia <span class="sy0">+</span> dim,cia <span class="sy0">+</span> dim,lib <span class="sy0">+</span> dim,cib <span class="sy0">+</span> dim,dim<span class="br0">&#41;</span>; &nbsp;<span class="co1">// 8</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span><span class="sy0">**</span> argv<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> n; <span class="co1">// dimensiune matrice</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">int</span> <span class="sy0">**</span>a, <span class="sy0">**</span>b, <span class="sy0">**</span>c; <span class="co1">// matrices</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw4">char</span> <span class="sy0">*</span>in_file; <span class="co1">// in file</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>argc &lt; <span class="nu0">2</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; fprintf<span class="br0">&#40;</span>stderr,<span class="st0">&quot;Usage %s in_file<span class="es0">\n</span>&quot;</span>, argv<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; exit<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;in_file <span class="sy0">=</span> argv<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// read matrices and their dimension</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;read<span class="br0">&#40;</span>in_file, <span class="sy0">&amp;</span>n, <span class="sy0">&amp;</span>a, <span class="sy0">&amp;</span>b<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// iterative matrix multiply (c = a * b)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;matrix_multiply<span class="br0">&#40;</span>n, a, b, <span class="sy0">&amp;</span>c<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// matrix multiplication using DivideAndConquer (d = a * b)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;d <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">**</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; n; i<span class="sy0">++</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;d<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw4">int</span><span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span> <span class="sy0">*</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">int</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span>; i &lt; n ;i<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> j <span class="sy0">=</span> <span class="nu0">0</span>; j &lt; n ;j<span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;d<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span> &nbsp;<span class="sy0">=</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;a = <span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;print_matrix<span class="br0">&#40;</span>n,a<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>b = <span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; print_matrix<span class="br0">&#40;</span>n,b<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>c = <span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;print_matrix<span class="br0">&#40;</span>n,c<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;DI_mm<span class="br0">&#40;</span>n,a,b,<span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">0</span>,<span class="nu0">0</span>,n<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>d = <span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;print_matrix<span class="br0">&#40;</span>n,d<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// verificare rezultat</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>matrix_cmp<span class="br0">&#40;</span>n, c, d<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Wrong answer<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;Corect<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// free memory</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;free_matrix<span class="br0">&#40;</span>n, a<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;free_matrix<span class="br0">&#40;</span>n, b<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;free_matrix<span class="br0">&#40;</span>n, c<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">// TODO free_matrix(n, d);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://acszone.xhost.ro/?feed=rss2&amp;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
