SEP Solver Library
1.0
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Macros
base
Space.cpp
Go to the documentation of this file.
1
#include "
Space.h
"
2
#include "
dataContainer.h
"
3
4
void
SEP::MultiSpace::scale
(
float
a,
dataContainer
* x,
dataContainer
* ax)
const
{
7
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
8
SEP::MultiDataContainer
*ax2=(
SEP::MultiDataContainer
*) ax;
9
sp1
->
scale
(a,x2->
getData1
(),ax2->
getData1
());
10
sp2
->
scale
(a,x2->
getData2
(),ax2->
getData2
());
11
}
12
13
void
SEP::MultiSpace::scale
(
float
a,
dataContainer
* x)
const
{
16
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
17
sp1->scale(a,x2->
getData1
());
18
sp2->scale(a,x2->
getData2
());
19
}
20
21
// DN use dynamic_cast for RTTI checking?
22
void
SEP::MultiSpace::addInv
(
dataContainer
* x)
const
{
25
SEP::MultiDataContainer
*x2=
dynamic_cast<
SEP::MultiDataContainer
*
>
( x );
26
27
sp1->addInv(x2->
getData1
());
28
sp2->addInv(x2->
getData2
());
29
30
}
31
32
void
SEP::MultiSpace::addInv
(
dataContainer
* x,
dataContainer
* xNeg)
const
{
35
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
36
SEP::MultiDataContainer
*xNeg2=(
SEP::MultiDataContainer
*) xNeg;
37
sp1->addInv(x2->
getData1
(),xNeg2->
getData1
());
38
sp2->addInv(x2->
getData2
(),xNeg2->
getData2
());
39
}
40
41
/* void SEP::MultiSpace::norm(int p, dataContainer * x) const{
42
SEP::MultiDataContainer *x2=(SEP::MultiDataContainer*) x;
43
sp1->norm(p,x2->getData1());
44
sp2->norm(p,x2->getData2());
45
} */
46
47
bool
SEP::MultiSpace::isCompatible
(
SEP::Space
*otherSpace,
bool
makeSame)
const
{
53
SEP::MultiSpace
*s2=(
SEP::MultiSpace
*) otherSpace;
54
if
(sp1->isCompatible(s2->
getSpace1
()) && sp2->isCompatible(s2->
getSpace2
())){
55
if
(makeSame) s2->
set_key
(get_key());
56
return
true
;
57
}
58
return
false
;
59
}
60
61
bool
SEP::MultiSpace::isCompatible
(
SEP::dataContainer
*x)
const
{
64
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
65
66
if
(sp1->isCompatible(x2->
getData1
())&&
67
sp2->isCompatible(x2->
getData2
()))
return
true
;
68
69
return
false
;
70
}
71
72
73
double
SEP::MultiSpace::innerProd
(
dataContainer
* x,
dataContainer
* y)
const
{
76
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
77
SEP::MultiDataContainer
*y2=(
SEP::MultiDataContainer
*) y;
78
double
sum=0.;
79
sum += sp1->innerProd(x2->
getData1
(),y2->
getData1
());
80
sum += sp2->innerProd(x2->
getData2
(),y2->
getData2
());
81
82
return
sum;
83
}
84
85
void
SEP::MultiSpace::linearCombo
(
float
a,
dataContainer
* x,
float
b,
dataContainer
* y)
const
{
88
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
89
SEP::MultiDataContainer
*y2=(
SEP::MultiDataContainer
*) y;
90
sp1->linearCombo(a,x2->
getData1
(),b,y2->
getData1
());
91
sp2->linearCombo(a,x2->
getData2
(),b,y2->
getData2
());
92
}
93
94
95
void
SEP::MultiSpace::zeroElement
(
dataContainer
* x)
const
{
98
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
99
sp1->zeroElement(x2->
getData1
());
100
sp2->zeroElement(x2->
getData2
());
101
}
102
103
/*SEP::MultiSpace SEP::MultiSpace::clone_space()const{
104
MultiSpace x;
105
x.sp1=sp1;
106
x.sp2=sp2;
107
return x;
108
}*/
109
110
SEP::MultiDataContainer
*
SEP::MultiSpace::buildDataContainer
()
const
{
113
dataContainer
*d1=sp1->buildDataContainer();
114
dataContainer
*d2=sp2->buildDataContainer();
115
SEP::MultiDataContainer
*mdc =
new
SEP::MultiDataContainer
(d1,d2);
116
return
mdc;
117
}
118
119
SEP::MultiSpace::MultiSpace
(
Space
*s1,
Space
*s2){
122
sp1=s1;
123
sp2=s2;
124
}
125
126
long
long
SEP::MultiSpace::get_n123
(){
129
long
long
n1 = sp1->get_n123();
130
long
long
n2 = sp2->get_n123();
131
return
n1+n2;
132
}
133
134
void
SEP::MultiSpace::random
(
dataContainer
* x)
const
{
137
SEP::MultiDataContainer
*x2=(
SEP::MultiDataContainer
*) x;
138
sp1->random(x2->
getData1
());
139
sp2->random(x2->
getData2
());
140
}
141
Generated by
1.8.4