Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Politica, accademia e industria a confronto su mercato unico, sicurezza e competitività. Nei laboratori di Vimercate, Nokia ha mostrato le nuove generazioni di chip ottici e i test che ogni prodotto deve superare prima di arrivare sul mercato
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-01-2015, 10:31   #1
Leonerd
Junior Member
 
Iscritto dal: Jan 2015
Messaggi: 6
[C] Calcolo del seno

Ciao a tutti.

Mi sono posto un problema: come fanno le calcolatrici a calcolare il seno e il coseno di qualsiasi numero preso in input? In pratica mi chiedevo come fossero implementate le funzioni del calcolo del seno e del coseno all'interno di math.h per cercare di rifarle, perchè, conosciuto il valore di un angolo, non riesco ad arrivare al seno solo gemetricamente (senza utilizzare ovviamente teoremi vari come il teorema della corda che include il seno stesso dell'angolo).

Riuscite ad aiutarmi?
Leonerd è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2015, 15:56   #2
DoctorT
Senior Member
 
Iscritto dal: Jul 2005
Messaggi: 738
come fanno le calcolatrici esattamente non lo so ma un metodo di calcolo numerico c'è.

Mai come in questo caso google is your friend: http://www.luigisirignano.it/index.p...gory&catid=266

ho il sospetto che ci sia un metodo iterativo meno "pesante" dal punto di vista computazionale ma non sono riuscito a trovarlo
__________________
O.S.: WIN 10 64-bit CPU: INTEL I5 12400F RAM: 16 GB Corsair Vengeance LPX 3200 Mhz VGA: MSI ARMOR RX570 4GB OC MOBO: ASROCK B660M PRO RS HDD: Seagate 1TB SDD: CRUCIAL MX500 500GB ALI: BE QUIET PURE POWER CM 11 600W
DoctorT è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2015, 21:53   #3
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Dai un'occhiata a questa implementazione

Codice:
double mysin(double x, size_t number_of_terms)
{
  const double x2 = x * x;

  double t = x;
  double result = t;

  for (size_t i = 1; i < number_of_terms; ++i)
  {
    t = t * x2 / (double(2*i) * double(2*i+1));
    if (i % 2 == 0) result += t;
    else            result -= t;
  }

  return result;
}
e usala calcolando 9 termini con

v = mysin(arg, 9);
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2015, 11:22   #4
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Per ottimizzare e velocizzare aumentando la precisione, è possibile precalcolare il valore nella prima espressione e utilizzare una tabella più ampia; inoltre è possibile gestire un'altra variabile per il segno.

In pratica

Codice:
#include <math.h>

double mysin(double x)
{
  const double x2 = x * x;
  const double tb[] = {6.0, 20.0, 42.0, 72.0, 110.0, 156.0, 210.0, 272.0, 342.0, 420.0, 506.0, 600.0, 702.0};

  double t = x;
  double result = t;
  double sg = -1.0;

  for (size_t i = 0; i<13; ++i)
  {
    t *= x2 / tb[i];
    result += sg * t;
    sg = -sg;
  }

  return result;
}

int main()
{
	double arg;

	for(arg=0.0; arg<3.1415; arg+=3.1515/20)
		printf("%.15f %.15f\n", mysin(arg), sin(arg));
	return 0;
}
Nota che nel codice viene utilizzato un ciclo con un intero e le semplici operazioni in virgola mobile.

Ultima modifica di lorenzo001 : 26-01-2015 alle 11:37.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2015, 11:52   #5
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Nel passato usavano questo metodo, ma non sono sicuro sia ancora usato dalle calcolatrici.
http://en.wikipedia.org/wiki/CORDIC

Il CORDIC era un chip che poteva essere usato per seni e coseni, tangenti e arcotangenti, funzioni iperboliche e radice quadrata di un numero.
Fu fatto per sostituire un circuito analogico che al tempo veniva usato per le stesse cose.

Per le nuove sono propenso a dare ragione ad Antonio, fare moltiplicatori e divisori al giorno d'oggi non è più una roba complessissima come lo era 50 anni fa.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
ingframin è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2015, 12:14   #6
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Non ho indicato quel codice per dire che lo usano le calcolatrici ma solamente per suggerire un modo "semplice" di calcolare il seno, facendo a meno di elaborare potenze.

Se non mi sbaglio, era il metodo usato nel "vecchio" Commodore 64.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2015, 14:17   #7
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Se sei curioso, ti consiglio di dare uno sguardo qui: http://rosettacode.org/wiki/Trigonom...functions#REXX
Non è in c, ma gli algoritmi si possono implementare in qualunque linguaggio.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Ray-Ban Meta Audio: arrivano gli occhial...
Apple TV 4K: chip A19, CPU più veloce de...
Il mercato console sprofonda: i rincari ...
Apple Home Collection: videocamere 2,5K,...
Apple presenta HomeView, il nuovo hub do...
Apple HomePod mini 2 arriva in Italia: a...
SFSCON 2026: la sovranità digital...
Cooler Master GPU Shield arriva in Europ...
Wolters Kluwer Tax & Accounting pote...
NVIDIA accelera il DLSS 5: il nuovo mode...
Character.ai in bancarotta, Disney pront...
realme passa a ColorOS 17 con Android 17...
OPPO presenta ColorOS 17: più flu...
Giochi PS2 su smartphone Android: ARMSX2...
Ecco il nuovo tool semplificato per alle...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v