matlab ec diferem com a função cos

Tenho um programa implementado no matlab e o mesmo programa em c, e os resultados difere

Estou um pouco confuso que a função cos não retorne exatamente o mesmo resultad

Uso o mesmo computador, Intel Core 2 Duo e 8 bytes de tipo de dados duplo nos dois caso

Por que o resultado difere?

Aqui está o teste:

c:
double a = 2.89308776595231886830;
double b = cos(a);
printf("a = %.50f\n", a);
printf("b = %.50f\n", b);
printf("sizeof(a): %ld\n", sizeof(a));
printf("sizeof(b): %ld\n", sizeof(b));

a = 2.89308776595231886830106304842047393321990966796875
b = -0.96928123535654842068964853751822374761104583740234
sizeof(a): 8
sizeof(b): 8



matlab:
a = 2.89308776595231886830
b = cos(a);
fprintf('a = %.50f\n', a);
fprintf('b = %.50f\n', b);
whos('a')
whos('b')

a = 2.89308776595231886830106304842047393321990966796875
b = -0.96928123535654830966734607500256970524787902832031
  Name      Size            Bytes  Class     Attributes
  a         1x1                 8  double              

  Name      Size            Bytes  Class     Attributes
  b         1x1                 8  double  


So, b differ a bit (very slightly, but enough to make my debuging task difficult)

b = -0.96928123535654842068964853751822374761104583740234  c
b = -0.96928123535654830966734607500256970524787902832031  matlab

Uso o mesmo computador, o Intel Core 2 Duo e o tipo de dados duplo de 8 byte

Por que o resultado difere?

Matlab não usa o hardware da função cos embutido na Inte

Existe uma maneira simples de usar a mesma função cos no matlab ec (com resultados exatos), mesmo que um pouco mais lenta, para que eu possa comparar com segurança os resultados do meu programa matlab e

Atualizar

Muito obrigado por suas respostas

Então, como você apontou, a função cos do matlab ec é diferente. Isso é incrível! Eu pensei que eles estavam usando a função cos embutida no microprocessador Inte

A versão cos do matlab é igual (pelo menos para este teste) à versão do matlab. você também pode tentar no matlab: b = java.lang.Math.cos (a)

Então, eu fiz uma pequena função MEX para usar a versão cos c do matlab, e funciona bem; Isso me permite depurar o meu programa (o mesmo implementado no matlab ec) e ver em que ponto eles diferem, qual era o objetivo deste post.

A única coisa é que chamar a versão MEX c cos do matlab é muito lent

gora estou tentando chamar a função Java cos de c (como é o mesmo do matlab), veja se isso é mais rápid

questionAnswers(4)

yourAnswerToTheQuestion