.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R

.fi
..
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.hy 0
.if n .na
.bd B 3
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.IX Title "dot Cg"
.TH dot Cg "" "Cg Toolkit 1.5" "Cg Standard Library"
.UC
.SH "NAME"
\&\fBdot\fR \- returns the scalar dot product of two vectors
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 5
\&  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 );
.Ve
.Vb 5
\&  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 );
.Ve
.Vb 5
\&  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 );
.Ve
.SH "PARAMETERS"
.IX Header "PARAMETERS"
.Ip "a" 8
.IX Item "a"
First vector.
.Ip "b" 8
.IX Item "b"
Second vector.
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
Returns the scalar dot product of two same-typed vectors \fIa\fR and \fIb\fR.
.SH "REFERENCE IMPLEMENTATION"
.IX Header "REFERENCE IMPLEMENTATION"
\&\fBdot\fR for \fBfloat4\fR vectors could be implemented this way:
.PP
.Vb 4
\&  float dot(float4 a, float4 b)
\&  {
\&    return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w;
\&  }
.Ve
.SH "PROFILE SUPPORT"
.IX Header "PROFILE SUPPORT"
\&\fBdot\fR is supported in all profiles.
.PP
The \fBfixed3\fR dot product is very efficient in the fp20 and
fp30 profiles.
.PP
The \fBfloat3\fR and \fBfloat4\fR dot products are very efficient in the
vp20, vp30, vp40, arbvp1, fp30,
fp40, and arbfp1 profiles.
.PP
The \fBfloat2\fR 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.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
the cross manpage,
the mul manpage
