예제 #1
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.gp(this, b)
 /// </summary>
 public mv gp(mv_if b)
 {
     return c3ga.gp(this, b);
 }
예제 #2
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.subtract(this, b)
 /// </summary>
 public mv subtract(mv_if b)
 {
     return c3ga.subtract(this, b);
 }
예제 #3
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.applyVersor(this, b)
 /// </summary>
 public mv applyVersor(mv_if b)
 {
     return c3ga.applyVersor(this, b);
 }
예제 #4
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Returns geometric product of mv and float.
 /// </summary>
 public static mv gp(mv_if a, float b)
 {
     float[][] ac = a.to_mv().c();
     float[][] bc = new float[][]{new float[]{b}};
     float[][] cc = new float[6][];
     if (ac[0] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_0_0_0(ac[0], bc[0], cc[0]);
     }
     if (ac[1] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_1_0_1(ac[1], bc[0], cc[1]);
     }
     if (ac[2] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_2_0_2(ac[2], bc[0], cc[2]);
     }
     if (ac[3] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_3_0_3(ac[3], bc[0], cc[3]);
     }
     if (ac[4] != null) {
     if (cc[4] == null) cc[4] = new float[5];
     gp_default_4_0_4(ac[4], bc[0], cc[4]);
     }
     if (ac[5] != null) {
     if (cc[5] == null) cc[5] = new float[1];
     gp_default_5_0_5(ac[5], bc[0], cc[5]);
     }
     return new mv(cc);
 }
예제 #5
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Returns Modified Hestenes inner product of mv and mv.
 /// </summary>
 public static mv mhip(mv_if a, mv_if b)
 {
     float[][] ac = a.to_mv().c();
     float[][] bc = b.to_mv().c();
     float[][] cc = new float[6][];
     if (ac[0] != null) {
     if (bc[0] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_0_0_0(ac[0], bc[0], cc[0]);
     }
     if (bc[1] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_0_1_1(ac[0], bc[1], cc[1]);
     }
     if (bc[2] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_0_2_2(ac[0], bc[2], cc[2]);
     }
     if (bc[3] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_0_3_3(ac[0], bc[3], cc[3]);
     }
     if (bc[4] != null) {
     if (cc[4] == null) cc[4] = new float[5];
     gp_default_0_4_4(ac[0], bc[4], cc[4]);
     }
     if (bc[5] != null) {
     if (cc[5] == null) cc[5] = new float[1];
     gp_default_0_5_5(ac[0], bc[5], cc[5]);
     }
     }
     if (ac[1] != null) {
     if (bc[0] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_1_0_1(ac[1], bc[0], cc[1]);
     }
     if (bc[1] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_1_1_0(ac[1], bc[1], cc[0]);
     }
     if (bc[2] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_1_2_1(ac[1], bc[2], cc[1]);
     }
     if (bc[3] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_1_3_2(ac[1], bc[3], cc[2]);
     }
     if (bc[4] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_1_4_3(ac[1], bc[4], cc[3]);
     }
     if (bc[5] != null) {
     if (cc[4] == null) cc[4] = new float[5];
     gp_default_1_5_4(ac[1], bc[5], cc[4]);
     }
     }
     if (ac[2] != null) {
     if (bc[0] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_2_0_2(ac[2], bc[0], cc[2]);
     }
     if (bc[1] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_2_1_1(ac[2], bc[1], cc[1]);
     }
     if (bc[2] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_2_2_0(ac[2], bc[2], cc[0]);
     }
     if (bc[3] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_2_3_1(ac[2], bc[3], cc[1]);
     }
     if (bc[4] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_2_4_2(ac[2], bc[4], cc[2]);
     }
     if (bc[5] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_2_5_3(ac[2], bc[5], cc[3]);
     }
     }
     if (ac[3] != null) {
     if (bc[0] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_3_0_3(ac[3], bc[0], cc[3]);
     }
     if (bc[1] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_3_1_2(ac[3], bc[1], cc[2]);
     }
     if (bc[2] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_3_2_1(ac[3], bc[2], cc[1]);
     }
     if (bc[3] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_3_3_0(ac[3], bc[3], cc[0]);
     }
     if (bc[4] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_3_4_1(ac[3], bc[4], cc[1]);
     }
     if (bc[5] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_3_5_2(ac[3], bc[5], cc[2]);
     }
     }
     if (ac[4] != null) {
     if (bc[0] != null) {
     if (cc[4] == null) cc[4] = new float[5];
     gp_default_4_0_4(ac[4], bc[0], cc[4]);
     }
     if (bc[1] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_4_1_3(ac[4], bc[1], cc[3]);
     }
     if (bc[2] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_4_2_2(ac[4], bc[2], cc[2]);
     }
     if (bc[3] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_4_3_1(ac[4], bc[3], cc[1]);
     }
     if (bc[4] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_4_4_0(ac[4], bc[4], cc[0]);
     }
     if (bc[5] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_4_5_1(ac[4], bc[5], cc[1]);
     }
     }
     if (ac[5] != null) {
     if (bc[0] != null) {
     if (cc[5] == null) cc[5] = new float[1];
     gp_default_5_0_5(ac[5], bc[0], cc[5]);
     }
     if (bc[1] != null) {
     if (cc[4] == null) cc[4] = new float[5];
     gp_default_5_1_4(ac[5], bc[1], cc[4]);
     }
     if (bc[2] != null) {
     if (cc[3] == null) cc[3] = new float[10];
     gp_default_5_2_3(ac[5], bc[2], cc[3]);
     }
     if (bc[3] != null) {
     if (cc[2] == null) cc[2] = new float[10];
     gp_default_5_3_2(ac[5], bc[3], cc[2]);
     }
     if (bc[4] != null) {
     if (cc[1] == null) cc[1] = new float[5];
     gp_default_5_4_1(ac[5], bc[4], cc[1]);
     }
     if (bc[5] != null) {
     if (cc[0] == null) cc[0] = new float[1];
     gp_default_5_5_0(ac[5], bc[5], cc[0]);
     }
     }
     return new mv(cc);
 }
예제 #6
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Returns a * b * inverse(a) using default metric.
 /// </summary>
 public static mv applyVersor(mv_if a, mv_if b)
 {
     return extractGrade(gp(gp(a, b), versorInverse(a)), b.to_mv().gu());
 }
예제 #7
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns whether input multivectors are equal up to an epsilon c.
        /// </summary>
        public static bool equals(mv_if a, mv_if b, float c)
        {
            float[][] ac = a.to_mv().c();
            float[][] bc = b.to_mv().c();

            if (ac[0] != null) {
            if (bc[0] != null) {
            if (!equals_0_0(ac[0], bc[0], c)) return false;
            }
            else if (!zeroGroup_0(ac[0], c)) return false;
            }
            else if (bc[0] != null) {
            if (!zeroGroup_0(bc[0], c)) return false;
            }

            if (ac[1] != null) {
            if (bc[1] != null) {
            if (!equals_1_1(ac[1], bc[1], c)) return false;
            }
            else if (!zeroGroup_1(ac[1], c)) return false;
            }
            else if (bc[1] != null) {
            if (!zeroGroup_1(bc[1], c)) return false;
            }

            if (ac[2] != null) {
            if (bc[2] != null) {
            if (!equals_2_2(ac[2], bc[2], c)) return false;
            }
            else if (!zeroGroup_2(ac[2], c)) return false;
            }
            else if (bc[2] != null) {
            if (!zeroGroup_2(bc[2], c)) return false;
            }

            if (ac[3] != null) {
            if (bc[3] != null) {
            if (!equals_3_3(ac[3], bc[3], c)) return false;
            }
            else if (!zeroGroup_3(ac[3], c)) return false;
            }
            else if (bc[3] != null) {
            if (!zeroGroup_3(bc[3], c)) return false;
            }

            if (ac[4] != null) {
            if (bc[4] != null) {
            if (!equals_4_4(ac[4], bc[4], c)) return false;
            }
            else if (!zeroGroup_4(ac[4], c)) return false;
            }
            else if (bc[4] != null) {
            if (!zeroGroup_4(bc[4], c)) return false;
            }

            if (ac[5] != null) {
            if (bc[5] != null) {
            if (!equals_5_5(ac[5], bc[5], c)) return false;
            }
            else if (!zeroGroup_5(ac[5], c)) return false;
            }
            else if (bc[5] != null) {
            if (!zeroGroup_5(bc[5], c)) return false;
            }
            return true;
        }
예제 #8
0
 /// <summary>shortcut to c3ga.applyUnitVersor(this, b)
 /// </summary>
 public mv applyUnitVersor(mv_if b)
 {
     return(c3ga.applyUnitVersor(this, b));
 }
예제 #9
0
 /// <summary>shortcut to c3ga.equals(this, b, c)
 /// </summary>
 public bool equals(mv_if b, float c)
 {
     return(c3ga.equals(this, b, c));
 }
예제 #10
0
 /// <summary>shortcut to c3ga.mhip(this, b)
 /// </summary>
 public mv mhip(mv_if b)
 {
     return(c3ga.mhip(this, b));
 }
예제 #11
0
 /// <summary>shortcut to c3ga.lc(this, b)
 /// </summary>
 public mv lc(mv_if b)
 {
     return(c3ga.lc(this, b));
 }
예제 #12
0
 /// <summary>shortcut to c3ga.sp(this, b)
 /// </summary>
 public float sp(mv_if b)
 {
     return(c3ga.sp(this, b));
 }
예제 #13
0
 /// <summary>shortcut to c3ga.op(this, b)
 /// </summary>
 public mv op(mv_if b)
 {
     return(c3ga.op(this, b));
 }
예제 #14
0
 /// <summary>shortcut to c3ga.gp(this, b)
 /// </summary>
 public mv gp(mv_if b)
 {
     return(c3ga.gp(this, b));
 }
예제 #15
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.mhip(this, b)
 /// </summary>
 public mv mhip(mv_if b)
 {
     return c3ga.mhip(this, b);
 }
예제 #16
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns negation of mv.
        /// </summary>
        public static mv negate(mv_if a)
        {
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];

            if (ac[0] != null) {
            cc[0] = new float[1];
            neg_0(ac[0], cc[0]);
            }

            if (ac[1] != null) {
            cc[1] = new float[5];
            neg_1(ac[1], cc[1]);
            }

            if (ac[2] != null) {
            cc[2] = new float[10];
            neg_2(ac[2], cc[2]);
            }

            if (ac[3] != null) {
            cc[3] = new float[10];
            neg_3(ac[3], cc[3]);
            }

            if (ac[4] != null) {
            cc[4] = new float[5];
            neg_4(ac[4], cc[4]);
            }

            if (ac[5] != null) {
            cc[5] = new float[1];
            neg_5(ac[5], cc[5]);
            }
            return new mv(cc);
        }
예제 #17
0
 /// <summary>shortcut to c3ga.subtract(this, b)
 /// </summary>
 public mv subtract(mv_if b)
 {
     return(c3ga.subtract(this, b));
 }
예제 #18
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Returns norm2 of mv using default metric.
 /// </summary>
 public static float norm2(mv_if a)
 {
     float n2 = 0.0f;
     float[] c = new float[1];
     float[][] ac = a.to_mv().c();
     if (ac[0] != null) { /* group 0 (grade 0) */
     c[0] = 0.0f;
     gp_default_0_0_0(ac[0], ac[0], c);
     n2 += c[0];
     }
     if (ac[1] != null) { /* group 1 (grade 1) */
     c[0] = 0.0f;
     gp_default_1_1_0(ac[1], ac[1], c);
     n2 += c[0];
     }
     if (ac[2] != null) { /* group 2 (grade 2) */
     c[0] = 0.0f;
     gp_default_2_2_0(ac[2], ac[2], c);
     n2 -= c[0];
     }
     if (ac[3] != null) { /* group 3 (grade 3) */
     c[0] = 0.0f;
     gp_default_3_3_0(ac[3], ac[3], c);
     n2 -= c[0];
     }
     if (ac[4] != null) { /* group 4 (grade 4) */
     c[0] = 0.0f;
     gp_default_4_4_0(ac[4], ac[4], c);
     n2 += c[0];
     }
     if (ac[5] != null) { /* group 5 (grade 5) */
     c[0] = 0.0f;
     gp_default_5_5_0(ac[5], ac[5], c);
     n2 += c[0];
     }
     return n2;
 }
예제 #19
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns dual of mv using default metric.
        /// </summary>
        public static mv dual(mv_if a)
        {
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];
            if (ac[0] != null) {
            if (cc[5] == null) cc[5] = new float[1];
            dual_default_0_5(ac[0], cc[5]);
            }

            if (ac[1] != null) {
            if (cc[4] == null) cc[4] = new float[5];
            dual_default_1_4(ac[1], cc[4]);
            }

            if (ac[2] != null) {
            if (cc[3] == null) cc[3] = new float[10];
            dual_default_2_3(ac[2], cc[3]);
            }

            if (ac[3] != null) {
            if (cc[2] == null) cc[2] = new float[10];
            dual_default_3_2(ac[3], cc[2]);
            }

            if (ac[4] != null) {
            if (cc[1] == null) cc[1] = new float[5];
            dual_default_4_1(ac[4], cc[1]);
            }

            if (ac[5] != null) {
            if (cc[0] == null) cc[0] = new float[1];
            dual_default_5_0(ac[5], cc[0]);
            }

            return new mv(cc);
        }
예제 #20
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns float b * mv a + float c.
        /// </summary>
        public static mv sas(mv_if a, float b, float c)
        {
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];

            if (ac[0] != null) {
            cc[0] = new float[1];
            copyMul_0(ac[0], cc[0], b);
            cc[0][0] += c;
            }
            else if (c != 0.0) {
            cc[0] = new float[1];
            cc[0][0] = c;
            }

            if (ac[1] != null) {
            cc[1] = new float[5];
            copyMul_1(ac[1], cc[1], b);
            }

            if (ac[2] != null) {
            cc[2] = new float[10];
            copyMul_2(ac[2], cc[2], b);
            }

            if (ac[3] != null) {
            cc[3] = new float[10];
            copyMul_3(ac[3], cc[3], b);
            }

            if (ac[4] != null) {
            cc[4] = new float[5];
            copyMul_4(ac[4], cc[4], b);
            }

            if (ac[5] != null) {
            cc[5] = new float[1];
            copyMul_5(ac[5], cc[5], b);
            }
            return new mv(cc);
        }
예제 #21
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns grade groupBitmap of  mv.
        /// </summary>
        public static mv extractGrade(mv_if a, GroupBitmap groupBitmap)
        {
            GroupBitmap gu = a.to_mv().gu() & groupBitmap;
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];

            if ((gu & GroupBitmap.GROUP_0) != 0) {
            cc[0] = new float[1];
            copyGroup_0(ac[0], cc[0]);
            }

            if ((gu & GroupBitmap.GROUP_1) != 0) {
            cc[1] = new float[5];
            copyGroup_1(ac[1], cc[1]);
            }

            if ((gu & GroupBitmap.GROUP_2) != 0) {
            cc[2] = new float[10];
            copyGroup_2(ac[2], cc[2]);
            }

            if ((gu & GroupBitmap.GROUP_3) != 0) {
            cc[3] = new float[10];
            copyGroup_3(ac[3], cc[3]);
            }

            if ((gu & GroupBitmap.GROUP_4) != 0) {
            cc[4] = new float[5];
            copyGroup_4(ac[4], cc[4]);
            }

            if ((gu & GroupBitmap.GROUP_5) != 0) {
            cc[5] = new float[1];
            copyGroup_5(ac[5], cc[5]);
            }
            return new mv(cc);
        }
예제 #22
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Returns scalar product of mv and mv.
 /// </summary>
 public static float sp(mv_if a, mv_if b)
 {
     float[][] ac = a.to_mv().c();
     float[][] bc = b.to_mv().c();
     float[][] cc = new float[6][];
     cc[0] = new float[1];
     if (ac[0] != null) {
     if (bc[0] != null) {
     gp_default_0_0_0(ac[0], bc[0], cc[0]);
     }
     }
     if (ac[1] != null) {
     if (bc[1] != null) {
     gp_default_1_1_0(ac[1], bc[1], cc[0]);
     }
     }
     if (ac[2] != null) {
     if (bc[2] != null) {
     gp_default_2_2_0(ac[2], bc[2], cc[0]);
     }
     }
     if (ac[3] != null) {
     if (bc[3] != null) {
     gp_default_3_3_0(ac[3], bc[3], cc[0]);
     }
     }
     if (ac[4] != null) {
     if (bc[4] != null) {
     gp_default_4_4_0(ac[4], bc[4], cc[0]);
     }
     }
     if (ac[5] != null) {
     if (bc[5] != null) {
     gp_default_5_5_0(ac[5], bc[5], cc[0]);
     }
     }
     return cc[0][0];
 }
예제 #23
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns grade involution of mv.
        /// </summary>
        public static mv gradeInvolution(mv_if a)
        {
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];

            if (ac[0] != null) {
            cc[0] = new float[1];
            copyGroup_0(ac[0], cc[0]);
            }

            if (ac[1] != null) {
            cc[1] = new float[5];
            neg_1(ac[1], cc[1]);
            }

            if (ac[2] != null) {
            cc[2] = new float[10];
            copyGroup_2(ac[2], cc[2]);
            }

            if (ac[3] != null) {
            cc[3] = new float[10];
            neg_3(ac[3], cc[3]);
            }

            if (ac[4] != null) {
            cc[4] = new float[5];
            copyGroup_4(ac[4], cc[4]);
            }

            if (ac[5] != null) {
            cc[5] = new float[1];
            neg_5(ac[5], cc[5]);
            }
            return new mv(cc);
        }
예제 #24
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
 /// <summary>Converts a multivector to a string using default float format.</summary>
 public static string String(mv_if value)
 {
     return String(value, null);
 }
예제 #25
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.sp(this, b)
 /// </summary>
 public float sp(mv_if b)
 {
     return c3ga.sp(this, b);
 }
예제 #26
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>
        /// Converts a multivector to a string according to a float format like "F".
        /// </summary>
        /// <param name="fp">floating point format. Use 'null' for the default format (see setStringFormat()).</param>
        public static string String(mv_if value, string fp)
        {
            mv obj = value.to_mv();
            System.Text.StringBuilder result = new System.Text.StringBuilder();
            int ia = 0; // global index into coordinates (runs from 0 to 31)
            int cnt = 0; // how many coordinates printed so far

            // set up the floating point precision
            if (fp == null) fp = string_fp;

            // start the string
            result.Append(string_start);

            // print all coordinates
            for (int g = 0; g < 6; g++) {
            float[] Cg = obj.m_c[g];
            if (Cg != null) {
                for (int b = 0; b < GroupSize[g]; b++) {
                    double coord = (double)BasisElementSignByIndex[ia] * Cg[b];

                    // goal: print [+|-]obj.m_c[k][* basisVector1 ^ ... ^ basisVectorN]

                    string tmpFloatStr = Math.Abs(coord).ToString(fp);

                    if (Double.Parse(tmpFloatStr) != 0.0) {
                        // print [+|-]
                        result.Append((coord >= 0.0)
                            ? ((cnt>0) ? string_plus : "")
                            : string_minus);
                        // print obj.m_c[k]
                        result.Append(tmpFloatStr);

                        if (g != 0) { // if not grade 0, print [* basisVector1 ^ ... ^ basisVectorN]
                            result.Append(string_mul);

                            // print all basis vectors
                            int bei = 0;
                            while (BasisElements[ia][bei] >= 0) {
                                if (bei > 0)
                                    result.Append(string_wedge);
                                result.Append(BasisVectorNames[BasisElements[ia][bei]]);
                                bei++;
                            }
                        }

                        cnt++;
                    }
                    ia++;
                }
            }
            else ia += GroupSize[g];
            }

            // if no coordinates printed: 0
            if (cnt == 0) result.Append("0");

            // end the string
            result.Append(string_end);

            return result.ToString();
        }
예제 #27
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.add(this, b)
 /// </summary>
 public mv add(mv_if b)
 {
     return c3ga.add(this, b);
 }
예제 #28
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns versor inverse of a using default metric.
        /// </summary>
        public static mv versorInverse(mv_if a)
        {
            float n2 = norm2_returns_scalar(a.to_mv());
            float[][] ac = a.to_mv().c();
            float[][] cc = new float[6][];

            if (ac[0] != null) {
            cc[0] = new float[1];
            copyDiv_0(ac[0], cc[0], n2);
            }

            if (ac[1] != null) {
            cc[1] = new float[5];
            copyDiv_1(ac[1], cc[1], n2);
            }

            if (ac[2] != null) {
            cc[2] = new float[10];
            copyDiv_2(ac[2], cc[2], -n2);
            }

            if (ac[3] != null) {
            cc[3] = new float[10];
            copyDiv_3(ac[3], cc[3], -n2);
            }

            if (ac[4] != null) {
            cc[4] = new float[5];
            copyDiv_4(ac[4], cc[4], n2);
            }

            if (ac[5] != null) {
            cc[5] = new float[1];
            copyDiv_5(ac[5], cc[5], n2);
            }
            return new mv(cc);
        }
예제 #29
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.equals(this, b, c)
 /// </summary>
 public bool equals(mv_if b, float c)
 {
     return c3ga.equals(this, b, c);
 }
예제 #30
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns true if all coordinates of a are abs <= b
        /// </summary>
        public static bool zero(mv_if a, float b)
        {
            float[][] ac = a.to_mv().c();

            if (ac[0] != null) {
            if (!zeroGroup_0(ac[0], b)) return false;
            }

            if (ac[1] != null) {
            if (!zeroGroup_1(ac[1], b)) return false;
            }

            if (ac[2] != null) {
            if (!zeroGroup_2(ac[2], b)) return false;
            }

            if (ac[3] != null) {
            if (!zeroGroup_3(ac[3], b)) return false;
            }

            if (ac[4] != null) {
            if (!zeroGroup_4(ac[4], b)) return false;
            }

            if (ac[5] != null) {
            if (!zeroGroup_5(ac[5], b)) return false;
            }
            return true;
        }
예제 #31
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.lc(this, b)
 /// </summary>
 public mv lc(mv_if b)
 {
     return c3ga.lc(this, b);
 }
예제 #32
0
파일: c3ga.cs 프로젝트: Sciumo/gaigen
        /// <summary>Returns mv + mv.
        /// </summary>
        public static mv add(mv_if a, mv_if b)
        {
            float[][] ac = a.to_mv().c();
            float[][] bc = b.to_mv().c();
            float[][] cc = new float[6][];

            if (ac[0] != null) {
            cc[0] = new float[1];
            if (bc[0] != null) {
            add2_0_0(ac[0], bc[0], cc[0]);
            }
            else copyGroup_0(ac[0], cc[0]);
            }
            else if (bc[0] != null) {
            cc[0] = new float[1];
            copyGroup_0(bc[0], cc[0]);
            }

            if (ac[1] != null) {
            cc[1] = new float[5];
            if (bc[1] != null) {
            add2_1_1(ac[1], bc[1], cc[1]);
            }
            else copyGroup_1(ac[1], cc[1]);
            }
            else if (bc[1] != null) {
            cc[1] = new float[5];
            copyGroup_1(bc[1], cc[1]);
            }

            if (ac[2] != null) {
            cc[2] = new float[10];
            if (bc[2] != null) {
            add2_2_2(ac[2], bc[2], cc[2]);
            }
            else copyGroup_2(ac[2], cc[2]);
            }
            else if (bc[2] != null) {
            cc[2] = new float[10];
            copyGroup_2(bc[2], cc[2]);
            }

            if (ac[3] != null) {
            cc[3] = new float[10];
            if (bc[3] != null) {
            add2_3_3(ac[3], bc[3], cc[3]);
            }
            else copyGroup_3(ac[3], cc[3]);
            }
            else if (bc[3] != null) {
            cc[3] = new float[10];
            copyGroup_3(bc[3], cc[3]);
            }

            if (ac[4] != null) {
            cc[4] = new float[5];
            if (bc[4] != null) {
            add2_4_4(ac[4], bc[4], cc[4]);
            }
            else copyGroup_4(ac[4], cc[4]);
            }
            else if (bc[4] != null) {
            cc[4] = new float[5];
            copyGroup_4(bc[4], cc[4]);
            }

            if (ac[5] != null) {
            cc[5] = new float[1];
            if (bc[5] != null) {
            add2_5_5(ac[5], bc[5], cc[5]);
            }
            else copyGroup_5(ac[5], cc[5]);
            }
            else if (bc[5] != null) {
            cc[5] = new float[1];
            copyGroup_5(bc[5], cc[5]);
            }
            return new mv(cc);
        }
예제 #33
0
파일: mv.cs 프로젝트: Sciumo/gaigen
 /// <summary>shortcut to c3ga.op(this, b)
 /// </summary>
 public mv op(mv_if b)
 {
     return c3ga.op(this, b);
 }
예제 #34
0
 /// <summary>shortcut to c3ga.add(this, b)
 /// </summary>
 public mv add(mv_if b)
 {
     return(c3ga.add(this, b));
 }