{"id":7231,"date":"2025-09-27T21:05:41","date_gmt":"2025-09-27T21:05:41","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=7231"},"modified":"2025-09-27T21:05:41","modified_gmt":"2025-09-27T21:05:41","slug":"gpu%e3%81%ae%e5%8d%98%e7%b2%be%e5%ba%a6-sin-cos-%e9%96%a2%e6%95%b0%e3%81%ae%e8%aa%a4%e5%b7%ae%e3%82%92%e5%bc%95%e6%95%b0-32bit-%e5%85%a8%e6%8e%a2%e7%b4%a2%e3%81%a7%e8%aa%bf%e3%81%b9%e3%81%9f","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/7231\/","title":{"rendered":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f"},"content":{"rendered":"\n<\/p>\n<div>\n<h2 id=\"gpu%E3%81%AE%E5%8D%98%E7%B2%BE%E5%BA%A6-sin-%2F-cos-%E3%81%AB%E3%81%AF%E3%80%8C%E6%A8%99%E6%BA%96%E7%89%88%E3%80%8D%E3%81%A8%E3%80%8C%E8%BF%91%E4%BC%BC%E7%89%88%E3%80%8D%E3%81%8C%E3%81%82%E3%82%8B\" data-line=\"0\" class=\"code-line\">\n GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u306b\u306f\u300c\u6a19\u6e96\u7248\u300d\u3068\u300c\u8fd1\u4f3c\u7248\u300d\u304c\u3042\u308b<\/h2>\n<p data-line=\"2\" class=\"code-line\">NVIDIA \/ AMD \u306a\u3069\u591a\u304f\u306e GPU \u306b\u306f\u3001<code>sin<\/code> \u3084 <code>cos<\/code> \u3068\u3044\u3063\u305f\u8d85\u8d8a\u95a2\u6570\u3092<strong>\u9ad8\u901f<\/strong>\uff081\u30b5\u30a4\u30af\u30eb\u3042\u305f\u308a1\u547d\u4ee4\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\uff09\u306b <strong>\u8fd1\u4f3c\u8a08\u7b97\u3059\u308b<\/strong> \u5c02\u7528\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u304c\u642d\u8f09\u3055\u308c\u3066\u3044\u307e\u3059\u3002NVIDIA \u3067\u306f\u3053\u308c\u3092 <strong>SFU (Special Function Unit)<\/strong> \u3068\u547c\u3073\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u4fbf\u5b9c\u4e0a\u3001SFU \u3067\u8a08\u7b97\u3055\u308c\u308b\u3082\u306e\u3092 <strong>\u8fd1\u4f3c\u7248<\/strong> \u3068\u547c\u3073\u3001\u975eSFU\u306e\u307b\u3046\u3092 <strong>\u6a19\u6e96\u7248<\/strong> \u3068\u547c\u3073\u307e\u3059\u3002<\/p>\n<p data-line=\"4\" class=\"code-line\">Unity \u3092\u306f\u3058\u3081\u3068\u3059\u308b\u30b2\u30fc\u30e0\u30a8\u30f3\u30b8\u30f3\u3067\u4f55\u6c17\u306a\u304f <code>sin<\/code> \/ <code>cos<\/code> \u3092 Shader\uff08HLSL\/GLSL\uff09\u304b\u3089\u547c\u3076\u3068\u3001HLSL \u2192 \u4e2d\u9593\u8868\u73fe \u2192 GPU \u30a2\u30bb\u30f3\u30d6\u30ea \u3068\u306a\u3063\u3066<strong>SFU \u547d\u4ee4\u306b\u7f6e\u304d\u63db\u3048\u3089\u308c<\/strong> \u307e\u3059 \u3002<br \/>\u3053\u306e\u3068\u304d\u306e\u8aa4\u5dee\u7279\u6027\u3092\u628a\u63e1\u3057\u3066\u3044\u306a\u3044\u3068\u3001<strong>\u56de\u8ee2\u884c\u5217<\/strong>\u3084 <strong>FFT \u7cfb<\/strong>\u306a\u3069\u4e09\u89d2\u95a2\u6570\u3092\u591a\u7528\u3059\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067<strong>\u60f3\u5b9a\u5916\u306e\u30d6\u30ec<\/strong>\u304c\u51fa\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"7\" class=\"code-line\">\u672c\u7a3f\u3067\u306fNVIDIA\/AMD\/Intel GPU\u3067 <strong>SFU \u7248\u306e <code>sin<\/code> \/ <code>cos<\/code> \u547d\u4ee4\u304c\u3069\u306e\u7a0b\u5ea6\u30ba\u30ec\u308b\u306e\u304b<\/strong> \u3092\u660e\u3089\u304b\u306b\u3057\u307e\u3059\u3002\u305b\u3063\u304b\u304f GPU \u3092\u4f7f\u3046\u306e\u3067\u5f15\u657032bit\uff08\u2248 <strong>42 \u5104\u901a\u308a<\/strong>\uff09\u3092<strong>\u5168\u63a2\u7d22<\/strong>\u3059\u308b\u65b9\u91dd\u3067\u81e8\u307f\u307e\u3057\u305f\u3002<\/p>\n<h2 id=\"%E3%81%BE%E3%81%9A%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89\" data-line=\"9\" class=\"code-line\">\n \u307e\u305a\u4ed5\u69d8\u304b\u3089<\/h2>\n<h3 id=\"nvidia-sfu-%E7%89%88-sin-%2F-cos-%E3%81%AE%E4%BF%9D%E8%A8%BC%E7%AF%84%E5%9B%B2%E3%81%AF--100pi-%EF%BD%9E-%2B100pi\" data-line=\"11\" class=\"code-line\">\n NVIDIA SFU \u7248 <code>sin<\/code> \/ <code>cos<\/code> \u306e\u4fdd\u8a3c\u7bc4\u56f2\u306f -100pi \uff5e +100pi<\/h3>\n<p data-line=\"13\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/a5391fdcc555-20250911.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"15\" class=\"code-line\">NVIDIA GPU \u306e SFU\u304c\u63d0\u4f9b\u3059\u308b\u4e09\u89d2\u95a2\u6570\u547d\u4ee4\u306f\u3001\u5165\u529b\u7bc4\u56f2\u306b\u5fdc\u3058\u3066\u8aa4\u5dee\u306e\u4e0a\u9650\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<br \/><a target=\"_blank\" href=\"https:\/\/docs.nvidia.com\/cuda\/parallel-thread-execution\/#floating-point-instructions-sin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Parallel Thread Execution ISA Version 9.0<\/a>\u306b\u3088\u308b\u3068\u3001<\/p>\n<ul data-line=\"18\" class=\"code-line\">\n<li data-line=\"18\" class=\"code-line\">\n<strong>\u5165\u529b\u7bc4\u56f2\u304c -2pi \uff5e +2pi \u306e\u5834\u5408<\/strong><br \/>\u6700\u5927\u8aa4\u5dee\u306f 2^(-20.5) \u7a0b\u5ea6<\/li>\n<li data-line=\"20\" class=\"code-line\">\n<strong>\u5165\u529b\u7bc4\u56f2\u304c -100pi \uff5e +100pi \u306e\u5834\u5408<\/strong><br \/>\u6700\u5927\u8aa4\u5dee\u306f 2^(-14.7) \u7a0b\u5ea6<\/li>\n<\/ul>\n<p data-line=\"23\" class=\"code-line\">\u3068\u660e\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3092\u8d85\u3048\u308b\u7bc4\u56f2\u306e\u5165\u529b\u306b\u3064\u3044\u3066\u306f <strong>\u300cbest effort\u300d<\/strong> \u3068\u3060\u3051\u8a18\u8f09\u3055\u308c\u3066\u304a\u308a\u3001\u8aa4\u5dee\u306b\u95a2\u3059\u308b\u4fdd\u8a3c\u306f\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\u305d\u3093\u306a\u3053\u3068\u3092\u77e5\u3089\u305a\u3001\u81ea\u4f5cShader\u3067 <code>sin(time * x)<\/code> \u306e\u3088\u3046\u306b\u66f8\u304d\u307e\u304f\u3063\u3066\u307e\u3057\u305f\u3051\u3069\u306d\u30fb\u30fb<br \/>\u5165\u529b\u304c\u5927\u304d\u304f\u306a\u308b\u3068\u7cbe\u5ea6\u3082\u52a3\u5316\u3059\u308b\u306e\u3067\u3059\u304c\u3001\u305d\u306e\u8a73\u7d30\u306f\u4ee5\u4e0b\u306e\u691c\u8a3c\u3067\u3002<\/p>\n<p data-line=\"27\" class=\"code-line\">\u203b\u8aa4\u5dee\u7bc4\u56f2\u3084\u6570\u5024\u306f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3084\u30d9\u30f3\u30c0\u3067\u7570\u306a\u308a\u307e\u3059\u3002\u8a72\u5f53 GPU\/\u30c9\u30e9\u30a4\u30d0\u306e\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u3067\u78ba\u8a8d\u3092\u3001\u3068\u8a00\u3044\u305f\u3044\u3068\u3053\u308d\u3067\u3059\u304c\u5b9f\u8ceaNVIDIA\u4ee5\u5916\u516c\u958b\u3057\u3066\u306a\u3044\u306e\u3067\u3001<a target=\"_blank\" href=\"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#%E6%A4%9C%E8%A8%BC4.1%EF%BC%9Anvidia%E4%BF%9D%E8%A8%BC%E7%AF%84%E5%9B%B2%E5%86%85(%C2%B1100pi)%E3%81%A7amd%2Cintel%E3%81%AEsfu%E7%89%88%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE%E6%9C%80%E5%A4%A7%E5%80%A4\" target=\"_blank\">https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#\u691c\u8a3c4.1\uff1anvidia\u4fdd\u8a3c\u7bc4\u56f2\u5185(\u00b1100pi)\u3067amd%2Cintel\u306esfu\u7248\u7d76\u5bfe\u8aa4\u5dee\u6700\u5927\u5024<\/a> \u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3092\u53c2\u8003\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<blockquote data-line=\"29\" class=\"code-line\">\n<p data-line=\"29\" class=\"code-line\">\u5730\u5473\u306b\u91cd\u8981\u3067\u3059\u304c\u3001&#8221;absolute error&#8221; = \u7d76\u5bfe\u8aa4\u5dee \u306e\u307f\u304c\u4fdd\u8a3c\u3055\u308c\u3066\u3044\u308b\u70b9\u306b\u6ce8\u610f\u3067\u3059\u3002\u5f8c\u306b\u6271\u3044\u307e\u3059\u304cULP\u306f\u76f8\u5bfe\u8aa4\u5dee\u306e\u307b\u3046\u3092\u898b\u3066\u3044\u307e\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"31\" class=\"code-line\"\/>\n<h3 id=\"%E6%A8%99%E6%BA%96%E7%89%88-sin-%2F-cos-%E3%81%AF%E3%80%8C%E6%9C%80%E5%A4%A7-2-ulp%E3%80%8D%E3%81%BE%E3%81%A7%EF%BC%88%E5%8D%98%E7%B2%BE%E5%BA%A6%EF%BC%89\" data-line=\"33\" class=\"code-line\">\n \u6a19\u6e96\u7248 <code>sin<\/code> \/ <code>cos<\/code> \u306f\u300c\u6700\u5927 2 ULP\u300d\u307e\u3067\uff08\u5358\u7cbe\u5ea6\uff09<\/h3>\n<p data-line=\"35\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/9e73be5904ea-20250911.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"37\" class=\"code-line\"><a target=\"_blank\" href=\"https:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/#standard-functions\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">NVIDIA \u306e CUDA C++ Programming Guide<\/a> \u3067\u306f\u3001\u5358\u7cbe\u5ea6\u306e\u6a19\u6e96\u7248 <code>sinf<\/code> \/ <code>cosf<\/code>\uff08\u203bSFU \u3092\u4f7f\u308f\u305a\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u8fd1\u4f3c\u3067\u8a08\u7b97\uff09\u306f<strong>\u6700\u5927\u8aa4\u5dee 2 ULP<\/strong>\u3068\u3055\u308c\u3066\u3044\u307e\u3059\u3002<strong>\u901f\u5ea6\u306f\u9045\u3044\u4ee3\u308f\u308a\u306b\u7cbe\u5ea6\u306f\u9ad8\u3044<\/strong>\u3068\u3044\u3046\u4f4d\u7f6e\u3065\u3051\u3067\u3059\u3002<\/p>\n<p data-line=\"39\" class=\"code-line\">\u3053\u306e\u300c\u6a19\u6e96\u7248\u300d\u306f OpenCL \/ CUDA \u306a\u3069\u306e GPGPU API \u3067\u666e\u901a\u306b\u4f7f\u3048\u308b\u4e00\u65b9\u3001<strong>Unity \u306e Shader\uff08Compute Shader \u542b\u3080\uff09<\/strong>\u3001\u3064\u307e\u308a HLSL \/ GLSL \u304b\u3089\u306f<strong>\u539f\u5247\u3068\u3057\u3066\u76f4\u63a5\u9078\u3079\u307e\u305b\u3093<\/strong>\uff08\u5bfe\u5fdc\u3059\u308b\u547d\u4ee4\u3084\u5207\u308a\u66ff\u3048\u624b\u6bb5\u304c\u306a\u3044\u305f\u3081\uff09\u3002\u5c11\u306a\u304f\u3068\u3082\u79c1\u306e\u8abf\u3079\u305f\u9650\u308a\u305d\u306e\u3088\u3046\u3067\u3059\u3002<br \/>\u3069\u306e\u3088\u3046\u306a\u66f8\u304d\u65b9\u304c \u8fd1\u4f3c\u7248\/\u6a19\u6e96\u7248 \u95a2\u6570\u306b\u306a\u308b\u304b\u3001\u3068\u3044\u3046\u70b9\u306b\u3064\u3044\u3066\u306f\u3082\u30461\u672c\u8a18\u4e8b\u3092\u304b\u304f\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n<blockquote data-line=\"42\" class=\"code-line\">\n<h3 id=\"ulp-%E3%81%A8%E3%81%AF%EF%BC%9F\" data-line=\"42\" class=\"code-line\">\n ULP \u3068\u306f\uff1f<\/h3>\n<p data-line=\"43\" class=\"code-line\">ULP\uff08Units in the Last Place\uff09\u3068\u306f\u3001\u300c\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3067\u96a3\u308a\u5408\u3046\u8868\u73fe\u53ef\u80fd\u306a\u5024\u306e\u5dee\u300d\u3092 1 \u3068\u6570\u3048\u308b\u5358\u4f4d\u3067\u3059\u3002<br \/>\u305f\u3068\u3048\u3070\u3001<code>0.25f<\/code> (0x3E800000) \u3068 <code>0.2499999850988388f<\/code> (0x3E7FFFFF) \u306e\u5dee\u306f\u3061\u3087\u3046\u3069 <strong>1 ULP<\/strong> \u3067\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"46\" class=\"code-line\"\/>\n<h3 id=\"%E6%A8%99%E6%BA%96%E7%89%88%E3%82%88%E3%82%8A%E9%AB%98%E7%B2%BE%E5%BA%A6%E3%81%AA%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%80%8D%E3%82%92%E3%81%A9%E3%81%86%E4%BD%9C%E3%82%8B%E3%81%8B\" data-line=\"47\" class=\"code-line\">\n \u6a19\u6e96\u7248\u3088\u308a\u9ad8\u7cbe\u5ea6\u306a\u300c\u6b63\u89e3\u300d\u3092\u3069\u3046\u4f5c\u308b\u304b<\/h3>\n<p data-line=\"49\" class=\"code-line\">\u8aa4\u5dee\u691c\u8a3c\u306b\u306f\u3001\u300c1 ULP \u306e\u30ba\u30ec\u3082\u7121\u8996\u3067\u304d\u306a\u3044\u57fa\u6e96\u5024\u300d\u304c\u5fc5\u8981\u3067\u3059\u3002\u5358\u7cbe\u5ea6\u306e\u6a19\u6e96\u7248\u3067\u3082<strong>\u6700\u5927 2 ULP<\/strong>\u306e\u8aa4\u5dee\u304c\u3042\u308b\u306e\u3067<strong>\u57fa\u6e96\u3068\u3057\u3066\u306f\u4e0d\u5341\u5206<\/strong>\u3002\u305d\u3053\u3067\u672c\u7a3f\u3067\u306f\u3001<\/p>\n<ul data-line=\"51\" class=\"code-line\">\n<li data-line=\"51\" class=\"code-line\">\n<code>double<\/code> \u3067 <code>sin<\/code> \/ <code>cos<\/code> \u3092\u8a08\u7b97\u3057\u3066\u304b\u3089 <strong><code>float<\/code> \u306b\u4e38\u3081<\/strong>\uff08\u30ad\u30e3\u30b9\u30c8\uff09<\/li>\n<\/ul>\n<p data-line=\"53\" class=\"code-line\">\u3067\u5f97\u3089\u308c\u305f\u5024\u3092\u6b63\u89e3\u3068\u307e\u3057\u305f\u3002<br \/>(\u3053\u306e\u6642\u70b9\u3067\u6700\u59270.5 ULP\u306e\u8aa4\u5dee\u304c\u3042\u308a\u307e\u3059\u304c\u4ed6\u306b\u3044\u3044\u65b9\u6cd5\u304c\u601d\u3044\u3064\u304d\u307e\u305b\u3093)<\/p>\n<h2 id=\"%E6%96%B9%E6%B3%95\" data-line=\"56\" class=\"code-line\">\n \u65b9\u6cd5<\/h2>\n<h3 id=\"%E6%A4%9C%E8%A8%BC%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%9F-gpu-%E7%AD%89\" data-line=\"58\" class=\"code-line\">\n \u691c\u8a3c\u306b\u4f7f\u3063\u305f GPU \u7b49<\/h3>\n<ul data-line=\"59\" class=\"code-line\">\n<li data-line=\"59\" class=\"code-line\">RTX 5090 (Windows)<\/li>\n<li data-line=\"60\" class=\"code-line\">RTX 3080 (Windows)<\/li>\n<li data-line=\"61\" class=\"code-line\">RTX 2080 Ti (Windows)<\/li>\n<li data-line=\"62\" class=\"code-line\">RTX 2080 Ti (Ubuntu)<\/li>\n<li data-line=\"63\" class=\"code-line\">Titan V (Ubuntu)<\/li>\n<li data-line=\"64\" class=\"code-line\">Ryzen 9 9950X \u5185\u8535 GPU gfx1036 (Windows)<\/li>\n<li data-line=\"65\" class=\"code-line\">Intel UHD 770 (Windows)<\/li>\n<\/ul>\n<h3 id=\"%E4%BD%BF%E7%94%A8%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E5%AF%BE%E8%B1%A1%E9%96%A2%E6%95%B0\" data-line=\"67\" class=\"code-line\">\n \u4f7f\u7528\u30b3\u30fc\u30c9\u3068\u5bfe\u8c61\u95a2\u6570<\/h3>\n<p data-line=\"74\" class=\"code-line\">\u4ee5\u4e0b\u306e 4 \u95a2\u6570\uff08OpenCL\uff09\u3092\u5404 GPU \u3067\u8a55\u4fa1\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul data-line=\"76\" class=\"code-line\">\n<li data-line=\"76\" class=\"code-line\">\n<code>sin<\/code>\uff1a\u5358\u7cbe\u5ea6\u30fb<strong>\u6a19\u6e96\u7248<\/strong>\n<\/li>\n<li data-line=\"77\" class=\"code-line\">\n<code>cos<\/code>\uff1a\u5358\u7cbe\u5ea6\u30fb<strong>\u6a19\u6e96\u7248<\/strong>\n<\/li>\n<li data-line=\"78\" class=\"code-line\">\n<code>native_sin<\/code>\uff1a\u5358\u7cbe\u5ea6\u30fb<strong>SFU \u8fd1\u4f3c\u7248<\/strong>\n<\/li>\n<li data-line=\"79\" class=\"code-line\">\n<code>native_cos<\/code>\uff1a\u5358\u7cbe\u5ea6\u30fb<strong>SFU \u8fd1\u4f3c\u7248<\/strong>\n<\/li>\n<\/ul>\n<p data-line=\"81\" class=\"code-line\"><strong>\u57fa\u6e96\u5024<\/strong>\u3068\u3057\u3066<\/p>\n<ul data-line=\"82\" class=\"code-line\">\n<li data-line=\"82\" class=\"code-line\"><code>(double)sin \u2192 float \u3078\u4e38\u3081<\/code><\/li>\n<li data-line=\"83\" class=\"code-line\"><code>(double)cos \u2192 float \u3078\u4e38\u3081<\/code><\/li>\n<\/ul>\n<p data-line=\"85\" class=\"code-line\">\u3082\u53d6\u5f97\u3057\u307e\u3057\u305f\u3002\u30ad\u30e3\u30b9\u30c8\u306f\u6700\u8fd1\u63a5\u4e38\u3081\uff08round-to-nearest-even\uff09\u3092\u3057\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"87\" class=\"code-line\">\u5f15\u6570\u306f\u5168\u63a2\u7d22\u306a\u306e\u3067\u30010x00000000 \u304b\u3089 0xffffffff \u307e\u3067\u306e\u3059\u3079\u3066\u3092\u5bfe\u8c61\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u7bc4\u56f2\u3092\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\uff08float\uff09\u3068\u3057\u3066\u89e3\u91c8\u3059\u308b\u3068\u3001NaN \u3084 Inf\u3001+-0.0\u3001\u975e\u6b63\u898f\u5316\u6570\u3082\u542b\u307e\u308c\u307e\u3059\u304c\u3001\u305d\u308c\u3089\u3082\u8a08\u7b97\u5bfe\u8c61\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u95a2\u6570\u306e\u51fa\u529b\u7d50\u679c\u306f\u30d5\u30a1\u30a4\u30eb\u306b\u5206\u5272\u3057\u3066\u4fdd\u5b58\u3057\u307e\u3057\u305f\u3002<\/p>\n<blockquote data-line=\"89\" class=\"code-line\">\n<p data-line=\"89\" class=\"code-line\">\u3061\u306a\u307f\u306b 32bit \u5f15\u6570\u5168\u30d1\u30bf\u30fc\u30f3\u3092 4 \u95a2\u6570 \u00d7 GPU \u53f0\u6570\u3067\u3084\u308b\u3068<strong>\u672a\u5727\u7e2e\u3067481 GB<\/strong>\u306b\u306a\u308a\u307e\u3059\uff01<\/p>\n<\/blockquote>\n<hr data-line=\"91\" class=\"code-line\"\/>\n<h2 id=\"%E6%A4%9C%E8%A8%BC%E7%B5%90%E6%9E%9C%E3%81%A8%E8%80%83%E5%AF%9F\" data-line=\"93\" class=\"code-line\">\n \u691c\u8a3c\u7d50\u679c\u3068\u8003\u5bdf<\/h2>\n<h3 id=\"%E6%A4%9C%E8%A8%BC1%EF%BC%9A%E5%90%8C%E4%B8%80%E3%83%99%E3%83%B3%E3%83%80%EF%BC%88nvidia%EF%BC%89%E5%86%85%E3%81%A7%E5%B7%AE%E3%81%AF%E5%87%BA%E3%82%8B%E3%81%8B%EF%BC%9F-%E2%86%92-%E5%87%BA%E3%81%AA%E3%81%84\" data-line=\"95\" class=\"code-line\">\n \u691c\u8a3c1\uff1a\u540c\u4e00\u30d9\u30f3\u30c0\uff08NVIDIA\uff09\u5185\u3067\u5dee\u306f\u51fa\u308b\u304b\uff1f \u2192 \u51fa\u306a\u3044<\/h3>\n<ul data-line=\"97\" class=\"code-line\">\n<li data-line=\"97\" class=\"code-line\">RTX 5090 \/ 3080 \/ 2080 Ti\uff08Win\/Ubuntu\uff09\/ Titan V\uff08Ubuntu\uff09\u306e 5 GPU \u3067\u95a2\u6570\u51fa\u529b\u5185\u5bb9\u306b\u9055\u3044\u304c\u3042\u308b\u304b\u6bd4\u8f03<\/li>\n<li data-line=\"98\" class=\"code-line\">\n<code>sin<\/code>\uff08\u6a19\u6e96\uff09\/<code>cos<\/code>\uff08\u6a19\u6e96\uff09\/<code>native_sin<\/code>\uff08SFU\uff09\/<code>native_cos<\/code>\uff08SFU\uff09\u3067\u691c\u8a3c<\/li>\n<\/ul>\n<p data-line=\"100\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e4b04a962aca-20250911.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"102\" class=\"code-line\"><strong>\u3059\u3079\u3066 bit \u5358\u4f4d\u3067\u5b8c\u5168\u4e00\u81f4<\/strong>\u3067\u3057\u305f\uff08Inf \/ NaN \/ \u975e\u6b63\u898f\u3092\u542b\u3080\u3001\u8aa4\u5dee\u306e\u51fa\u65b9\u307e\u3067\u4e00\u81f4\uff09\u3002OS \u306e\u9055\u3044\u3082\u7121\u95a2\u4fc2\u3002<br \/>\u4ee5\u964d\u3001NVIDIA \u4ee3\u8868\u5024\u306f RTX 5090\u3067\u793a\u3057\u307e\u3059\u3002<\/p>\n<hr data-line=\"105\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC2%EF%BC%9Asfu%E8%BF%91%E4%BC%BC%E7%89%88%E3%81%AE%E8%AA%A4%E5%B7%AE%E3%81%AB%E5%82%BE%E5%90%91%E3%81%AF%E3%81%82%E3%82%8B%E3%81%8B%EF%BC%9F-%E2%86%92-%E5%BC%95%E6%95%B0%E3%81%8C0.0%2C-pi%2F2%2C-pi%E8%BF%91%E5%82%8D%E3%81%A7%E7%B2%BE%E5%BA%A6%E6%82%AA%E3%81%84\" data-line=\"107\" class=\"code-line\">\n \u691c\u8a3c2\uff1aSFU\u8fd1\u4f3c\u7248\u306e\u8aa4\u5dee\u306b\u50be\u5411\u306f\u3042\u308b\u304b\uff1f \u2192 \u5f15\u6570\u304c0.0, pi\/2, pi\u8fd1\u508d\u3067\u7cbe\u5ea6\u60aa\u3044<\/h3>\n<h4 id=\"%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%AE%E5%85%A5%E5%8A%9B%E3%81%A7%E8%AA%A4%E5%B7%AE%E3%82%92%E8%A6%B3%E5%AF%9F\" data-line=\"109\" class=\"code-line\">\n \u3044\u304f\u3064\u304b\u306e\u5165\u529b\u3067\u8aa4\u5dee\u3092\u89b3\u5bdf<\/h4>\n<p data-line=\"110\" class=\"code-line\">\u307e\u305a\u306f\u70b9\u691c\u7528\u306b\u624b\u52d5\u3067\u30e9\u30f3\u30c0\u30e0\u6570\u3092\u5f15\u6570\u3068\u3057\u95a2\u6570\u8aa4\u5dee\u3092\u89b3\u5bdf\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"112\" class=\"code-line\"><code>x = 1.23<\/code><\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"113\">[sin] native: 1 ULP,  [cos] native: 1 ULP   \uff08RTX 5090\uff09\n<\/code><\/pre>\n<\/div>\n<p data-line=\"116\" class=\"code-line\">\u2014 <strong>1 ULP \u7a0b\u5ea6<\/strong>\u306b\u53ce\u307e\u3063\u3066\u304a\u308a\u975e\u5e38\u306b\u512a\u79c0\u3002<\/p>\n<p data-line=\"118\" class=\"code-line\"><code>x = 0.8756<\/code><\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"119\">[sin] native: 2 ULP,  [cos] native: 2 ULP   \uff08RTX 5090\uff09\n<\/code><\/pre>\n<\/div>\n<p data-line=\"122\" class=\"code-line\">\u2014 \u3053\u3061\u3089\u3082 2 ULP \u306b\u53ce\u307e\u3063\u3066\u304a\u308a\u512a\u79c0\u3002<\/p>\n<p data-line=\"125\" class=\"code-line\"><code>x = 0.0123<\/code>\uff080 \u8fd1\u508d\uff09<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"126\">[sin] native: 87 ULP, [cos] native: 1 ULP   \uff08RTX 5090\uff09\n<\/code><\/pre>\n<\/div>\n<p data-line=\"130\" class=\"code-line\"><code>x = 0.000123<\/code>\uff08\u3088\u308a 0 \u8fd1\u508d\uff09<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"131\">[sin] native: 10,760 ULP, [cos] native: 1 ULP   \uff08RTX 5090\uff09\n<\/code><\/pre>\n<\/div>\n<p data-line=\"135\" class=\"code-line\"><code>x = 1.571<\/code>\uff08\u2248 pi\/2 \u8fd1\u508d\uff09<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"136\">[sin] native: 1 ULP, [cos] native: 6,895 ULP   \uff08RTX 5090\uff09\n<\/code><\/pre>\n<\/div>\n<p data-line=\"140\" class=\"code-line\">\u3053\u306e\u3088\u3046\u306b\u624b\u52d5\u5165\u529b\u306e\u7d50\u679c\u30010,pi\u8fd1\u508d\u3067\u306fnative_sin\u306eULP\u304c\u4e0a\u6607\u3001pi\/2\u8fd1\u508d\u3067native_cos\u304c\u4e0a\u6607\u3057\u3066\u3044\u308b\u50be\u5411\u3092\u3064\u304b\u3081\u307e\u3057\u305f\u3002<br \/><strong>\u95a2\u6570\u306e\u51fa\u529b\u304c0.0\u306b\u8fd1\u3044\u307b\u3046\u3067ULP\u304c\u4e0a\u6607\u3059\u308b<\/strong> \u3068\u3044\u3046\u3053\u3068\u306e\u3088\u3046\u3067\u3059\uff01<\/p>\n<h4 id=\"%E3%83%99%E3%83%B3%E3%83%80%E6%A8%AA%E6%96%AD%E3%81%AE%E6%AF%94%E8%BC%83%EF%BC%88%E6%8A%9C%E7%B2%8B%EF%BC%89\" data-line=\"143\" class=\"code-line\">\n \u30d9\u30f3\u30c0\u6a2a\u65ad\u306e\u6bd4\u8f03\uff08\u629c\u7c8b\uff09<\/h4>\n<div class=\"s_table\"><table data-line=\"145\" class=\"code-line\">\n<thead data-line=\"145\" class=\"code-line\">\n<tr data-line=\"145\" class=\"code-line\">\n<th>\u5f15\u6570<\/th>\n<th style=\"text-align:right\">NVIDIA GPU<\/th>\n<th style=\"text-align:right\">AMD (gfx1036)<\/th>\n<th style=\"text-align:right\">Intel UHD 770<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"147\" class=\"code-line\">\n<tr data-line=\"147\" class=\"code-line\">\n<td>-2.34<\/td>\n<td style=\"text-align:right\">4 ULP<\/td>\n<td style=\"text-align:right\">1 ULP<\/td>\n<td style=\"text-align:right\">0 ULP<\/td>\n<\/tr>\n<tr data-line=\"148\" class=\"code-line\">\n<td>0.0123<\/td>\n<td style=\"text-align:right\">87 ULP<\/td>\n<td style=\"text-align:right\">4 ULP<\/td>\n<td style=\"text-align:right\">93 ULP<\/td>\n<\/tr>\n<tr data-line=\"149\" class=\"code-line\">\n<td>0.000123<\/td>\n<td style=\"text-align:right\">10,760 ULP<\/td>\n<td style=\"text-align:right\">4 ULP<\/td>\n<td style=\"text-align:right\">6,418 ULP<\/td>\n<\/tr>\n<tr data-line=\"150\" class=\"code-line\">\n<td>1.571<\/td>\n<td style=\"text-align:right\">6,895 ULP<\/td>\n<td style=\"text-align:right\">7,458 ULP<\/td>\n<td style=\"text-align:right\">2,800 ULP<\/td>\n<\/tr>\n<tr data-line=\"151\" class=\"code-line\">\n<td>3.141598<\/td>\n<td style=\"text-align:right\">1,019,989 ULP<\/td>\n<td style=\"text-align:right\">196,881 ULP<\/td>\n<td style=\"text-align:right\">70,079 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"153\" class=\"code-line\">\u203b ULP\u306fnative_sin\u3068native_cos\u3067\u5927\u304d\u3044\u65b9\u3092\u63a1\u7528<\/p>\n<ul data-line=\"154\" class=\"code-line\">\n<li data-line=\"154\" class=\"code-line\">AMD\u306enative_sin\u306f\u4f8b\u5916\u7684\u306b 0 \u8fd1\u508d\u306b\u5f37\u3044\u50be\u5411\u3060\u304c\u3042\u3068\u306fNVIDIA\u540c\u69d8<\/li>\n<li data-line=\"155\" class=\"code-line\">Intel \u306f NVIDIA, AMD\u3088\u308a\u3084\u3084\u5584\u6226<\/li>\n<\/ul>\n<p data-line=\"157\" class=\"code-line\">\u691c\u8a3c\u30b3\u30fc\u30c9<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-github\"><iframe id=\"zenn-embedded__fb271ae84fb6b\" src=\"https:\/\/embed.zenn.studio\/github#zenn-embedded__fb271ae84fb6b\" data-content=\"https%3A%2F%2Fgithub.com%2Ftoropippi%2FGPU_SinCosULP%2Fblob%2Fmain%2F2_%25E7%25B5%2590%25E6%259E%259C%25E8%25A1%25A8%25E7%25A4%25BA%2Fpeek_trig_result.py\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/github.com\/toropippi\/GPU_SinCosULP\/blob\/main\/2_%E7%B5%90%E6%9E%9C%E8%A1%A8%E7%A4%BA\/peek_trig_result.py\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/toropippi\/GPU_SinCosULP\/blob\/main\/2_\u7d50\u679c\u8868\u793a\/peek_trig_result.py<\/a><\/p>\n<hr data-line=\"160\" class=\"code-line\"\/>\n<h4 id=\"%E6%9C%89%E5%8A%B9%E6%A1%81%E6%95%B0%E3%81%8C1%E6%A1%81%E3%82%82%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%82%82%EF%BC%81%EF%BC%9F\" data-line=\"162\" class=\"code-line\">\n \u6709\u52b9\u6841\u6570\u304c1\u6841\u3082\u306a\u3044\u3053\u3068\u3082\uff01\uff1f<\/h4>\n<p data-line=\"164\" class=\"code-line\"><code>3.141598<\/code> \u3067\u306e\u8aa4\u5dee\u304c\u975e\u5e38\u306b\u5927\u304d\u304b\u3063\u305f\u306e\u3067\u3001\u826f\u3044\u4f8b(?)\u3068\u3057\u3066\u3053\u3053\u306b\u7d39\u4ecb\u3057\u307e\u3059\u3002<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/aa39b15b4f42-20250912.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"167\" class=\"code-line\">\u307e\u305a\u5165\u529b\u5f15\u6570 <code>3.141598<\/code> \u306ffloat\u8868\u73fe\u3068\u3057\u3066 <code>3.1415979862213135<\/code> \u3068\u3057\u3066\u89e3\u91c8\u3055\u308c\u307e\u3057\u305f\u3002<strong>REF.sin<\/strong> \u304cdouble\u578b\u3092\u4f7f\u3063\u305f\u6b63\u89e3\u5024\u3067 <strong>TEST.sin<\/strong> \u304c\u6a19\u6e96\u7248sin\u306e\u7d50\u679c\u3067\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"169\">  REF.sin:     -5.332631644705543e-06 bits=0xb6b2eef5  (64_sin)\n  TEST.sin:    -5.332631644705543e-06 bits=0xb6b2eef5  (64_sin)\n<\/code><\/pre>\n<\/div>\n<p data-line=\"173\" class=\"code-line\">\u3069\u3061\u3089\u3082bit\u8868\u73fe\u304c\u4e00\u81f4\u3057\u3066\u304a\u308a0 ULP\u3067\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u30fb\u30fb<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"175\">  TEST.native: -4.86879434902221e-06 bits=0xb6a35ea0  (ULP=1019989) \n<\/code><\/pre>\n<\/div>\n<p data-line=\"179\" class=\"code-line\">SFU\u7248sin \u3067\u306f\u6b63\u89e3\u5024 <code>-5.333e-06<\/code> \u306b\u5bfe\u3057 <code>-4.869e-06<\/code> \u3068\u304b\u306a\u308a\u305a\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff01\u3063\u3066\u3001<strong>\u6709\u52b9\u6841\u65701\u6841\u3082\u306a\u3044\u3058\u3083\u306a\u3044\u3067\u3059\u304b\uff01\uff1f<\/strong><br \/>\u8a00\u3063\u3066\u3057\u307e\u3048\u3070\u3053\u308c\u306f <strong>\u610f\u5730\u60aa\u30b1\u30fc\u30b9<\/strong> \u306a\u306e\u3067\u3059\u304c\u3001\u3072\u3069\u3044\u4f8b\u3067\u306f\u3053\u3046\u3044\u3046\u3053\u3068\u3082\u3042\u308b\u3068\u8a8d\u8b58\u3057\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<hr data-line=\"182\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC2(%E8%BF%BD%E5%8A%A0)%EF%BC%9A%E8%BF%91%E4%BC%BC%E7%89%88sin()%2Ccos()%E3%81%AE%E5%A2%83%E7%95%8C%E4%BB%98%E8%BF%91%E3%81%AE%E3%81%BF%E5%8F%AF%E8%A6%96%E5%8C%96\" data-line=\"184\" class=\"code-line\">\n \u691c\u8a3c2(\u8ffd\u52a0)\uff1a\u8fd1\u4f3c\u7248sin(),cos()\u306e\u5883\u754c\u4ed8\u8fd1\u306e\u307f\u53ef\u8996\u5316<\/h3>\n<p data-line=\"186\" class=\"code-line\">0.0, pi\/2, pi\u8fd1\u508d\u306e\u5f15\u6570\u3067\u60aa\u304f\u306a\u308b\u3088\u3046\u3060\u3063\u305f\u306e\u3067\u3001\u3053\u308c\u3089\u5883\u754c\u4ed8\u8fd1\u306e\u751f\u306e\u5024\u3092\u307f\u3066\u307f\u307e\u3057\u3087\u3046\u3002<code>native_sin<\/code>\u306f<code>0.0<\/code>\u3068<code>pi<\/code>\u4ed8\u8fd1\u3001<code>native_cos<\/code>\u306f<code>pi\/2<\/code>\u4ed8\u8fd1\u306e\u5024\u3092\u30b0\u30e9\u30d5\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul data-line=\"188\" class=\"code-line\">\n<li data-line=\"188\" class=\"code-line\">native_sin\u306e0.0\uff5e0.000002<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/5f8ea960ec0b-20250925.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"191\" class=\"code-line\">\u30d7\u30ed\u30c3\u30c8\u306f\u70b9\u306e\u307f\u3067\u3059\u3002NVIDIA\u3068Intel\u304c<strong>\u4e00\u5b9a\u533a\u9593\u5185\u3067\u540c\u5024<\/strong>\u3092\u8fd4\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\uff01\u3044\u3044\u306e\u304b\uff1f\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u8fd1\u4f3c\u7248\u95a2\u6570\u306f\u7cbe\u5ea6\u3092\u72a0\u7272\u306b\u3057\u3066\u901f\u5ea6\u3092\u6700\u512a\u5148\u306b\u3057\u3066\u3044\u308b\u306e\u3067\u4ed5\u65b9\u3042\u308a\u307e\u305b\u3093\u3002\u4e00\u65b90.0\u8fd1\u508d\u306b\u5f37\u3044AMD\u306f\u3061\u3083\u3093\u3068\u6b63\u89e3\u306b\u8fd1\u3044\u5024\u3092\u8fd4\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<ul data-line=\"193\" class=\"code-line\">\n<li data-line=\"193\" class=\"code-line\">native_cos\u306epi\/2 \u00b1 0.000002<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/6f92ba271e69-20250925.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"196\" class=\"code-line\">\u3055\u3063\u304d\u3068\u6bd4\u3079\u70b9\u306e\u6570\u304c\u5c11\u306a\u3044\u3067\u3059\u304c\u3001 1.57 \u00b1 0.000002 \u306e\u6975\u3081\u3066\u72ed\u3044\u7bc4\u56f2\u3092\u898b\u3066\u3044\u308b\u305f\u3081\u3067\u3059\u300232bit\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3067\u306f\u96a3\u308a\u5408\u3046\u70b9\u3068\u70b9\u306e\u3042\u3044\u3060\u306b\u8868\u73fe\u53ef\u80fd\u306a\u5024\u306f\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001\u7dda\u3067\u88dc\u9593\u3057\u30d7\u30ed\u30c3\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<br \/>Intel\u304c\u3044\u3044\u611f\u3058\u306e\u7dda\u3092\u63cf\u3044\u3066\u3044\u308b\u4e00\u65b9\u3001AMD\u3068NVIDIA\u306f\u30ac\u30bf\u30ac\u30bf\u3057\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<ul data-line=\"199\" class=\"code-line\">\n<li data-line=\"199\" class=\"code-line\">native_sin\u306epi \u00b1 0.000002<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/513569b28b4c-20250925.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"202\" class=\"code-line\">\u540c\u3058\u3088\u3046\u306bIntel\u306f\u3044\u3044\u7dda\u3044\u3063\u3066\u307e\u3059\u304cNVIDIA\u3001AMD\u3067\u30ac\u30bf\u30ac\u30bf\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h4 id=\"ulp-%E9%AB%98%E5%80%A4%E3%81%AE%E5%8E%9F%E5%9B%A0\" data-line=\"204\" class=\"code-line\">\n ULP \u9ad8\u5024\u306e\u539f\u56e0<\/h4>\n<p data-line=\"205\" class=\"code-line\">\u306a\u305c\u95a2\u6570\u306e\u51fa\u529b\u304c <code>0.0<\/code> \u306b\u8fd1\u3044\u3068\u304d\u306b ULP \u304c\u5897\u5927\u3057\u3066\u898b\u3048\u308b\u306e\u304b\u3068\u3044\u3046\u3068\u3001\u8fd1\u4f3c\u7248\u95a2\u6570\u3067\u306f\u4ed5\u69d8\u3067 <strong>\u7d76\u5bfe\u8aa4\u5dee\u306e\u307f\u304c\u4fdd\u8a3c<\/strong> \u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3067\u3059\u3002\u3061\u3087\u3046\u3069\u3055\u3063\u304d\u306e\u56f3\u304c\u53c2\u8003\u306b\u306a\u308b\u304b\u3068\u601d\u3044\u307e\u3059\u3002\u7d76\u5bfe\u8aa4\u5dee\u304c\u5e38\u306b\u4e00\u5b9a\u3068\u3059\u308b\u3068\u3001\u51fa\u529b\u3055\u308c\u308b\u5024\u304c\u5c0f\u3055\u3051\u308c\u3070\u5c0f\u3055\u3044\u307b\u3069 <strong>\u76f8\u5bfe\u8aa4\u5dee<\/strong> \u304c\u5927\u304d\u304f\u306a\u308a\u307e\u3059\u3088\u306d\u3002<br \/>ULP \u306f\u5b9f\u8cea\u7684\u306b\u76f8\u5bfe\u8aa4\u5dee\u3092\u6e2c\u308b\u6307\u6a19\u3067\u3042\u308a\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306e\u30d3\u30c3\u30c8\u8868\u73fe\u306b\u57fa\u3065\u3044\u3066\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u8868\u73fe\u5024\u305d\u306e\u3082\u306e\u304c\u5c0f\u3055\u3044\u3068\u3001\u540c\u3058\u7d76\u5bfe\u8aa4\u5dee\u3067\u3082\u4eee\u6570\u90e8\u306b\u5bfe\u3057\u3066\u5927\u304d\u306a\u30d3\u30c3\u30c8\u306e\u5909\u5316\u3068\u3057\u3066\u73fe\u308c ULP \u5024\u304c\u5927\u304d\u304f\u898b\u3048\u308b\u306e\u3067\u3059\u3002<\/p>\n<p data-line=\"208\" class=\"code-line\">\u307e\u305f\u3001SFU\u306enative_sin\u3068native_cos\u306f\u307b\u307c\u540c\u4e00\u56de\u8def\u3067\u8a08\u7b97\u3055\u308c\u3066\u3044\u308b\u3068\u601d\u308f\u308c\u307e\u3059\u3002<\/p>\n<p data-line=\"210\" class=\"code-line\">SFU \u5185\u90e8\u3067\u306f <strong>\u5c0f\u533a\u9593\u5206\u5272\uff0b\u4f4d\u76f8\u5909\u63db<\/strong> \u306e\u3088\u3046\u306a\u5b9f\u88c5\u304c\u60f3\u50cf\u3055\u308c\u3001<code>native_sin(x+pi\/2)<\/code> \u306eULP\u306f\u305d\u306e\u307e\u307e <code>native_cos(x)<\/code> \u306eULP\u3092\u898b\u3066\u3044\u308b\u3053\u3068\u306b\u306a\u3063\u3066\u3044\u308b\u3068\u601d\u308f\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a<code>(pi\/2)<\/code> \u3068<code>(0,pi)<\/code> \u306e\u5f15\u6570\u3067native_sin\u3068native_cos\u306eULP\u304c<strong>\u304d\u308c\u3044\u306b\u9006\u8ee2<\/strong>\u3057\u3066\u3044\u308b\u3053\u3068\u306e\u8aac\u660e\u304c\u3064\u304d\u307e\u3059\u3002<\/p>\n<blockquote data-line=\"213\" class=\"code-line\">\n<p data-line=\"213\" class=\"code-line\"><strong>\u4f59\u8ac7\uff1a\u30b2\u30fc\u30e0\u958b\u767a\u8996\u70b9\u3067\u306f\u76f8\u5bfe\u8aa4\u5dee\u304c\u91cd\u8996\u3055\u308c\u308b<\/strong><br \/>Shader \u3067 <code>sin<\/code>\uff0f<code>cos<\/code> \u304c\u6700\u3082\u591a\u7528\u3055\u308c\u308b\u306e\u306f\u3001\u56de\u8ee2\u884c\u5217\u3084\u30af\u30a9\u30fc\u30bf\u30cb\u30aa\u30f3\u306e\u751f\u6210\u306a\u3069\u3067\u3059\u3002<br \/>\u3053\u308c\u3089\u306f\u30d9\u30af\u30c8\u30eb\u306e\u9577\u3055\u3084\u76f4\u4ea4\u6027\u304c\u4fdd\u305f\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u524d\u63d0\u3067\u3042\u308a\u3001\u3082\u3057 <code>cos\u03b8<\/code> \u3084 <code>sin\u03b8<\/code> \u306b\u76f8\u5bfe\u8aa4\u5dee\u304c\u3042\u308b\u3068\u3001\u56de\u8ee2\u3092\u4f55\u5ea6\u3082\u91cd\u306d\u308b\u3046\u3061\u306b\u5c11\u3057\u305a\u3064\u884c\u5217\u306e\u76f4\u4ea4\u6027\u304c\u5d29\u308c\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u3058\u308f\u3058\u308f\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u3057\u305f\u308a\u3001\u59ff\u52e2\u304c\u308f\u305a\u304b\u306b\u50be\u304f\u3068\u3044\u3063\u305f\u554f\u984c\u304c\u8d77\u3053\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"217\" class=\"code-line\">Unity\uff08Shader Model 5.0 \u60f3\u5b9a\uff09\u3067\u306f <code>float<\/code> \u578b\u3092\u4f7f\u3048\u3070\u6700\u5927\u7cbe\u5ea6\u306e\u6f14\u7b97\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u300c\u3088\u308a\u9ad8\u7cbe\u5ea6\u306a\u4e09\u89d2\u95a2\u6570\u306b\u5207\u308a\u66ff\u308f\u308b\u4fee\u98fe\u5b50\u304c\u3042\u308b\u300d\u3068\u3044\u3063\u305f\u516c\u5f0f\u60c5\u5831\u306f\u898b\u3064\u304b\u3063\u3066\u3044\u307e\u305b\u3093\uff08AI \u3067\u8abf\u67fb\u6e08\u307f\uff09\u3002<\/p>\n<p data-line=\"219\" class=\"code-line\">\u305d\u306e\u305f\u3081\u3001<strong>0\u00b0\u30fb90\u00b0\u30fb180\u00b0 \u306a\u3069\u306b\u975e\u5e38\u306b\u8fd1\u3044\u89d2\u5ea6<\/strong> \u3067\u56de\u8ee2\u3092\u7e70\u308a\u8fd4\u3059\u30b1\u30fc\u30b9\u7b49\u3067\u306f\u5b9f\u969b\u306e\u63cf\u753b\u7d50\u679c\u3092\u76ee\u8996\u3067\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u305d\u3046\u3067\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"221\" class=\"code-line\"\/>\n<h4 id=\"%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AF%E3%81%A9%E3%81%86%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F\" data-line=\"223\" class=\"code-line\">\n \u3042\u306a\u305f\u306e\u74b0\u5883\u3067\u306f\u3069\u3046\u3067\u3059\u304b\uff1f<\/h4>\n<p data-line=\"225\" class=\"code-line\">\u610f\u5730\u60aa\u306a\u30b3\u30fc\u30ca\u30fc\u30b1\u30fc\u30b9\u3082\u542b\u3081\u305f9\u500b\u306e\u5f15\u6570\u3067<strong>GPU sin()\u547d\u4ee4<\/strong>\u306e\u7d50\u679c\u3092\u78ba\u8a8d\u3067\u304d\u308b\u30b5\u30a4\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<br \/>WebGL\u691c\u8a3c\u30b5\u30a4\u30c8(<a target=\"_blank\" href=\"https:\/\/toropippi.github.io\/webgl-sin-sfu\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/toropippi.github.io\/webgl-sin-sfu\/<\/a>)<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e457d6904d51-20250925.png\" class=\"md-img\" loading=\"lazy\"\/><br \/>\u30b9\u30de\u30db\u3067\u3082\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff01<\/p>\n<hr data-line=\"230\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC3%EF%BC%9Asfu%E8%BF%91%E4%BC%BC%E7%89%88%E3%81%AE%E7%B5%90%E6%9E%9C-ulp%E5%8F%AF%E8%A6%96%E5%8C%96\" data-line=\"231\" class=\"code-line\">\n \u691c\u8a3c3\uff1aSFU\u8fd1\u4f3c\u7248\u306e\u7d50\u679c ULP\u53ef\u8996\u5316<\/h3>\n<h4 id=\"%5B-pi%2C-pi%5D-%E3%81%AE%E5%B9%B3%E5%9D%87ulp%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95\" data-line=\"233\" class=\"code-line\">\n <code>[-pi, pi]<\/code> \u306e\u5e73\u5747ULP\u68d2\u30b0\u30e9\u30d5<\/h4>\n<p data-line=\"235\" class=\"code-line\">\u7d9a\u3044\u3066\u5f15\u6570x\u3092-pi\uff5epi\u533a\u9593\u306b\u9650\u5b9a\u3057\u3066\u50be\u5411\u3092\u63a2\u308a\u307e\u3059\u3002\u533a\u9593\u3092400\u5206\u5272\u3057\u3001\u5168\u63a2\u7d22\u3067\u5f97\u3089\u308c\u305f\u5168ULP\u30c7\u30fc\u30bf\u3092\u5e73\u5747\u3057\u30d7\u30ed\u30c3\u30c8\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul data-line=\"237\" class=\"code-line\">\n<li data-line=\"237\" class=\"code-line\">NVIDIA RTX 5090<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e72c6e97fd6e-20250912.png\" class=\"md-img\" loading=\"lazy\"\/><br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/0ffdf25b24f7-20250912.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"241\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"243\" class=\"code-line\">\n<thead data-line=\"243\" class=\"code-line\">\n<tr data-line=\"243\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-pi\uff5epi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"245\" class=\"code-line\">\n<tr data-line=\"245\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>96.176 ULP<\/td>\n<\/tr>\n<tr data-line=\"246\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>209.38 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"248\" class=\"code-line\">\u3067\u3057\u305f\u3002<br \/>\u4e00\u5fdc\u533a\u9593\u5e73\u5747\u306eULP\u3092\u51fa\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u5883\u754c\u4ed8\u8fd1\u304c\u5927\u304d\u304f\u5e73\u5747\u3092\u4e0a\u3052\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002\u305d\u308c\u3092\u9664\u3051\u3070\u8fd1\u4f3c\u7248\u4e09\u89d2\u95a2\u6570\u3067\u3082<strong>\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u975e\u5e38\u306b\u512a\u79c0\u306a\u7cbe\u5ea6<\/strong>\u304c\u3067\u3066\u3044\u308b\u3001\u3068\u3044\u3046\u8a8d\u8b58\u3067\u826f\u3055\u305d\u3046\u3067\u3059\u3002<br \/>sin\u306e\u307b\u3046\u306f0.0, pi \u8fd1\u508d\u3067\u3001cos\u306e\u307b\u3046\u306fpi\/2 \u8fd1\u508d\u3067ULP\u304c\u4e0a\u6607\u3001\u305d\u3057\u30668,9\u5272\u304c\u305f\u306e\u533a\u9593\u30670\uff5e4 ULP\u7a0b\u5ea6\u306b\u304a\u3055\u307e\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<blockquote data-line=\"252\" class=\"code-line\">\n<p data-line=\"252\" class=\"code-line\">\u88dc\u8db3\uff1a\u91cd\u307f\u4ed8\u3051\u5e73\u5747\u306e\u610f\u5473<br \/>\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306f\u5024\u306e\u5927\u5c0f\u306b\u3088\u3063\u3066\u523b\u307f\u5e45\uff08\u96a3\u308a\u5408\u3046\u6570\u306e\u9593\u9694\uff09\u304c\u5909\u308f\u308b\u305f\u3081\u3001\u5358\u7d14\u5e73\u5747\u3067\u306f\u5c0f\u3055\u3044\u5024\u306e\u30b5\u30f3\u30d7\u30eb\u304c\u904e\u5270\u306b\u53cd\u6620\u3055\u308c\u3066\u3057\u307e\u3044\u307e\u3059\u3002\u305d\u3053\u3067\u5404\u30b5\u30f3\u30d7\u30eb\u3092\u523b\u307f\u5e45\u306b\u5fdc\u3058\u3066\u91cd\u307f\u4ed8\u3051\u3057\u305f\u306e\u304c\u91cd\u307f\u4ed8\u3051\u5e73\u5747\u306e\u610f\u5473\u3067\u3059\u3002<strong>x \u304c\u4e00\u69d8\u5206\u5e03\u3057\u3066\u3044\u308b\u3068\u304d\u306e\u5e73\u5747ULP<\/strong> \u3092\u6c42\u3081\u3066\u3044\u307e\u3059\u3002<br \/>\u672c\u7a3f\u3067\u306f\u4ee5\u964d\u3001\u91cd\u307f\u4ed8\u3051\u5e73\u5747\u3092&#8221;\u5e73\u5747&#8221;\u3068\u7701\u7565\u3057\u3066\u3044\u308b\u3068\u3053\u308d\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"256\" class=\"code-line\"\/>\n<ul data-line=\"258\" class=\"code-line\">\n<li data-line=\"258\" class=\"code-line\">AMD gfx1036<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/b9781135c8b4-20250912.png\" class=\"md-img\" loading=\"lazy\"\/><br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/bdd5ebcb81d9-20250912.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"262\" class=\"code-line\">sin\u306e\u307b\u3046\u306fNVIDIA\u3068\u9055\u30440.0 \u8fd1\u508d\u3067\u512a\u79c0\u306a\u7cbe\u5ea6\u3068\u306a\u3063\u3066\u304a\u308a\u307e\u3059\u304c pi \u8fd1\u508d\u3067\u306fULP\u304c\u4e0a\u6607\u3057\u3066\u3044\u307e\u3059\u3002cos\u306e\u307b\u3046\u306fNVIDIA\u540c\u69d8 pi\/2 \u8fd1\u508d\u3067ULP\u304c\u4e0a\u6607\u3002<br \/>\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"265\" class=\"code-line\">\n<thead data-line=\"265\" class=\"code-line\">\n<tr data-line=\"265\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-pi\uff5epi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"267\" class=\"code-line\">\n<tr data-line=\"267\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>29.625 ULP<\/td>\n<\/tr>\n<tr data-line=\"268\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>138.81 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"270\" class=\"code-line\">\u3067\u3057\u305f\u3002<\/p>\n<hr data-line=\"272\" class=\"code-line\"\/>\n<ul data-line=\"273\" class=\"code-line\">\n<li data-line=\"273\" class=\"code-line\">Intel UHD 770<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e4d5b13e1ae2-20250912.png\" class=\"md-img\" loading=\"lazy\"\/><br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/cc659d53f020-20250912.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"277\" class=\"code-line\">NVIDIA, AMD\u3068\u9055\u3063\u305f\u7d50\u679c\u306b\u306a\u308a\u307e\u3057\u305f\u3002sin, cos\u3068\u3082 0.0, pi\/2, pi \u8fd1\u508d\u3067ULP\u304c\u4e0a\u6607\u3002\u305d\u306e\u304b\u308f\u308a\u534a\u5206\u4ee5\u4e0a\u306e\u533a\u9593\u30670\uff5e1 ULP\u3068\u975e\u5e38\u306b\u9ad8\u3044\u7cbe\u5ea6\u3092\u53e9\u304d\u51fa\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"279\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"281\" class=\"code-line\">\n<thead data-line=\"281\" class=\"code-line\">\n<tr data-line=\"281\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-pi\uff5epi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"283\" class=\"code-line\">\n<tr data-line=\"283\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>43.441 ULP<\/td>\n<\/tr>\n<tr data-line=\"284\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>44.250 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"286\" class=\"code-line\">\u3067\u3057\u305f\u3002<\/p>\n<p data-line=\"288\" class=\"code-line\">\u4e00\u65e6\u3053\u3053\u307e\u3067\u307e\u3068\u3081\u308b\u3068<\/p>\n<ul data-line=\"289\" class=\"code-line\">\n<li data-line=\"289\" class=\"code-line\">\n<strong>0.0, pi\/2, pi \u8fd1\u508d<\/strong> \u3067sin,cos\u3069\u3061\u3089\u304bor\u4e21\u65b9\u306e<strong>ULP\u304c\u4e0a\u6607<\/strong>\u3059\u308b\u50be\u5411\u306f3\u793e\u3068\u3082\u307b\u307c\u5171\u901a<\/li>\n<li data-line=\"290\" class=\"code-line\">\u305d\u308c\u4ee5\u5916\u306e\u533a\u9593\u3067\u306f<strong>0\uff5e10 ULP<\/strong>\u3068\u8aa4\u5dee\u304c<strong>\u975e\u5e38\u306b\u5c0f\u3055\u3044<\/strong> \u2192 \u30b2\u30fc\u30e0\u7528\u9014\u3067\u5341\u5206<\/li>\n<li data-line=\"291\" class=\"code-line\">\n<strong>AMD<\/strong>\u3067\u306f\u4f8b\u5916\u7684\u306b<strong>0.0\u8fd1\u508d<\/strong>\u306esin\u3082ULP\u304c\u307b\u307c\u4e0a\u6607\u3057\u306a\u3044(\n<\/li>\n<li data-line=\"292\" class=\"code-line\">Intel\u306f\u5b9f\u88c5\u304c\u4ed62\u793e\u3068\u5927\u304d\u304f\u7570\u306a\u308b\u306e\u304bsin(pi\/2)\u3084cos(0.0)\u3084cos(pi)\u3067\u3082ULP\u4e0a\u6607<\/li>\n<li data-line=\"293\" class=\"code-line\">\u305d\u306e\u304b\u308f\u308aIntel\u306f\u5168\u4f53\u7684\u306b\u7cbe\u5ea6\u304c\u512a\u79c0\u3002\u5e73\u5747ULP\u304c\u4f4e\u3081<\/li>\n<li data-line=\"294\" class=\"code-line\">NVIDIA\u3068AMD\u3067\u306f\u82e5\u5e72AMD\u304c\u9ad8\u7cbe\u5ea6\u306a\u50be\u5411<\/li>\n<\/ul>\n<hr data-line=\"296\" class=\"code-line\"\/>\n<h4 id=\"%5B-10pi%2C-10pi%5D-%E3%81%AE%E5%B9%B3%E5%9D%87ulp%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95\" data-line=\"298\" class=\"code-line\">\n <code>[-10pi, 10pi]<\/code> \u306e\u5e73\u5747ULP\u68d2\u30b0\u30e9\u30d5<\/h4>\n<p data-line=\"300\" class=\"code-line\">\u5468\u671f\u7684\u306bULP\u304c\u8df3\u306d\u308b\u50be\u5411\u304c\u7d9a\u304f\u304b\u78ba\u304b\u3081\u308b\u305f\u3081\u306bNVIDIA\u3067\u306e\u307f[-10pi, 10pi]\u306e\u7bc4\u56f2\u3092\u8abf\u67fb\u3057\u307e\u3057\u305f\u3002<\/p>\n<ul data-line=\"302\" class=\"code-line\">\n<li data-line=\"302\" class=\"code-line\">NVIDIA RTX 5090<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e65761dbf2c0-20250924.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"305\" class=\"code-line\">\u5468\u671f\u7684\u306b\u6025\u5cfb\u306bULP\u304c\u4e0a\u6607\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u307e\u3057\u305f\u3002cos\u3082\u540c\u69d8\u3060\u3063\u305f\u306e\u3067\u5272\u611b<\/p>\n<hr data-line=\"307\" class=\"code-line\"\/>\n<h4 id=\"%5B-100pi%2C-100pi%5D-%E3%81%AE%E5%B9%B3%E5%9D%87ulp%E6%A3%92%E3%82%B0%E3%83%A9%E3%83%95\" data-line=\"309\" class=\"code-line\">\n <code>[-100pi, 100pi]<\/code> \u306e\u5e73\u5747ULP\u68d2\u30b0\u30e9\u30d5<\/h4>\n<ul data-line=\"311\" class=\"code-line\">\n<li data-line=\"311\" class=\"code-line\">NVIDIA RTX 5090<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/44e491e4e273-20250912.png\" class=\"md-img\" loading=\"lazy\"\/><br \/>cos\u306e\u30b0\u30e9\u30d5\u306f\u540c\u69d8\u306e\u50be\u5411\u3060\u3063\u305f\u306e\u3067\u5272\u611b\u3057\u3066\u307e\u3059\u3002<\/li>\n<\/ul>\n<p data-line=\"315\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"317\" class=\"code-line\">\n<thead data-line=\"317\" class=\"code-line\">\n<tr data-line=\"317\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-100pi\uff5e100pi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"319\" class=\"code-line\">\n<tr data-line=\"319\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>17166.6 ULP<\/td>\n<\/tr>\n<tr data-line=\"320\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>10139.3 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"322\" class=\"code-line\">\u3067\u3057\u305f\u3002<\/p>\n<ul data-line=\"324\" class=\"code-line\">\n<li data-line=\"324\" class=\"code-line\">AMD gfx1036<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/57639e583b79-20250912.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"327\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"329\" class=\"code-line\">\n<thead data-line=\"329\" class=\"code-line\">\n<tr data-line=\"329\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-100pi\uff5e100pi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"331\" class=\"code-line\">\n<tr data-line=\"331\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>10223.6 ULP<\/td>\n<\/tr>\n<tr data-line=\"332\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>10123.3 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"334\" class=\"code-line\">\u3067\u3057\u305f\u3002<\/p>\n<ul data-line=\"336\" class=\"code-line\">\n<li data-line=\"336\" class=\"code-line\">Intel UHD 770<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/4030a52836c9-20250912.png\" class=\"md-img\" loading=\"lazy\"\/>\n<\/li>\n<\/ul>\n<p data-line=\"339\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u306eULP\u306f<\/p>\n<div class=\"s_table\"><table data-line=\"341\" class=\"code-line\">\n<thead data-line=\"341\" class=\"code-line\">\n<tr data-line=\"341\" class=\"code-line\">\n<th>\u95a2\u6570<\/th>\n<th>\u5e73\u5747ULP (-100pi\uff5e100pi)<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"343\" class=\"code-line\">\n<tr data-line=\"343\" class=\"code-line\">\n<td><code>native_sin<\/code><\/td>\n<td>6924.81 ULP<\/td>\n<\/tr>\n<tr data-line=\"344\" class=\"code-line\">\n<td><code>native_cos<\/code><\/td>\n<td>182.745 ULP<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"346\" class=\"code-line\">\u3067\u3057\u305f\u3002<\/p>\n<p data-line=\"349\" class=\"code-line\">\u3053\u3053\u307e\u3067\u307e\u3068\u3081\u308b\u3068<\/p>\n<ul data-line=\"350\" class=\"code-line\">\n<li data-line=\"350\" class=\"code-line\">NVIDIA, AMD\u306f<strong>pi\u5468\u671f<\/strong>\u3067,Intel\u306fpi\/2\u5468\u671f\u3067ULP\u304c<strong>\u6025\u5cfb<\/strong>\u306b\u306a\u308b\u50be\u5411\u304c\u7d9a\u3044\u3066\u3044\u308b<\/li>\n<li data-line=\"351\" class=\"code-line\">NVIDIA, AMD\u3067\u306f\u5f15\u6570\u304c\u5927\u304d\u304f\u306a\u308b\u3068\u305d\u306e <strong>1\u4e57\u306b\u6bd4\u4f8b<\/strong> \u3057\u3066\u5e73\u5747\u7684\u306aULP\u3082\u4e0a\u6607\u3057\u3066\u305d\u3046\uff1f<\/li>\n<li data-line=\"352\" class=\"code-line\">Intel\u3082\u5468\u671f\u7684\u306bULP\u304c\u6025\u5cfb\u306b\u4e0a\u6607\u3059\u308b\u50be\u5411\u304c\u7d9a\u3044\u3066\u3044\u308b\u304c\u3001<strong>\u5f15\u6570\u306e\u5897\u5927\u306e\u5f71\u97ff\u306f\u307b\u307c\u306a\u3057<\/strong>\n<\/li>\n<li data-line=\"353\" class=\"code-line\">\u533a\u9593\u5e73\u5747\u304b\u3089 <strong>Intel\u304c\u5727\u5012\u7684\u306b\u9ad8\u7cbe\u5ea6<\/strong>\u3001\u6b21\u70b9\u3067AMD\u304c\u9ad8\u7cbe\u5ea6<\/li>\n<\/ul>\n<hr data-line=\"355\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC4%EF%BC%9Asfu%E8%BF%91%E4%BC%BC%E7%89%88%E3%81%AE%E7%B5%90%E6%9E%9C-%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE%E5%8F%AF%E8%A6%96%E5%8C%96\" data-line=\"356\" class=\"code-line\">\n \u691c\u8a3c4\uff1aSFU\u8fd1\u4f3c\u7248\u306e\u7d50\u679c \u7d76\u5bfe\u8aa4\u5dee\u53ef\u8996\u5316<\/h3>\n<h4 id=\"%5B-pi%2C-pi%5D-%E3%81%AE%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE\" data-line=\"358\" class=\"code-line\">\n <code>[-pi, pi]<\/code> \u306e\u7d76\u5bfe\u8aa4\u5dee<\/h4>\n<p data-line=\"360\" class=\"code-line\">ULP\u9ad8\u5024\u306e\u8aac\u660e\u3092\u88dc\u5b8c\u3059\u308b\u305f\u3081 <strong>\u7d76\u5bfe\u8aa4\u5dee<\/strong> \u306b\u3064\u3044\u3066\u3082\u898b\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u7d76\u5bfe\u8aa4\u5dee\u306b\u3082\u306a\u306b\u304b\u50be\u5411\u304c\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002\u30d9\u30f3\u30c0\u30fc\u5dee\u306f\u3042\u308b\u306e\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<p data-line=\"374\" class=\"code-line\">NVIDIA\u3067\u306f\u516c\u5f0f\u901a\u308a <code>2^(-20.5) \u2252 6.74e-7<\/code> \u4ee5\u5185\u306e\u8aa4\u5dee\u3067\u53ce\u307e\u3063\u3066\u304a\u308a\u307e\u3059(\u30b0\u30e9\u30d5\u3067\u306f\u6700\u59272.5e-7\u7a0b\u5ea6\u3068\u8aad\u307f\u53d6\u308c\u308b)\u3002AMD\u3082\u540c\u69d8\u3067\u3059\u3002<\/p>\n<p data-line=\"376\" class=\"code-line\">\u3057\u304b\u3057Intel\u306f\u3044\u308d\u3044\u308d\u60f3\u5b9a\u5916\u3067\u3059\u3002\u307e\u305a\u7d76\u5bfe\u8aa4\u5dee\u306e\u30b9\u30b1\u30fc\u30eb\u304c<strong>1e-5\u3068\u5272\u3068\u3067\u304b\u3081<\/strong>\u306b\u898b\u3048\u307e\u3059\u3002\u305f\u3060\u3088\u304f\u8003\u3048\u308b\u3068<strong>\u554f\u984c\u306a\u3044<\/strong>\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002\u30b0\u30e9\u30d5\u3067\u8aa4\u5dee\u304c\u6025\u4e0a\u6607\u3057\u3066\u3044\u308b\u306e\u306f <code>sin(\u00b1pi\/2)<\/code> <code>cos(0,\u00b1pi)<\/code> \u306e\u3068\u3053\u308d\u3067\u3042\u308a\u3053\u308c\u306f <code>\u00b11<\/code> \u304c\u51fa\u529b\u3055\u308c\u308b\u3068\u304d\u3067\u3059\u3002<br \/>\u3064\u307e\u308a<code>\u00b11<\/code> \u306b\u5bfe\u3057<strong>\u8aa4\u5dee\u304c0.00001\u7a0b\u5ea6<\/strong>\u306a\u306e\u3067\u8a31\u5bb9\u3067\u304d\u308b\u3068\u8003\u3048\u3089\u308c\u3001\u305d\u308c\u4ee5\u5916\u306e\u533a\u9593\u306f ULP\u306e\u56f3 \u3084 \u30d9\u30f3\u30c0\u6a2a\u65ad\u306e\u6bd4\u8f03\uff08\u629c\u7c8b\uff09 \u3067\u898b\u305f\u3068\u304a\u308a\u512a\u79c0\u306a\u76f8\u5bfe\u8aa4\u5dee\u3092\u7dad\u6301\u3057\u3066\u3044\u307e\u3059\u3002<strong>Intel<\/strong>\u306f\u4ed62\u793e\u3068\u6bd4\u3079\u3069\u3046\u3082<strong>\u76f8\u5bfe\u8aa4\u5dee\u3092\u91cd\u8996<\/strong>\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<hr data-line=\"379\" class=\"code-line\"\/>\n<h4 id=\"%5B-100pi%2C-100pi%5D-%E3%81%AE%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE\" data-line=\"381\" class=\"code-line\">\n <code>[-100pi, 100pi]<\/code> \u306e\u7d76\u5bfe\u8aa4\u5dee<\/h4>\n<p data-line=\"383\" class=\"code-line\">cos\u306f\u5272\u611b<\/p>\n<ul data-line=\"385\" class=\"code-line\">\n<li data-line=\"385\" class=\"code-line\">\n<p data-line=\"385\" class=\"code-line\">NVIDIA RTX 5090<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/5a42e7cf35d0-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"388\" class=\"code-line\">\n<p data-line=\"388\" class=\"code-line\">AMD gfx1036<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/7e074d85cacf-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"391\" class=\"code-line\">\n<p data-line=\"391\" class=\"code-line\">Intel UHD 770<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/5e6b7241bb8b-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<\/ul>\n<p data-line=\"394\" class=\"code-line\">3\u793e\u3068\u3082\u7279\u5fb4\u304c\u3067\u3066\u3044\u307e\u3059\u3002<br \/>\u307e\u305aNVIDIA\u306b\u6ce8\u76ee\u3059\u308b\u3068<strong>\u5f15\u6570\u304c2\u500d<\/strong>\u306b\u306a\u308b\u3054\u3068\u306b\u7d76\u5bfe\u8aa4\u5dee\u30822\u500d\u306b<strong>\u6bb5\u5dee\u72b6<\/strong>\u306b\u4e0a\u6607\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f<strong>\u5f15\u6570\u7e2e\u7d04<\/strong>(range reduction)\u304c\u5927\u304d\u304f\u95a2\u4fc2\u3057\u3066\u3044\u308b\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002\u8a73\u7d30\u306f\u5f8c\u8ff0\u3057\u307e\u3059\u304c\u3001\u5c11\u306a\u304f\u3068\u3082NVIDIA GPU\u306b\u304a\u3044\u3066<strong>range reduction\u304cfloat32\u7cbe\u5ea6<\/strong>\u3067\u884c\u308f\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u306f\u3063\u304d\u308a\u5206\u304b\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3067\u306f\u4ee5\u4e0b\u306e2\u70b9\u306e\u3088\u3046<strong>\u7cbe\u5ea6\u306b\u554f\u984c<\/strong>\u304c\u304a\u304d\u307e\u3059\u3002<\/p>\n<ul data-line=\"397\" class=\"code-line\">\n<li data-line=\"397\" class=\"code-line\">range reduction\u306b\u4f7f\u308f\u308c\u308b2pi\u304c360.00001452314234\u00b0\u3068\u308f\u305a\u304b\u306b360\u00b0\u304b\u3089\u305a\u308c\u3066\u3044\u308b<\/li>\n<li data-line=\"398\" class=\"code-line\">range reduction\u5f8c\u306e\u5024\u3082float32\u3067\u3042\u308a\u4eee\u6570\u90e8\u306e\u7cbe\u5ea6\u304c\u5f15\u65702\u500d\u3054\u3068\u306b\u968e\u6bb5\u72b6\u306b\u60aa\u5316<\/li>\n<\/ul>\n<p data-line=\"400\" class=\"code-line\">\u524d\u8005\u306e\u5f71\u97ff\u306f\u3001\u5f15\u6570\u304c\u5927\u304d\u304f\u306a\u308b\u307b\u3069<strong>\u30ea\u30cb\u30a2<\/strong>\uff081\u4e57\u306b\u6bd4\u4f8b\uff09\u306b\u8aa4\u5dee\u306e\u5897\u5927\u3092\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002\u5f8c\u8005\u306e\u5f71\u97ff\u306f\u30012\u306e\u7d2f\u4e57\u5883\u754c\uff082, 4, 8, 16, 32&#8230;\uff09\u3067<strong>\u6bb5\u5dee<\/strong>\u306e\u3088\u3046\u306b\u898b\u3048\u308b\u8aa4\u5dee\u3092\u5f15\u304d\u8d77\u3053\u3057\u307e\u3059\u3002<\/p>\n<blockquote data-line=\"402\" class=\"code-line\">\n<p data-line=\"402\" class=\"code-line\"><strong>\u6bb5\u5dee<\/strong>\u306b\u3064\u3044\u3066\u3082\u3046\u5c11\u3057\u7a81\u3063\u8fbc\u3093\u3067\u8a71\u3059\u3068\u30fb\u30fb\u30fb<br \/>range reduction\u30670.15915493667125701904\u3092\u304b\u3051\u308b\u64cd\u4f5c\u304c\u5165\u308a\u307e\u3059\u3002\u305d\u3057\u3066NVIDIA\u306e\u56f3\u3067\u306f100\u3084200\u3092\u5c11\u3057\u8d85\u3048\u305f\u3068\u3053\u308d\u306b\u6bb5\u5dee\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b0.159..\u3092\u304b\u3051\u308b\u306816.0\u300132.0\u3068\u3044\u3046\u6570\u5b57\u304c\u3067\u3066\u304d\u307e\u3059\u3002\u306a\u306e\u3067\u3061\u3087\u3046\u3069float32\u306e<strong>\u5883\u754c<\/strong>\u306b\u5408\u81f4\u3057\u307e\u3059\u3002<\/p>\n<\/blockquote>\n<p data-line=\"405\" class=\"code-line\">AMD\u306f\u5d16\u306e\u3088\u3046\u306a\u6bb5\u5dee\u3053\u305d\u306a\u3044\u3082\u306e\u306e\u30ea\u30cb\u30a2\u306b\u8aa4\u5dee\u306e\u5897\u5927\u304c\u3042\u308b\u306e\u3067\u3001\u3084\u306f\u308arange reduction\u306e\u7cbe\u5ea6\u304c\u826f\u304f\u306a\u3044\u306e\u3067\u3057\u3087\u3046\u3002<\/p>\n<p data-line=\"408\" class=\"code-line\">\u305d\u3057\u3066Intel GPU\uff01<strong>\u8105\u5a01\u306e\u5e73\u5766<\/strong>\u3067\u3042\u308arange reduction\u306e\u5f71\u97ff\u304c<strong>\u307b\u307c\u306a\u3044<\/strong>\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002ULP\u6bd4\u8f03\u306e\u3068\u304d\u3082\u305d\u3046\u3067\u3057\u305f\u304c\u660e\u3089\u304b\u306bIntel\u3060\u3051\u30b0\u30e9\u30d5\u306e\u5f62\u304c\u9055\u3044\u307e\u3059\u3002\u8a08\u7b97\u65b9\u6cd5(\u3084\u901f\u5ea6)\u304c\u6839\u672c\u7684\u306b\u9055\u3046\u306e\u3067\u3057\u3087\u3046\u304b\u306d\u3002<\/p>\n<blockquote data-line=\"410\" class=\"code-line\">\n<p data-line=\"410\" class=\"code-line\">Intel GPU \u306e <code>native_sin<\/code> \u306f\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5bc4\u308a\uff1f(AI\u8abf\u67fb)<br \/>NVIDIA \u3084 AMD \u306e GPU \u3067\u306f SFU \u306b\u3088\u308b 1 \u30b5\u30a4\u30af\u30eb\u8fd1\u4f3c\u8a08\u7b97 (<code>MUFU.SIN<\/code> \u306a\u3069) \u304c\u4f7f\u308f\u308c\u307e\u3059\u304c\u3001Intel GPU \u306e <code>native_sin<\/code> \u306f\u6319\u52d5\u304c\u7570\u306a\u308b\u3088\u3046\u3067\u3059\u3002\u5e83\u3044\u7bc4\u56f2\u3067\u8aa4\u5dee\u304c\u5e73\u5766\u306a\u3053\u3068\u304b\u3089 <strong>\u9ad8\u7cbe\u5ea6\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\uff08Payne\u2013Hanek \u578b\uff09<\/strong> \u3092\u7528\u3044\u308b\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u5b9f\u88c5\uff08\u307e\u305f\u306f\u30de\u30a4\u30af\u30ed\u30b3\u30fc\u30c9\uff09\u3068\u8003\u3048\u3089\u308c\u3001<strong>\u9ad8\u7cbe\u5ea6\u3060\u304c\u30ec\u30a4\u30c6\u30f3\u30b7\u306f\u9577\u3081<\/strong>\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u5927\u91cf\u306b\u547c\u3076\u30ab\u30fc\u30cd\u30eb\u3067\u306f\u6027\u80fd\u5f71\u97ff\u306b\u6ce8\u610f\u3067\u3059\u3002<\/p>\n<\/blockquote>\n<hr data-line=\"414\" class=\"code-line\"\/>\n<h3 id=\"%E5%A4%A7%E3%81%8D%E3%81%AA%E8%A7%92%E5%BA%A6%E3%81%A7ulp%E3%81%8C%E5%A2%97%E3%81%88%E3%82%8B%E7%90%86%E7%94%B1%E3%81%A8%E5%BC%95%E6%95%B0%E7%B8%AE%E7%B4%84(range-reduction)%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6\" data-line=\"416\" class=\"code-line\">\n \u5927\u304d\u306a\u89d2\u5ea6\u3067ULP\u304c\u5897\u3048\u308b\u7406\u7531\u3068\u5f15\u6570\u7e2e\u7d04(range reduction)\u306b\u3064\u3044\u3066<\/h3>\n<p data-line=\"418\" class=\"code-line\">NVIDIA\/AMD \u3067\u306f\u5f15\u6570\u304c\u5927\u304d\u3044\u307b\u3069 <strong>ULP\u304c\u5358\u8abf\u5897\u52a0<\/strong>\u3059\u308b\u4e00\u65b9\u3067\u3001Intel\u306f <strong>\u307b\u307c\u5897\u3048\u306a\u3044<\/strong> \u3068\u3044\u3046\u73fe\u8c61\u304c\u89b3\u6e2c\u3055\u308c\u307e\u3057\u305f\u3002<br \/>\u307e\u305fNVIDIA(AMD\u3082)\u306a\u3089 <code>\u6a19\u6e96\u7248sin cos<\/code> \u547d\u4ee4\u3092\u4f7f\u3048\u3070\u3069\u3093\u306a\u5927\u304d\u306a\u89d2\u5ea6\u3067\u3082<strong>2ULP\u4ee5\u5185<\/strong>\u304c\u4fdd\u8a3c\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u6a19\u6e96\u7248\u3068\u8fd1\u4f3c\u7248\u306e\u9055\u3044\u306f\u306a\u3093\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<p data-line=\"421\" class=\"code-line\">\u3053\u306e\u7406\u89e3\u3092\u6df1\u3081\u308b\u3046\u3048\u3067 <strong>\u5f15\u6570\u7e2e\u7d04 (argument reduction)<\/strong> \u3092\u907f\u3051\u3066\u901a\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u4e09\u89d2\u95a2\u6570\u306e\u5b9f\u88c5\u306f\u307e\u305a\u3001\u5165\u529b\u89d2 <embed-katex><eq class=\"zenn-katex\">\\theta<\/eq><\/embed-katex> \u3092\u6240\u5b9a\u306e\u57fa\u672c\u533a\u9593\uff08\u4f8b\uff1a<embed-katex><eq class=\"zenn-katex\">[-\\pi, \\pi]<\/eq><\/embed-katex>\uff09\u3078\u5199\u3059\u7e2e\u7d04\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"423\" class=\"code-line\">\u4f8b\u3048\u3070NVIDIA GPU \u3067 SFU\u7248\u306e <code>sin<\/code> \u3092\u547c\u3076\u3068\u3001<strong>SASS<\/strong>(GPU\u30a2\u30bb\u30f3\u30d6\u30ea) \u306f<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-asm\"><code class=\"language-asm code-line\" data-line=\"425\">FMUL.RZ   R9, R5, 0.15915493667125701904  \/\/ \u2248 1\/(2pi) \u3092\u639b\u3051\u3066\u300c\u30bf\u30fc\u30f3\u300d\u306b\u5909\u63db\nMUFU.SIN  R5, R9                           \/\/ 1.0 = 1\u5468\u3092\u5f15\u6570\u3068\u3059\u308b SIN\n<\/code><\/pre>\n<\/div>\n<p data-line=\"430\" class=\"code-line\">\u306e\u3088\u3046\u306a\u4e26\u3073\u304c\u73fe\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u639b\u3051\u3066\u3044\u308b <strong>0.15915493667125701904<\/strong> \u306f float32 \u306b\u4e38\u3081\u3089\u308c\u305f <embed-katex><eq class=\"zenn-katex\">\\tfrac{1}{2\\pi}<\/eq><\/embed-katex> \u3067\u300116\u9032\u3060\u3068 <strong><code>0x3e22f983<\/code><\/strong> \u3067\u3059\u3002<br \/>\u3053\u306e <embed-katex><eq class=\"zenn-katex\">\\tfrac{1}{2\\pi}<\/eq><\/embed-katex> \u306e <strong>\u5024\u306e\u30ba\u30ec<\/strong>\u304c\u30011\u5468\u304c\u4f55\u5ea6\u304b\u3092\u5fae\u5999\u306b\u305a\u3089\u3057\u3066\u7d50\u679c\u3068\u3057\u3066 <strong>\u5927\u89d2\u5ea6\u307b\u3069\u4f4d\u76f8\u8aa4\u5dee\uff08=ULP\u4e0a\u6607\uff09\u304c\u7a4d\u307f\u4e0a\u304c\u308a<\/strong> \u307e\u3059\u3002<\/p>\n<blockquote data-line=\"433\" class=\"code-line\">\n<p data-line=\"433\" class=\"code-line\">\u306a\u305c Intel \u306f\u5e73\u5766\u3060\u3063\u305f\u306e\u304b\u3001\u306e\u7b54\u3048<\/p>\n<ul data-line=\"434\" class=\"code-line\">\n<li data-line=\"434\" class=\"code-line\">\n<strong>range reduction\u306e\u4fc2\u6570\u7cbe\u5ea6<\/strong> \u306f\u3001\u5927\u304d\u306a\u89d2\u5ea6\u57df\u3067\u306e\u4f4d\u76f8\u8aa4\u5dee(ULP)\u306b\u76f4\u7d50<\/li>\n<li data-line=\"435\" class=\"code-line\">Intel \u306f\u7e2e\u7d04\u306e\u5b9f\u88c5\u304c\u4ed62\u793e\u3068\u6bd4\u3079<strong>\u9ad8\u7cbe\u5ea6<\/strong>\u3067\u3084\u3063\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u9ad8\u304f\u3001\u4f4d\u76f8\u8aa4\u5dee\u304c\u307b\u307c\u898b\u3048\u306a\u3044 \u2192 \u5e73\u5766\u306b\u898b\u3048\u3066\u3044\u305f<\/li>\n<\/ul>\n<\/blockquote>\n<hr data-line=\"437\" class=\"code-line\"\/>\n<h4 id=\"%E3%81%A9%E3%82%8C%E3%81%8F%E3%82%89%E3%81%84%E3%82%BA%E3%83%AC%E3%82%8B%E3%81%AE%E3%81%8B%EF%BC%9F-%E2%86%92-360.00001452314234%C2%B0\" data-line=\"439\" class=\"code-line\">\n \u3069\u308c\u304f\u3089\u3044\u30ba\u30ec\u308b\u306e\u304b\uff1f \u2192 360.00001452314234\u00b0<\/h4>\n<p data-line=\"441\" class=\"code-line\">1\u30bf\u30fc\u30f3\u306b\u76f8\u5f53\u3059\u308b\u89d2\u5ea6\u306f<\/p>\n<section class=\"zenn-katex code-line\" data-line=\"443\"><eqn><embed-katex display-mode=\"1\"><br \/>\n\\theta_{\\text{full}}(c) = \\frac{180}{\\pi} \\cdot \\frac{1}{c}<br \/>\n<\/embed-katex><\/eqn><\/section>\n<p data-line=\"447\" class=\"code-line\">\u3067\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002<br \/>float32 \u306e\u4e38\u3081\u306b\u3088\u308a\u3001\u5b9f\u969b\u306b\u306f\u6b21\u306e\u3088\u3046\u306b <strong>\u308f\u305a\u304b\u306b 360\u00b0 \u3092\u5916\u308c\u307e\u3059<\/strong>\u3002<\/p>\n<div class=\"s_table\"><table data-line=\"450\" class=\"code-line\">\n<thead data-line=\"450\" class=\"code-line\">\n<tr data-line=\"450\" class=\"code-line\">\n<th style=\"text-align:left\">\u5b9a\u6570 (hex)<\/th>\n<th style=\"text-align:right\">float32 \u5024<\/th>\n<th style=\"text-align:right\">1\u5468\u306e\u89d2\u5ea6 [\u00b0]<\/th>\n<th style=\"text-align:right\">360\u00b0\u3068\u306e\u5dee [\u00b0]<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"452\" class=\"code-line\">\n<tr data-line=\"452\" class=\"code-line\">\n<td style=\"text-align:left\">0x3e22f983<\/td>\n<td style=\"text-align:right\">0.15915493667125701904296875<\/td>\n<td style=\"text-align:right\">360.000014523142306265438<\/td>\n<td style=\"text-align:right\">+0.00001452314<\/td>\n<\/tr>\n<tr data-line=\"453\" class=\"code-line\">\n<td style=\"text-align:left\">0x3e22f984<\/td>\n<td style=\"text-align:right\">0.159154951572418212890625<\/td>\n<td style=\"text-align:right\">359.999980817510196189747<\/td>\n<td style=\"text-align:right\">-0.00001918249<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"455\" class=\"code-line\">\u3053\u308c\u304c 1 \u5468\u3042\u305f\u308a\u306e\u8aa4\u5dee\u3067\u3059\u3002<br \/><embed-katex><eq class=\"zenn-katex\">|\\theta| = 1000000\\pi<\/eq><\/embed-katex>\uff08=500000 \u5468\uff09\u3060\u3068\u3001<code>FMUL.RZ R9, R5, 0.15915493667125701904<\/code> \u306e\u6642\u70b9\u3067 <code>7.2616\u00b0<\/code> <strong>\u306e\u7e2e\u7d04\u8aa4\u5dee\u304c\u767a\u751f<\/strong> \u3057\u3066\u3044\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<blockquote data-line=\"458\" class=\"code-line\">\n<h4 id=\"%E3%83%88%E3%83%AA%E3%83%93%E3%82%A2\" data-line=\"458\" class=\"code-line\">\n \u30c8\u30ea\u30d3\u30a2<\/h4>\n<p data-line=\"459\" class=\"code-line\">\u306f\u3058\u3081\u3066 <code>90\u00b0<\/code> \u4ee5\u4e0a\u306e\u8aa4\u5dee\u304c\u767a\u751f\u3059\u308b\u306e\u306f<strong>6,197,007\u5468\u76ee<\/strong>\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\u3053\u308c\u306fsin(38936943.33)\u306b\u76f8\u5f53\u3057\u307e\u3059\u3002\u3053\u306e\u9818\u57df\u3067\u306f\u4e09\u89d2\u95a2\u6570\u306e\u51fa\u529b\u306b\u610f\u5473\u306f\u306a\u3044\u3067\u3057\u3087\u3046<\/p>\n<\/blockquote>\n<hr data-line=\"462\" class=\"code-line\"\/>\n<p data-line=\"464\" class=\"code-line\">float32\u306e\u7cbe\u5ea6\u5185\u3067\u7e2e\u7d04\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u554f\u984c\u306a\u306e\u3067\u3001\u305f\u3068\u3048\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u5074\u304csin(x)\u3092sin(x%pi)\u3068\u66f8\u3044\u3066\u3082\u7d50\u5c40\u540c\u69d8\u306e\u7e2e\u7d04\u8aa4\u5dee\u304c\u767a\u751f\u3059\u308b\u306e\u3067\u610f\u5473\u304c\u306a\u3044\u3053\u3068\u3092\u793a\u5506\u3057\u307e\u3059\u3002\u3053\u308c\u3082\u4eca\u5f8c\u306e\u4e00\u3064\u306e\u691c\u8a3c\u8a18\u4e8b\u306b\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<hr data-line=\"466\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC4.1%EF%BC%9Anvidia%E4%BF%9D%E8%A8%BC%E7%AF%84%E5%9B%B2%E5%86%85(%C2%B1100pi)%E3%81%A7amd%2Cintel%E3%81%AEsfu%E7%89%88%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE%E6%9C%80%E5%A4%A7%E5%80%A4\" data-line=\"468\" class=\"code-line\">\n \u691c\u8a3c4.1\uff1aNVIDIA\u4fdd\u8a3c\u7bc4\u56f2\u5185(\u00b1100pi)\u3067AMD,Intel\u306eSFU\u7248\u7d76\u5bfe\u8aa4\u5dee\u6700\u5927\u5024<\/h3>\n<p data-line=\"470\" class=\"code-line\">\u3053\u308c\u307e\u3067\u306e\u691c\u8a3c\u3067NVIDIA\u306e\u4fdd\u8a3c\u7bc4\u56f2\u5185(<strong>\u00b1100pi<\/strong>)\u3067\u3082NVIDIA\u306b\u512a\u4f4d\u6027\u304c\u3042\u308b\u3088\u3046\u306b\u306f\u898b\u3048\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3057\u304b\u3057\u4ed6\u30d9\u30f3\u30c0\u30fc\u304c\u7d76\u5bfe\u8aa4\u5dee\u306e\u60c5\u5831\u3092\u516c\u5f0f\u767a\u8868\u3057\u3066\u306a\u3044\u3088\u3046\u306a\u306e\u3067\u3053\u3053\u3067\u306f\u3063\u304d\u308a\u3055\u305b\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<h4 id=\"%E7%AF%84%E5%9B%B2%EF%BC%9A%C2%B12pi\" data-line=\"472\" class=\"code-line\">\n \u7bc4\u56f2\uff1a\u00b12pi<\/h4>\n<div class=\"s_table\"><table data-line=\"474\" class=\"code-line\">\n<thead data-line=\"474\" class=\"code-line\">\n<tr data-line=\"474\" class=\"code-line\">\n<th style=\"text-align:left\">GPU<\/th>\n<th style=\"text-align:left\">\u95a2\u6570<\/th>\n<th style=\"text-align:right\">\u6700\u5927\u7d76\u5bfe\u8aa4\u5dee<\/th>\n<th style=\"text-align:center\">\u8fd1\u4f3c\uff082\u306e\u51aa\uff09<\/th>\n<th style=\"text-align:right\">\u767a\u751f\u4f4d\u7f6e x\uff08\u53c2\u8003\uff09<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"476\" class=\"code-line\">\n<tr data-line=\"476\" class=\"code-line\">\n<td style=\"text-align:left\">NVIDIA RTX 5090<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">6.556510925e-07<\/td>\n<td style=\"text-align:center\">\u2248 2^-20.54<\/td>\n<td style=\"text-align:right\">3.288942575454712<\/td>\n<\/tr>\n<tr data-line=\"477\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">7.152557373e-07<\/td>\n<td style=\"text-align:center\">\u2248 2^-20.42<\/td>\n<td style=\"text-align:right\">4.900111198425293<\/td>\n<\/tr>\n<tr data-line=\"478\" class=\"code-line\">\n<td style=\"text-align:left\">AMD gfx1036<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">4.768371582e-07<\/td>\n<td style=\"text-align:center\">\u2248 2^-21.00<\/td>\n<td style=\"text-align:right\">6.0378098487854<\/td>\n<\/tr>\n<tr data-line=\"479\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">4.172325134e-07<\/td>\n<td style=\"text-align:center\">\u2248 2^-21.19<\/td>\n<td style=\"text-align:right\">4.467008590698242<\/td>\n<\/tr>\n<tr data-line=\"480\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">3.439188004e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.83<\/td>\n<td style=\"text-align:right\">1.5625<\/td>\n<\/tr>\n<tr data-line=\"481\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">3.439188004e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.83<\/td>\n<td style=\"text-align:right\">0.008290027268230915<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"483\" class=\"code-line\">\u53c2\u8003<br \/><a target=\"_blank\" href=\"https:\/\/docs.nvidia.com\/cuda\/parallel-thread-execution\/#floating-point-instructions-sin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Parallel Thread Execution ISA Version 9.0<\/a>\u306e\u8a18\u8f09\u306f\u6700\u5927\u8aa4\u5dee <code>2^(-20.5)<\/code> \u7a0b\u5ea6<\/p>\n<h4 id=\"%E7%AF%84%E5%9B%B2%EF%BC%9A%C2%B1100pi\" data-line=\"487\" class=\"code-line\">\n \u7bc4\u56f2\uff1a\u00b1100pi<\/h4>\n<div class=\"s_table\"><table data-line=\"489\" class=\"code-line\">\n<thead data-line=\"489\" class=\"code-line\">\n<tr data-line=\"489\" class=\"code-line\">\n<th style=\"text-align:left\">GPU<\/th>\n<th style=\"text-align:left\">\u95a2\u6570<\/th>\n<th style=\"text-align:right\">\u6700\u5927\u7d76\u5bfe\u8aa4\u5dee<\/th>\n<th style=\"text-align:center\">\u8fd1\u4f3c\uff082\u306e\u51aa\uff09<\/th>\n<th style=\"text-align:right\">\u767a\u751f\u4f4d\u7f6e x\uff08\u53c2\u8003\uff09<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"491\" class=\"code-line\">\n<tr data-line=\"491\" class=\"code-line\">\n<td style=\"text-align:left\">NVIDIA RTX 5090<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">3.653950989e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.74<\/td>\n<td style=\"text-align:right\">311.03460693359375<\/td>\n<\/tr>\n<tr data-line=\"492\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">3.659725189e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.74<\/td>\n<td style=\"text-align:right\">312.6540832519531<\/td>\n<\/tr>\n<tr data-line=\"493\" class=\"code-line\">\n<td style=\"text-align:left\">AMD gfx1036<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">2.465257421e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-15.31<\/td>\n<td style=\"text-align:right\">314.1517639160156<\/td>\n<\/tr>\n<tr data-line=\"494\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">2.458691597e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-15.31<\/td>\n<td style=\"text-align:right\">312.5647888183594<\/td>\n<\/tr>\n<tr data-line=\"495\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770<\/td>\n<td style=\"text-align:left\">native_sin<\/td>\n<td style=\"text-align:right\">3.439188004e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.83<\/td>\n<td style=\"text-align:right\">1.5625<\/td>\n<\/tr>\n<tr data-line=\"496\" class=\"code-line\">\n<td style=\"text-align:left\"\/>\n<td style=\"text-align:left\">native_cos<\/td>\n<td style=\"text-align:right\">3.439188004e-05<\/td>\n<td style=\"text-align:center\">\u2248 2^-14.83<\/td>\n<td style=\"text-align:right\">0.008290027268230915<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"499\" class=\"code-line\">\u53c2\u8003<br \/><a target=\"_blank\" href=\"https:\/\/docs.nvidia.com\/cuda\/parallel-thread-execution\/#floating-point-instructions-sin\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Parallel Thread Execution ISA Version 9.0<\/a>\u306e\u8a18\u8f09\u306f\u6700\u5927\u8aa4\u5dee <code>2^(-14.7)<\/code> \u7a0b\u5ea6<\/p>\n<hr data-line=\"502\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC5%EF%BC%9Asfu%E7%89%88%E3%81%AE%E8%B6%85%E5%B7%A8%E5%A4%A7%E5%BC%95%E6%95%B0\" data-line=\"503\" class=\"code-line\">\n \u691c\u8a3c5\uff1aSFU\u7248\u306e\u8d85\u5de8\u5927\u5f15\u6570<\/h3>\n<h4 id=\"%5B-1000000pi%2C-1000000pi%5D-%E3%81%AE%E5%B9%B3%E5%9D%87ulp%E3%81%A8%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE\" data-line=\"505\" class=\"code-line\">\n <code>[-1000000pi, 1000000pi]<\/code> \u306e\u5e73\u5747ULP\u3068\u7d76\u5bfe\u8aa4\u5dee<\/h4>\n<p data-line=\"507\" class=\"code-line\">\u4fdd\u8a3c\u5916\u306e\u7bc4\u56f2\u3082\u898b\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002cos\u3082\u540c\u69d8\u306e\u50be\u5411\u3060\u3063\u305f\u306e\u3067sin\u306e\u307b\u3046\u306e\u307f\u8f09\u305b\u307e\u3059\u3002\uff08<a target=\"_blank\" href=\"https:\/\/github.com\/toropippi\/GPU_SinCosULP\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">github\u30ea\u30dd\u30b8\u30c8\u30ea<\/a>\u306b\u5168\u7d50\u679c\u304c\u3042\u308a\u307e\u3059\uff09<\/p>\n<ul data-line=\"509\" class=\"code-line\">\n<li data-line=\"509\" class=\"code-line\">\n<p data-line=\"509\" class=\"code-line\">NVIDIA RTX 5090 \u5e73\u5747ULP<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/2883cf6b986b-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"511\" class=\"code-line\">\n<p data-line=\"511\" class=\"code-line\">NVIDIA RTX 5090 \u7d76\u5bfe\u8aa4\u5dee<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/0b30b878b4df-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"514\" class=\"code-line\">\n<p data-line=\"514\" class=\"code-line\">AMD gfx1036 \u5e73\u5747ULP<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/165f70be0d72-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"516\" class=\"code-line\">\n<p data-line=\"516\" class=\"code-line\">AMD gfx1036 \u7d76\u5bfe\u8aa4\u5dee<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/72a0271e1747-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"519\" class=\"code-line\">\n<p data-line=\"519\" class=\"code-line\">Intel UHD 770 \u5e73\u5747ULP<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e10863394855-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"521\" class=\"code-line\">\n<p data-line=\"521\" class=\"code-line\">Intel UHD 770 \u7d76\u5bfe\u8aa4\u5dee<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/a5e9d009858f-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<\/ul>\n<p data-line=\"524\" class=\"code-line\">NVIDIA\u3001AMD\u306f <strong>\u5f15\u6570\u306e1\u4e57\u306b\u6bd4\u4f8b<\/strong> \u3068\u3044\u3046\u3053\u3068\u3067\u3084\u306f\u308a\u826f\u3055\u305d\u3046\u3067\u3059\u306d\u3002<br \/><strong>Intel \u3055\u3093\u3001\u3001\u3001\u306a\u3093\u3067\u3059\u304b\u3053\u308c\u306f\u30fb\u30fb\u30fb<\/strong><\/p>\n<hr data-line=\"527\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC6%EF%BC%9Aintel-gpu%E3%81%AE%E6%AE%B5%E5%B7%AE%E3%81%AF%EF%BC%9F-%E2%86%92-%C2%B132768pi%E3%81%A7%E5%A4%A7%E3%81%8D%E3%81%8F%E7%95%B0%E3%81%AA%E3%82%8B\" data-line=\"528\" class=\"code-line\">\n \u691c\u8a3c6\uff1aIntel GPU\u306e\u6bb5\u5dee\u306f\uff1f \u2192 \u00b132768pi\u3067\u5927\u304d\u304f\u7570\u306a\u308b<\/h3>\n<p data-line=\"530\" class=\"code-line\">Intel\u306e\u7d50\u679c\u304c<strong>\u3068\u3093\u3067\u3082\u306a\u3044\u5d16<\/strong>\u306b\u306a\u3063\u3066\u3044\u305f\u306e\u3067\u3001\u5883\u76ee\u304c\u3069\u3053\u306b\u3042\u308b\u304b\u624b\u52d5\u4e8c\u5206\u63a2\u7d22\u3092\u8a66\u307f\u307e\u3057\u305f\u3002<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"532\">x&gt; 102942.0\n  input  : token='102942.0'\n  float32: 102942.0  (bits=0x47c90f00)\n  u32    : 0x47c90f00\n\n[sin]\n  REF.sin:     -0.990592360496521   bits=0xbf7d9776  (71_sin)\n  TEST.sin:    -0.990592360496521   bits=0xbf7d9776  (71_sin)\n  TEST.native: -0.990592896938324   bits=0xbf7d977f  (ULP=9)  (71_native_sin)\n\n[cos]\n  REF.cos:     -0.13684575259685516 bits=0xbe0c214b  (71_cos)\n  TEST.cos:    -0.13684575259685516 bits=0xbe0c214b  (71_cos)\n  TEST.native: -0.1368417888879776  bits=0xbe0c2041  (ULP=266)  (71_native_cos)\n\nx&gt; 102943.0\n  input  : token='102943.0'\n  float32: 102943.0  (bits=0x47c90f80)\n  u32    : 0x47c90f80\n\n[sin]\n  REF.sin:     -0.6503710746765137  bits=0xbf267eb8  (71_sin)\n  TEST.sin:    -0.6503710746765137  bits=0xbf267eb8  (71_sin)\n  TEST.native: -0.8414709568023682  bits=0xbf576aa4  (ULP=3206124)  (71_native_sin)\n\n[cos]\n  REF.cos:     0.7596166729927063   bits=0x3f42763d  (71_cos)\n  TEST.cos:    0.7596166729927063   bits=0x3f42763d  (71_cos)\n  TEST.native: 0.7596192955970764   bits=0x3f427669  (ULP=44)  (71_native_cos)\n<\/code><\/pre>\n<\/div>\n<p data-line=\"564\" class=\"code-line\">\u3059\u308b\u3068\u5f15\u6570 <code>102942.0<\/code> \u3067 266ULP \u306b\u5bfe\u3057 <code>102943.0<\/code> \u3067 3206124 ULP\u3068\u4e00\u6c17\u306b\u60aa\u5316\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002<br \/>\u3053\u306e<strong>102943.0<\/strong>\u304c\u4e00\u4f53\u3069\u3093\u306a\u6570\u5b57\u306a\u306e\u304b\u3001\u306a\u3093\u3068\u306a\u304f3.14159&#8230;\u3067\u5272\u3063\u3066\u307f\u307e\u3057\u305f\u3002<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/0fe60fa43487-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"568\" class=\"code-line\">\u3042\uff01\uff01<\/p>\n<h4 id=\"%E3%81%8A%E3%81%BC%E3%82%8D%E3%81%92%E3%81%AA%E3%81%8C%E3%82%89%E3%80%81%E6%B5%AE%E3%81%8B%E3%82%93%E3%81%A7%E3%81%8D%E3%81%9F%E3%82%93%E3%81%A7%E3%81%99%E3%80%8232768%E3%81%A8%E3%81%84%E3%81%86%E6%95%B0%E5%AD%97%E3%81%8C\" data-line=\"570\" class=\"code-line\">\n \u304a\u307c\u308d\u3052\u306a\u304c\u3089\u3001\u6d6e\u304b\u3093\u3067\u304d\u305f\u3093\u3067\u3059\u300232768\u3068\u3044\u3046\u6570\u5b57\u304c<\/h4>\n<p data-line=\"572\" class=\"code-line\">\u00b132768pi\u3092\u5883\u306bIntel GPU\u306e native_sin native_cos\u304c\u5927\u304d\u304f\u7834\u7dbb\u3057\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002\u660e\u3089\u304b\u306b\u610f\u5473\u3042\u308a\u3052\u306a\u6570\u5b57\u306a\u306e\u3067AI\u306b\u8abf\u67fb\u3055\u305b\u307e\u3057\u305f\u3002<\/p>\n<blockquote data-line=\"574\" class=\"code-line\">\n<h4 id=\"intel-gpu-%E3%81%AE-native_cos%2Fsin-%E3%81%8C-%C2%B132768pi-%E3%81%A7%E8%AA%A4%E5%B7%AE%E6%80%A5%E5%A2%97%E3%81%99%E3%82%8B%E7%90%86%E7%94%B1\" data-line=\"574\" class=\"code-line\">\n Intel GPU \u306e <code>native_cos\/sin<\/code> \u304c \u00b132768pi \u3067\u8aa4\u5dee\u6025\u5897\u3059\u308b\u7406\u7531<\/h4>\n<p data-line=\"575\" class=\"code-line\">\u5b9f\u6e2c\u3067\u306f\u3001Intel GPU \u306e <code>native_cos\/sin<\/code> \u306f \u00b132768pi \u3092\u5883\u306b ULP \u304c\u6841\u5916\u308c\u306b\u8df3\u306d\u4e0a\u304c\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001<strong>\u56fa\u5b9a\u5c0f\u6570\u70b9\u3067 <code>x\u00b72\/pi<\/code> \u3092\u8a55\u4fa1\u3059\u308b\u9ad8\u901f\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3<\/strong>\u306e\u7cbe\u5ea6\u9650\u754c\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002<br \/>\u56fa\u5b9a\u5c0f\u6570\u70b9\u306e\u5c0f\u6570\u90e8\u304c 16bit \u306e\u5834\u5408\u3001\u6b63\u3057\u304f\u8c61\u9650\u3092\u5224\u5b9a\u3067\u304d\u308b\u4fdd\u8a3c\u57df\u306f \u00b12^(16-1)\u00b7pi\/2 = \u00b132768pi \u307e\u3067\u3067\u3001\u3053\u308c\u3092\u8d85\u3048\u308b\u3068\u8c61\u9650\u5224\u5b9a\u304c\u305a\u308c\u3001\u8fd1\u4f3c\u591a\u9805\u5f0f\u3078\u306e\u5165\u529b\u304c 90\u00b0 \u4ee5\u4e0a\u305a\u308c\u3066\u3057\u307e\u3044\u3001ULP \u304c\u7206\u767a\u3057\u307e\u3059\u3002<\/p>\n<\/blockquote>\n<blockquote data-line=\"578\" class=\"code-line\">\n<h4 id=\"%E7%9B%B4%E6%8E%A5%E3%82%BA%E3%83%90%E3%83%AA%E6%9B%B8%E3%81%84%E3%81%9F%E3%83%99%E3%83%B3%E3%83%80%E3%83%BC%E6%96%87%E6%9B%B8%E3%81%AF%E3%81%82%E3%82%8B%E3%81%8B%EF%BC%9F\" data-line=\"578\" class=\"code-line\">\n \u76f4\u63a5\u30ba\u30d0\u30ea\u66f8\u3044\u305f\u30d9\u30f3\u30c0\u30fc\u6587\u66f8\u306f\u3042\u308b\u304b\uff1f<\/h4>\n<p data-line=\"579\" class=\"code-line\">\u5c11\u306a\u304f\u3068\u3082\u516c\u958b\u3055\u308c\u3066\u3044\u308b Intel \u3084 OpenCL \u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u300c\u00b132768pi \u3092\u5883\u754c\u306b\u8aa4\u5dee\u304c\u5897\u3048\u308b\u300d\u3068\u660e\u8a18\u3057\u305f\u3082\u306e\u306f\u898b\u5f53\u305f\u308a\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u4e00\u822c\u7684\u306a\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\u7406\u8ad6\uff08Muller\u300eElementary Functions\u300f\u306a\u3069\uff09\u3067\u306f <strong>\u56fa\u5b9a\u5c0f\u6570\u70b9 t \u30d3\u30c3\u30c8\u3067\u306e <code>x\u00b72\/pi<\/code> \u8a55\u4fa1\u306f \u00b12^(t-2)\u00b7pi \u304c\u4fdd\u8a3c\u57df<\/strong>\u3068\u8aac\u660e\u3055\u308c\u3066\u304a\u308a\u3001musl \u3084 glibc \u306e <code>rem_pio2<\/code> \u5b9f\u88c5\u3067\u3082\u5165\u529b\u306e\u5927\u304d\u3055\u3067\u9ad8\u901f\u7d4c\u8def\uff0f\u9ad8\u7cbe\u5ea6\u7d4c\u8def\u3092\u5207\u308a\u66ff\u3048\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066 \u00b132768pi \u3068\u3044\u3046\u5883\u754c\u306f\u3001<strong>\u5b9f\u88c5\u4e0a\u306e\u3057\u304d\u3044\u5024<\/strong>\u3068\u3057\u3066\u7406\u8ad6\u7684\u306b\u3082\u81ea\u7136\u3067\u3059\u3002<\/p>\n<ul data-line=\"580\" class=\"code-line\">\n<li data-line=\"580\" class=\"code-line\">Jean-Michel Muller, <em>Elementary Functions: Algorithms and Implementation<\/em>\uff08\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\u3068\u5fc5\u8981\u30d3\u30c3\u30c8\u6570\u306e\u89e3\u8aac\uff09<\/li>\n<li data-line=\"581\" class=\"code-line\">Brisebarre et al., \u201cA New Range-Reduction Algorithm\u201d\uff08\u9ad8\u7cbe\u5ea6\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\u306e\u7406\u8ad6\uff09<\/li>\n<li data-line=\"582\" class=\"code-line\">musl <code>__rem_pio2f.c<\/code>\uff08\u5165\u529b\u898f\u6a21\u3067\u9ad8\u901f\u7d4c\u8def\u3068\u5927\u5165\u529b\u7d4c\u8def\u3092\u5207\u66ff\u3048\u308b\u5b9f\u88c5\u4f8b\uff09<\/li>\n<li data-line=\"583\" class=\"code-line\">glibc <code>reduce_sincos<\/code>\uff08\u3057\u304d\u3044\u5024\u4ed8\u304d\u30ec\u30f3\u30b8\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\uff09<\/li>\n<li data-line=\"584\" class=\"code-line\">OpenCL Specification \u2013 <code>native_*<\/code> \u306f\u7bc4\u56f2\u30fb\u8aa4\u5dee\u3068\u3082\u306b\u5b9f\u88c5\u4f9d\u5b58\u3068\u660e\u8a18<\/li>\n<\/ul>\n<\/blockquote>\n<p data-line=\"586\" class=\"code-line\">\u3068\u3044\u3046\u3053\u3068\u3067 <strong>16bit\u56fa\u5b9a\u5c0f\u6570\u70b9<\/strong> \u304c\u9375\u306e\u3088\u3046\u3067\u3059\u3002\u6642\u9593\u304c\u3042\u308b\u3068\u304d\u306b\u8003\u5bdf\u3057\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"588\" class=\"code-line\">\u307e\u305f\u610f\u5916\u306b\u3082 &#8220;<strong>\u00b132768pi<\/strong>\u3092\u5883\u754c\u306b\u8aa4\u5dee\u304c\u5897\u3048\u308b&#8221; \u3053\u3068\u3092\u8ad6\u3058\u305f\u30cd\u30c3\u30c8\u30bd\u30fc\u30b9\u306f\u306a\u3044\u3088\u3046\u3067\u3059\u3002\u3042\u3089\u305f\u3081\u3066Chat GPT\u306eDeep reserch\u3067\u691c\u7d22\u3057\u307e\u3057\u305f\u304c\u5177\u4f53\u7684\u306a<strong>32768<\/strong>\u3068\u3044\u3046\u6570\u5b57\u306b\u8a00\u53ca\u3057\u305f\u6587\u732e\u306f\u306a\u3055\u305d\u3046\u3067\u3057\u305f\u3002\uff08\u79c1\u304c\u6700\u521d\u306e\u767a\u898b\u8005\u304b\uff01\uff1f\uff09<\/p>\n<p data-line=\"590\" class=\"code-line\">\u8ffd\u52a0\u691c\u8a3c\u3067Intel HD Graphics 530\u3067\u3082\u884c\u3044\u3001\u5f15\u6570114514\u306e\u6b63\u89e3\u5024 <code>0.1926048398<\/code>\u306b\u5bfe\u3057 <code>0.90929<\/code> \u3068\u3044\u3046\u30c7\u30bf\u30e9\u30e1\u306a\u6570\u5b57\u3092\u8fd4\u3059\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002\u3053\u306e\u6570\u5024\u306fOpenCL\u306enative_sin\u306e\u7d50\u679c\u3068<strong>bit\u5358\u4f4d\u3067\u4e00\u81f4<\/strong>\u3057\u3066\u3044\u307e\u3057\u305f\uff01<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/770537683fe3-20250925.png\" class=\"md-img\" loading=\"lazy\"\/><br \/>\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u304a\u305d\u3089\u304fIntel CPU\u5185\u8535GPU\u3067\u306f \u5f15\u6570\u00b132768pi\u3092\u5883\u306b\u7cbe\u5ea6\u304c\u58ca\u6ec5\u7684\u306b\u60aa\u5316\u3059\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n<p data-line=\"594\" class=\"code-line\">\u8208\u5473\u304c\u3042\u308b\u4eba\u306fUnity\u306eShader\u7b49\u3092Intel GPU\u4e0a\u3067\u52d5\u4f5c\u3055\u305b\u3066\u3053\u306e\u3088\u3046\u306a\u7d50\u679c\u304c\u73fe\u308c\u308b\u304b\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\uff01<\/p>\n<hr data-line=\"596\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC7%EF%BC%9A%E6%A8%99%E6%BA%96%E7%89%88sin-cos%E3%81%AE%E8%AA%A4%E5%B7%AE%E3%81%AF%EF%BC%9F-%E2%86%92-%E5%9F%BA%E6%9C%AC2ulp%E4%BB%A5%E5%86%85\" data-line=\"598\" class=\"code-line\">\n \u691c\u8a3c7\uff1a\u6a19\u6e96\u7248sin cos\u306e\u8aa4\u5dee\u306f\uff1f \u2192 \u57fa\u672c2ULP\u4ee5\u5185<\/h3>\n<p data-line=\"600\" class=\"code-line\">NVIDIA GPU \u3067\u306f<strong>\u6a19\u6e96\u7248sin cos\u306e\u8aa4\u5dee\u304c 2ULP\u4ee5\u5185<\/strong> \u3068\u660e\u8a00\u3055\u308c\u3066\u3044\u307e\u3059\u304c AMD\/Intel \u3067\u305d\u306e\u3088\u3046\u306a\u516c\u958b\u6587\u7ae0\u306f\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3068\u306f\u3044\u3048\u304a\u305d\u3089\u304f2ULP\u4ee5\u5185\u306b\u8fd1\u3044\u9ad8\u7cbe\u5ea6\u3092\u63d0\u4f9b\u3057\u3066\u304f\u308c\u3066\u3044\u308b\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002<\/p>\n<p data-line=\"602\" class=\"code-line\">double\u306e\u7d50\u679c\u3092\u6b63\u89e3\u3068\u3057\u3066\u4f55ULP\u306e\u8aa4\u5dee\u304c\u3042\u308b\u304b\u691c\u8a3c\u3057\u307e\u3057\u305f\u3002\u3053\u3053\u3067\u306f\u975e\u6b63\u898f\u5316\u6570\u3068inf\u3068nan\u3092\u9664\u3044\u305f<strong>4,261,412,866\u500b<\/strong>\u306e\u6b63\u898f\u5316\u6570\u3092\u5f15\u6570\u3068\u3057\u3066\u7528\u3044\u307e\u3057\u305f\u3002<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-github\"><iframe id=\"zenn-embedded__9da282391b77e\" src=\"https:\/\/embed.zenn.studio\/github#zenn-embedded__9da282391b77e\" data-content=\"https%3A%2F%2Fgithub.com%2Ftoropippi%2FGPU_SinCosULP%2Fblob%2Fmain%2F2_%25E7%25B5%2590%25E6%259E%259C%25E8%25A1%25A8%25E7%25A4%25BA%2Fcheck_highprec_ulp.py\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/github.com\/toropippi\/GPU_SinCosULP\/blob\/main\/2_%E7%B5%90%E6%9E%9C%E8%A1%A8%E7%A4%BA\/check_highprec_ulp.py\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/toropippi\/GPU_SinCosULP\/blob\/main\/2_\u7d50\u679c\u8868\u793a\/check_highprec_ulp.py<\/a><\/p>\n<div class=\"s_table\"><table data-line=\"605\" class=\"code-line\">\n<thead data-line=\"605\" class=\"code-line\">\n<tr data-line=\"605\" class=\"code-line\">\n<th style=\"text-align:left\">GPU(sin\/cos)<\/th>\n<th style=\"text-align:right\">\u6700\u5927ULP<\/th>\n<th style=\"text-align:right\">\u305d\u306e\u6642\u306e\u5f15\u6570<\/th>\n<th style=\"text-align:right\">\u5e73\u5747ULP<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"607\" class=\"code-line\">\n<tr data-line=\"607\" class=\"code-line\">\n<td style=\"text-align:left\">NVIDIA RTX5090(sin)<\/td>\n<td style=\"text-align:right\">1<\/td>\n<td style=\"text-align:right\">0.00044363297638483346<\/td>\n<td style=\"text-align:right\">0.099970<\/td>\n<\/tr>\n<tr data-line=\"608\" class=\"code-line\">\n<td style=\"text-align:left\">NVIDIA RTX5090(cos)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">71476.0703125<\/td>\n<td style=\"text-align:right\">0.100751<\/td>\n<\/tr>\n<tr data-line=\"609\" class=\"code-line\">\n<td style=\"text-align:left\">AMD gfx1036(sin)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">22.241199493408203<\/td>\n<td style=\"text-align:right\">0.099740<\/td>\n<\/tr>\n<tr data-line=\"610\" class=\"code-line\">\n<td style=\"text-align:left\">AMD gfx1036(cos)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">1.3181171417236328<\/td>\n<td style=\"text-align:right\">0.101446<\/td>\n<\/tr>\n<tr data-line=\"611\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770(sin)<\/td>\n<td style=\"text-align:right\">4294967296<\/td>\n<td style=\"text-align:right\">-0.0 (bits=0x80000000)<\/td>\n<td style=\"text-align:right\">1.115203<\/td>\n<\/tr>\n<tr data-line=\"612\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770(cos)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">0.00023394824529532343<\/td>\n<td style=\"text-align:right\">0.128965<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"614\" class=\"code-line\"><strong>AMD\u306f\u60f3\u5b9a\u901a\u308a \u6700\u59272ULP \u4ee5\u5185<\/strong>\u306b\u304a\u3055\u307e\u3063\u3066\u304a\u308a\u3001NVIDIA\u3082\u516c\u8868\u901a\u308a 2ULP \u4ee5\u5185\u306b\u304a\u3055\u307e\u3063\u3066\u3044\u307e\u3059\u3002\u5e73\u5747ULP\u3082\u3068\u3093\u3067\u3082\u306a\u304f\u512a\u79c0\u3067\u3059\u306d\uff01<\/p>\n<p data-line=\"616\" class=\"code-line\">Intel\u306fsin\u3067+-0.0\u306b\u3064\u307e\u3065\u3044\u3066ULP\u304c\u99ac\u9e7f\u9ad8\u304f\u306a\u3063\u3066\u3044\u308b\u306e\u3067<strong>\u5fd6\u5ea6\u7248<\/strong>\u3092\u4f5c\u6210\u3057\u3066\u53d6\u308a\u76f4\u3057\u307e\u3057\u305f\u3002<br \/>\u51fa\u529b\u5024\u304c-0.0\u306e\u3082\u306e\u306f+0.0\u306b\u6b63\u898f\u5316\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"s_table\"><table data-line=\"619\" class=\"code-line\">\n<thead data-line=\"619\" class=\"code-line\">\n<tr data-line=\"619\" class=\"code-line\">\n<th style=\"text-align:left\">GPU(sin\/cos)<\/th>\n<th style=\"text-align:right\">\u6700\u5927ULP<\/th>\n<th style=\"text-align:right\">\u305d\u306e\u6642\u306e\u5f15\u6570<\/th>\n<th style=\"text-align:right\">\u5e73\u5747ULP<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"621\" class=\"code-line\">\n<tr data-line=\"621\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770(sin)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">1.4148300886154175<\/td>\n<td style=\"text-align:right\">0.107329<\/td>\n<\/tr>\n<tr data-line=\"622\" class=\"code-line\">\n<td style=\"text-align:left\">Intel UHD 770(cos)<\/td>\n<td style=\"text-align:right\">2<\/td>\n<td style=\"text-align:right\">0.00023394824529532343<\/td>\n<td style=\"text-align:right\">0.128965<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"624\" class=\"code-line\">\u3068\u3044\u3046\u3053\u3068\u3067Intel\u3067\u3082 2 ULP \u4ee5\u5185\u306b\u304a\u3055\u307e\u3063\u3066<strong>\u5e73\u5747ULP\u30820.1<\/strong> \u3068\u3001\u4ed62\u30d9\u30f3\u30c0\u30fc\u3068\u540c\u7b49\u306e\u6027\u80fd\u3067\u3042\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\uff01<\/p>\n<hr data-line=\"626\" class=\"code-line\"\/>\n<h3 id=\"%E6%A4%9C%E8%A8%BC8%EF%BC%9A%C2%B1inf%2C-%C2%B10.0%2C-nan%2C-%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0%E3%81%AE%E6%89%B1%E3%81%84\" data-line=\"628\" class=\"code-line\">\n \u691c\u8a3c8\uff1a\u00b1Inf, \u00b10.0, NaN, \u975e\u6b63\u898f\u5316\u6570\u306e\u6271\u3044<\/h3>\n<h4 id=\"%C2%B1inf-%E5%85%A5%E5%8A%9B%E6%99%82%E3%81%AE%E5%87%BA%E5%8A%9B%E7%B5%90%E6%9E%9C%EF%BC%88sin-%2F-cos-%2F-native_sin-%2F-native_cos%EF%BC%89\" data-line=\"630\" class=\"code-line\">\n \u00b1Inf \u5165\u529b\u6642\u306e\u51fa\u529b\u7d50\u679c\uff08sin \/ cos \/ native_sin \/ native_cos\uff09<\/h4>\n<div class=\"s_table\"><table data-line=\"632\" class=\"code-line\">\n<thead data-line=\"632\" class=\"code-line\">\n<tr data-line=\"632\" class=\"code-line\">\n<th>GPU<\/th>\n<th>\u5165\u529b<\/th>\n<th>\u95a2\u6570<\/th>\n<th>\u7d50\u679c (print \u8868\u73fe)<\/th>\n<th>bit \u8868\u73fe<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"634\" class=\"code-line\">\n<tr data-line=\"634\" class=\"code-line\">\n<td><strong>NVIDIA RTX 5090<\/strong><\/td>\n<td>+inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"635\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"636\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"637\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"638\" class=\"code-line\">\n<td\/>\n<td>-inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"639\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"640\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"641\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"642\" class=\"code-line\">\n<td><strong>AMD gfx1036<\/strong><\/td>\n<td>+inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"643\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"644\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"645\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"646\" class=\"code-line\">\n<td\/>\n<td>-inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"647\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"648\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"649\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"650\" class=\"code-line\">\n<td><strong>Intel UHD 770<\/strong><\/td>\n<td>+inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"651\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"652\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"653\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"654\" class=\"code-line\">\n<td\/>\n<td>-inf<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"655\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<tr data-line=\"656\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"657\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0xffc00000<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<ul data-line=\"659\" class=\"code-line\">\n<li data-line=\"659\" class=\"code-line\">NVIDIA \u306f<strong>\u6a19\u6e96\u7248\u30fb\u8fd1\u4f3c\u7248<\/strong>\u3068\u3082\u306b nan \u306e bit \u8868\u73fe\u304c <strong>0x7fffffff<\/strong> \u306b\u306a\u3063\u3066\u3044\u308b\uff08quiet NaN \u306e\u5168\u30d3\u30c3\u30c81?\uff09<\/li>\n<li data-line=\"660\" class=\"code-line\">AMD\/Intel \u306f\u6a19\u6e96\u7248\u304c 0x7fc00000\uff08<strong>\u5178\u578b\u7684<\/strong>\u306a quiet NaN\uff09\u3001<strong>\u8fd1\u4f3c\u7248<\/strong>\u306f 0xffc00000\uff08<strong>\u7b26\u53f7\u30d3\u30c3\u30c8\u304c\u7acb\u3063\u305f NaN<\/strong>\uff09<\/li>\n<li data-line=\"661\" class=\"code-line\">\u7b26\u53f7\u4ed8\u304d NaN \u3092\u8fd4\u3059\u5b9f\u88c5\u304c\u3042\u308b\u306e\u304c\u8208\u5473\u6df1\u3044\uff08AMD\/Intel \u306e native\uff09<\/li>\n<\/ul>\n<hr data-line=\"663\" class=\"code-line\"\/>\n<h4 id=\"%C2%B10-%E5%85%A5%E5%8A%9B%E6%99%82%E3%81%AE%E5%87%BA%E5%8A%9B%E7%B5%90%E6%9E%9C%EF%BC%88sin-%2F-cos-%2F-native_sin-%2F-native_cos%EF%BC%89\" data-line=\"665\" class=\"code-line\">\n \u00b10 \u5165\u529b\u6642\u306e\u51fa\u529b\u7d50\u679c\uff08sin \/ cos \/ native_sin \/ native_cos\uff09<\/h4>\n<div class=\"s_table\"><table data-line=\"667\" class=\"code-line\">\n<thead data-line=\"667\" class=\"code-line\">\n<tr data-line=\"667\" class=\"code-line\">\n<th>GPU<\/th>\n<th>\u5165\u529b<\/th>\n<th>\u95a2\u6570<\/th>\n<th>\u7d50\u679c (print \u8868\u73fe)<\/th>\n<th>bit \u8868\u73fe<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"669\" class=\"code-line\">\n<tr data-line=\"669\" class=\"code-line\">\n<td><strong>NVIDIA RTX 5090<\/strong><\/td>\n<td>+0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"670\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"671\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"672\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"673\" class=\"code-line\">\n<td\/>\n<td>-0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>-0.0<\/td>\n<td>0x80000000<\/td>\n<\/tr>\n<tr data-line=\"674\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>-0.0<\/td>\n<td>0x80000000<\/td>\n<\/tr>\n<tr data-line=\"675\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"676\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"677\" class=\"code-line\">\n<td><strong>AMD gfx1036<\/strong><\/td>\n<td>+0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"678\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"679\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"680\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"681\" class=\"code-line\">\n<td\/>\n<td>-0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>-0.0<\/td>\n<td>0x80000000<\/td>\n<\/tr>\n<tr data-line=\"682\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>-0.0<\/td>\n<td>0x80000000<\/td>\n<\/tr>\n<tr data-line=\"683\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"684\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"685\" class=\"code-line\">\n<td><strong>Intel UHD 770<\/strong><\/td>\n<td>+0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"686\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>0.0<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"687\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"688\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"689\" class=\"code-line\">\n<td\/>\n<td>-0.0<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>0.0\uff08\u203b\u7b26\u53f7\u6d88\u5931\uff09<\/td>\n<td>0x00000000<\/td>\n<\/tr>\n<tr data-line=\"690\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>-0.0<\/td>\n<td>0x80000000<\/td>\n<\/tr>\n<tr data-line=\"691\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<tr data-line=\"692\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>1.0<\/td>\n<td>0x3f800000<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<ul data-line=\"694\" class=\"code-line\">\n<li data-line=\"694\" class=\"code-line\">NVIDIA \/ AMD \u306f\u6a19\u6e96\u7248\u30fb\u8fd1\u4f3c\u7248\u3068\u3082\u306b -0.0 \u3092\u7dad\u6301\u3057\u3066\u8fd4\u5374\uff08<strong>\u7b26\u53f7\u4ed8\u304d 0 \u3092\u6b63\u3057\u304f\u518d\u73fe<\/strong>\uff09<\/li>\n<li data-line=\"695\" class=\"code-line\">\n<strong>Intel<\/strong> \u306f<strong>\u6a19\u6e96\u7248 sin<\/strong> \u3067 <strong>-0.0 \u2192 +0.0<\/strong> \u306b\u5909\u63db\u3055\u308c\u3066\u304a\u308a\u3001\u7b26\u53f7\u30d3\u30c3\u30c8\u304c\u843d\u3061\u308b\u5b9f\u88c5\u306b\u306a\u3063\u3066\u3044\u308b<\/li>\n<li data-line=\"696\" class=\"code-line\">\u4e00\u65b9 Intel native_sin \u3067\u306f -0.0 \u3092\u4fdd\u6301\u3057\u3066\u3044\u308b<\/li>\n<\/ul>\n<hr data-line=\"698\" class=\"code-line\"\/>\n<h4 id=\"nan-%E5%85%A5%E5%8A%9B%E6%99%82%E3%81%AE%E5%87%BA%E5%8A%9B%E7%B5%90%E6%9E%9C%EF%BC%88sin-%2F-cos-%2F-native_sin-%2F-native_cos%EF%BC%89\" data-line=\"700\" class=\"code-line\">\n NaN \u5165\u529b\u6642\u306e\u51fa\u529b\u7d50\u679c\uff08sin \/ cos \/ native_sin \/ native_cos\uff09<\/h4>\n<p data-line=\"701\" class=\"code-line\"><em>\u5165\u529b NaN \u306e bit \u8868\u73fe: <code>0x7fc00000<\/code><\/em><\/p>\n<div class=\"s_table\"><table data-line=\"703\" class=\"code-line\">\n<thead data-line=\"703\" class=\"code-line\">\n<tr data-line=\"703\" class=\"code-line\">\n<th>GPU<\/th>\n<th>\u5165\u529b<\/th>\n<th>\u95a2\u6570<\/th>\n<th>\u7d50\u679c (print \u8868\u73fe)<\/th>\n<th>bit \u8868\u73fe<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"705\" class=\"code-line\">\n<tr data-line=\"705\" class=\"code-line\">\n<td><strong>NVIDIA RTX 5090<\/strong><\/td>\n<td>nan<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"706\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"707\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"708\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0x7fffffff<\/td>\n<\/tr>\n<tr data-line=\"709\" class=\"code-line\">\n<td><strong>AMD gfx1036<\/strong><\/td>\n<td>nan<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"710\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"711\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"712\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"713\" class=\"code-line\">\n<td><strong>Intel UHD 770<\/strong><\/td>\n<td>nan<\/td>\n<td>sin (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"714\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_sin<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"715\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>cos (\u6a19\u6e96)<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<tr data-line=\"716\" class=\"code-line\">\n<td\/>\n<td\/>\n<td>native_cos<\/td>\n<td>nan<\/td>\n<td>0x7fc00000<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<ul data-line=\"718\" class=\"code-line\">\n<li data-line=\"718\" class=\"code-line\">NVIDIA \u306f\u6a19\u6e96\uff0f\u8fd1\u4f3c \u3068\u3082\u306b 0x7fffffff\uff08\u5b9f\u88c5\u4f9d\u5b58\u306e quiet NaN \u30da\u30a4\u30ed\u30fc\u30c9\uff09\u3092\u8fd4\u3057\u3001AMD\/Intel \u306f\u5178\u578b\u7684\u306a quiet NaN 0x7fc00000 \u3092\u8fd4\u3057\u3066\u3044\u308b<\/li>\n<\/ul>\n<hr data-line=\"720\" class=\"code-line\"\/>\n<h4 id=\"%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0-%E5%85%A5%E5%8A%9B%E6%99%82(sfu%E7%89%88)\" data-line=\"722\" class=\"code-line\">\n \u975e\u6b63\u898f\u5316\u6570 \u5165\u529b\u6642(SFU\u7248)<\/h4>\n<p data-line=\"724\" class=\"code-line\">native_sin\u306e\u7d50\u679c\u3068\u6b63\u89e3\u5024\u3092\u30d7\u30ed\u30c3\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul data-line=\"726\" class=\"code-line\">\n<li data-line=\"726\" class=\"code-line\">\n<p data-line=\"726\" class=\"code-line\">NVIDIA RTX 5090<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/788a1e1ab65f-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"729\" class=\"code-line\">\n<p data-line=\"729\" class=\"code-line\">AMD gfx1036<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/d259f79c855d-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<li data-line=\"732\" class=\"code-line\">\n<p data-line=\"732\" class=\"code-line\">Intel UHD 770<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/ed4b51c8aeb2-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<\/li>\n<\/ul>\n<p data-line=\"735\" class=\"code-line\">\u3069\u3046\u3082NVIDIA\u3068Intel\u306f0.0\u3092\u51fa\u529b\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002\u4e00\u65b9AMD\u306f\u304a\u305d\u3089\u304f\u91cd\u306a\u3063\u3066\u3044\u308b\uff1f<br \/>\u624b\u52d5\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"738\" class=\"code-line\">\u307e\u305aNVIDIA RTX 5090\u306e\u3068\u304d<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"740\">x&gt; 0x00000100\n  input  : token='0x00000100'\n  float32: 3.587324068671532e-43  (bits=0x00000100)\n  u32    : 0x00000100\n\n[sin]\n  REF.sin:     3.587324068671532e-43 bits=0x00000100  (0_sin)\n  TEST.sin:    3.587324068671532e-43 bits=0x00000100  (0_sin)\n  TEST.native: 0.0                  bits=0x00000000  (ULP=256)  (0_native_sin)\n\n[cos]\n  REF.cos:     1.0                  bits=0x3f800000  (0_cos)\n  TEST.cos:    1.0                  bits=0x3f800000  (0_cos)\n  TEST.native: 1.0                  bits=0x3f800000  (ULP=0)  (0_native_cos)\n\nx&gt; 0x007FFFFF\n  input  : token='0x007FFFFF'\n  float32: 1.1754942106924411e-38  (bits=0x007fffff)\n  u32    : 0x007fffff\n\n[sin]\n  REF.sin:     1.1754942106924411e-38 bits=0x007fffff  (0_sin)\n  TEST.sin:    1.1754942106924411e-38 bits=0x007fffff  (0_sin)\n  TEST.native: 0.0                  bits=0x00000000  (ULP=8388607)  (0_native_sin)\n\n[cos]\n  REF.cos:     1.0                  bits=0x3f800000  (0_cos)\n  TEST.cos:    1.0                  bits=0x3f800000  (0_cos)\n  TEST.native: 1.0                  bits=0x3f800000  (ULP=0)  (0_native_cos)\n\nx&gt; 0x807FFFFF\n  input  : token='0x807FFFFF'\n  float32: -1.1754942106924411e-38  (bits=0x807fffff)\n  u32    : 0x807fffff\n\n[sin]\n  REF.sin:     -1.1754942106924411e-38 bits=0x807fffff  (128_sin)\n  TEST.sin:    -1.1754942106924411e-38 bits=0x807fffff  (128_sin)\n  TEST.native: -0.0                 bits=0x80000000  (ULP=8388607)  (128_native_sin)\n\n[cos]\n  REF.cos:     1.0                  bits=0x3f800000  (128_cos)\n  TEST.cos:    1.0                  bits=0x3f800000  (128_cos)\n  TEST.native: 1.0                  bits=0x3f800000  (ULP=0)  (128_native_cos)\n<\/code><\/pre>\n<\/div>\n<p data-line=\"787\" class=\"code-line\">\u3053\u306e\u3088\u3046\u306b\u5165\u529b\u3092<code>0x00000100<\/code>,<code>0x007FFFFF<\/code>(\u6700\u5927\u306e\u975e\u6b63\u898f\u5316\u6570),<code>0x807FFFFF<\/code>\u3068\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u3001<strong>native_sin\u306e\u51fa\u529b\u304c\u00b10.0<\/strong>\u306b\u5f35\u308a\u4ed8\u3044\u3066\u3044\u307e\u3059\uff01<strong>\u7b26\u53f7\u60c5\u5831\u3060\u3051\u4fdd\u6301\u3057<\/strong>\u3042\u3068\u306f\u6307\u6570\u90e8\u3001\u4eee\u6570\u90e8\u30920\u306b\u3057\u3066\u3044\u308b\u3060\u3051\u306e\u3088\u3046\u3067\u3059\u3002<br \/>\u975e\u6b63\u898f\u5316\u6570\u306f\u975e\u5e38\u306b\u5c0f\u3055\u3044\u5024\u306a\u306e\u3067\u3053\u308c\u3067\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3002\u306a\u304aIntel\u3082\u540c\u69d8\u306e\u7d50\u679c\u3067\u3057\u305f\u3002<\/p>\n<p data-line=\"790\" class=\"code-line\">\u6b21\u306bAMD gfx1036\u3067\u306f<\/p>\n<div class=\"code-block-container\">\n<pre><code class=\"code-line\" data-line=\"792\">x&gt; 0x00000100\n  input  : token='0x00000100'\n  float32: 3.587324068671532e-43  (bits=0x00000100)\n  u32    : 0x00000100\n\n[sin]\n  REF.sin:     3.587324068671532e-43 bits=0x00000100  (0_sin)\n  TEST.sin:    3.587324068671532e-43 bits=0x00000100  (0_sin)\n  TEST.native: 3.615350037958028e-43 bits=0x00000102  (ULP=2)  (0_native_sin)\n\n[cos]\n  REF.cos:     1.0                  bits=0x3f800000  (0_cos)\n  TEST.cos:    1.0                  bits=0x3f800000  (0_cos)\n  TEST.native: 1.0                  bits=0x3f800000  (ULP=0)  (0_native_cos)\n\n<\/code><\/pre>\n<\/div>\n<p data-line=\"810\" class=\"code-line\">+-0.0\u3067\u306f\u306a\u304f\u3061\u3083\u3093\u3068\u3057\u305f\u5024\u304c\u3067\u3066\u304d\u307e\u3057\u305f\uff01<strong>2 ULP<\/strong>\u3068\u3044\u3044\u611f\u3058\u306e\u7cbe\u5ea6\u3067\u3059\u3002<br \/>\u975e\u6b63\u898f\u5316\u6570\u306b\u9650\u5b9a\u3057\u3066 \u8aa4\u5deeULP \u3092\u30ea\u30cb\u30a2\u30b9\u30b1\u30fc\u30eb\u3067\u3068\u3063\u3066\u307f\u308b\u3068<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/463193766528-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"814\" class=\"code-line\">\u3053\u308c\u307e\u305f\u3044\u3044\u611f\u3058\u306e\u7cbe\u5ea6\u3067\u8fd1\u4f3c\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002\u6700\u5927\u8aa4\u5dee\u306f7 ULP\u3067\u3057\u305f\u3002\u6b63\u898f\u5316\u6570\u306e\u3068\u304d\u540c\u69d8\u3001AMD\u306e0.0\u8fd1\u508d\u306enative_sin\u306b\u306f<strong>\u8b0e\u306e\u3053\u3060\u308f\u308a<\/strong>\u3092\u611f\u3058\u307e\u3059\u3002<\/p>\n<p data-line=\"816\" class=\"code-line\">\u307e\u3068\u3081\u308b\u3068<\/p>\n<ul data-line=\"817\" class=\"code-line\">\n<li data-line=\"817\" class=\"code-line\">NVIDIA \/ Intel \u306f<strong>\u5e38\u306b \u00b10.0 \u3092\u8fd4\u3059\u30b6\u30eb\u8a2d\u8a08<\/strong>\n<\/li>\n<li data-line=\"818\" class=\"code-line\">\n<strong>AMD<\/strong> \u306f<strong>\u6a19\u6e96\u7248 sin<\/strong> \u76f8\u5f53\u306e\u7cbe\u5ea6\u3067 <strong>2\uff5e3 ULP<\/strong> \u7a0b\u5ea6\u306e\u5e73\u5747\u8aa4\u5dee<\/li>\n<li data-line=\"819\" class=\"code-line\">\u3061\u306a\u307f\u306b\u3053\u306e\u9818\u57df\u3067\u306f<code>sin(x)=x<\/code>\u3068\u3057\u3066\u3088\u304f\u3001\u6a19\u6e96\u7248sin\u3067\u3082\u5358\u306b\u5165\u529bx\u3092\u305d\u306e\u307e\u307e\u8fd4\u3057\u3066\u304f\u308b\u306e\u3067\u3001\u306a\u305c\u305d\u306e\u3088\u3046\u306a\u5b9f\u88c5\u304c\u304b\u306a\u308f\u306a\u304b\u3063\u305f\u306e\u304b\u30fb\u30fb\uff1f<\/li>\n<\/ul>\n<hr data-line=\"821\" class=\"code-line\"\/>\n<h4 id=\"%E9%9D%9E%E6%AD%A3%E8%A6%8F%E5%8C%96%E6%95%B0-%E5%85%A5%E5%8A%9B%E6%99%82(%E6%A8%99%E6%BA%96sin%E7%89%88)\" data-line=\"823\" class=\"code-line\">\n \u975e\u6b63\u898f\u5316\u6570 \u5165\u529b\u6642(\u6a19\u6e96sin\u7248)<\/h4>\n<p data-line=\"825\" class=\"code-line\">\u4e0a\u8a18\u306e\u691c\u8a3c\u4e2d\u3001\u6a19\u6e96\u7248\u3067\u306f\u5168\u4f8b <strong>sin(x)=x<\/strong> \u3068\u3057\u3066\u7d50\u679c\u304c\u51fa\u3066\u3044\u308b\u3088\u3046\u306b\u898b\u3048\u307e\u3057\u305f\u3002<br \/><strong>16,777,214\u500b\u306e\u975e\u6b63\u898f\u5316\u6570<\/strong>\u3092\u5168\u3066\u8abf\u67fb\u3057\u305f\u3068\u3053\u308d\u3001<br \/><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/8624d23447e9-20250924.png\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"829\" class=\"code-line\">\u5168\u30d9\u30f3\u30c0\u30fc\u3067 <strong>sin(x)=x<\/strong> \u3068\u3057\u3066\u51fa\u529b\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n<hr data-line=\"831\" class=\"code-line\"\/>\n<h2 id=\"%E3%81%BE%E3%81%A8%E3%82%81%E9%9B%86%EF%BC%88%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%94%E3%81%A8%EF%BC%89%E3%81%A8%E7%B7%8F%E6%8B%AC\" data-line=\"833\" class=\"code-line\">\n \u307e\u3068\u3081\u96c6\uff08\u30bb\u30af\u30b7\u30e7\u30f3\u3054\u3068\uff09\u3068\u7dcf\u62ec<\/h2>\n<p data-line=\"835\" class=\"code-line\">\u9577\u3044\u8a18\u4e8b\u306b\u306a\u3063\u305f\u306e\u3067AI\u307e\u3068\u3081<\/p>\n<hr data-line=\"837\" class=\"code-line\"\/>\n<h4 id=\"%E5%BA%8F%E7%AB%A0-%E6%96%B9%E6%B3%95-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"838\" class=\"code-line\">\n \u5e8f\u7ae0-\u65b9\u6cd5 \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"839\" class=\"code-line\">\n<li data-line=\"839\" class=\"code-line\">\u4e3b\u8981 3 \u30d9\u30f3\u30c0\uff08NVIDIA\/AMD\/Intel\uff09\u306e\u8907\u6570 GPU \u3092\u5bfe\u8c61<\/li>\n<li data-line=\"840\" class=\"code-line\">\n<code>sin\/cos<\/code>\uff08\u6a19\u6e96\uff09\u3068 <code>native_sin\/native_cos<\/code>\uff08SFU\uff09\u3092<strong>\u5f15\u6570 32bit \u5168\u63a2\u7d22<\/strong>\n<\/li>\n<li data-line=\"841\" class=\"code-line\">NaN\/Inf\/\u975e\u6b63\u898f\u542b\u3081\u3059\u3079\u3066\u3092\u8a55\u4fa1\u3001<strong>\u7dcf\u30c7\u30fc\u30bf\u672a\u5727\u7e2e 481GB<\/strong> \u898f\u6a21<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC1%EF%BC%9A%E5%90%8C%E4%B8%80%E3%83%99%E3%83%B3%E3%83%80%EF%BC%88nvidia%EF%BC%89%E5%86%85%E5%B7%AE-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"843\" class=\"code-line\">\n \u691c\u8a3c1\uff1a\u540c\u4e00\u30d9\u30f3\u30c0\uff08NVIDIA\uff09\u5185\u5dee \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"844\" class=\"code-line\">\n<li data-line=\"844\" class=\"code-line\">\u8907\u6570\u4e16\u4ee3\/OS \u3067 <strong>bit \u5358\u4f4d\u307e\u3067\u5b8c\u5168\u4e00\u81f4<\/strong>\n<\/li>\n<li data-line=\"845\" class=\"code-line\">NVIDIA \u306e \u8fd1\u4f3c\/\u6a19\u6e96\u7248\u306e<strong>\u6c7a\u5b9a\u8ad6\u7684\u6319\u52d5<\/strong>\u304c\u78ba\u8a8d\u3067\u304d\u305f<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC2%EF%BC%9Asfu-%E7%89%88%E3%81%AE%E8%AA%A4%E5%B7%AE%E5%82%BE%E5%90%91-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"847\" class=\"code-line\">\n \u691c\u8a3c2\uff1aSFU \u7248\u306e\u8aa4\u5dee\u50be\u5411 \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"848\" class=\"code-line\">\n<li data-line=\"848\" class=\"code-line\">\n<strong>0\u30fbpi\/2\u30fbpi \u8fd1\u508d<\/strong>\u3067 ULP \u304c\u8df3\u306d\u3084\u3059\u3044\uff08\u51fa\u529b\u304c 0\/\u00b11 \u8fd1\u508d\uff1d\u76f8\u5bfe\u8aa4\u5dee\u304c\u52b9\u304f\uff09<\/li>\n<li data-line=\"849\" class=\"code-line\">AMD \u306f <code>native_sin<\/code> \u306e <strong>0 \u8fd1\u508d\u304c\u5f37\u3044<\/strong>\u50be\u5411\u3002Intel \u306f\u5584\u6226<\/li>\n<li data-line=\"850\" class=\"code-line\">\n<code>sin(x+pi\/2) \u2248 cos(x)<\/code> \u306e\u95a2\u4fc2\u304b\u3089\u3001<strong>ULP \u306e\u5c71\/\u8c37\u304c\u5165\u308c\u66ff\u308f\u308b<\/strong>\u73fe\u8c61\u3092\u8aac\u660e<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC3%EF%BC%9Aulp-%E5%8F%AF%E8%A6%96%E5%8C%96%EF%BC%88%C2%B1pi-%2F-%C2%B110pi-%2F-%C2%B1100pi%EF%BC%89%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"852\" class=\"code-line\">\n \u691c\u8a3c3\uff1aULP \u53ef\u8996\u5316\uff08\u00b1pi \/ \u00b110pi \/ \u00b1100pi\uff09\u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"853\" class=\"code-line\">\n<li data-line=\"853\" class=\"code-line\">NVIDIA\/AMD \u306f <strong>pi \u5468\u671f<\/strong>\u3067\u92ed\u3044\u30d4\u30fc\u30af\u3001Intel \u306f <strong>pi\/2 \u5468\u671f<\/strong>\u306e\u7279\u5fb4<\/li>\n<li data-line=\"854\" class=\"code-line\">NVIDIA\/AMD \u306f\u5165\u529b\u304c\u5927\u304d\u304f\u306a\u308b\u3068 <strong>\u5e73\u5747 ULP \u304c\u307b\u307c\u7dda\u5f62\u5897\u52a0<\/strong>\n<\/li>\n<li data-line=\"855\" class=\"code-line\">Intel \u306f <strong>\u5165\u529b\u5897\u5927\u306e\u5f71\u97ff\u304c\u5c0f\u3055\u304f<\/strong>\u3001\u591a\u304f\u306e\u533a\u9593\u3067 0\uff5e1 ULP \u3068\u9ad8\u7cbe\u5ea6<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC4%EF%BC%9A%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE%E5%8F%AF%E8%A6%96%E5%8C%96-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"857\" class=\"code-line\">\n \u691c\u8a3c4\uff1a\u7d76\u5bfe\u8aa4\u5dee\u53ef\u8996\u5316 \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"858\" class=\"code-line\">\n<li data-line=\"858\" class=\"code-line\">NVIDIA\/AMD \u306f <strong>\u516c\u5f0f\u5024\u3069\u304a\u308a<\/strong>\uff08\u00b12pi\u21922^-20.5\u3001\u00b1100pi\u21922^-14.7 \u8fd1\u8fba\uff09<\/li>\n<li data-line=\"859\" class=\"code-line\">NVIDIA \u306f **\u6bb5\u5dee\uff082 \u500d\u3054\u3068\u306b\u8aa4\u5dee 2 \u500d\uff09**\u304c\u73fe\u308c\u3001<strong>range reduction \u3092 f32 \u3067\u5b9f\u65bd<\/strong>\u3057\u3066\u3044\u308b\u75d5\u8de1<\/li>\n<li data-line=\"860\" class=\"code-line\">Intel \u306f <strong>\u5e73\u5766<\/strong>\uff08\u00b11 \u8fd1\u508d\u3067 1e-5 \u7a0b\u5ea6\u306e\u7d76\u5bfe\u8aa4\u5dee\uff09\u3067\u3001<strong>\u76f8\u5bfe\u8aa4\u5dee\u6700\u9069<\/strong>\u5bc4\u308a\u306e\u8a2d\u8a08\u304c\u793a\u5506<\/li>\n<\/ul>\n<h4 id=\"%E5%BC%95%E6%95%B0%E7%B8%AE%E7%B4%84%EF%BC%88range-reduction%EF%BC%89%E3%81%AE%E5%BD%B1%E9%9F%BF%E3%83%BB1-%E5%91%A8%E8%A7%92%E5%BA%A6%E3%81%AE%E3%82%BA%E3%83%AC-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"862\" class=\"code-line\">\n \u5f15\u6570\u7e2e\u7d04\uff08range reduction\uff09\u306e\u5f71\u97ff\u30fb1 \u5468\u89d2\u5ea6\u306e\u30ba\u30ec \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"863\" class=\"code-line\">\n<li data-line=\"863\" class=\"code-line\">NVIDIA \u306e SASS \u3067\u306f <code>FMUL x (1\/2pi)_f32 \u2192 MUFU.SIN<\/code>\u3002<strong>\u4fc2\u6570\u304c f32 \u4e38\u3081<\/strong>\u3067\u4f4d\u76f8\u30ba\u30ec\u3092\u8a98\u767a<\/li>\n<li data-line=\"864\" class=\"code-line\">\n<code>0x3e22f983\/984<\/code> \u306e\u308f\u305a\u304b\u306a\u9055\u3044\u3067 <strong>1 \u5468\u89d2\u5ea6\u304c \u00b1\u6570 10 \u30df\u30ea\u79d2\u89d2\u30ba\u30ec<\/strong>\n<\/li>\n<li data-line=\"865\" class=\"code-line\">\u5927\u89d2\u5ea6\u307b\u3069**\u7d2f\u7a4d\u4f4d\u76f8\u8aa4\u5dee\uff08\uff1dULP \u4e0a\u6607\uff09**\u304c\u5927\u304d\u304f\u306a\u308b\u69cb\u9020\u3002Intel \u306f\u7e2e\u7d04\u304c\u9ad8\u7cbe\u5ea6\u3063\u307d\u304f\u5f71\u97ff\u304c\u5c0f\u3055\u3044<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC4.1%EF%BC%9A%C2%B1100pi-%E5%86%85%E3%81%A7%E3%81%AE%E7%B5%B6%E5%AF%BE%E8%AA%A4%E5%B7%AE%E6%9C%80%E5%A4%A7%E5%80%A4-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"867\" class=\"code-line\">\n \u691c\u8a3c4.1\uff1a\u00b1100pi \u5185\u3067\u306e\u7d76\u5bfe\u8aa4\u5dee\u6700\u5927\u5024 \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"868\" class=\"code-line\">\n<li data-line=\"868\" class=\"code-line\">\n<strong>NVIDIA<\/strong>\uff1a\u5b9f\u6e2c\u306f\u4ed5\u69d8\u3068\u6574\u5408\uff08\u00b12pi\/\u00b1100pi \u3068\u3082\u306b\u516c\u79f0\u8fd1\u8fba\uff09<\/li>\n<li data-line=\"869\" class=\"code-line\">\n<strong>AMD<\/strong>\uff1a\u00b12pi \u3067\u306f 2^-21 \u524d\u5f8c\u3001\u00b1100pi \u3067\u3082 <strong>2^-15.3<\/strong> \u3068\u826f\u597d\uff08\u516c\u5f0f\u672a\u958b\u793a\u306e\u5b9f\u6e2c\u77e5\u898b\uff09<\/li>\n<li data-line=\"870\" class=\"code-line\">\n<strong>Intel<\/strong>\uff1a\u7bc4\u56f2\u3092\u5e83\u3052\u3066\u3082 <strong>\u22482^-14.83<\/strong> \u306b\u5f35\u308a\u4ed8\u304d\uff08\u5e73\u5766\uff09\u3002<strong>\u9ad8\u7cbe\u5ea6\u7e2e\u7d04<\/strong>\u306e\u53ef\u80fd\u6027\u3092\u88cf\u4ed8\u3051<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC5%EF%BC%9A%E4%BF%9D%E8%A8%BC%E5%A4%96%EF%BC%88%C2%B1100-%E4%B8%87pi%EF%BC%89%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"872\" class=\"code-line\">\n \u691c\u8a3c5\uff1a\u4fdd\u8a3c\u5916\uff08\u00b1100 \u4e07pi\uff09\u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"873\" class=\"code-line\">\n<li data-line=\"873\" class=\"code-line\">NVIDIA\/AMD \u306f <strong>\u5e73\u5747 ULP \u304c\u307b\u307c\u7dda\u5f62<\/strong>\u306b\u5897\u52a0\u3057\u300c\u4e88\u60f3\u3069\u304a\u308a\u300d<\/li>\n<li data-line=\"874\" class=\"code-line\">Intel \u306f <strong>\u5f62\u72b6\u304c\u7570\u5e38<\/strong>\uff08\u5e73\u5766\uff0b\u3072\u3069\u3044\u5d16\uff09\u3067\u3001\u00b132768pi\u3092\u8d85\u3048\u308b\u3068<strong>\u58ca\u6ec5\u7684<\/strong>\n<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC6%EF%BC%9Aintel-%E3%81%AE%E6%AE%B5%E5%B7%AE%EF%BC%88%C2%B132768pi%EF%BC%89%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"876\" class=\"code-line\">\n \u691c\u8a3c6\uff1aIntel \u306e\u6bb5\u5dee\uff08\u00b132768pi\uff09\u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"877\" class=\"code-line\">\n<li data-line=\"877\" class=\"code-line\">Intel \u306e <code>native<\/code> \u306f <strong>\u00b132768pi<\/strong> \u3092\u5883\u306b ULP \u304c<strong>\u6fc0\u5897<\/strong>\n<\/li>\n<li data-line=\"878\" class=\"code-line\">\n<strong>t=16bit \u56fa\u5b9a\u5c0f\u6570\u70b9<\/strong>\u3067 <code>x\u00b72\/pi<\/code> \u3092\u8a55\u4fa1\u3059\u308b\u9ad8\u901f\u7e2e\u7d04\u306e<strong>\u4fdd\u8a3c\u57df<\/strong>\uff08\u7406\u8ad6\u7684\u306b\u81ea\u7136\uff09\u3068\u5408\u81f4<\/li>\n<li data-line=\"879\" class=\"code-line\">\u30d9\u30f3\u30c0\u516c\u5f0f\u306b<strong>\u76f4\u66f8\u304d\u306f\u898b\u5f53\u305f\u3089\u305a<\/strong>\u3002\u672c\u7a3f\u306f<strong>\u73fe\u8c61\u306e\u521d\u51fa\u7d1a\u306e\u5b9f\u6e2c\u6574\u7406\u304b\uff1f<\/strong>\n<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC7%EF%BC%9A%E6%A8%99%E6%BA%96%E7%89%88%EF%BC%88%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%EF%BC%89%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"881\" class=\"code-line\">\n \u691c\u8a3c7\uff1a\u6a19\u6e96\u7248\uff08\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\uff09\u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"882\" class=\"code-line\">\n<li data-line=\"882\" class=\"code-line\">NVIDIA\/AMD \u306f <strong>\u2264 2 ULP<\/strong> \u3092\u6e80\u305f\u3059\u5b9f\u6e2c\u3002\u5e73\u5747 ULP \u3082 \u22480.1 \u3068\u512a\u79c0<\/li>\n<li data-line=\"883\" class=\"code-line\">Intel \u3082 \u00b10 \u306e\u7b26\u53f7\u6b63\u898f\u5316\u5f8c\u306f <strong>\u2264 2 ULP<\/strong> \u306b\u53ce\u675f\uff08\u5e73\u5747 \u22480.1\uff09<\/li>\n<li data-line=\"884\" class=\"code-line\">\u6a19\u6e96\u7248\u306f<strong>\u60f3\u5b9a\u901a\u308a<\/strong>\n<\/li>\n<\/ul>\n<h4 id=\"%E6%A4%9C%E8%A8%BC8%EF%BC%9A%C2%B1inf-%2F-%C2%B10.0-%2F-nan-%2F-%E9%9D%9E%E6%AD%A3%E8%A6%8F-%E2%80%94-%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"886\" class=\"code-line\">\n \u691c\u8a3c8\uff1a\u00b1Inf \/ \u00b10.0 \/ NaN \/ \u975e\u6b63\u898f \u2014 \u307e\u3068\u3081<\/h4>\n<ul data-line=\"887\" class=\"code-line\">\n<li data-line=\"887\" class=\"code-line\">\n<strong>NaN<\/strong>\uff1aNVIDIA \u306f <code>0x7fffffff<\/code> \u7cfb\u3001AMD\/Intel \u306f <code>0x7fc00000<\/code>\uff08native \u3067\u7b26\u53f7\u4ed8\u304d NaN \u3092\u8fd4\u3059\u5b9f\u88c5\u3082\uff09<\/li>\n<li data-line=\"888\" class=\"code-line\">\n<strong>\u00b10.0<\/strong>\uff1aNVIDIA\/AMD \u306f <code>-0.0<\/code> \u3092\u4fdd\u6301\u3001Intel \u306e\u6a19\u6e96\u7248\u306e\u307f <code>sin(-0.0)<\/code> \u306f <strong>\u7b26\u53f7\u843d\u3061<\/strong>\n<\/li>\n<li data-line=\"889\" class=\"code-line\">\n<strong>\u975e\u6b63\u898f\uff08subnormal\uff09<\/strong> \u306eSFU\uff1aNVIDIA\/Intel \u306e <code>native_sin<\/code> \u306f\u5168\u4ef6 <strong>\u00b10 \u306b\u6f70\u308c\u308b<\/strong>\u3002AMD \u306f <strong>sin(x)\u2248x<\/strong> \u3092\u4fdd\u3061 <strong>0\uff5e\u6570 ULP<\/strong> \u3068\u512a\u79c0(?)<\/li>\n<li data-line=\"890\" class=\"code-line\">\n<strong>\u975e\u6b63\u898f\uff08subnormal\uff09<\/strong> \u306e\u6a19\u6e96\u7248sin\uff1a\u5168\u30d9\u30f3\u30c0\u3067\u5168\u4ef6 <strong>sin(x)=x<\/strong> \u304c\u6210\u308a\u7acb\u3064<\/li>\n<\/ul>\n<hr data-line=\"892\" class=\"code-line\"\/>\n<h3 id=\"%E7%B7%8F%E6%8B%AC%EF%BC%88%E5%85%A8%E4%BD%93%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81%EF%BC%89\" data-line=\"894\" class=\"code-line\">\n \u7dcf\u62ec\uff08\u5168\u4f53\u306e\u307e\u3068\u3081\uff09<\/h3>\n<ul data-line=\"895\" class=\"code-line\">\n<li data-line=\"895\" class=\"code-line\">\u8fd1\u4f3c\u7248\u3092\u4f7f\u3063\u3066\u306f\u3044\u3051\u306a\u3044\u308f\u3051\u3067\u306f\u306a\u304f\u3001<strong>\u3080\u3057\u308d\u7279\u6027\u3092\u7406\u89e3\u3057\u305f\u4e0a\u3067\u4f7f\u3046\u3079\u304d\uff01<\/strong>\n<\/li>\n<li data-line=\"896\" class=\"code-line\">\u8fd1\u4f3c\u7248\u306f\u9ad8\u901f\u3060\u304c\u3001<strong>range reduction \u306e\u5b9f\u88c5\u5dee<\/strong>\u3067\u8aa4\u5dee\u306e\u51fa\u65b9\u306b\u660e\u78ba\u306a<strong>\u30d9\u30f3\u30c0\u5dee<\/strong>\u304c\u3042\u308b\u3002\n<ul data-line=\"897\" class=\"code-line\">\n<li data-line=\"897\" class=\"code-line\">NVIDIA\uff1a\u826f\u304f\u3082\u60aa\u304f\u3082\u6559\u79d1\u66f8\u7684\u306a\u5b9f\u88c5\u304c\u898b\u3089\u308c\u305f\u3002pi \u5468\u671f\u3067\u30d4\u30fc\u30af\u3001\u5165\u529b\u5897\u5927\u3067<strong>\u5e73\u5747 ULP \u304c\u7dda\u5f62\u5897<\/strong>\u3002f32\u306e\u75d5\u8de1\uff08\u6bb5\u5dee\uff09\u306a\u3069<\/li>\n<li data-line=\"898\" class=\"code-line\">AMD\uff1a<strong>\u8b0e\u306e0.0\u8fd1\u508d\u306e\u3053\u3060\u308f\u308a<\/strong>\u3002\u3057\u304b\u3057\u00b1pi\u3067\u306f\u305d\u306e\u73fe\u8c61\u304c\u306a\u304f\u306a\u308b\u306e\u3067\u672c\u5f53\u306b0.0\u8fd1\u508d\u306e\u307f<\/li>\n<li data-line=\"899\" class=\"code-line\">Intel\uff1a\u8fd1\u4f3c\u7248\u3067\u3082<strong>range reduction\u304c\u9ad8\u7cbe\u5ea6<\/strong>\u306e\u53ef\u80fd\u6027\u3002<strong>pi\/2 \u5468\u671f<\/strong>\u306e\u7279\u5fb4\u3002\u3057\u304b\u3057\u5f15\u6570\u304c\u00b132768pi \u3092\u8d85\u3048\u308b\u3068<strong>\u4e8b\u5b9f\u4e0a\u4f7f\u3048\u306a\u3044<\/strong>\uff08\u56fa\u5b9a\u5c0f\u6570\u70b9\u7e2e\u7d04\u306e\u4fdd\u8a3c\u57df\u3092\u793a\u5506\uff09<\/li>\n<\/ul>\n<\/li>\n<li data-line=\"900\" class=\"code-line\">\n<strong>\u6a19\u6e96\u7248<\/strong>\u306f 3 \u30d9\u30f3\u30c0\u3068\u3082\u5b9f\u6e2c\u3067 <strong>\u2264 2 ULP<\/strong> \u306b\u53ce\u675f\uff08Intel \u306f +0.0 \u6b63\u898f\u5316\u524d\u63d0\uff09<\/li>\n<li data-line=\"901\" class=\"code-line\">\n<strong>\u7279\u6b8a\u5024<\/strong>\u3067\u306f\u3001NaN\/\u00b10\/\u975e\u6b63\u898f\u306e\u6271\u3044\u306b\u65b9\u91dd\u5dee<\/li>\n<\/ul>\n<\/div>\n\n<br \/><a href=\"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u306b\u306f\u300c\u6a19\u6e96\u7248\u300d\u3068\u300c\u8fd1\u4f3c\u7248\u300d\u304c\u3042\u308b NVIDIA \/ AMD \u306a\u3069\u591a\u304f\u306e GPU \u306b\u306f\u3001sin \u3084 cos \u3068\u3044\u3063\u305f\u8d85\u8d8a\u95a2\u6570\u3092\u9ad8\u901f\uff081\u30b5\u30a4\u30af\u30eb\u3042\u305f\u308a1\u547d\u4ee4\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\uff09\u306b \u8fd1\u4f3c\u8a08\u7b97\u3059\u308b [&hellip;]","protected":false},"author":1,"featured_media":7232,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-7231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hatena-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u306b\u306f\u300c\u6a19\u6e96\u7248\u300d\u3068\u300c\u8fd1\u4f3c\u7248\u300d\u304c\u3042\u308b NVIDIA \/ AMD \u306a\u3069\u591a\u304f\u306e GPU \u306b\u306f\u3001sin \u3084 cos \u3068\u3044\u3063\u305f\u8d85\u8d8a\u95a2\u6570\u3092\u9ad8\u901f\uff081\u30b5\u30a4\u30af\u30eb\u3042\u305f\u308a1\u547d\u4ee4\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\uff09\u306b \u8fd1\u4f3c\u8a08\u7b97\u3059\u308b [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-27T21:05:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7231\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"GPU\u306e\u5358\u7cbe\u5ea6 sin \\\/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f\",\"datePublished\":\"2025-09-27T21:05:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7231\\\/\"},\"wordCount\":1293,\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/1759007141_og-base-w1200-v2.png\",\"articleSection\":[\"\u306f\u3066\u306a\u30d6\u30ed\u30b0\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/7231\\\/\",\"url\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9\",\"name\":\"GPU\u306e\u5358\u7cbe\u5ea6 sin \\\/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/1759007141_og-base-w1200-v2.png\",\"datePublished\":\"2025-09-27T21:05:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/1759007141_og-base-w1200-v2.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/1759007141_og-base-w1200-v2.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/toropippi\\\/articles\\\/d8def1c994e0a9#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GPU\u306e\u5358\u7cbe\u5ea6 sin \\\/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9","og_locale":"ja_JP","og_type":"article","og_title":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3","og_description":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u306b\u306f\u300c\u6a19\u6e96\u7248\u300d\u3068\u300c\u8fd1\u4f3c\u7248\u300d\u304c\u3042\u308b NVIDIA \/ AMD \u306a\u3069\u591a\u304f\u306e GPU \u306b\u306f\u3001sin \u3084 cos \u3068\u3044\u3063\u305f\u8d85\u8d8a\u95a2\u6570\u3092\u9ad8\u901f\uff081\u30b5\u30a4\u30af\u30eb\u3042\u305f\u308a1\u547d\u4ee4\u306e\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\uff09\u306b \u8fd1\u4f3c\u8a08\u7b97\u3059\u308b [&hellip;]","og_url":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-09-27T21:05:41+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"10\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/7231\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f","datePublished":"2025-09-27T21:05:41+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/7231\/"},"wordCount":1293,"image":{"@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png","articleSection":["\u306f\u3066\u306a\u30d6\u30ed\u30b0"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/7231\/","url":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9","name":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#primaryimage"},"image":{"@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png","datePublished":"2025-09-27T21:05:41+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/1759007141_og-base-w1200-v2.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/zenn.dev\/toropippi\/articles\/d8def1c994e0a9#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"GPU\u306e\u5358\u7cbe\u5ea6 sin \/ cos \u95a2\u6570\u306e\u8aa4\u5dee\u3092\u5f15\u6570 32bit \u5168\u63a2\u7d22\u3067\u8abf\u3079\u305f"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=7231"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7231\/revisions"}],"predecessor-version":[{"id":7233,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/7231\/revisions\/7233"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/7232"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=7231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=7231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=7231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}