Gå til innhold

problem med sin()


Anbefalte innlegg

Skrevet

Hm.

Jeg sliter litt med sin() funksjonen.

Den gir liksom feil resultat.

 

#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
 float x;
 while (x)
 {
       cout << "sin ";
       x = false;
       cin >> x;
       x = sin(x);
       cout << " = " << x << "\n\n";
       }
   return EXIT_SUCCESS;
}

 

Resultater jeg får er f.eks:

sin(90) = 0.893997

sin(60) = -0.304811

 

sin(90) skal jo bli 1!

 

 

Mulig det er jeg som bruker funksjonen feil.

Vet ikke jeg..

Videoannonse
Annonse
Skrevet

Du får sin(90) = 0.893997 fordi sin() returnerer verdien i radianer.

 

Lenge siden jeg har holdt på med c++, men det er mulig det er en egen funk. for å få sinus i grader. På gamle kompilatorer kunne man bruke cosd() for å få utregning i grader, mulig det er noe som heter sind(). Vet ikke om dette går på nye kompilatorer.

 

Evt. regne om.

 

sin(x*pi/180)

Skrevet (endret)

Okey! Takk! :love:

 

Edit: Et kjapt spørsmål til med det samme jeg spør.

Hva er funksjonen for kvadratrot?

Endret av mortizz
Skrevet
SQRT(3)                             Linux Programmer's Manual                             SQRT(3)



NAME
      sqrt, sqrtf, sqrtl - square root function

SYNOPSIS
      #include <math.h>

      double sqrt(double x);

      float sqrtf(float x);

      long double sqrtl(long double x);

      Link with -lm.

DESCRIPTION
      The sqrt() function returns the non-negative square root of x.  It fails and sets errno to
      EDOM, if x is negative.

ERRORS
      EDOM   x is negative.

CONFORMING TO
      SVID 3, POSIX, BSD 4.3, ISO 9899.  The float and the long double variants are C99 require-
      ments.

SEE ALSO
      hypot(3)

Skrevet

En av mine favoritt-fortunes: "Assumption is the mother of all major screw-ups." :)

 

Jeg refererte forresten til spørsmålet om sqrt().

 

Og jeg "flamer" ikke, jeg informerer om gode referansesider. Dersom du lurte.

Skrevet

Forresten, vet noen om sin() og sånn bruker __asm fsin, eller om den er skrevet manuelt?

for i spillet mitt bruker jeg

float sin(float value)
{
 __asm
 {
   fld value
   fsin
 }
}

 

og min idé er at det er endel raskere, men det er jo mulig jeg tar feil...

Skrevet (endret)

Skulle tro at C-biblioteket optimerte for maskinarkitekturen, Intel supplerer vel sitt eget x86-optimerte C-runtime med ICC dog.

 

Du kan jo greppe etter fsin i glibc f.eks :_)

Endret av A_N_K

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...