Autor Beitrag
FelixD
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 08.01.11 15:04 
Hallo, ich habe ein Problem, bei dem ich nicht so recht weiter weiß. Zunächst mal die betroffenen Teile meines Codes:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
//Repeated Square and Multiply Algorithm for exponetiation in Z_p^m (= Z_p[x]/f(x) , f(x) in Z_p[x] irreducible of degree m) 
  public poly sqm(int a, int p, poly f)
  {
    poly r = new poly(1);
    poly G = new poly(deg,coef);
    if(a%2==1)
    {
    r=G;
    a=a-1;
    }
    a=a/2;
    while(a>0)
    {
      G=G.multiply(G,p);
      G=G.mod(f,p); 
                        G.print(); //bis hier funktioniert alles beim 1. Durchlauf der schleife(der print befehl gibt den richtigen wert zurück)
      if(a%2==1)
      {
                                G.print(); // dieser Befehl wird schon nicht mehr angezeigt.
            r=G.multiply(r,p); 
        r.print();
        r=r.mod(f,p);
        a=a-1;
      }
      a=a/2;
    }  
    return r;
  }

//multiply Polynomials in Z_p 
  public poly multiply(poly b, int p)
  {
      int[] co =new int[deg+b.deg +1];
    for(int i=0; i<=deg+b.deg; i++)
    {  
      co[i]=0;
      for(int j=0; j<=i; j++)
      {
        if(i-j<=deg&&j<=b.deg)
        {        
          co[i]+=coef[i-j]*b.coef[j];
        }
      }
    }
    poly r=new poly(co);
    r.convert(p);
    return r;
  }


Main-Funktion:
ausblenden C#-Quelltext
1:
2:
3:
4:
int[] c = {0,1};
poly P = new poly(1,c);
poly u = new poly(1,c);
u=u.sqm(5,5,P);


Nun bekomme ich beim Ausführen des Programms den Fehler System.Overflow bei der Methode multiply. Wobei der Algorithmus planmäßig verläuft bis zu der von mir kommentierten Stelle (in sqm).
Seltsam ist auch, dass wenn ich die multiply - Methode an der Stelle (also mit den selben Parametern) wo der fehler zu liegen scheint, direkt aufrufe funktioniert alles reibungslos ...

Wie gesagt das sind jetzt nur Ausschnitte des Codes, ich dachte mir es wäre nicht sinnvoll hier 300 zeilen zu posten. Verzeiht mir bitte auch meinen holprigen Programmierstil - das ist mein erstes C# Programm (und eines meiner ersten überhaupt).

Ich hoffe es kann mir jemand weiterhelfen.

lg Felix

Moderiert von user profile iconKha: C#-Tags hinzugefügt

Danke für das editieren. Habe den Fehler nun aber gefunden, der multily algorithm funktioniert in der weide nicht wenn man das nullpolynom mit dem nullpolynom multipliziert ...
lg