Commit 0b777f0d authored by rusty1s's avatar rusty1s
Browse files

clean up

parent d42e2629
...@@ -2,29 +2,41 @@ ...@@ -2,29 +2,41 @@
#define TH_GENERIC_FILE "generic/THBasis.c" #define TH_GENERIC_FILE "generic/THBasis.c"
#else #else
inline real THTensor_(linear)(real v, int64_t kMod) {
return 1 - v - kMod + 2 * v * kMod;
}
inline real THTensor_(quadratic)(real v, int64_t kMod) {
if (kMod == 0) return 0.5 * v * v - v + 0.5;
else if (kMod == 1) return -v * v + v + 0.5;
else return 0.5 * v * v;
}
inline real THTensor_(cubic)(real v, int64_t kMod) {
if (kMod == 0) { v = (1 - v); return v * v * v / 6.0; }
else if (kMod == 1) return (3 * v * v * v - 6 * v * v + 4) / 6;
else if (kMod == 2) return (-3 * v * v * v + 3 * v * v + 3 * v + 1) / 6;
else return v * v * v / 6;
}
void THTensor_(linearBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo, void THTensor_(linearBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo,
THLongTensor *kernelSize, THByteTensor *isOpenSpline) { THLongTensor *kernelSize, THByteTensor *isOpenSpline) {
TH_TENSOR_BASIS_FORWARD(1, basis, weightIndex, pseudo, kernelSize, isOpenSpline, TH_TENSOR_BASIS_FORWARD(1, basis, weightIndex, pseudo, kernelSize, isOpenSpline,
v = 1 - v - kMod + 2 * v * kMod; v = THTensor_(linear)(v, kMod);
) )
} }
void THTensor_(quadraticBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo, void THTensor_(quadraticBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo,
THLongTensor *kernelSize, THByteTensor *isOpenSpline) { THLongTensor *kernelSize, THByteTensor *isOpenSpline) {
TH_TENSOR_BASIS_FORWARD(2, basis, weightIndex, pseudo, kernelSize, isOpenSpline, TH_TENSOR_BASIS_FORWARD(2, basis, weightIndex, pseudo, kernelSize, isOpenSpline,
if (kMod == 0) v = 0.5 * v * v - v + 0.5; v = THTensor_(quadratic)(v, kMod);
else if (kMod == 1) v = -v * v + v + 0.5;
else v = 0.5 * v * v;
) )
} }
void THTensor_(cubicBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo, void THTensor_(cubicBasisForward)(THTensor *basis, THLongTensor *weightIndex, THTensor *pseudo,
THLongTensor *kernelSize, THByteTensor *isOpenSpline) { THLongTensor *kernelSize, THByteTensor *isOpenSpline) {
TH_TENSOR_BASIS_FORWARD(3, basis, weightIndex, pseudo, kernelSize, isOpenSpline, TH_TENSOR_BASIS_FORWARD(3, basis, weightIndex, pseudo, kernelSize, isOpenSpline,
if (kMod == 0) { v = (1 - v); v = v * v * v / 6.0; } v = THTensor_(cubic)(v, kMod);
else if (kMod == 1) v = (3 * v * v * v - 6 * v * v + 4) / 6;
else if (kMod == 2) v = (-3 * v * v * v + 3 * v * v + 3 * v + 1) / 6;
else v = v * v * v / 6;
) )
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment