Toon posts:

[c++] Sinus?

Pagina: 1
Acties:
  • 128 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben (nog steeds) een c++ newbie, weet iemand hier hoe je een sinus van een bepaald getal kan uitrekenen????

grtz. Chris

Verwijderd

met sin(getal) geloof ik. Misschien moet je iets includen, maar ik verwacht dat het zo wel zal werken.

/me is niet bepaald een C/C++-er

Verwijderd

code:
1
2
#include <math.h>
sin(int getal);

compilen met (in linux) -lm, in windows wordt die er geloof ik standaard bij gedaan als je math.h include

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

code:
1
2
3
4
#include <math.h>

double   Input  = 5.0;
double   Result = sin(Input);

Professionele website nodig?


Verwijderd

Door een tabel te maken met alle sinuswaarden erin kan je het gebruik van de functie in het programma een stuk versnellen.

Hier is een voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <math.h>
int Sinus[360];

void MakeSinusTable()
{
   for (int i = 0; i <=360; i++)
   {
    //  Ik weet niet zeker of de sinus functie nu de i
      //  in radialen is of in graden. ALs ie in radialen 
      //  is moet je het eerst nog ff converten 
    Sinus[i]= sin(i);
   }
}

Als je dan de code in een functie wilt gebruiken hoef je alleen maar de waarde op te zoeken in de tabel die je net aanhebt gemaakt met de MakeSinusTable functie

dus:
code:
1
2
3
4
5
6
void Main()
{
  // Je wilt de sinus van 10 graden hebben
  int getal = Sinus[10];
  printf(getal);
}

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
Het bouwen van een sinus-table is eigenlijk overbodig. Voor zover ik ooit gezien hebt heeft de sinus functie die je gebruikt intern al zo'n tabel en de tussenliggende waarden worden door de functie benaderd. Ofwel, je doet anders werk dubbelop/minder nauwkeurig. Maar je hebt wel gelijk, een element van een array benaderen nog wel iets sneller is dan de functie aanroep.

Als je Visual C/C++ gebruikt moet je match.h eens includen en dan Browse Info inschakelen. Dan sin(1.0) intikken en via rechtermuisknop op de sin de optie "goto definition" kiezen. Als het goed is zie je dan hoe de sinus functie opgebouwd is (en dan zul je ook zo'n table struct zien).

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Op donderdag 20 september 2001 10:41 schreef Liquidus het volgende:
code:
1
2
3
#include <math.h>
int Sinus[360];
[..]
Wat was het bereik van een sinus ook alweer? Precies ja, van -1 tot 1. Ik zou van die int een float of een double maken... Of de resultaten met een bepaalde factor vermenigvuldigen alvorens ze naar int te converteren.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 20 september 2001 09:43 schreef beelzebubu het volgende:
compilen met (in linux) -lm, in windows wordt die er geloof ik standaard bij gedaan als je math.h include
Bij mij in linux geloof ik ook :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

... ik zeg niets... ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op donderdag 20 september 2001 20:51 schreef OiSyN het volgende:
... ik zeg niets... ;)
D'r is hier niets te benchmarken ksssssst weg jij ! :Y)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op donderdag 20 september 2001 20:52 schreef Yarvieh het volgende:
D'r is hier niets te benchmarken ksssssst weg jij ! :Y)
We kunnen een benchmarkje trekken van het verschil tussen het tekenen van een cirkel met de FPU-sinus en met een integer pre-stored sinustabel!

:P

ps. het b-woord doorgestreept voordat ik Otis weer op z'n teentjes trap... O+

Professionele website nodig?


Verwijderd

Op donderdag 20 september 2001 20:52 schreef Yarvieh het volgende:

[..]

D'r is hier niets te benchmarken ksssssst weg jij ! :Y)
:D

Dit is humor :P

en ik zeg hier niets zinnigs maar dit moest gewoon even eruit :P

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Volgens mij signaleer ik een 'laten we zoveel mogelijk C++ topics bovenaan zetten' aktie ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

C++ topics heersen

vooral als ze eindigen in een benchmark :+

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op donderdag 20 september 2001 21:33 schreef OiSyN het volgende:
C++ topics heersen

vooral als ze eindigen in een benchmark :+
:D

/me ligt nu ongeveer dubbel :P

  • Orphix
  • Registratie: Februari 2000
  • Niet online
De math functies zijn inderdaad in radialen (graden delen door 180/PI (ja ik weet dat je dit kan 'optimizen' we hoeven het niet te benchmarken:))) en zijn, zoals veel functies tegenwoordig sneller uit te rekenen dan een waarde uit een tabel in het geheugen aanspreken.

  • Marcj
  • Registratie: November 2000
  • Laatst online: 16:40
Benchmark!
code:
1
2
3
Voorberekend: 3460 miliseconden
Direct berekend: 3693 miliseconden
Winst: 12,5%

en dat 1.000.000.000 keer gedaan met verschillende getallen (i%6)
:P

Verwijderd

Waar is de assembly versie :?

  • Marcj
  • Registratie: November 2000
  • Laatst online: 16:40
Op donderdag 20 september 2001 21:49 schreef Yarvieh het volgende:
Waar is de assembly versie :?
ga jij ff een sinus functie in asm schrijven :? dat is toch al in math.h gedaan :?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Willen jullie niet elk c++ topic omdopen in een benchmark wedstrijd ??

Daar heeft de topicstarter helemaal niks aan en mocht iemand zo gek zijn de search functie te gebruiken, die persoon ook niet.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 20 september 2001 21:49 schreef Yarvieh het volgende:
Waar is de assembly versie :?
ja inderdaad! Nep-benchmarker!!! ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Marcj
  • Registratie: November 2000
  • Laatst online: 16:40
Op donderdag 20 september 2001 21:52 schreef OiSyN het volgende:

[..]

ja inderdaad! Nep-benchmarker!!! ;)
sorry, ik ben ook maar een beginner ;)

  • Dawai
  • Registratie: December 2000
  • Laatst online: 08-07 23:56

Dawai

HERiTAGE CHESS CREW

Op donderdag 20 september 2001 21:49 schreef Yarvieh het volgende:
Waar is de assembly versie :?
Getal real4 5.0
Resultaat real4 ?

fld dword ptr [Getal]
fsin
fstp dword ptr [Resultaat]

Zoiets :9

Programmer: red-eyed, mumbling mammal capable of conversing with inanimate objects.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op donderdag 20 september 2001 21:53 schreef Marcj het volgende:

[..]

sorry, ik ben ook maar een beginner ;)
hmmmm

ik stel een ontgroening voor... handen in de lucht voor degene die het met mij eens is :)

* .oisyn steekt zijn hand op

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

tsja...

De heren waren gewaarschuwd.

Topicstarter: Dit heeft niks met jou te maken verder.

Behalve dat je zelf wat beter je huiswerk had mogen doen ;)
Pagina: 1

Dit topic is gesloten.