Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » C-golf Loch5

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
12.06.2003, 22:34 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Zu schreiben ist folgende funktion:

C++:
double sin(double x);



Der Sinus soll so genau wie möglich, mindestens aber auf 12 Nachkommastellen errechnet werden. Es sollten möglichst nicht viel mehr als 200 Zeichen dafür gebraucht werden.
Ich bin bei unter 100 (spaces nicht mitgezählt)

Ferner ist es natürlich nicht erlaubt vorgefertigete Funktionen wie sin,cos usw. zu verwenden lediglich die vier grundrechenarten sind erlaubt.

Viel Spass
Heiko
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 12.06.2003 um 22:38 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.06.2003, 23:17 Uhr
Pablo
Supertux
(Operator)


Man könnte eine unednliche Reihe simulieren, man kann in C/C++ keine unendlichen Reihen machen, weil das Programm sonst nie beenden würde. Es ist wohl bekannt, dass:


sin(x) = x-x^3/3!+x^5/5! - ...
cos(x) = 1 - x^2/2! + X^4/4! - ...

weil sie in Potenzreihen um 0 und 1 entwickeln lassen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 12.06.2003 um 23:17 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.06.2003, 17:33 Uhr
virtual
Sexiest Bit alive
(Operator)


Also ohne bisher großartig am Algo optimiert zu haben, komme ich incl. der erforderlichen Leerzeichen auf 96 Zeichen für diese Routine. Mal gucken, ob ich es am Wochenende noch weiter optimiert bekomme (war ja nur der erste Versuch und der Algo ist sogar noch lesbar ).
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.06.2003, 17:37 Uhr
virtual
Sexiest Bit alive
(Operator)


Sorry, habe mich verzählt: 88 Zeichen. Mal so als Diskussionsgrundlage:

C++:
double sin(double x){double s=x,t=x,n=0;while((n+=2)<99)s+=(t=-t*x*x/n/(n+1));return s;}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 13.06.2003 um 17:39 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.06.2003, 17:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


so ne sch**sse ich bin bei 99(inclusive spaces) und es werden nicht mehr weniger

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.06.2003, 17:40 Uhr
virtual
Sexiest Bit alive
(Operator)


Okay, mein Angebot an Heiko:
Schlage die 88 und die bist Virtunominator Halbter Ordnung!
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.06.2003, 17:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das war meine Lösung:


C++:
double sin(double x){double y=x,a=x;for(int i=2;i<99;i+=2){a*=x*x/(i*i+i);i%4?y-=a:y+=a;}return y;}



Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.06.2003, 17:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


bei deiner Lösung kann man noch 3 Zeichen einsparen,
ist aber mal wieder genial


C++:
double sin(double x){double s=x,t=x,n=0;while((n+=2)<99)s+=t*=-x*x/(n*n+n);return s;}



sonst ist da nichts mehr zu holen da komme ich leider nicht mehr drunter
Vielleicht beim nächsten mal

Gruss Heiko
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 13.06.2003 um 18:15 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
13.06.2003, 20:46 Uhr
~0xdeadbeef
Gast


Davon ausgehend sehe ich noch eins:

C++:
double sin(double x){double s=x,t=x,n=0;while([b]++n++[/b]<99)s+=t*=-x*x/(n*n+n);return s;}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.06.2003, 20:51 Uhr
~0xdeadbeef
Gast


oder gleich so:

C++:
double sin(double x){for(double s=x,t=x,n=0;++n<99;s+=t*=-x*x/2/(n*n+n));return s;}


Das ist allerdings ISO-C99.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: