@Override public Object visitCalculateMv(GAPPCalculateMv gappCalculate, Object arg) { MultivectorWithValues mv1 = getMultivector(gappCalculate.getOperand1().getName()); double op1 = mv1.getEntry(0); double op2 = 0; if (gappCalculate.getOperand2() != null) { mv2 = getMultivector(gappCalculate.getOperand2().getName()); op2 = mv2.getEntry(0); MultivectorWithValues target = getMultivector(gappCalculate.getDestination().getName());
@Override public Object visitDotVectors(GAPPDotVectors gappDotVectors, Object arg) { MultivectorWithValues destination = getMultivector(gappDotVectors.getDestination().getName()); // calculate the dot product double sum = 0; int size = getMultivector(gappDotVectors.getParts().getFirst().getName()).getEntries().length; for (int slot = 0; slot < size; slot++) { double prod = 1; for (GAPPVector part : gappDotVectors.getParts()) { prod *= getMultivector(part.getName()).getEntry(slot); } sum += prod; } Selector sDest = gappDotVectors.getDestSelector(); destination.setEntry(sDest.getIndex(), sDest.getSign() * sum); return null; }
@Override public Object visitCalculateMvCoeff(GAPPCalculateMvCoeff gappCalculateCoeff, Object arg) { MultivectorWithValues mv1 = getMultivector(gappCalculateCoeff.getOperand1().getName()); double op1 = mv1.getEntry(0); double op2 = 0; if (gappCalculateCoeff.getOperand2() != null) { mv2 = getMultivector(gappCalculateCoeff.getOperand2().getName()); op2 = mv2.getEntry(0); MultivectorWithValues target = getMultivector(gappCalculateCoeff.getDestination().getName());
@Override public Object visitSetMv(GAPPSetMv gappSetMv, Object arg) { MultivectorWithValues destination = getMultivector(gappSetMv.getDestination().getName()); MultivectorWithValues source = getMultivector(gappSetMv.getSource().getName()); Selectorset selSrc = gappSetMv.getSelectorsSrc(); PosSelectorset selDest = gappSetMv.getSelectorsDest(); int selCount = gappSetMv.getSelectorsSrc().size(); for (int sel = 0; sel < selCount; sel++) { PosSelector sDest = selDest.get(sel); Selector sSrc = selSrc.get(sel); destination.getEntries()[sDest.getIndex()] = sSrc.getSign() * source.getEntries()[sSrc.getIndex()]; } return null; }
@Override public Object visitAssignInputsVector(GAPPAssignInputsVector gappAssignInputsVector, Object arg) { int size = gappAssignInputsVector.getValues().size(); String name = "inputsVector"; createVector(name, size); MultivectorWithValues destination = getMultivector(name); for (int sel = 0; sel < size; sel++) { GAPPValueHolder scalarVar = gappAssignInputsVector.getValues().get(sel); double value = (scalarVar.isVariable()) ? getVariableValue(((GAPPVariable) scalarVar).getName()) : ((GAPPConstant) scalarVar).getValue(); destination.getEntries()[sel] = value; } return null; }
@Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { MultivectorWithValues destination = getMultivector(gappAssignMv.getDestination().getName()); PosSelectorset selector = gappAssignMv.getSelectors(); int selCount = selector.size(); for (int sel = 0; sel < selCount; sel++) { GAPPValueHolder scalarVar = gappAssignMv.getValues().get(sel); double value = (scalarVar.isVariable()) ? getVariableValue(((GAPPVariable) scalarVar).getName()) : ((GAPPConstant) scalarVar).getValue(); destination.getEntries()[selector.get(sel).getIndex()] = value; } return null; }
MultivectorWithValues destination = getMultivector(destName); } else { PairSetOfVariablesAndIndices p = (PairSetOfVariablesAndIndices) curArg; MultivectorWithValues source = getMultivector(p.getSetOfVariable().getName()); for (Selector sel: p.getSelectors()) { destination.setEntry(i, sel.getSign() * source.getEntries()[sel.getIndex()]);