public void TestMultiplication_Three() { var intField = new RealField(); var curve = new RealCurve(intField, intField.Value(-7), intField.Value(10)); var a = new Point(intField.Value(1), intField.Value(2)); var c = Point.Multiply(curve, intField.Value(3), a); Assert.Equal(intField.Value(9), c.X); Assert.Equal(intField.Value(-26), c.Y); }
public void TestAddition_Same() { var intField = new RealField(); var curve = new RealCurve(intField, intField.Value(-7), intField.Value(10)); var a = new Point(intField.Value(1), intField.Value(2)); var c = Point.Add(curve, a, a) !; Assert.Equal(intField.Value(-1), c.X); Assert.Equal(intField.Value(-4), c.Y); }
public void TestAddition_Basic() { var intField = new RealField(); var curve = new RealCurve(intField, intField.Value(-7), intField.Value(10)); var a = new Point(intField.Value(1), intField.Value(2)); var b = new Point(intField.Value(3), intField.Value(4)); var c = Point.Add(curve, a, b) !; Assert.Equal(intField.Value(-3), c.X); Assert.Equal(intField.Value(2), c.Y); }
protected void SetUp() { // The tolerance is 2.0^-8 Field = new RealField(0.00390625); }
protected void SetUp() { // Tolerance is 2.0^-8. TestRealField = new RealField(0.00390625); TestRealMatrices = new Dictionary <string, Matrix <RealFieldElement> >(); TestRealMatrices.Add("A", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 1, 0, 5 }, { 3, 4, 0, -2 }, { 6, 1, 0, 7 } })); TestRealMatrices.Add("B", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 1, 5 }, { 3, 4, -2 }, { 6, 1, 7 } })); TestRealMatrices.Add("C", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 0, 0, 0 }, { 2, 1, 0, 5 }, { 3, 4, 0, -2 }, { 6, 1, 0, 7 } })); TestRealMatrices.Add("D", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 0, 0 }, { 2, 1, 5 }, { 3, 4, -2 }, { 6, 1, 7 } })); TestRealMatrices.Add("E", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 2, 1, 5 }, { 0, 3, 4, -2 }, { 0, 6, 1, 7 } })); TestRealMatrices.Add("F", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 3, 4, -2 }, { 2, 1, 5 }, { 6, 1, 7 } })); TestRealMatrices.Add("G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 1, 2, 5 }, { 4, 3, -2 }, { 1, 6, 7 } })); TestRealMatrices.Add("H", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 3, 6 }, { 1, 4, 1 }, { 0, 0, 0 }, { 5, -2, 7 } })); TestRealMatrices.Add("+A", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 1, 0, 5 }, { 3, 4, 0, -2 }, { 6, 1, 0, 7 } })); TestRealMatrices.Add("-B", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -2, -1, -5 }, { -3, -4, 2 }, { -6, -1, -7 } })); TestRealMatrices.Add("+C", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 0, 0, 0 }, { 2, 1, 0, 5 }, { 3, 4, 0, -2 }, { 6, 1, 0, 7 } })); TestRealMatrices.Add("-D", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -0, -0, -0 }, { -2, -1, -5 }, { -3, -4, 2 }, { -6, -1, -7 } })); TestRealMatrices.Add("+E", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 2, 1, 5 }, { 0, 3, 4, -2 }, { 0, 6, 1, 7 } })); TestRealMatrices.Add("-F", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -3, -4, 2 }, { -2, -1, -5 }, { -6, -1, -7 } })); TestRealMatrices.Add("+G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 1, 2, 5 }, { 4, 3, -2 }, { 1, 6, 7 } })); TestRealMatrices.Add("-H", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -2, -3, -6 }, { -1, -4, -1 }, { -0, -0, -0 }, { -5, 2, -7 } })); TestRealMatrices.Add("A:Row[1]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 3, 4, 0, -2 } })); TestRealMatrices.Add("C:Row[3]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 6, 1, 0, 7 } })); TestRealMatrices.Add("E:Row[0]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 2, 1, 5 } })); TestRealMatrices.Add("G:Row[2]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 1, 6, 7 } })); TestRealMatrices.Add("B:Column[2]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 5 }, { -2 }, { 7 } })); TestRealMatrices.Add("D:Column[0]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0 }, { 2 }, { 3 }, { 6 } })); TestRealMatrices.Add("F:Column[1]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 4 }, { 1 }, { 1 } })); TestRealMatrices.Add("H:Column[0]", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2 }, { 1 }, { 0 }, { 5 } })); TestRealMatrices.Add("A+E", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 3, 1, 10 }, { 3, 7, 4, -4 }, { 6, 7, 1, 14 } })); TestRealMatrices.Add("A-E", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, -1, -1, 0 }, { 3, 1, -4, 0 }, { 6, -5, -1, 0 } })); TestRealMatrices.Add("B+F", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 5, 5, 3 }, { 5, 5, 3 }, { 12, 2, 14 } })); TestRealMatrices.Add("B-F", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -1, -3, 7 }, { 1, 3, -7 }, { 0, 0, 0 } })); TestRealMatrices.Add("B+G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 3, 3, 10 }, { 7, 7, -4 }, { 7, 7, 14 } })); TestRealMatrices.Add("B-G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 1, -1, 0 }, { -1, 1, 0 }, { 5, -5, 0 } })); TestRealMatrices.Add("D+H", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 3, 6 }, { 3, 5, 6 }, { 3, 4, -2 }, { 11, -1, 14 } })); TestRealMatrices.Add("D-H", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { -2, -3, -6 }, { 1, -3, 4 }, { 3, 4, -2 }, { 1, 3, 0 } })); TestRealMatrices.Add("F+G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 4, 6, 3 }, { 6, 4, 3 }, { 7, 7, 14 } })); TestRealMatrices.Add("F-G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2, 2, -7 }, { -2, -2, 7 }, { 5, -5, 0 } })); TestRealMatrices.Add("+2.0A", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 4, 2, 0, 10 }, { 6, 8, 0, -4 }, { 12, 2, 0, 14 } })); TestRealMatrices.Add("-1.5C", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0.0, 0.0, 0.0, 0.0 }, { -3.0, -1.5, 0.0, -7.5 }, { -4.5, -6.0, 0.0, 3.0 }, { -9.0, -1.5, 0.0, -10.5 } })); TestRealMatrices.Add("+0.0E", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } })); TestRealMatrices.Add("+2.2G", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2.2, 4.4, 11.0 }, { 8.8, 6.6, -4.4 }, { 2.2, 13.2, 15.4 } })); TestRealMatrices.Add("B/+2.0", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 1.0, 0.5, 2.5 }, { 1.5, 2.0, -1.0 }, { 3.0, 0.5, 3.5 } })); TestRealMatrices.Add("D/-0.2", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 0.0, 0.0, 0.0 }, { -10.0, -5.0, -25.0 }, { -15.0, -20.0, 10.0 }, { -30.0, -5.0, -35.0 } })); TestRealMatrices.Add("F/+1.0", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 3, 4, -2 }, { 2, 1, 5 }, { 6, 1, 7 } })); TestRealMatrices.Add("H/+0.8", Matrix <RealFieldElement> .FromArray(TestRealField, new RealFieldElement[, ] { { 2.50, 3.75, 7.50 }, { 1.25, 5.00, 1.25 }, { 0.00, 0.00, 0.00 }, { 6.25, -2.50, 8.75 } })); TestRealMatrices.Add("I", Matrix <RealFieldElement> .Identity(TestRealField, 4)); TestRealMatrices.Add("0", Matrix <RealFieldElement> .Zeros(TestRealField, 3, 4)); TestRealMatrices.Add("1", Matrix <RealFieldElement> .Ones(TestRealField, 2, 7)); }
public IfpTagBlock(IfpNode ifpNode) { int size; if (ifpNode.HeaderSize > ifpNode.TagBlockSize) { size = ifpNode.HeaderSize; } else { size = ifpNode.TagBlockSize; } AnalyzeFieldSet(ifpNode.Nodes, size); int offset = 0, previousOffset = 0; if (ifpNode.Alignment > 0) { alignment = ifpNode.Alignment; } bool skipId = false; foreach (var node in ifpNode.Nodes) { Field field = null; if (node.FieldOffset >= offset) { offset = node.FieldOffset; } else if (node.FieldOffset > 0) { continue; } if (node.Type == IfpNodeType.Tag) { int nodeIndex = ifpNode.Nodes.IndexOf(node); if (ifpNode.Nodes.Count > nodeIndex && ifpNode.Nodes[nodeIndex + 1].Type == IfpNodeType.TagId) { skipId = true; continue; } } else if (node.Type == IfpNodeType.TagId && skipId) { skipId = false; field = new TagReferenceField(node.Name); } else { switch (node.Type) { case IfpNodeType.TagBlock: field = new IfpBlockField(node); break; case IfpNodeType.UnusedArray: field = new PadField(node.Name, node.Length); break; case IfpNodeType.Byte: case IfpNodeType.SignedByte: field = new CharIntegerField(node.Name); break; case IfpNodeType.Short: case IfpNodeType.UnsignedShort: field = new ShortIntegerField(node.Name); break; case IfpNodeType.Int: case IfpNodeType.UnsignedInt: field = new LongIntegerField(node.Name); break; case IfpNodeType.Single: field = new RealField(node.Name); break; case IfpNodeType.Enumerator8: field = new CharEnumField(node.Name); break; case IfpNodeType.Enumerator16: field = new EnumField(node.Name); break; case IfpNodeType.Enumerator32: field = new LongEnumField(node.Name); break; case IfpNodeType.Bitfield8: field = new ByteFlagsField(node.Name); break; case IfpNodeType.Bitfield16: field = new WordFlagsField(node.Name); break; case IfpNodeType.Bitfield32: field = new LongFlagsField(node.Name); break; case IfpNodeType.String32: field = new StringField(node.Name); break; case IfpNodeType.String64: break; case IfpNodeType.Unicode128: break; case IfpNodeType.Unicode256: break; case IfpNodeType.Tag: field = new TagField(node.Name); break; case IfpNodeType.TagId: field = new TagIndexField(node.Name); break; case IfpNodeType.StringId: field = new StringIdField(node.Name); break; } } if (field != null) { if (node.Type == IfpNodeType.Enumerator8 || node.Type == IfpNodeType.Enumerator16 || node.Type == IfpNodeType.Enumerator32 || node.Type == IfpNodeType.Bitfield8 || node.Type == IfpNodeType.Bitfield16 || node.Type == IfpNodeType.Bitfield32) { var optionField = (OptionField)field; foreach (var optionNode in node.Nodes) { optionField.Options.Add(new Option(optionNode.Name, optionNode.Value)); } } if (previousOffset <= offset) { int length = offset - previousOffset; if (length > 0) { Fields.Add(new PadField("ifp padding", length)); } offset += field.Size; previousOffset = offset; Fields.Add(field); } } } if (offset < size) { Fields.Add(new PadField("ifp padding", size - offset)); } if (!string.IsNullOrEmpty(ifpNode.Label)) { var labelFields = Fields.Where(f => f.Name.Equals(ifpNode.Label, StringComparison.OrdinalIgnoreCase)); foreach (var labelField in labelFields) { this.labelFields.Add(labelField); } } }