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
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
int i
Definition bl1_axmyv2.c:145
Definition FLA_type_defs.h:159