/// <summary>
 /// Use Lanczos Interpolation to scale the source matrix into the target matrix.
 /// </summary>
 public static void SetScaledLanczos(this Matrix <__dtct__> targetMat, Matrix <__dtct__> sourceMat)
 {
     targetMat.SetScaledOrder5(sourceMat, Fun.Lanczos3f);
 }
 public static void SetScaledBSpline3(this Matrix <__dtct__> targetMat, Matrix <__dtct__> sourceMat)
 {
     targetMat.SetScaledCubic(sourceMat, Fun.BSpline3f);
 }
 public static void SetScaledBSpline5(this Matrix <__dtct__> targetMat, Matrix <__dtct__> sourceMat)
 {
     targetMat.SetScaledOrder5(sourceMat, Fun.BSpline5f);
 }
 //# var intConfigs = new []
 //# {
 //#     Tup.Create("byte",      "Byte",     "Fun",  "Fun"),
 //#     Tup.Create("ushort",    "UShort",   "Fun",  "Fun"),
 //#     Tup.Create("float",     "",         "Fun",  "Fun"),
 //#     Tup.Create("byte",      "Byte",     "C3b",  "C3f"),
 //#     Tup.Create("ushort",    "UShort",   "C3us", "C3f"),
 //#     Tup.Create("float",     "",         "C3f",  "C3f"),
 //#     Tup.Create("byte",      "Byte",     "C4b",  "C4f"),
 //#     Tup.Create("ushort",    "UShort",   "C4us", "C4f"),
 //#     Tup.Create("float",     "",         "C4f",  "C4f"),
 //# };
 //# intConfigs.ForEach((dt, dtn, ct, fct) => {
 //#     var fun = ct == "Fun" ? ct : "Col";
 //#     var clampVal = dtn != "" && ct == "Fun";
 //#     var clampMap = dtn != "" && ct != "Fun";
 //#     var rfct = dtn == "" ? "" : "RawF";
 //#     var dtct = ct == "Fun" ? dt : dt + ", " + ct;
 //#     var it = ct == "Fun" ? dt : ct;
 public static void SetScaledNearest(this Matrix <__dtct__> targetMat, Matrix <__dtct__> sourceMat)
 {
     targetMat.SetScaledLinear(sourceMat, (x, a, b) => x < 0.5 ? a : b,
                               (x, a, b) => x < 0.5 ? a : b);
 }