{"id":2010,"date":"2013-08-06T11:20:03","date_gmt":"2013-08-06T09:20:03","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2010"},"modified":"2013-08-06T11:20:03","modified_gmt":"2013-08-06T09:20:03","slug":"qa-wird-math-sin-auf-maschinencode-abgebildet","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/08\/qa-wird-math-sin-auf-maschinencode-abgebildet\/","title":{"rendered":"Q&amp;A: Wird Math.sin(&hellip;) auf Maschinencode abgebildet?"},"content":{"rendered":"<p>Math.sin(double) ist eine native Implementierung, aber wie hier genau optimiert wird, kommt auf die <acronym>JVM<\/acronym>-Implementierung an. Trigonometrische Berechnungen sind echt ein Problem, insbesondere, weil sie alle strictfp durchgef\u00fchrt werden (siehe Quellcode). Die Berechnung ist zwar native doch muss der Flie\u00dfkommaprozessor mitunter den IEEE 754 Standard nachbilden, um auf ein exaktes reproduzierbares (eben strictfp) Ergebnis zu kommen auf allen Rechnern zu kommen. Eine oft diskutierte L\u00f6sung ist eine native C-Funktion zu nutzen, die direkt SIN vom Flie\u00dfkommaprozessor nutzt, ohne die in IEEE 754 beschriebene L\u00f6sung zu berechnen. (<a href=\"http:\/\/bugs.sun.com\/bugdatabase\/view_bug.do?bug_id=5005861\">http:\/\/bugs.sun.com\/bugdatabase\/view_bug.do?bug_id=5005861<\/a>) Das Problem ist in Java 6 angegangen worden aber nicht abschlie\u00dfend gel\u00f6st. Vielleicht gehen auch Sin-Tabellen, aber dass muss man dann ganz genau messen, ob sich das lohnt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Math.sin(double) ist eine native Implementierung, aber wie hier genau optimiert wird, kommt auf die JVM-Implementierung an. Trigonometrische Berechnungen sind echt ein Problem, insbesondere, weil sie alle strictfp durchgef\u00fchrt werden (siehe Quellcode). Die Berechnung ist zwar native doch muss der Flie\u00dfkommaprozessor mitunter den IEEE 754 Standard nachbilden, um auf ein exaktes reproduzierbares (eben strictfp) Ergebnis zu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[75],"tags":[],"class_list":["post-2010","post","type-post","status-publish","format-standard","hentry","category-qa"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=2010"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2010\/revisions"}],"predecessor-version":[{"id":2011,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2010\/revisions\/2011"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}