dot

> # NAME

> dot - returns the scalar dot product of two vectors

> # SYNOPSIS

>       float  dot( float  a, float  b );
>       float1 dot( float1 a, float1 b );
>       float2 dot( float2 a, float2 b );
>       float3 dot( float3 a, float3 b );
>       float4 dot( float4 a, float4 b );

>       half   dot( half  a, half  b );
>       half1  dot( half1 a, half1 b );
>       half2  dot( half2 a, half2 b );
>       half3  dot( half3 a, half3 b );
>       half4  dot( half4 a, half4 b );

>       fixed  dot( fixed  a, fixed  b );
>       fixed1 dot( fixed1 a, fixed1 b );
>       fixed2 dot( fixed2 a, fixed2 b );
>       fixed3 dot( fixed3 a, fixed3 b );
>       fixed4 dot( fixed4 a, fixed4 b );

> # PARAMETERS

> a

>   First vector.

> b

>   Second vector.

> # DESCRIPTION

> Returns the scalar dot product of two same-typed vectors a and b.

> # REFERENCE IMPLEMENTATION

> dot for float4 vectors could be implemented this way:

>       float dot(float4 a, float4 b)
>       {
>         return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w;
>       }

> # PROFILE SUPPORT

> dot is supported in all profiles.

> The fixed3 dot product is very efficient in the fp20 and fp30 profiles.

> The float3 and float4 dot products are very efficient in the vp20, vp30, vp40, arbvp1, fp30, fp40, and arbfp1 profiles.

> The float2 dot product is very efficient in the fp40 profile. In optimal circumstances, two two-component dot products can sometimes be performed at the four-component and three-component dot product rate.

> # SEE ALSO

> cross, mul