Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
mantidproject
mantid
Commits
2bd701b8
Commit
2bd701b8
authored
Mar 03, 2020
by
Hahn, Steven
Browse files
Avoid extra multiply in Plus and Minus
Signed-off-by:
Steven Hahn
<
hahnse@ornl.gov
>
parent
e590dbd3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Framework/Algorithms/src/Minus.cpp
View file @
2bd701b8
...
...
@@ -22,7 +22,7 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs,
HistogramData
::
HistogramY
&
YOut
,
HistogramData
::
HistogramE
&
EOut
)
{
std
::
transform
(
lhs
.
y
().
begin
(),
lhs
.
y
().
end
(),
rhs
.
y
().
begin
(),
YOut
.
begin
(),
std
::
minus
<
double
>
());
std
::
minus
<>
());
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
rhs
.
e
().
begin
(),
EOut
.
begin
(),
VectorHelper
::
SumGaussError
<
double
>
());
}
...
...
@@ -33,12 +33,14 @@ void Minus::performBinaryOperation(const HistogramData::Histogram &lhs,
HistogramData
::
HistogramE
&
EOut
)
{
using
std
::
placeholders
::
_1
;
std
::
transform
(
lhs
.
y
().
begin
(),
lhs
.
y
().
end
(),
YOut
.
begin
(),
std
::
bind
(
std
::
minus
<
double
>
(),
_1
,
rhsY
)
);
[
rhsY
](
const
double
&
l
)
{
return
l
-
rhsY
;
}
);
// Only do E if non-zero, otherwise just copy
if
(
rhsE
!=
0
)
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
EOut
.
begin
(),
std
::
bind
(
VectorHelper
::
SumGaussError
<
double
>
(),
_1
,
rhsE
));
else
if
(
rhsE
!=
0
)
{
double
rhsE2
=
rhsE
*
rhsE
;
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
EOut
.
begin
(),
[
rhsE2
](
const
double
&
l
)
{
return
std
::
sqrt
(
l
*
l
+
rhsE2
);
});
}
else
EOut
=
lhs
.
e
();
}
...
...
Framework/Algorithms/src/Plus.cpp
View file @
2bd701b8
...
...
@@ -24,7 +24,7 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs,
HistogramData
::
HistogramY
&
YOut
,
HistogramData
::
HistogramE
&
EOut
)
{
std
::
transform
(
lhs
.
y
().
begin
(),
lhs
.
y
().
end
(),
rhs
.
y
().
begin
(),
YOut
.
begin
(),
std
::
plus
<
double
>
());
std
::
plus
<>
());
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
rhs
.
e
().
begin
(),
EOut
.
begin
(),
VectorHelper
::
SumGaussError
<
double
>
());
}
...
...
@@ -36,12 +36,15 @@ void Plus::performBinaryOperation(const HistogramData::Histogram &lhs,
HistogramData
::
HistogramE
&
EOut
)
{
using
std
::
placeholders
::
_1
;
std
::
transform
(
lhs
.
y
().
begin
(),
lhs
.
y
().
end
(),
YOut
.
begin
(),
std
::
bind
(
std
::
plus
<
double
>
(),
_1
,
rhsY
)
);
[
rhsY
](
const
double
&
l
)
{
return
l
+
rhsY
;
}
);
// Only do E if non-zero, otherwise just copy
if
(
rhsE
!=
0
)
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
EOut
.
begin
(),
std
::
bind
(
VectorHelper
::
SumGaussError
<
double
>
(),
_1
,
rhsE
));
else
if
(
rhsE
!=
0.
)
{
double
rhsE2
=
rhsE
*
rhsE
;
std
::
transform
(
lhs
.
e
().
begin
(),
lhs
.
e
().
end
(),
EOut
.
begin
(),
[
rhsE2
](
const
double
&
l
)
{
return
std
::
sqrt
(
l
*
l
+
rhsE2
);
});
}
else
EOut
=
lhs
.
e
();
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment