File: mult.c

package info (click to toggle)
grass 6.0.2-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 40,044 kB
  • ctags: 31,303
  • sloc: ansic: 321,125; tcl: 25,676; sh: 11,176; cpp: 10,098; makefile: 5,025; fortran: 1,846; yacc: 493; lex: 462; perl: 133; sed: 1
file content (34 lines) | stat: -rw-r--r-- 999 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*      Name:   mult.c

Created:        Sun Mar 30 17:29:45 1986
Last modified:  Sun Mar 30 21:34:34 1986

Purpose:        Multiply the two complex vectors, point by point.

Details:        Vectors are in the form:  real, imaginary (each a floating
                number).  A vector can be of any size.  Computes
                v3 = v1 * v2.  v3 should as big as the biggest of v1 and v2.

Author:         Bill Hoff,2-114C,8645,3563478 (hoff) at uicsl
*/

int 
mult (double *v1[2], int size1, double *v2[2], int size2, double *v3[2], int size3)
{
  register int i, n;

  n = (size1 < size2 ? size1 : size2); /* get the smaller size */
  for (i=0; i < n; i++) {
    *(v3[0]+i) = *(v1[0]+i) * *(v2[0]+i) - *(v1[1]+i) * *(v2[1]+i);
    *(v3[1]+i) = *(v1[0]+i) * *(v2[1]+i) + *(v2[0]+i) * *(v1[1]+i);
  }

  /* if unequal size, zero out remaining elements of larger vector */
  if (size1 != size2)
    for (i=n; i < size3; i++)   {
      *(v3[0]+i) = 0.0;
      *(v3[1]+i) = 0.0;
    }

  return 0;
}