Search in sources :

Example 21 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class DetermineJKStateMachineTest method testSimpleD.

public void testSimpleD() throws Exception {
    Expression e = or(and(a, b), and(nota, notb));
    DetermineJKStateMachine jk = new DetermineJKStateMachine("c", e);
    assertEquals("(¬a ∧ ¬b) ∨ (a ∧ b)", toStr(jk.getJ()));
    assertEquals("(¬a ∧ ¬b) ∨ (a ∧ b)", toStr(jk.getNK()));
    assertTrue(jk.isDFF());
}
Also used : FormatToExpression(de.neemann.digital.analyse.expression.format.FormatToExpression) Expression(de.neemann.digital.analyse.expression.Expression)

Example 22 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class FormatToExpressionTest method testFormatExpNot2.

public void testFormatExpNot2() throws Exception {
    Variable a = v("A");
    Variable b = v("B");
    Variable c = v("C");
    Expression e = or(and(a, b), not(c));
    assertEquals("(A ∧ B) ∨ ¬C", FormatToExpression.FORMATTER_UNICODE.format(e));
}
Also used : Variable(de.neemann.digital.analyse.expression.Variable) Expression(de.neemann.digital.analyse.expression.Expression) NamedExpression(de.neemann.digital.analyse.expression.NamedExpression)

Example 23 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class IndependentCheckerTest method testRemoveVar2.

public void testRemoveVar2() {
    Expression ex = and(a, c, d);
    ContextFiller cf = new ContextFiller(a, b, c, d);
    BoolTableExpression bte = new BoolTableExpression(ex, cf);
    IndependentChecker ic = new IndependentChecker(bte);
    BoolTable btr = ic.removeVar(1);
    assertEquals(8, btr.size());
    for (int i = 0; i < 7; i++) assertEquals(ThreeStateValue.zero, btr.get(i));
    assertEquals(ThreeStateValue.one, btr.get(7));
}
Also used : Expression(de.neemann.digital.analyse.expression.Expression) ContextFiller(de.neemann.digital.analyse.expression.ContextFiller)

Example 24 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class QuineMcCluskeyRegressionTest method testRegression3.

public void testRegression3() throws Exception {
    Variable a = new Variable("A");
    Variable b = new Variable("B");
    Variable c = new Variable("C");
    Variable d = new Variable("D");
    ArrayList<Variable> vars = new ArrayList<>();
    vars.add(a);
    vars.add(b);
    vars.add(c);
    vars.add(d);
    QuineMcCluskey t = new QuineMcCluskey(vars);
    Expression ex = or(a, c);
    t.fillTableWith(new BoolTableExpression(ex, new ContextFiller(vars)));
    // System.out.println("--");
    while (!t.isFinished()) {
        // System.out.println(FormatToExpression.FORMATTER_JAVA.format(t.getExpression()));
        t.simplifyStep();
    }
    t.simplifyPrimes(new PrimeSelectorDefault());
    assertEquals("A || C", FormatToExpression.FORMATTER_JAVA.format(t.getExpression()));
// System.out.println("--");
}
Also used : Variable(de.neemann.digital.analyse.expression.Variable) PrimeSelectorDefault(de.neemann.digital.analyse.quinemc.primeselector.PrimeSelectorDefault) FormatToExpression(de.neemann.digital.analyse.expression.format.FormatToExpression) Expression(de.neemann.digital.analyse.expression.Expression) ContextFiller(de.neemann.digital.analyse.expression.ContextFiller) ArrayList(java.util.ArrayList)

Example 25 with Expression

use of de.neemann.digital.analyse.expression.Expression in project Digital by hneemann.

the class QuineMcCluskeyRegressionTest method testRegression.

private static void testRegression(int n, int j) throws Exception {
    int size = 1 << n;
    boolean[] table = new boolean[size];
    ArrayList<Integer> index = new ArrayList<>();
    for (int i = 0; i < size; i++) index.add(i);
    Collections.shuffle(index);
    for (int i = 0; i < j; i++) table[index.get(i)] = true;
    ArrayList<Variable> var = Variable.vars(n);
    Expression expression = new QuineMcCluskey(var).fillTableWith(new BoolTableBoolArray(table)).simplify().getExpression();
    ContextFiller cf = new ContextFiller(var);
    for (int i = 0; i < table.length; i++) assertEquals(table[i], expression.calculate(cf.setContextTo(i)));
}
Also used : Variable(de.neemann.digital.analyse.expression.Variable) FormatToExpression(de.neemann.digital.analyse.expression.format.FormatToExpression) Expression(de.neemann.digital.analyse.expression.Expression) ContextFiller(de.neemann.digital.analyse.expression.ContextFiller) ArrayList(java.util.ArrayList)

Aggregations

Expression (de.neemann.digital.analyse.expression.Expression)60 Variable (de.neemann.digital.analyse.expression.Variable)34 FormatToExpression (de.neemann.digital.analyse.expression.format.FormatToExpression)12 Parser (de.neemann.digital.analyse.parser.Parser)11 ContextFiller (de.neemann.digital.analyse.expression.ContextFiller)10 NamedExpression (de.neemann.digital.analyse.expression.NamedExpression)9 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 Circuit (de.neemann.digital.draw.elements.Circuit)5 ElementLibrary (de.neemann.digital.draw.library.ElementLibrary)5 ModelCreator (de.neemann.digital.draw.model.ModelCreator)5 ShapeFactory (de.neemann.digital.draw.shapes.ShapeFactory)5 ArrayList (java.util.ArrayList)5 TestExecuter (de.neemann.digital.TestExecuter)4 QuineMcCluskey (de.neemann.digital.analyse.quinemc.QuineMcCluskey)3 PrimeSelectorDefault (de.neemann.digital.analyse.quinemc.primeselector.PrimeSelectorDefault)3 TableRow (de.neemann.digital.analyse.quinemc.TableRow)2 Model (de.neemann.digital.core.Model)2 Date (java.util.Date)2 DetermineJKStateMachine (de.neemann.digital.analyse.DetermineJKStateMachine)1 ExpressionException (de.neemann.digital.analyse.expression.ExpressionException)1