libflame  revision_anchor
FLA_Apply_GTG.h
Go to the documentation of this file.
1 /*
2 
3  Copyright (C) 2014, The University of Texas at Austin
4 
5  This file is part of libflame and is available under the 3-Clause
6  BSD license, which can be found in the LICENSE file at the top-level
7  directory, or at http://opensource.org/licenses/BSD-3-Clause
8 
9 */
10 
11 FLA_Error FLA_Apply_GTG( FLA_Obj gamma, FLA_Obj sigma, FLA_Obj delta1, FLA_Obj epsilon1, FLA_Obj delta2 );
13  float* sigma,
14  float* delta1,
15  float* epsilon1,
16  float* delta2 );
18  double* sigma,
19  double* delta1,
20  double* epsilon1,
21  double* delta2 );
22 
23 #define MAC_Apply_GTG_ops( gamma, sigma, delta1, epsilon, delta2 ) \
24 { \
25  float g, s; \
26  float d1, e, d2; \
27  float g2, s2, tgse; \
28 \
29  g = *(gamma); \
30  s = *(sigma); \
31 \
32  d1 = *(delta1); \
33  e = *(epsilon); \
34  d2 = *(delta2); \
35 \
36  g2 = g * g; \
37  s2 = s * s; \
38  tgse = 2.0 * g * s * e; \
39 \
40  *(delta1) = g2 * d1 + tgse + s2 * d2; \
41  *(delta2) = s2 * d1 - tgse + g2 * d2; \
42  *(epsilon) = g * s * (d2 - d1) + e * (g2 - s2); \
43 }
44 
45 #define MAC_Apply_GTG_opd( gamma, sigma, delta1, epsilon, delta2 ) \
46 { \
47 /*
48  double g, s; \
49  double d1, e, d2; \
50  double t, st; \
51 \
52  g = *(gamma); \
53  s = *(sigma); \
54 \
55  d1 = *(delta1); \
56  e = *(epsilon); \
57  d2 = *(delta2); \
58 \
59  t = s * ( d2 - d1 ) + 2.0 * g * e; \
60  st = s * t; \
61  e = g * t - e; \
62  d1 = st + d1; \
63  d2 = d2 - st; \
64 \
65  *(delta1) = d1; \
66  *(epsilon) = e; \
67  *(delta2) = d2; \
68 */ \
69  double g, s; \
70  double d1, e, d2; \
71  double g2, s2, tgse; \
72 \
73  g = *(gamma); \
74  s = *(sigma); \
75 \
76  d1 = *(delta1); \
77  e = *(epsilon); \
78  d2 = *(delta2); \
79 \
80  g2 = g * g; \
81  s2 = s * s; \
82  tgse = 2.0 * g * s * e; \
83 \
84  *(delta1) = g2 * d1 + tgse + s2 * d2; \
85  *(delta2) = s2 * d1 - tgse + g2 * d2; \
86  *(epsilon) = g * s * (d2 - d1) + e * (g2 - s2); \
87 \
88 /*
89  double g, s; \
90  double d1, e, d2; \
91  double g2, s2; \
92  double st; \
93 \
94  g = *(gamma); \
95  s = *(sigma); \
96 \
97  d1 = *(delta1); \
98  e = *(epsilon); \
99  d2 = *(delta2); \
100 \
101  g2 = g * g; \
102  s2 = s * s; \
103  st = s2 * (d2 - d1) + 2.0 * g * s * e; \
104 \
105  *(delta1) = st + d1; \
106  *(delta2) = d2 - st; \
107  *(epsilon) = g * s * (d2 - d1) + e * (g2 - s2); \
108 */ \
109 }
110 
FLA_Error FLA_Apply_GTG(FLA_Obj gamma, FLA_Obj sigma, FLA_Obj delta1, FLA_Obj epsilon1, FLA_Obj delta2)
FLA_Error FLA_Apply_GTG_opd(double *gamma, double *sigma, double *delta1, double *epsilon1, double *delta2)
FLA_Error FLA_Apply_GTG_ops(float *gamma, float *sigma, float *delta1, float *epsilon1, float *delta2)
int FLA_Error
Definition: FLA_type_defs.h:47
Definition: FLA_type_defs.h:159