But probably any result for a this large argument
is wrong anyway. I get:
Here is what Wolfram Alpha computes:
sin(108086391056891904) = -0.388472474882228641529611...
sin(108086391056891903) = 0.390731128489273755062084...
Now GNU Prolog produces:
| ?- X is sin(108086391056891904).
X = -0.38847247488222864
yes
?- X is sin(108086391056891903).
X = -0.38847247488222864
yes
And then SWI-Prolog:
?- X is sin(108086391056891904).
X = -0.38834424806807816.
?- X is sin(108086391056891903).
X = -0.38834424806807816.
Ha Ha
To see the differences in the floating point unit,
you need lower values, not that large values. Here is
another test case:
GNU-Prolog:
?- between(1,18,N), A is 10^N, X is sin(A), write(sin(A)=X), nl, fail; true.
sin(10)= -0.54402111088936977
sin(100)= -0.50636564110975879
sin(1000)=0.82687954053200252
sin(10000)= -0.30561438888825215
sin(100000)=0.035748797972016508
sin(1000000)= -0.34999350217129294
sin(10000000)=0.4205477931907825
sin(100000000)=0.93163902710972601
sin(1000000000)=0.54584344944869956
sin(10000000000)= -0.48750602508751067
sin(100000000000)=0.92869366049659197
sin(1000000000000)= -0.61123870237688949
sin(10000000000000)= -0.28888529481752512
sin(100000000000000)= -0.20940830749645231
sin(1000000000000000)=0.85827279317023586
sin(10000000000000000)=0.77968800660697879
sin(100000000000000000)= -0.46453010483537271
sin(1000000000000000000)= -0.99296932074040511
SWI-Prolog:
sin(10)= -0.5440211108893698
sin(100)= -0.5063656411097588
sin(1000)=0.8268795405320025
sin(10000)= -0.30561438888825215
sin(100000)=0.03574879797201638
sin(1000000)= -0.34999350217129177
sin(10000000)=0.4205477931907708
sin(100000000)=0.9316390271096793
sin(1000000000)=0.5458434494497783
sin(10000000000)= -0.48750602507627
sin(100000000000)=0.9286936605443354
sin(1000000000000)= -0.6112387013579699
sin(10000000000000)= -0.28888528249228407
sin(100000000000000)= -0.2094084333834997
sin(1000000000000000)=0.8582721324763734
sin(10000000000000000)=0.779679945161067
sin(100000000000000000)= -0.4646441089357643
sin(1000000000000000000)= -0.9928161040530035
Jekejeke Prolog:
sin(10)= -0.5440211108893698
sin(100)= -0.5063656411097588
sin(1000)=0.8268795405320025
sin(10000)= -0.30561438888825215
sin(100000)=0.03574879797201651
sin(1000000)= -0.34999350217129294
sin(10000000)=0.4205477931907825
sin(100000000)=0.931639027109726
sin(1000000000)=0.5458434494486996
sin(10000000000)= -0.4875060250875107
sin(100000000000)=0.928693660496592
sin(1000000000000)= -0.6112387023768895
sin(10000000000000)= -0.2888852948175251
sin(100000000000000)= -0.2094083074964523
sin(1000000000000000)=0.8582727931702359
sin(10000000000000000)=0.7796880066069788
sin(100000000000000000)= -0.4645301048353727
sin(1000000000000000000)= -0.9929693207404051