Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
7b8089d3
"openmmapi/vscode:/vscode.git/clone" did not exist on "d8c6769914e3144cbdd01c29343db181fb0b6014"
Commit
7b8089d3
authored
Jul 16, 2010
by
Christopher Bruns
Browse files
Debug new spline code on Windows
parent
77cdc5f1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
13 deletions
+13
-13
openmmapi/include/openmm/internal/SplineFitter.h
openmmapi/include/openmm/internal/SplineFitter.h
+1
-1
tests/TestSplineFitter.cpp
tests/TestSplineFitter.cpp
+12
-12
No files found.
openmmapi/include/openmm/internal/SplineFitter.h
View file @
7b8089d3
...
...
@@ -41,7 +41,7 @@ namespace OpenMM {
* SplineFitter provides routines for performing cubic spline interpolation.
*/
class
SplineFitter
{
class
OPENMM_EXPORT
SplineFitter
{
public:
/**
* Fit a natural cubic spline to a set of data points. The resulting spline interpolates all the
...
...
tests/TestSplineFitter.cpp
View file @
7b8089d3
...
...
@@ -44,43 +44,43 @@ using namespace std;
void
testNaturalSpline
()
{
vector
<
double
>
x
(
20
);
vector
<
double
>
y
(
20
);
for
(
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
x
[
i
]
=
0.5
*
i
+
0.1
*
sin
(
i
);
y
[
i
]
=
sin
(
x
[
i
]);
for
(
unsigned
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
x
[
i
]
=
0.5
*
i
+
0.1
*
sin
(
double
(
i
)
);
y
[
i
]
=
sin
(
double
(
x
[
i
])
)
;
}
vector
<
double
>
deriv
;
SplineFitter
::
createNaturalSpline
(
x
,
y
,
deriv
);
ASSERT_EQUAL_TOL
(
deriv
[
0
],
0.0
,
1e-6
);
ASSERT_EQUAL_TOL
(
deriv
[
deriv
.
size
()
-
1
],
0.0
,
1e-6
);
for
(
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
ASSERT_EQUAL_TOL
(
y
[
i
],
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
x
[
i
]),
1e-6
);
ASSERT_EQUAL_TOL
(
cos
(
x
[
i
]),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
x
[
i
]),
0.05
);
}
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
ASSERT_EQUAL_TOL
(
sin
(
i
),
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
cos
(
i
),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
sin
(
(
double
)
i
),
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
cos
(
(
double
)
i
),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
i
),
0.05
);
}
}
void
testPeriodicSpline
()
{
vector
<
double
>
x
(
26
);
vector
<
double
>
y
(
26
);
for
(
int
i
=
0
;
i
<
x
.
size
()
-
1
;
i
++
)
{
x
[
i
]
=
0.5
*
i
+
0.1
*
sin
(
i
);
y
[
i
]
=
sin
(
x
[
i
]);
for
(
unsigned
int
i
=
0
;
i
<
x
.
size
()
-
1
;
i
++
)
{
x
[
i
]
=
0.5
*
i
+
0.1
*
sin
(
(
double
)
i
);
y
[
i
]
=
sin
(
(
double
)
x
[
i
]);
}
x
[
x
.
size
()
-
1
]
=
4
*
M_PI
;
y
[
y
.
size
()
-
1
]
=
y
[
0
];
vector
<
double
>
deriv
;
SplineFitter
::
createPeriodicSpline
(
x
,
y
,
deriv
);
ASSERT_EQUAL_TOL
(
deriv
[
0
],
deriv
[
deriv
.
size
()
-
1
],
1e-6
);
for
(
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
x
.
size
();
i
++
)
{
ASSERT_EQUAL_TOL
(
y
[
i
],
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
x
[
i
]),
1e-6
);
ASSERT_EQUAL_TOL
(
cos
(
x
[
i
]),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
x
[
i
]),
0.05
);
}
for
(
int
i
=
1
;
i
<
9
;
i
++
)
{
ASSERT_EQUAL_TOL
(
sin
(
i
),
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
cos
(
i
),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
sin
(
(
double
)
i
),
SplineFitter
::
evaluateSpline
(
x
,
y
,
deriv
,
i
),
0.05
);
ASSERT_EQUAL_TOL
(
cos
(
(
double
)
i
),
SplineFitter
::
evaluateSplineDerivative
(
x
,
y
,
deriv
,
i
),
0.05
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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