wurzelziehen aus 32-bit int mit msp430 in C

Gast #1362833
Moin,

ich hab einen msp430f5438.

Nun wuerde ich gerne moeglichst schnell die wurzel aus einer 32 bit zahl 
ziehen. Weiss da einer ne Lösung? Programmiersprache ist C.

Ich hab Beispielcode(http://www.ti.com/sc/data/msp/databook/chp5.pdf) 
gefunden aber ich verstehe Ihn nicht so ganz:


{ unsigned long y, h;
int i;
h = x;
x = y = 0;
for (i = 0; i < 32; i++)
{ // x ist eigentlich 2*x
x <<= 1; x++; // 4*x + 1
if (y < x)
{
x –= 2;
} else
y –= x;
x++;
y <<= 1; // <y, h> <<= 2
if (h & Minus) y++;
h <<= 1;
y <<= 1;
if (h & Minus) y++;
h <<= 1;
}
return x;
}

Mehr war da nicht angegeben. Wie es genau Funktioniert möchte ich gar 
nicht wissen (jetzt vom mathematischen her).
Aber welchen Wert Übergebe ich der Funktion und was ist "Minus". Minus 
ist nirgends deklariert.
#1362853
#include <math.h>
/**********************************************************************
*
*  long  Sqrtlong(long il)
*  Wurzelziehen
*
**********************************************************************/


long  Sqrtlong(long il)
{
  long  x1,x2;

  x1 = 1L;
  x2 = 0L;

  if(il == 0L) return(0L);

  do
  {
    x2 = x1;
    x1 = (x1 + il/x1);
    x1 = x1 >> 1;
  } while(labs(x1-x2)>1L);
  return(x1);
}


Hiermal meine Routine fuer das Wurzelziehen.

Gruss Helmi
Gast #1362865
Ein einfaches Verfahren, dass auch schnelle konvergiert ist das sog.
Heron Verfahren. Zudem ist es noch recht einfach zu implementieren.

Gruß

Mandrake
Gast #1363226
Also ich gehe davon aus, dass x an die funktion Übergeben wird bzw. die 
Zahl ist, aus der die Wurzel berechnet werden soll. Aber was macht 
Minus. Dem Namen nach anscheinend irgendwas vorzeichenmäßiges
#1363234
Manni schrieb:
> Also ich gehe davon aus, dass x an die funktion Übergeben wird bzw. die
> Zahl ist, aus der die Wurzel berechnet werden soll. Aber was macht
> Minus. Dem Namen nach anscheinend irgendwas vorzeichenmäßiges

Ich schätze mal, das da noch eine Funktion vorgeschaltet wurde, die 
abfängt wenn eine negative Zahl übergeben wird und dieses in 'Minus' 
speichert. Auch wenn die Wurzel auf negative Zahlen eigentlich so nicht 
definiert ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.