summaryrefslogtreecommitdiff
path: root/p-spin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'p-spin.cpp')
-rw-r--r--p-spin.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/p-spin.cpp b/p-spin.cpp
new file mode 100644
index 0000000..ba18c6a
--- /dev/null
+++ b/p-spin.cpp
@@ -0,0 +1,25 @@
+#include "p-spin.hpp"
+
+inline Real fₚ(unsigned p, Real q) {
+ return 0.5 * pow(q, p);
+}
+
+inline Real ∂fₚ(unsigned p, Real q) {
+ return 0.5 * p * pow(q, p - 1);
+}
+
+inline Real ∂∂fₚ(unsigned p, Real q) {
+ return 0.5 * p * (p - 1) * pow(q, p - 2);
+}
+
+Real f(Real λ, unsigned p, unsigned s, Real q) {
+ return (1 - λ) * fₚ(p, q) + λ * fₚ(s, q);
+}
+
+Real ∂f(Real λ, unsigned p, unsigned s, Real q) {
+ return (1 - λ) * ∂fₚ(p, q) + λ * ∂fₚ(s, q);
+}
+
+Real ∂∂f(Real λ, unsigned p, unsigned s, Real q) {
+ return (1 - λ) * ∂∂fₚ(p, q) + λ * ∂∂fₚ(s, q);
+}