<HTML> <HEAD> <TITLE>sin</TITLE> <STYLE TYPE="text/css" MEDIA=screen> <!-- BODY { font-family: Arial,Helvetica; } BLOCKQUOTE { margin: 10pt; } H1,A { color: #336699; } /*** Top menu style ****/ .mmenuon { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #ff6600; font-size: 10pt; } .mmenuoff { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #ffffff; font-size: 10pt; } .cpyright { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #ffffff; font-size: xx-small; } .cpyrightText { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #ffffff; font-size: xx-small; } .sections { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 11pt; } .dsections { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 12pt; } .slink { font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; color: #336699; font-size: 9pt; } .slink2 { font-family: Arial,Helvetica; text-decoration: none; color: #336699; } .maintitle { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 18pt; } .dblArrow { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: small; } .menuSec { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: small; } .newstext { font-family: Arial,Helvetica; font-size: small; } .linkmenu { font-family: Arial,Helvetica; color: #000000; font-weight: bold; text-decoration: none; } P { font-family: Arial,Helvetica; } PRE { font-family: monospace; white-space: pre; font-color: #333333; font-weight: 100; background-color: #eeeeee; padding: 5px; width: 90%; border-style: solid; border-width: 2px; border-color: #bebebe; } .quote { font-family: Times; text-decoration: none; color: #000000; font-size: 9pt; font-style: italic; } .smstd { font-family: Arial,Helvetica; color: #000000; font-size: x-small; } .std { font-family: Arial,Helvetica; color: #000000; } .meerkatTitle { font-family: sans-serif; font-size: x-small; color: black; } .meerkatDescription { font-family: sans-serif; font-size: 10pt; color: black } .meerkatCategory { font-family: sans-serif; font-size: 9pt; font-weight: bold; font-style: italic; color: brown; } .meerkatChannel { font-family: sans-serif; font-size: 9pt; font-style: italic; color: brown; } .meerkatDate { font-family: sans-serif; font-size: xx-small; color: #336699; } .tocTitle { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #333333; font-size: 10pt; } .toc-item { font-family: Arial,Helvetica; font-weight: bold; color: #336699; font-size: 10pt; text-decoration: underline; } .perlVersion { font-family: Arial,Helvetica; font-weight: bold; color: #336699; font-size: 10pt; text-decoration: none; } .docTitle { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #000000; font-size: 10pt; } .dotDot { font-family: Arial,Helvetica; font-weight: bold; color: #000000; font-size: 9pt; } .docSec { font-family: Arial,Helvetica; font-weight: normal; color: #333333; font-size: 9pt; } .docVersion { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 10pt; } .docSecs-on { font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; color: #ff0000; font-size: 10pt; } .docSecs-off { font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; color: #333333; font-size: 10pt; } h3 { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: small; } h2 { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: medium; } h1 { font-family: Verdana,Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: large; } DL { font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; color: #333333; font-size: 10pt; } UL > LI > A { font-family: Arial,Helvetica; font-weight: bold; color: #336699; font-size: 10pt; } .moduleInfo { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #333333; font-size: 11pt; } .moduleInfoSec { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 10pt; } .moduleInfoVal { font-family: Arial,Helvetica; font-weight: normal; text-decoration: underline; color: #000000; font-size: 10pt; } .cpanNavTitle { font-family: Arial,Helvetica; font-weight: bold; color: #ffffff; font-size: 10pt; } .cpanNavLetter { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #333333; font-size: 9pt; } .cpanCat { font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; color: #336699; font-size: 9pt; } --> </STYLE> </HEAD> <BODY> <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> </object> <BLOCKQUOTE> <H1><A NAME="NAME"><A NAME="1">NAME </A></A></H1> <P> <B>sin</B> - returns sine of scalars and vectors. </P> <H1><A NAME="SYNOPSIS"><A NAME="2">SYNOPSIS </A></A></H1> <PRE> float sin(float a); float1 sin(float1 a); float2 sin(float2 a); float3 sin(float3 a); float4 sin(float4 a); half sin(half a); half1 sin(half1 a); half2 sin(half2 a); half3 sin(half3 a); half4 sin(half4 a); fixed sin(fixed a); fixed1 sin(fixed1 a); fixed2 sin(fixed2 a); fixed3 sin(fixed3 a); fixed4 sin(fixed4 a); </PRE> <H1><A NAME="PARAMETERS"><A NAME="3">PARAMETERS </A></A></H1> <DL> <DT><STRONG>a </STRONG></DT> <DD> <P> Vector or scalar of which to determine the sine. </P> </DD></DL> <H1><A NAME="DESCRIPTION"><A NAME="4">DESCRIPTION </A></A></H1> <P> Returns the sine of <I>a</I> in radians. The return value is in the range [-1,+1]. </P> <P> For vectors, the returned vector contains the sine of each element of the input vector. </P> <H1><A NAME="REFERENCE_IMPLEMENTATION"><A NAME="5">REFERENCE IMPLEMENTATION </A></A></H1> <P> <B>sin</B> is best implemented as a native sine instruction, however <B>sin</B> for a <B>float</B> scalar could be implemented by an approximation like this. </P> <PRE> float sin(float a) { /* C simulation gives a max absolute error of less than 1.8e-7 */ float4 c0 = float4( 0.0, 0.5, 1.0, 0.0 ); float4 c1 = float4( 0.25, -9.0, 0.75, 0.159154943091 ); float4 c2 = float4( 24.9808039603, -24.9808039603, -60.1458091736, 60.1458091736 ); float4 c3 = float4( 85.4537887573, -85.4537887573, -64.9393539429, 64.9393539429 ); float4 c4 = float4( 19.7392082214, -19.7392082214, -1.0, 1.0 ); /* r0.x = sin(a) */ float3 r0, r1, r2; r1.x = c1.w * a - c1.x; // only difference from cos! r1.y = frac( r1.x ); // and extract fraction r2.x = (float) ( r1.y < c1.x ); // range check: 0.0 to 0.25 r2.yz = (float2) ( r1.yy >= c1.yz ); // range check: 0.75 to 1.0 r2.y = dot( r2, c4.zwz ); // range check: 0.25 to 0.75 r0 = c0.xyz - r1.yyy; // range centering r0 = r0 * r0; r1 = c2.xyx * r0 + c2.zwz; // start power series r1 = r1 * r0 + c3.xyx; r1 = r1 * r0 + c3.zwz; r1 = r1 * r0 + c4.xyx; r1 = r1 * r0 + c4.zwz; r0.x = dot( r1, -r2 ); // range extract return r0.x; } </PRE> <H1><A NAME="PROFILE_SUPPORT"><A NAME="6">PROFILE SUPPORT </A></A></H1> <P> <B>sin</B> is fully supported in all profiles unless otherwise specified. </P> <P> <B>sin</B> is supported via an approximation (shown above) in the <A HREF="vs_1_1.html">vs_1_1</A>, <A HREF="vp20.html">vp20</A>, and <A HREF="arbvp1.html">arbvp1</A> profiles. </P> <P> <B>sin</B> is unsupported in the <A HREF="fp20.html">fp20</A>, <A HREF="ps_1_1.html">ps_1_1</A>, <A HREF="ps_1_2.html">ps_1_2</A>, and <A HREF="ps_1_3.html">ps_1_3</A> profiles. </P> <H1><A NAME="SEE_ALSO"><A NAME="7">SEE ALSO </A></A></H1> <P> <A HREF="asin.html"><I>asin</I></A>, <A HREF="cos.html"><I>cos</I></A>, <A HREF="dot.html"><I>dot</I></A>, <A HREF="frac.html"><I>frac</I></A>, <A HREF="sincos.html"><I>sincos</I></A>, <A HREF="tan.html"><I>tan</I></A> </P> </BLOCKQUOTE> </BODY>