<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://lem12.uksw.edu.pl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
		<id>https://lem12.uksw.edu.pl/index.php?action=history&amp;feed=atom&amp;title=Algorytm_Winograda</id>
		<title>Algorytm Winograda - Historia wersji</title>
		<link rel="self" type="application/atom+xml" href="https://lem12.uksw.edu.pl/index.php?action=history&amp;feed=atom&amp;title=Algorytm_Winograda"/>
		<link rel="alternate" type="text/html" href="https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;action=history"/>
		<updated>2026-04-03T23:55:04Z</updated>
		<subtitle>Historia wersji tej strony wiki</subtitle>
		<generator>MediaWiki 1.23.8</generator>

	<entry>
		<id>https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;diff=195&amp;oldid=prev</id>
		<title>AndrzejSalwicki o 14:50, 13 lut 2013</title>
		<link rel="alternate" type="text/html" href="https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;diff=195&amp;oldid=prev"/>
				<updated>2013-02-13T14:50:21Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;amp;diff=195&amp;amp;oldid=170&quot;&gt;Podgląd zmian&lt;/a&gt;</summary>
		<author><name>AndrzejSalwicki</name></author>	</entry>

	<entry>
		<id>https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;diff=170&amp;oldid=prev</id>
		<title>AndrzejSalwicki: Utworzył nową stronę „(* Algorytm Winograda mnozenia macierzy o rozmiarze n x n *)  '''program''' Winograd;  '''signal''' Niezgoda;  '''unit''' Winograd: '''procedure'''(A,B: '''arrayof a...”</title>
		<link rel="alternate" type="text/html" href="https://lem12.uksw.edu.pl/index.php?title=Algorytm_Winograda&amp;diff=170&amp;oldid=prev"/>
				<updated>2013-02-12T14:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;Utworzył nową stronę „(* Algorytm Winograda mnozenia macierzy o rozmiarze n x n *)  &amp;#039;&amp;#039;&amp;#039;program&amp;#039;&amp;#039;&amp;#039; Winograd;  &amp;#039;&amp;#039;&amp;#039;signal&amp;#039;&amp;#039;&amp;#039; Niezgoda;  &amp;#039;&amp;#039;&amp;#039;unit&amp;#039;&amp;#039;&amp;#039; Winograd: &amp;#039;&amp;#039;&amp;#039;procedure&amp;#039;&amp;#039;&amp;#039;(A,B: &amp;#039;&amp;#039;&amp;#039;arrayof a...”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(* Algorytm Winograda mnozenia macierzy o rozmiarze n x n *)&lt;br /&gt;
&lt;br /&gt;
'''program''' Winograd;&lt;br /&gt;
&lt;br /&gt;
'''signal''' Niezgoda;&lt;br /&gt;
&lt;br /&gt;
'''unit''' Winograd: '''procedure'''(A,B: '''arrayof arrayof''' real;&lt;br /&gt;
			 '''output''' C: '''arrayof arrayof''' real);&lt;br /&gt;
 &lt;br /&gt;
:   '''var''' i,j,k,n,m: integer,&lt;br /&gt;
:     W,V: '''arrayof''' real,&lt;br /&gt;
:       p: boolean,&lt;br /&gt;
:       s: real;&lt;br /&gt;
            &lt;br /&gt;
'''begin'''&lt;br /&gt;
(* ustalic czy macierze moga byc mnozone tzn.    czy ilosc wierszy w A = ilosc kolumn w B? *)&lt;br /&gt;
(* ustalic czy n jest parzyste? *) &lt;br /&gt;
(* obliczyc &amp;quot;preprocessing&amp;quot; *)&lt;br /&gt;
&lt;br /&gt;
:i := upper(A);&lt;br /&gt;
:j := lower(A);&lt;br /&gt;
:k := i-j;&lt;br /&gt;
:i:= upper(B);&lt;br /&gt;
:j:= lower(B);&lt;br /&gt;
:if i-j &amp;lt;&amp;gt; k then raise Niezgoda fi;&lt;br /&gt;
&lt;br /&gt;
:(* mozna mnozyc *)&lt;br /&gt;
&lt;br /&gt;
:n := k+1;&lt;br /&gt;
:p := (n mod 2) = 0;&lt;br /&gt;
:m := n div 2;&lt;br /&gt;
:'''array''' W '''dim''' (1:n);&lt;br /&gt;
:'''array''' V '''dim''' (1:n);&lt;br /&gt;
:'''array''' C '''dim''' (1:n);&lt;br /&gt;
:'''for''' i := 1 '''to''' n&lt;br /&gt;
:'''do'''&lt;br /&gt;
::  '''array''' C(i) '''dim''' (1:n)&lt;br /&gt;
:'''od''';  &lt;br /&gt;
(* obliczanie &amp;quot;preprocessingu&amp;quot; *)&lt;br /&gt;
for j:= 1 to n&lt;br /&gt;
do&lt;br /&gt;
  s:=0;&lt;br /&gt;
  for i := 1 to m &lt;br /&gt;
  do&lt;br /&gt;
    s := A(j,2*i-1) * A(j,2*i) +s;&lt;br /&gt;
  od;&lt;br /&gt;
  W(j) := s;&lt;br /&gt;
od;&lt;br /&gt;
for j:= 1 to n&lt;br /&gt;
do&lt;br /&gt;
  s:=0;&lt;br /&gt;
  for i := 1 to m &lt;br /&gt;
  do&lt;br /&gt;
    s := B(2*i-1,j) * B(2*i,j) +s;&lt;br /&gt;
  od;&lt;br /&gt;
  V(j) := s;&lt;br /&gt;
od;&lt;br /&gt;
&lt;br /&gt;
(* obliczanie iloczynu macierzy *)&lt;br /&gt;
for i := 1 to n&lt;br /&gt;
do&lt;br /&gt;
  for j := 1 to n&lt;br /&gt;
  do&lt;br /&gt;
    s:= 0;&lt;br /&gt;
    for k:= 1 to m&lt;br /&gt;
    do&lt;br /&gt;
      s:= (A(i,2*k-1)+B(2*k,j)) * (B(2*k-1,j)+A(i,2*k)) +s;&lt;br /&gt;
    od;&lt;br /&gt;
    C(i,j) :=s-W(i)-V(j);&lt;br /&gt;
    if not p&lt;br /&gt;
    then &lt;br /&gt;
       C(i,j) := C(i,j) + A(i,n)*B(n,j);&lt;br /&gt;
    fi;&lt;br /&gt;
  od;&lt;br /&gt;
od;      &lt;br /&gt;
end Winograd;&lt;br /&gt;
&lt;br /&gt;
var M1,K1,J1,J2 : arrayof arrayof real,&lt;br /&gt;
    i,j,n,t,k : integer,&lt;br /&gt;
    s: real;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* ------------------------------------------------------------------------- *)&lt;br /&gt;
begin (*programu *)&lt;br /&gt;
   write(&amp;quot;podaj wartosc n=&amp;quot;);&lt;br /&gt;
   readln(n);writeln(n);&lt;br /&gt;
   array M1 dim (1:n);&lt;br /&gt;
   array K1 dim (1:n);&lt;br /&gt;
   array J1 dim (1:n);&lt;br /&gt;
   array J2 dim (1:n);&lt;br /&gt;
   for i := 1 to n do&lt;br /&gt;
     array M1(i) dim (1:n);&lt;br /&gt;
     array K1(i) dim (1:n);&lt;br /&gt;
     array J1(i) dim (1:n);&lt;br /&gt;
     array J2(i) dim (1:n);&lt;br /&gt;
   od;     &lt;br /&gt;
   for i := 1 to n do&lt;br /&gt;
   for j := 1 to n do&lt;br /&gt;
     if i=j then M1(i,j):= 1 else M1(i,j):=0 fi;&lt;br /&gt;
     K1(i,j):= (i-1)*n+j;&lt;br /&gt;
   od;&lt;br /&gt;
   od;&lt;br /&gt;
   &lt;br /&gt;
   t:=time;&lt;br /&gt;
   call Winograd(M1,K1,J1);&lt;br /&gt;
   t:=time - t;&lt;br /&gt;
   writeln(&amp;quot;czas Win=&amp;quot;,t:6);&lt;br /&gt;
   &lt;br /&gt;
   t:=time;&lt;br /&gt;
   for i:=1 to n do&lt;br /&gt;
   for j:=1 to n do&lt;br /&gt;
     s:=0;&lt;br /&gt;
     for k:=1 to n do&lt;br /&gt;
       s := s + M1(i,k)*K1(k,j);&lt;br /&gt;
     od;&lt;br /&gt;
     J2(i,j):=s;&lt;br /&gt;
   od;&lt;br /&gt;
   od;&lt;br /&gt;
   t:=time-t;&lt;br /&gt;
   writeln(&amp;quot;czas norm=&amp;quot;,t:6);&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
   for i := 1 to n do&lt;br /&gt;
     writeln;&lt;br /&gt;
     for j := 1 to n do&lt;br /&gt;
       write(J1(i,j):5:0);&lt;br /&gt;
     od;&lt;br /&gt;
   od;&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
               &lt;br /&gt;
end program;�&lt;/div&gt;</summary>
		<author><name>AndrzejSalwicki</name></author>	</entry>

	</feed>